はじめに
先月までの暑さがなりを潜め、秋の訪れを感じつつも冬の息吹を感じる今日このごろ皆さん、どうお過ごしですか? どうも、1ヶ月ぶりくらいの登場となりました、マネーフォワード技術広報をしている @luccafort です。 技術書典15の原稿をなんとか書き上げたのでようやく先日マネーフォワード社内で開催したAWS GameDay(以降、GameDay)の開催ブログを書くことができます。
本記事はAWS GameDayってなんなの?や、どういうことをしていたの?を、実際のイベントの雰囲気を画像多めでお伝えしていこうと思います。
Approvedをもらってから2週間以上放置した著者の図。
懺悔の意味を込めてここに紹介しておきます。
AWS GameDayとはなにか?
公式のAmazon Web Servicesから概要を引用します。
GameDay は、ゲーム化されたリスクのない環境で現実世界の問題を解決するためのAWSソリューションを実装するスキルをテストする、チーム学習演習です。
なんとなく雰囲気は掴んでいただけたでしょうか?
イメージがいまいちわからないという方はAWS版 ISUCONと言えば少し解像度が高まるかと思います。 ISUCONと異なる点としてはISUCONがパフォーマンスチューニングに特化しているのに対して、 GameDayはトラブルシューティングに特化していると言えます。
GameDayは毎年ラスベガスで開催される AWS re:Invent で新作が発表されているとのことなので、 AWSスキルに自信がある方は本家に腕試ししに参加するのもいいのではないでしょうか。
GameDayにはいくつかの種類があり、初級者から上級者まで楽しめるものや上級者でないと厳しいものなどがあるそうです。 チームや組織に応じたコンテンツを提供できるという事実に衝撃を受けました。 GameDayの詳細を書いてしまうとネタバレとなってしまうので割愛させていただきます。ご容赦ください。
なぜマネーフォワードはGameDayを開催したのか?
さてさて、そんなGameDayですがなぜマネーフォワードは社内イベントで開催したのでしょうか? 当時のマネーフォワードには次のような課題がありました。
- チームを越境したコミュニケーションが起こりにくい
- 相手を知らないのでナレッジを共有する行動の起こりが発生しにくい
これらの課題はおそらくマネーフォワード固有のものではないと思います。 ある一定数の人間が集まると知識や交流の偏りがでるのが自然です、 問題はその偏りを撹拌する仕組みがなく、滞留してしまうことだと考えます。
交流を生み出す3つの前提
今回の企画を考えるにあたり「交流が生まれるためには3つの前提がある」と考えました。
- 相手を知っていること
- 相手が自分のことを理解していること
- 相手と一定時間交流したことがあること(回数 * 時間)
とある論文ではカジュアルな友人になるには40〜60時間、親しい友人になるには200時間必要だと言われています。1
単純接触した回数と時間が多ければ多いほど、人は親しく感じやすくなります。2 今回のイベントだけでコミュニケーション課題の解決を達成するのは難しいため、仲良くなるためのきっかけとなる時間と回数を提供しようと考えました。
今回のイベントを企画する目的の1つに「新たな交流を生み出し、交流によって刺激をもたらす」がありました。 そのためには、できるだけ普段交流のない部署の人とチーム編成を行おうと考えており、参加者の方に自己開示をしてもらう必要性があります。
ですが、話す側は「自己開示と言われてもなにを話せば興味を持ってもらえるかわからない」問題があります。 聞く側としても「相手と共通の興味関心が持てなければ聞き流してしまう」問題があり、この2つを解決するイベントトリガーが必要でした。
そこで、エンジニア同士が共通の関心が持ちやすい「技術的課題の解決」を共通目標に設定しました。 課題解決のための議論を通して、コミュニケーションが促進ができる設計になるようイベント導線を工夫をしました。
参加者を募集した際に運営がチーム編成を行う旨、ソロチームや固定メンバーでの募集はNGである旨をお伝えしています。 「気心が知れたメンバーでチームが組みたい」や「オンラインでの参加を希望する」という意見もいただきましたが、 今回の趣旨とは大きく離れてしまうのでNGとさせていただきました。
当日の様子
前置きが長くなりすぎました。 ここからは実際のイベントを時系列でふりかえりしていこうと思います。
13時 GameDayスタート
まず最初に、地方拠点から来ているメンバーもいるので会場説明や注意事項などを説明しました。 その後、AWSさんによるGameDayの全体の流れやルールの説明が行われます。
以下はその際の雰囲気です。
今回のイベントは交流が大きな目的の1つだったのでチーム編成を運営メンバーで行い、 スキル差や特定の所属部署などの偏りがでないようにしていました。 そこではじめましての方もいたので、自己紹介と役割分担を決める時間を設け、チーム名を決定してもらいました。
14時 開始早々Marvelous TegomaやCHOCO CROがリード
さて、チーム名が決まったらいよいよゲーム開始です。
きっとみんな頭を悩ませてくれるだろう!と期待していたので糖分補給になるお菓子をあちゃさんが用意していました。 こういう気遣いはぼくにはないものなので、とてもありがたいサポートですね。
ゲームの詳細はネタバレになるため伏せますが、今回のゲームシナリオは Microservice Magic と呼ばれるものをAWSさんと相談の上選びました。 3 このシナリオはマイクロサービスをデプロイし、スコアを稼ぐ競技性の高いものとなっています。 自分たちのマイクロサービスを使うとマイナスになるので、他チームのマイクロサービスを使う必要があります。 ただマイクロサービスは使われれば使われるほどスコアが上がるので単純に腕試し以外のゲーム戦略性が問われる内容となっています。 4
スコアには累計ポイントを表すSCOREとスコアの伸び率を表すTRENDの2つがあります。 TRENDが高ければいま累計で勝っていても追い抜かされる可能性がわかるということで非常にゲーム性があるスコア設計です。 さすがAWSさん、これまでに蓄積してきた経験値が違う……と思わされる一面でした。
そんなこんなでスタートダッシュを切ったのはチーム「Marvelous Tegoma」です。 ほぼ独壇場といっていいほど独走状態が続きます。
14時30分 LoveがMarvelous Tegomaに肉薄
しばらくは独走を許すも徐々に他のチームも追い上げてきます。
それでも強い「Marvelous Tegoma」でしたが、徐々に他チームとの差がなくなってきます。 このあたりから他チームから「これ使ってください!」攻勢が活発化し始めます。
そして14時45分頃、AWSさんが仕掛けた罠が発動したのか一斉にほぼ全てのチームのTRENDがマイナスに突入します。
15時 Marvelous TegomaがLoveに抜かれる。Nyan Catが急速に上位に食い込む。S3 Samuraiが下位から上位にごぼう抜き
AWSさんの罠が発動し、他チームのスコアが伸び悩む中すごい勢いでスコアを稼ぐチーム「S3 Samurai」が現れます。 スコアランキング下位に位置していた「S3 Samurai」ですが急激にランクを駆け上がり、ついに上位陣をごぼう抜きしTOPチームに肉薄します。 スコアを監視していた運営チームでは「いったいなにをしたんだ?!」とざわつきます。
そして、ついに「Marvelous Tegoma」の牙城を突き崩すチーム「Love」が現れます。 序盤から独走状態だった首位が入れ替わり、ゲームが盛り上がってきます。
15時 目まぐるしく上位陣が入れ替わり始める。FreshByteFightersが一位に躍り出る。
この時間帯から上位陣が激しく入れ替わり始めます。
チーム「Amazon」やチーム「Nyan Cat」など他チームが急激にスコアを伸ばしていきます。[^1]
15時30分 マイクロサービスを使ってもらうための売り文句大喜利大会になる。Loveがトップに返り咲き
このあたりから「いかに自分たちのマイクロサービスを使ってもらうか?」に苦慮したのか、アナウンス文におもしろ投稿が増え始めます。 いいものを作っても認識してもらえないと使ってもらえない、まるでリアルプロダクト開発みたいな話しですね!
そして、上位陣が目まぐるしく入れ替わる中、一度は首位になったがその後順位を少し落としてしまったチーム「Love」が首位に返り咲きます。
その後、今度はチーム「Love」が独走状態になり、他チームを突き放し始めます。
そして、ここでも急にスコアが下がります。いったい現場では何が起こっているのでしょう?
16時 下位チームNyan Cat、CHOCO CROが急激にスコアを伸ばす。全チームに突然の障害発生。デッドヒートが各チームで発生
上位陣がやや落ち着いてきたタイミングで下位チーム戦線に変化が起こります。 チーム「Nyan Cat」、チーム「CHOCO CRO」、チーム「Money Advance」が急激にスコアを伸ばします。 このまま上位陣に迫るのか?と思っていると、またしても全チームのTRENDが急激に落下する事件が発生。
しかも、ぼくが褒めたチームから反撃を食らってしまいます、褒めたのに!
16時40分 AWSさんからの企画によるボーナスタイム。各チーム、ボーナスタイムの使い所の戦略を練る
残り30分に突入し、各チームなんとかスコアを伸ばそうと苦心を重ねます。
各チームのスコアが伸び悩む中、この時点で首位だったチーム「FreshByteFighters」が2位以下を大きく突き放し始めます。 2位はチーム「Love」です、余裕そうだなと思ってたらしれっと抜かれていきました。
もはやなりふりかまってられないのか何故か宣伝しろ!というリクエストまで飛び出す始末。 カオスなのは開発現場まででお願いします!
残り10分ほどになり、最後の追い込みに勤しむチームがいるかと思えば これ以上弄って点数が下がることを懸念してあえて何もしないことを選択したチームなど多種多様なチーム戦略が出始めます。
17時10分 終了
そして、あがいたチーム、あえて現状維持を選択したチームさまざまでしたがついにタイムアップとなりました。
ゲーム終了後は上位チームの発表と景品授与を行い、その後AWSさんによるゲームの解説をみんなで聞いていました。 「実はここはXXXだったんですね!」と話が出たときに「それか。これは気づきたかった!」や「これはわからないw」といった悲喜こもごもな声が聞こえて、しめしめと思っていたのは内緒です。
そしてイベントの最後に記念撮影をしました。
全17チーム 68名参加という大人数での社内技術イベントは大盛況で終えることができました。 ご参加いただいた方はもちろん、参加を許可してくれた上司の方や快く送り出してくれた同僚の方にも感謝を述べたいと思います。 今回経験したことは実際のプロダクト開発のトラブルシミュレーションとしても有効だと思うので、 同じ部署の参加していないメンバーに体験したことや学んだことをシェアをお願いしたいですね!
懇親会
イベント終了後は同会場で懇親会をおこないました。 多くの人から「次回はいつ頃やるんですか?」「次回も参加したいです」と言っていただけて、大成功だったなと感じています。 これはアンケートにも現れており、任意のアンケートをお願いしたところ 57%の方が回答していただけました。 またほとんどの回答で運営やイベントに対するフィードバックと開催に対するお礼のコメントが書かれていました。 (体感ですがアンケートに回答した7〜8割の方が書いてくれていたように思います。)
イベント上位チームから参加者コメントを紹介
今回ブログ記事を書くにあたり、上位3チームとBest Name 賞を受賞した1チームからGameDayを体験したコメントをいただきました。 もし、企画をされる方や次回参加したい弊社メンバーはこういう声があったのかと参考にしていただければと思います。
Best Team Name 賞 My Little Pony
「AWSの皆さんがあれだけ凝った舞台設定を作ってくださったのだから、その設定に合わせた名前にしよう!」と思っていたので、このような形でチーム名を評価していただいて嬉しいです。 今回は実力での受賞は叶いませんでしたが、次回参加する際は名前だけでなく実力も評価していただけるように精進します!
3位 Nyan Cat
普段であれば、とてもつらいインシデント対応ですが、AWS GameDayでは、他チームと競いながら、楽しく障害を乗り越えていくことができましたし、他部署の方々とチームを組み交流できたため、満足度の高いイベントでした。また来年も参加したいです!
2位 Love
充実したイベントの開催ありがとうございました!次から次へとカオスが降り注ぎ続ける中、1つでも対処に失敗するカオスがあると一瞬でリーダーボード上で抜かれるという非常にスリリングで充実したイベントでした!普段仕事をしないメンバーと一緒に課題解決に取り組むことで、スキルのみならず、良い交流の機会になったかと思っています。今年は惜しくも優勝を逃しましたが、次こそは優勝を目指したいです...!
1位 FreshByteFighters
素敵なイベントを開催して頂きありがとうございました。AWS Game Day というタイトルの通り、もちろん AWS のサービスをベースとしたシナリオでしたが、カオスへの対処方法や勘所は AWS に限らずどのシステムにも共通するものであり、今回の AWS Game Day での経験は今後のシステム構築・運用においてもとても役立つものだと思いました。また来年も優勝できるよう、AWS サービスの知見やシステム構築・運用のノウハウを磨いていきたいと思います!
以上。上位3チームとBest Name賞を受賞したチームの代表者のコメントでした。
まとめ
なんとか無事GameDayを開催することができました。 企画当初に考えていたゴールに関しては概ね満たすことができたのではないかと思います。
特に普段交流がなかなか取りにくい、他拠点・他チームと交流が生まれる接点を作ることができたのは大きな手応えを感じています。 仮説の「技術を軸としたコミュニケーションを行うことで交流の活性化を促し、競技性をもたせることで人と知識、双方を深く知るきっかけを提供できる」がある程度証明されたのかなと考えています。
今回はAWSさんが用意してくれた環境下でのシミュレーションでしたが、このような障害は現実のプロダクト開発でも起こり得ます。 全てを知ることは不可能ですし、個人が全ての責任を負う必要もないと考えています。 自分ができること、できないこと、手伝えること、そのために何をすればいいのかを意識して業務に活かしてもらえると嬉しいです。
「早く行きたければ1人でいけ、遠くへ行きたければみんなでいけ」というアフリカのことわざがあります。 まさしく、このようなトラブルシューティングや障害対応はチーム戦です、ぜひみんなで遠くへいけるチームを作っていただくきっかけにしてください。
マネーフォワードにはMVVCがあります。そのうちの「Fun」を体現するような技術イベントを開催できたんじゃないかと思います。 5
今回はぼくが初めての大きめな社内イベントの企画したこともあり、裏方に専念をしていました。 ですが、正直皆さんが苦しみながら真剣に楽しんでいる姿をみて「次は自分も参加したい」と思いました。 GameDayのようなトラブルシューティングもいいのですが、ISUCONのようにコードをガリガリ書き換えるパフォーマンスチューニングもいいですね。 運営は大変なのですが、自分たちがやりたいことを部署やチームの目標に沿う形で提案し、 実現できる部署にいるのでその強みを活かしてチャレンジしてみたいと思います。
ひとまず2023年の一番のGive it a Tryは達成できたのかなと胸をなでおろしています。 次はいつ頃開催するかわかりませんが、運営兼参加者としてブログが書けるといいなと考えてるのでぜひまた開催したいと思います。
この記事の制作秘話と言う名の余談
当初このブログは、GameDayについての紹介と運営の背景について書こうとしていました。 が、アウトラインの段階で超大作になりすぎることが判明し、レビュアー各位から「分けて」と総ツッコミを喰らいました。 なお、このアウトラインだけで111行ありました。
いや、うん……長すぎるとは書いてて思ってはいたんだ。
id:Pocke さんからも同様の指摘を受けます。 Pocke さんはいつも思うけど人を褒めるのがとても上手いですね。
というわけで GameDayの記事はイベントレポートと企画・運営した話の2つに分けてお伝えすることになりました。 みんなもいきなり記事を書き始めるんじゃなくてアウトラインから書くようにしていこうな!