Feedforce Developer Blog

フィードフォース開発者ブログ

社内勉強会で障害対応体験ゲーム『障害対応Night☆』をプレイしました

フィードフォース ボドゲ部の id:kano-e です。

先日の社内勉強会で、障害対応体験ゲーム『障害対応Night☆』を技術チームメンバー何人かにプレイしてもらいました。

「障害対応体験ゲームって何?」とお思いでしょうか。

障害対応体験ゲームとは、架空の Web サービスで障害が発生したと仮定し、それに対してそれぞれの知識と経験と技術を集結して対応する……ということを体験できるように、わたしが考えたゲームです。
『障害対応Night☆』という名前は 10 秒くらいで考えました。

そもそもなんでゲームなんか考えたのか、どのようなゲームか、プレイ風景や参考情報などをまとめました。

そもそもなんで「障害対応体験ゲーム」なのか

障害対応って経験や場数による部分があるよね、という感覚が薄っすらとあるような気がしてます。
じゃあ、どうやって経験を積めば良いのかというと、それはもう実際に障害が発生するしかないというのは、なかなか成長の機会がなくて厳しいな、と常々思っていました。

その問題に対して、過去には以下のような取り組みで対峙してきました。

tech.feedforce.jp

developer.feedforce.jp

また、障害発生後に Qiita:Team でまとめられるレポートなども、情報共有に役立っているかと思います。

これらの取り組みだけで飽き足らず、わざわざゲームという形にしたことには、それなりに理由もあります。

経験談や過去事例は非常に参考になるし勉強にはなるけど、いざ障害が発生した時にそのまま役に立つ訳ではありません。
サービスが違えば前提も違います。状況も違います。
「今発生していることは何か」「どうやったら状態回復できるか」「原因を突き止めるために何ができるか」を変わっていく状況の中、「以前のあれが参考になるかも」と思いつけるかどうかが、そもそもエンジニアの経験依存です。

避難訓練のような取り組みは、どちらかというと「今このサービスで何か起こった時に、こういうケースであれば、こういうやり方で状態回復できる」という知見の共有です。
それ自体はとても有用なものですが、それで対応できる状況かどうかを見極める必要はありますし、そもそも前提とする状況が違う可能性もあります。

また、実際に障害対応することになった場合、それが業務時間外であれば、それぞれがリモートの各自の環境で情報共有しながら対応する必要があります。

  • 突然アラートがくることによる動揺
  • 最初は何が起こってるかわからないところから、状態を回復しなければならない
  • リモートである程度リアルタイムに情報共有しながらどうするか判断する必要がある

それらが経験に依存するものなら、擬似的に経験できれば良いのでは。
それらが擬似的に体験できるゲームを用意するのはどうだろうか。
みたいなことをずっと考えていて、今回ようやく、ゲームとしての体裁が整った感じです。

ボードゲームしたいあまりにゲーム作ったように見えるかもしれませんが、割と真面目に考えた結果です。
ついでにゲームもできれば最高ですね。

舞台設定

「RSS フィード生成や統合を行う」という架空のサービスを考えて、それを舞台にしました。

詳細はこちらにまとめましたので、興味ある方はご覧ください。

サービスを考える時には、

  • 個人ユーザーも企業ユーザーもある
  • 機能制限された無料プランがある
  • ユーザー向けの管理画面がある
  • 1日中バッチ処理が動いている
  • ユーザー数などの規模はまだそんなに大きくない

みたいなことを考えて詰めていきました。

構成は社内のインフラメンバーにあれこれヒアリングして、それっぽい感じにはなったかなと思います。

ルール

ターン毎に Slack 上で行動を宣言してもらい、進行役がその行動の結果を個別に伝える、という形で進めました。

わかる方は TRPG 的なものをイメージしていただければ良いかと思います。
一人で進行するのは結構大変だったので、次があればもうちょっと進行役の負荷を下げる工夫を何かしらしたいなと思います。

ルールの詳細はこちらにまとめましたので、興味ある方はどうぞ。

キャラクター

以下の4人のキャラクターを用意して、担当してもらいました。

キャラクターは、それぞれ「誰でも知っている公開情報」と「本人しか知らない非公開情報」を用意しています。
詳細は、リンク先のキャラクターシートをご覧ください。

公開情報はもうちょっと詰めておけば良かったなと思ってます。
佐々木さんについては特に、情報がなくて戸惑わせてしまいました。

