認知資源:注意力や集中力が必要な作業を行うと消耗する、脳が使える資源のこと。
認知資源の消耗を防ぐため、作業を徹底的に効率化
多くの認知資源を必要とする平常業務がたくさんあると、突発的に発生したタスクに対処する余裕は全くなくなってしまう。こうした事態を防ぐには、脳への負担が高いタスクを効率化し、認知資源の消耗を防ぐことが重要である。倉持氏はチームが取り組んだ運用改善の事例を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カレンダーのスケジュールへと招待を送る機能も付けた。
こうした改善施策により、メンテナンススケジュールの作成・修正にかかる負担は大幅に軽減。認知資源の消費を招いていた問題を解決できたという。