🔲

チーム開発とアーマードコアが似ている気がする

2024/12/04に公開

この記事は「レバテック開発部 Advent Calendar 2024」の 4 日目の記事です!
昨日の記事は、tomo_nxn さんの「実践WEBビーコン:メール開封率計測テクニックの全て」でした。

この記事の概略

アーマードコア好きな自分が、タイトル通り似ているなと思う部分を書いていく記事です。

「それって個人の感想ですよね?」って、正しく論破される記事ですヽ(*´∀`)ノヽミ ´∀`ミノ

コラム的な感じで気楽に読んでください。

はじめに

自分について

  • アーマードコア歴
    • 初代からやっている最古参勢
    • PS2とPS3はアーマードコアのために買った感じ
    • プレイしていない過去作もあるが、シリーズ8割くらいはプレイしているはず
  • エンジニア歴
    • 主にサーバサイドで、Java、JavaScript(TypeScript)、Golang、Rustなどを書いてきた
    • フロントもReactやJSPなど、まぁまぁ経験がある
    • DBはMongoDBや、MySQL、Postgresなど
    • 派遣、契約社員、フリーランス、大きい会社の正社員、中堅会社正社員、フリーランス(イマココ)
    • もうすぐ20年になるベテラン勢(老害と呼ばれたくない系エンジニア)
    • 転職多い系エンジニアで色々な現場を見てきたので、過去現場との照らし合わせの話をします

ざっくりとアーマードコアについて

  • ロボット(=アーマードコア、略してAC)をアセンブルして傭兵として戦うゲーム
  • プレステ1で初代アーマードコア発売し、昨年アーマードコア5発売から10年ぶりに新作のアーマードコア6が出た
  • 一部に熱狂的なファンがいる
  • 個人の感想ですが、めっちゃ面白い

前提

AC6のチーム戦での話に絞る

チーム戦じゃなくても共通項はあると思っていますが、エンジニアもチームで戦うことが多いため、チーム戦の話に的を絞ります。

語りたいことが多いが、長過ぎて読みたくなくなると思われるため簡潔にいきます。
(すでに長いとか言わない!)

チーム戦のルールをざっくりと説明

  • 基本ルール
    • 3対3でマッチングしてプレイヤー同士が戦う
    • 制限時間はランクマッチだと3分で、個人開催の大会だとカスタムマッチで5分が多い
    • 制限時間終了時にポイントが多いチームの勝利となる
  • ポイント
    • 相手を1機倒すと自チームにポイントが入る(倒さないとポイントが入らない)
    • ポイントを1番獲得している機体は「プライオリティ・ターゲット」となり、その機体が倒したり倒されたりした場合、多めにポイントが入る
  • 対戦
    • 対戦開始時に自チームと相手チームの機体とプレイヤー名が表示される
    • 倒されても10秒後にフル回復状態で戦場に復帰する
    • 味方の位置は倒されていないなら常に画面上に表示される
    • 敵の位置は自分のロックオン範囲内かスキャンできた場合のみ表示される

チーム戦に勝つための方針

  • 相手チームよりも倒した機体が多い
  • 相手チームよりも倒された機体が少ない

上記の状態のいずれかを満たせば勝利となる。

じゃあ、防御に極振りすれば相手にポイントを渡さずに勝てるじゃんと考えるかもしれないが、アーマードコア6ではそこまで硬くできないので、1度も倒されない状態を作ることはできない。

そのため相手を短時間で倒すことが出来る瞬間高火力武装のアセンブルが推奨されることになる。

アーマードコアの説明はこれくらいにして以降から、掲題の開発チームと似通っている部分も挙げていく。

アセンブルとチーム連携

アーマードコアでは

アセンブルでは

  • ミサイルや近距離武器やキャノン砲など色々な攻撃パーツを装備可能
  • スピードや防御重視、ジャンプ力の高い逆関節など色々なボディタイプもある

といった要素があり、上記タイプの組み合わせ次第で有利なアセンブルと不利なアセンブルに分かれる。

そのため、対戦開始時に全ての機体を把握して下記のような連携を取るとよいです。

  • 基本は2機以上で1機と戦う(フォーカスして戦う)
    • 状況次第だが基本は「プライオリティ・ターゲット」を狙っていくのが良い
  • 人数不利のときは無闇に突っ込まずに味方の合流を待つ(通称:リグループという)
  • こちらがポイント有利で残り時間が少ない場合、戦わずに逃げるのも手
  • 相手と味方のアセンブルを見て、自分が有利なアセンブルや味方が不利なアセンブルを相手にする

開発では

フロントやサーバサイドなどそれぞれメインとしている領域や得意不得意があると思う。

各エンジニアとしてのアセンブルがあると考えると、アーマードコアになぞらえた戦略を取れる。

  • 最初にチームの得意不得意と、タスクの属性を見分ける
  • 基本はメイン・得意な領域を担当しつつ、他メンバーが不得意な作業を巻き取る
  • 場合によってはペアプロやモブプロをする(リグループする)

突き詰めるとチーム戦はリソース管理

アーマードコアでは

対戦のルールを眺めると、基本的に下記を行うと勝ちにつながります。

  • 相手にダメージを与える
  • 相手の攻撃を防御する(盾を使う)
  • 相手の攻撃を回避する
  • 相手からフォーカスをもらいながら逃げる(味方が安全に攻撃できる)

このような行動は、有効にリソースを使っている/使わせている状態と言えます。
逆に下記のような行動は、必要ではありますがリソースを消費できていないので、極力短時間で済ませるのが望ましい。

  • 相手を探す
  • エネルギーを回復する
  • 攻撃が当たる位置まで移動する

開発チームでは

  • 他のチームと同じものを作っちゃった(汎用化して別チームも使えるように作りたい)
  • 要件に対して過剰な機能を作った結果、作ったけど使われていない
  • ドキュメントのメンテができておらず、結果誰も見ないものとなっている
  • 不要なコードを消しておらず、結果アップグレード時などに不要なコードも修正する状況になる
  • 会議をしているが必要ない参加者が多い(または会議自体が無くてもいい)
  • コミットコメントに背景が書いてない
  • コードが作られた背景がわからないので、コードを読むのに時間が掛かる

上記は通常仕事をしていることになるが、結果としてはリソースを無駄遣いしており、極論仕事をしていないのと同義だと思う。

完璧なリソース効率は無理かもしれないが、無駄なリソース消費や削れるところがあるかを見直す機会を定期的に持ちたいところ。

状況の把握がとても大事

アーマードコアでは

画面を開くと、小さいが色々な情報が表示されている。

  • 残り時間
  • 自チームと相手チームのポイント状況
  • 自チームと相手チームの残APと衝撃値蓄積の状況
  • 自チームの機体位置(常に表示されている)
  • 相手チームの機体位置(スキャンしたり、ロックオン範囲だと表示される)
  • 全プレイヤーのロックオン状況が表示される(2機からロックオンされていたら2が表示される)
    • 自分がロックオンされていない場合、大抵味方のどちらかがロックオンされている
    • その場合助けに行くか、味方のロックオンしている相手を攻撃したいところ
    • 逆に自分がフォーカスされている場合は、その敵を引き付けながら逃げられるとよい

特に、敵の位置などは自分しか見えていないことがあるので、固定チーム(ボイスチャットなどで連携が取れるなら)でプレイしているなら報告をしていきたい。
また、ある程度腕がある人でも対戦中に情報を全部見れていないので、見れるようになりたいところです。

開発チームでは

状況の把握は開発でも重要だと思う。

だが、自分の開発チームでの経験上、タスクや進捗の可視化ぐらいまでで、全体との繋がりや重要度まで可視化しているところはなかった気がする。
(GoogleはOKRとして定義して可視化している)
(本で読んだだけだが、キーエンス社も出来ている気がする)

今、自分がやっているタスクが、どういう状況で打たれた一手なのか?どれくらいの重要度なのか?などを理解して作業することが大事だと思う。

また、同じような状況が他で発生している場合、そこでの対応を流用できる可能性が高いので、全体の状況が見えるようにしておくことはリソースの無駄遣いを防ぐためにも重要だと思う。

司令塔を置くよりも各人の状況判断が重要

アーマードコアでは

司令塔のメンバーが倒れた場合、状況の把握が困難となり、チーム戦で負けたという話がある。

アーマードコアのチーム戦では短い時間で大きく戦局が動くので、各個人で状況を判断して行動しないと、間に合わないということもある。

全員が司令塔になれるようにトレーニングしておくのが良いと思う。

開発チームでは

判断要素として挙げると下記となる。

  • 開発チームでも全員が司令塔(リーダー)になれるとよいと思う
  • 情報さえ共有できていれば、答えは似通うはずなので各人で判断できると思う
  • アジャイルかスクラムの人から、リーダーが居なくても仕事ができる状態が理想という話を聞いたことがある
  • Googleでは、決める人が居ないとみんなが好き勝手言ってまとまらないという話があった

上記を総合して判断すると、チームリーダーを持ち回りにしてやると両方取りできて良いのでは?と思う。

得手不得手とかメンバーの話とかあると思うので、チームリーダーの業務の持ち回りにできそうな部分だけやるでも良いと思う。

チーム連携よりも個人の実力が重要

アーマードコアでは

ある大会で、シングルで上位だがチーム歴が浅い人たちの集まったチームが優勝していた。
(1人は他チームでの経験者だったが、他2人はチーム歴が浅い状態だった)

チーム戦では、擬似対といって 1 vs 1 となる局面があるので、そこで勝ちに持っていけるのは強いということだと思う。
(そもそもシングル上位の人がイレギュラーだという話もある)

また、とある配信者さんが固定チームを組んで練習している配信を見たが、下記の有利な状況なのに負けたりしていた。

  • 配信者側はメンバー固定チームで、3人のアセンブルを相乗効果が出るように相談して決めていた
  • 次は誰を狙うや、相手チームの位置情報などボイスチャットで共有して連携できる
  • 練習相手は視聴者さんで集まっただけなので配信者チームに対して不利になるはず

個人力の高さは、チームワークを上回る効果があると思われる。

開発では

完全に個人主観だが、技術力の高さは万難を排すと思っている。

なので、アジャイルとかスクラムとかに時間を割くよりも、個人の技術力を上げることに時間を割いた方が長期的に見ると効果的だと思う。

ただ、技術力の向上は可視化しづらく、評価でアピールするとなるとアジャイルやスクラムに限らず可視化しやすいものに重きが置かれてしまうのでは?と思う。

チームに練度が低い人がいるとき時の反応

アーマードコアでは

チーム戦ですごく効果があるTAを装備してなかったり、アセンブルに沿った戦い方ができなかったり、そんな人がいて負けると腹いせにネットに晒す人がいるらしい。

それを懸念してチーム戦に入るのを辞めている人もいる。

過疎るからやめてほしいところ。

また、自分が強ければ、自チーム3人のうち1人は確定で強いのだから確率的には自チーム有利なはず。

さらに、相手チームに弱い人が入ることも当然あるので単なる確率の話なんだから、文句を言ってもどうしようもないとも思う。

対人戦は駆け出しの人やコントローラ壊れる人とか色々な人がいるのだから、そういうもんだと割り切ってプレイしていきたいところ。

開発でも

過去にチーム開発でうまくいかないときに八つ当たりする人は一定数いた。

その人の前でスタバラテ飲んでいたら、おまえなんか吉野家でも食べていろと言われたことは今となっては懐かしいなと思う。
(そのときに思ったのは吉野家に失礼だなと。あと、自分は特に足引っ張ってなかったような。。。)

また、デスマーチの時に練度が低い人がいると大変辛いところだが、そもそもそんな人しか集められない低予算のプロジェクトが悪いのだから、集まったメンバーを責めても仕方ないところだと思う。
(給料10倍ぐらい出してドリームチームで開発すれば割りとサクッと終わりますよ。)
(イーロンマスクの会社はできなければ即クビだし出来る人は給料も良いからそんな感じ。)

プロジェクトが無理ゲーなこともあるし、誰もが最初は練度低いし、エンジニアの人数も足りて無いし、子育てとか介護で長時間労働できなくなる人もいるし、不当に安月給で働いている人もいるし。

色々な状況を把握して、「理想と違う。エンジニアはこうじゃなきゃ。」ではなく、「まぁこの状況だとこんな感じか」と割り切って仕事していきたいところ。

その他似通っていると思う部分

  • 【AC】沢山のパーツや状況の中からベストなアセンブルと戦略を決めてプレイする
    • エンジニアもたくさんの言語や技術から、ベストな組み合わせ・開発方針を決めて開発している
  • 【AC】画面内に情報が多いが、把握できる情報が多いほど有利に戦える
    • エンジニアもログやIDEやDBなどたくさんの情報を把握できるとよい
  • 【AC】アーマードコアのチーム戦は複数人集まって対戦している
    • 開発も複数人が集まって開発しているので、人同士の問題は同じようなものが出る
  • 【AC】アーマードコアのチーム戦は試合時間が短いが、録画しておけば見直して反省できる
    • 開発も1つの開発を録画のように見直して反省できるとよさそう(しかし録画1日分とかになると難しそう)
    • たしか海外のチームでは、障害が起こった時に担当者のデスクトップを録画しておいて解決までの流れを他の人が見れるように公開しているとかあった気がする。出来ないことはないのか?

一番気になったこと

どのリソース投下がどのくらいゴールに効いているのか?

アーマードコアのチーム戦では勝敗という明確なゴールがあり、固定チームであれば行動も動画で見返せるためわかりやすい。
(とはいえ、ランクマッチでは自分以外の本気度・行動・実力が読めないため、わからないことも多い。。。)

現実の仕事では、今の自分の仕事がどれくらいゴールに効いているのか?というのが分かりづらいと思われる。
そもそも、ゴールを会社の利益に置くのか?社会的な貢献に置くのか?など、判断が分かれるところ。

社長含めて、どんな行動をしていて、それがどれくらい効いているのか?可視化出来たら色々と面白いかもしれない。
全然リソース使わないor使えない社長とか上司もいるはずで、それが分かれば会社選びもいい感じにできてよいと思う。

ただ、現実では無駄なことが新開発につながったりするする話もあるので、投資的な行動と利益に繋がる行動を分けたほうがよいか?とか、色々と考えられるなぁと思った次第。

最後にひとこと

アーマードコアはいいぞ。

アドベントカレンダー

明日は ごりら さんが投稿します!
レバテック開発部 Advent Calendar 2024」をぜひご購読ください!

Discussion