AWS Gamedayとは?
以下が公式ブログの説明です。
AWS GameDay は、ある課題に対して AWS サービスで解決するための対応力や実装スキルを試せる実践形式の人気ワークショップです。3 – 4 名でチームを結成し、待ち受けるさまざまなトラブルやクエストをクリアしながら最終ミッション達成を目指します。各クエストをクリアするごとにポイントが付与され、最も多くのポイントを獲得したチームが勝者となります。ゲーミフィケーションされた安全な環境で楽しみながら、さまざまなことを学ぶことができる機会をご提供するものです。
AWS版の競技プログラミングだな、と個人的には思いました。
競技プログラミングとの共通点
- 複数のお題が与えられる
- GameDayではお題を「クエスト」と呼んでいます
- お題に対して適切な実装をすると点数がもらえる
- 実装した内容を提出すると、解答が正しいかどうかを採点してもらえる
- GameDayの場合は実装したリソースのarnを提出するという方式
- リアルタイムで参加者の得点を確認できる
当然、違いもあります。
競技プログラミングとの相違点
- 1つのクエストの中にマイルストーンがあり、マイルストーンごとに点数がもらえる
- 数学でいう大問1配下にある、(1), (2), (3)みたいなやつです
- チーム戦である
- 競技プログラミングにもチームで行うものもあるし、GameDayにも個人戦のものもあります。あくまで主に、という感じです
- 既存のコード、リソースがあり、それを改良する形で実装を進める
こんな感じでしょうか。
今回参加したGameDayはオンラインイベントの形式で行われたものでした。
他にもAWS Summitやre:Inventでのイベントとして開催されることもあるそうです。
AWS SummitでGameDay参加された方の記事
re:InventでGameDayに参加された方の記事
複数回開催されているGameDayですが、そのたびにルールや対象となるシステムは異なるらしいです。
ただ、ルール説明の際にネタバレ禁止と言われたので、同じ内容のGameDayが複数開催されることもあるのかもしれません。
大企業だと、社内GameDayが開催されることもあるそうです。(羨ましい......)
いざ討伐
今回のGameDayは4人1組のチームで参加する方式でした。今回のチームは新卒入社3年目の先輩と、自分を含めた新卒入社2年目3人のチームでした。クエストが2つあり、2-2に分かれてそれぞれ作業を進めることにしました。
筆者は先輩とチームを組み、クエスト2を進めていくことにしました。
ペアプログラミングで言うドライバーを筆者が担当し、ナビゲーターを先輩に担当していただきました。
このクエストでは、あらゆるところで使用されているド定番サービスと、筆者が業務で少しだけ触ったことのあるサービスと、名前は聞いたことあるけど触ったことがないサービスが登場しました。
まず問題文を読み、現状がどんなシステムであるのか、そしてそれをどういう風に改良して実装したらよいのかをざっくりと把握しました。それから実装に入っていくのですが、筆者がド定番サービスを使い慣れておらず、さらに触ったことがないサービスも使用しなければならず、トライ&エラーを幾度も繰り返していました。
悔しいっ......!!
負けず嫌いの筆者としてはどうにかして点をもぎ取るしかなくなりました。午後休みを取って会社のデスクから参加していたのですが、対応しているエラーが解消されるたびに「これは通るやろ!」「いけるぞ、いけるぞ!!」「よっしゃ!!!」という喜びの声をあげたり、新たなエラーが発生するたびに「なんでやねん...」「許せん...」「腹立つわ...」という心の声が少し漏れ出たりしてしまいました。周囲の皆様&ペアで作業してくださった先輩、すみませんでした......
残り時間も数十分となったころに、すべてのエラーが解消され、何とか得点をgetすることができました!!
めちゃくちゃ嬉しかった!!
ただ、残りのマイルストーンは攻略できませんでした。時間があれば攻略できなくもなさそうだったので、少し悔しさが残ります。
感想
・楽しんで学習できる
普段の業務だと、プロジェクトが変わらなければある程度触るサービスは固定化されてくると思います。しかし、1つのシステムを構築する際でも、その実装方法を何通りも出して吟味できる方が優れているエンジニアなのはいうまでもありません。とはいえ、勉強する意思はあってもなかなか手が出せないのが人間の性です。GameDayのような対戦形式のゲームは楽しめて、かつ学習にもなりました。とても有意義なイベントだなと思いました。
・ペアプロ推進派におすすめ
今回は筆者がドライバーで、先輩にナビゲーターを務めていただきました。先輩がドライバーを務めたほうが作業は効率よく進んだのかもしれないですが、おそらく筆者に経験を積ませようとしてくださり、筆者にドライバーを担当させてくださいました。その際、1つのエラーを改善するたびに、「いいじゃん!」「やるねえ!」などちょっとした誉め言葉をかけてもらいました。現在所属しているプロジェクトでも筆者は先輩とペアで作業をさせていただく機会が多いです。継続してペアプログラミングをしていると、自分の成長を自分だけでなく先輩にも感じていただけて、上記のようなちょっとした誉め言葉をいただくことがあります。実はこれが結構モチベーションにつながったりしています。また、詰まっているところを同時に並行して調査できたり、作業内容のレビューの時間も短くなったりもして(レビューしてない側が言ってすみません)、たくさんのメリットがあります。しかし、自分の周りを見渡してみると、あまり業務でペアプログラミングを行っているプロジェクトは多くありません。そんな方には、GameDayを通して、ペアプロ、モブプロを経験してみることをおすすめします。業務ではないので気軽に試せますし、気に入れば業務に取り入れることもできます。
・先輩方、ありがとうございます
今回のGameDayはAWS AmbassadorsやAWS Top Engineersの方々がチームを編成して参加するという形式でした。このような方々のおかげでこのような有意義なイベントに参加させていただけたことを本当にありがたく思っています。自分もそのように、後輩に有意義な時間、機会を提供してあげられる先輩になりたいなと思いました。というのは少しかっこつけていて、ただ後輩とがやがや言いながらプログラミングで遊ぶって楽しそうなので、自分がその権利を行使できる立場になりたいと思っただけでした。
・点数getできた
正直、AWSの実装経験は数か月ほどしかなくて、全く手も足も出ないのではないかと思っていました。やはり対戦ゲームなので、点数が取れたことが純粋に嬉しかったです。回によって難易度やテーマは違うと思いますが、今回のGameDayは、AWSやインフラに対する深い知識や経験に由来する判断力などを問うものではなく、既存のコードやシステムをきちんと把握したり、慣れないサービスでもトライ&エラーを繰り返して改善していったりという、根気強さ、粘り強さのようなものが問われているのかなと思いました。
まとめ
いろいろ書きましたが、結論としてはめっちゃ楽しかったです。勝利にメラメラ燃えているチームもあると思いますが、順位争いに食い込めないチームも参加する価値は大いにあると思います。参加する機会がある方は、自信がなくてもぜひぜひ参加してみてください。