あとは、名前がないとシナリオを考えるのも難しくてキャラクターに名前を設定したのですが、それで当日変な混乱を起こしてしまったので、次やるときは名前を付けるのはやめようかなと思いました。
変にロールプレイを意識させてしまった気がします。

対応ログ (一部)

f:id:kano-e:20180313214107j:plain

対応開始時のログです。
絵文字表示するのに失敗してたり Mackerel の綴りが間違ってたりしてますね。
落ち着け進行役、という感じです。

本日飲み会があった(という設定の)相田さんの書き込みがやけにリアルで、生々しい感じになりました。

f:id:kano-e:20180313214342j:plain

これは、行動宣言フェイズです。
行動宣言フェイズの結果は、基本的には DM で個別に伝えてました。

DM 上では、この垣野さんであれば、

アクセスはできます。ログイン画面が開きました。 追加で行動する場合、ここで何をするか宣言してください。

佐々木さんであれば、

どのサーバにログインしますか。 ログイン後、何を確認しますか。

のような形で、行動についての詳細を尋ねたり結果を伝えたりしていました。

ここが一番のゲームの肝なのですが、その分ここが一番大変な部分でした。

f:id:kano-e:20180313214704j:plain

これは、上記の行動の結果を垣野さんが他のメンバーに共有しているところです。

「フィードの一覧」「詳細」という言葉に齟齬ができてしまったのは、自分の説明不足なので、次回がもしあれば簡単な Web アプリの設計も資料として用意しないとな、とこっそり反省していました。

参考にしたゲームたち

過去に遊んだ TRPG や協力型のボードゲームなどを色々と参考にしながら、今回のシステムとシナリオを組み立てました。
その中でも、大きく念頭に置いていたゲームが2つありますので、特にその2つを紹介したいと思います。

スペースアラート日本語版

スペースアラート日本語版

『スペースアラート』は、宇宙船の乗組員になってリアルタイムに次々発生する問題に対応するゲームです。
「どの方向からどういった敵がどのくらいのスピードでくるか」がリアルタイムに読み上げられるので、各自の自分の行動をカードでセットしていきます。
他のメンバーの状況を見ながら「そっちの敵は任せた」「じゃあ、こっちはなんとかするから」と行動をセットするのですが、いざそれぞれの行動を順番に解決しようとすると「あれ、エネルギー足りない」「あれ、なんで二人ともこっちにいるの」「なんでこっち誰もいないの」という状況が発生する、なかなか楽しいゲームです。

リアルタイムに刻々と状況が変わる中、慌てずに対応するのはなかなか大変ですね。
経験してるとしてないで、できることがだいぶ変わるゲームです。

最初に「障害対応を体験できるゲーム」を考えた時に、まず頭に浮かんだのはこのゲームでした。
とはいえ、障害に対して取りうる手段をだいぶ抽象化しない限り、リアルタイムの対応は難しい。逆に実際の対応が抽象化されすぎてしまうと、障害対応の体験としての価値が薄れそう。
などぐるぐるしながら、どういう形にするかをしばらく悩んでいたのでした。

惨劇RoopeR 5th

惨劇RoopeR 5th

『惨劇RoopeR』は、時間をループできる能力者になってループの原因となる事件の発生を食い止めるゲームです。
誰かの自殺を食い止めたり、殺人事件の犯人と被害者を別行動させたり、そもそも事件を発生させないようにしたり、状況を変えてその結果を見ながら事件の原因を絞り込んでいくようなゲームです。

このゲームのゲームマスター的な役割は脚本家と呼ばれるのですが、脚本家が自作のシナリオを作るためのガイドがあります。
プレイヤーの行動で徐々に情報が明らかになっていき、それらが繋がるとどうやったら惨劇を食い止められるかがわかる、そんなシナリオをどのように作るのか、その辺りのバランスを参考にしています。

最後に

今回、このゲームを準備するにあたり、インフラエンジニアの id:critical_alertid:lorentzca に相談し、インフラエンジニアの観点からサービス構成や障害時に起こることについてのアドバイスや意見をもらったのですが。
その時に「イマドキの障害対応」について、基本的には「人間が障害対応しなくても良くなる」というのが目指すべきところだよね、みたいな話になって、そういう世界になると「障害対応」の意味も変わってくるのかなー、などとぼんやり未来に思いを馳せたりしました。

今回障害対応体験ゲームを企画することで、過去の障害対応と、今の会社の状況と、この先のこと、色々と考えるきっかけになりました。
お付き合いありがとうございます。