認知資源:注意力や集中力が必要な作業を行うと消耗する、脳が使える資源のこと。
認知資源の消耗を防ぐため、作業を徹底的に効率化
多くの認知資源を必要とする平常業務がたくさんあると、突発的に発生したタスクに対処する余裕は全くなくなってしまう。こうした事態を防ぐには、脳への負担が高いタスクを効率化し、認知資源の消耗を防ぐことが重要である。倉持氏はチームが取り組んだ運用改善の事例を4つ紹介した。
1つ目の事例はPull Requestのリマインダーツール作成だ。英語版『Fate/Grand Order』運営チームでは、バージョン管理ツールとしてGitHub Enterpriseを使用しており、原則として全てのPull Requestはエンジニア全員でレビューしている。
「レビュー漏れを防ぐため、かつては退勤前のチャットでの呼びかけや、口頭での声かけをしていました。ですが、人力によるリマインドは認知資源の浪費に結びついてしまいます」
この課題を解決するために作成されたのが、Pull Requestのリマインダーツールだ。このツールはJenkinsで定期実行されており、GitHubのリポジトリごとに未消化のPull RequestをSlack上で通知してくれる。リマインダーツールにはGitHubが提供しているコマンドラインツール「Hub」が利用されている。これは、GitHub上で行うさまざまな操作をコマンドライン上で実行できるものである。
GitHub上にあるPull Requestをリストアップするのにはhub prコマンドが用いられている。このコマンドを特定のオプションを含めて実行することで、GitHubに上がっている未消化のPull Requestの番号やタイトル、Pull Request作成後の経過時間、レビュー未済のメンバーなどを抽出可能だ。このツールにより、英語版『Fate/Grand Order』運営チームは未消化のPull Requestを探して各メンバーに通達する煩わしさから解放された。
2つ目の事例は定期メンテナンスのスケジュール作成ツールの開発だ。英語版『Fate/Grand Order』は他のモバイルゲームと同様に、メンテナンスの際にはサービスを一旦停止し、プログラムやデータの更新などの作業を行う。
「メンテナンスのスケジュール管理には、Webのベース企業向けWikiであるConfluenceを活用していました。定期メンテナンス前日の作業も含めると、作業項目は30~40種類くらいあります。メンテナンススケジュールの作成は、非常に骨の折れる作業でした。何十ものメンテナンス作業項目の名前や開始時間、担当者などを全て手入力していたためです」
ゼロからページを作成するのは大変な労力がかかるため、彼らは過去のメンテナンスページをコピーして新しいページを作成していた。だが、この方法には問題がある。コピー元のメンテナンスページとは異なる作業を行わなければならない場合に、記載漏れが発生しやすいのだ。過去にはそれが原因で作業の実施漏れが発生したこともあったという。
また、各作業の開始時間を人が計算していることも問題だ。例えば、メンテナンスを1時間ズラす場合に、何十個もある項目のすべての開始時間を人力で変更する必要がある。認知資源を大きく消費してしまい、記載ミスも起こりやすい。さらにこの管理方法では、メンテナンスページを見なければ、自分の作業があることに気づけないという問題もある。
こうした問題を解消するため、彼らはConfluenceの直接編集と人力による時間計算をやめた。代わりにGoogleスプレッドシートに移行し、テンプレートのシートを用意してスケジュール管理を行う形態に変更したという。
過去のメンテナンスページをコピーして新ページを作ることもやめた。メンテナンス時に行うすべての作業を登録したテンプレートを用意し、それをコピーして必要な項目のみを残す運用に切り替えたのだ。Confluenceを使いたいメンバーも困らないように、Confluenceへメンテナンス情報を貼り付けるための全予定のテキスト出力機能も実装した。
スプレッドシート上で機能するGoogle Apps Script製のツールも作成した。そのツールを用いて、メンテナンス開始日時と作業ごとの所要時間が定義できれば、作業開始時間を自動計算できるようにしたそうだ。
さらに、Googleカレンダー上にメンテナンス作業専用のカレンダーを用意して、GoogleスプレッドシートからGoogleカレンダーへと作業予定を登録可能にした。担当作業があるメンバーに、作業単位でGoogleカレンダーのスケジュールへと招待を送る機能も付けた。
こうした改善施策により、メンテナンススケジュールの作成・修正にかかる負担は大幅に軽減。認知資源の消費を招いていた問題を解決できたという。
認知資源の余裕を生み、より創造的な仕事にフォーカスする
3つ目の事例はダウンロードサイズ肥大化検出の自動化だ。モバイルゲームでメンテナンス明け後にイベントやガチャを開始する場合には、ユーザーのアクセスが集中するため大量のファイルダウンロードが発生する。CDNのネットワーク帯域が逼迫してしまうと、ユーザーがゲームを快適に楽しめないことに陥ってしまう。
「これを避けるには、必要なダウンロードサイズを予め見積もっておき、必要に応じてCDNの上限緩和申請を出す必要があります。理想を言えば、インフラチームに対してリリースの2週間前には申請を出しておきたいところです。
改善前は、Jenkinsに登録しているダウンロードサイズ計測ツールで見積もりをしていました。ですがこのツールは手動実行であり、実行に必要なパラメータを準備するのにも手間がかかります。また、『リリース前にはダウンロードサイズを計測しなければ』と覚えておくこと自体も、認知資源の消費を招きます」
この問題を回避し、なるべく高頻度でダウンロードサイズを計測するため、彼らは新しいツールを導入した。Jenkins上で毎日ダウンロードサイズを計算して、一定以上量に達した際にインフラチームへSlackでメンション付きメッセージを送ってくれるツールだ。ツールを動かすことを人間が覚えておく必要もなくなり、作業漏れの防止につながった。
4つ目の事例はリリースブランチ間のマージ補助ツールについて。この事例についてはまだ構想段階であり、実現にはいたっていない。倉持氏は「現在はどのような作業で認知資源の無駄遣いが起きており、どういった手段での改善を検討しているか」について紹介した。
「モバイルゲーム開発では、リリース時期の異なる複数のブランチを、並行して管理することが多いです。各ブランチで行われた修正は、次にリリースされる予定のブランチにも反映します。ブランチ間のマージはほぼ毎日発生する作業です。現在はコミット差分のチェックからマージ用のPull Request作成までを全て手動で行っているため、非常に負担が大きいです。認知資源を消費している作業のなかで、最も改善したいものになります」
この問題に対しても、コマンドラインツール「Hub」コマンドを活用することで、解決を目指しているという。「Hub」にはPull Requestを作成できるhub pull-requestというコマンドがある。これを用いることで、ブランチ間マージのPull Request自動化を目指したいと、倉持氏は語った。
注意力や判断力を過剰に要求される仕事を最適化することで、認知資源の余裕が生まれ、突発的に発生するタスクに対応しやすくなる。改善の取り組みを続けることで、より創造的な仕事に認知資源を割り当て、運営業務の質を向上させていけるのだ。
お問い合わせ
ディライトワークス株式会社