ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

JAWS DAYS 2024 - AWS アイコンクイズに挑戦くださりありがとうございました!

こんにちは、AWS チームの尾谷です。

昨日 (3/2)、フォージビジョンは JAWS DAYS 2024 の Platinum サポーターとして、池袋サンシャインにてブースを出展させていただいておりました。
会場では、フォージビジョンを知っていただく機会をいただくことができました。
本当にありがとうございました。

フォージビジョンのブースでは「運試しガチャ」を設置してハズレでも、AWS アイコンクイズに挑戦して満点を取ったらブランケットがもらえる、というダブルチャンスを催しておりました。

ただ、その AWS アイコンクイズが難しすぎて、誰も満点が取れないと話題になり、猛者たちを次々と唸らせるという事態を引き起こしました。

本ブログは、その AWS アイコンクイズの誕生話と仕様などをご紹介したいと思います。

3 連休に作りました

当初、AWS アイコンクイズは JAWS DAYS 2024 でブース出展する予定ではありませんでした。
そもそも、このアプリは 2 月 23 日、24 日、25 日の三連休に作ったんです。
useState の使い方や、描画によるループなどが非常に勉強になりました。

React の勉強のために作りました

年始から担当させていただいているお客様は AWS Amplify を使ったアプリケーション開発をされています。 そのため、お客様からは AWS インフラの質問よりもアプリケーションレイヤーの質問を多くいただきます。
そのお客様は、僕とアプリケーション・エンジニアの二人でサポートさせていただいているのですが、僕がすぐに回答できるように React を勉強したいと考えていました。

それで、年始から時間を捻出しようと思っていたのですが、JAWS DAYS 2024 の実行委員 で、ノベルティのデザインや発注などと忙しく、自社のブースで使うテーブルクロスや、ガチャガチャの準備、登壇や、日々の業務もあって、なかなか手につかずにおりました。

AWS アイコンクイズ

本アプリケーションで利用している AWS サービスはこんな感じです。
Amplify で React SPA (シングルページアプリケーション) をホスティングし、Amplify API で追加した AWS AppSync で GraphQL クエリにて Amazon DynamoDB から項目 (RDBMS でいうレコード) を取得します。

取得した項目には、クイズと選択肢、解説文、正解、アイコンの png 画像ファイル名が含まれます。
DynamoDB テーブルには、50 題を用意しました。

Amplify Storage を使って、Amazon S3 から画像を取得します。

アプリケーションの動作

ページを読み込んだ際 (正確に記載すると、ページ描画時) にランダムで 10 個の配列を作成します。
0 から 49 までの数字がランダムで割り当てられます。

スタートボタンを押すと、0 番目の配列に入っている数字をキーに AppSync が DynamoDB テーブルをクエリします。
テーブルから 1 項目を取得し、選択肢や正解に割り当てられます。

利用状況

当日はどんな感じだったのか?
Amazon CloudWatch で確認してみました。
SPA なので、リクエストは 1 回 = 1 人です。
のべ 138 人にご利用いただいたみたいです。

基調講演が終わったあたりから、トライいただく方が増えたようです。

AppSync のモニタリング

クイズの Start ボタンや、Next ボタンをタップした際に、AppSync が呼ばれます。
モニタリングを確認すると、多いところで 1 分間に 25 回呼ばれていました。

100 万回単位での課金のため、3/3 現時点で支払いは発生していません。

鬼ムズ問題

実際、トライいただいた皆さんは AWSJ の SA の方や、元エバンジェリストの方、AWS Ambassadors の皆さん、HERO もトライして下さいましたが、10 点満点は一人しか出ませんでした。ダブルチャンスというよりは、宝くじレベルの鬼ムズ問題になってしまったようです。

ちなみに、10 点満点を取得くださったのは AWS コミュニティ HERO の織田さんでした!
織田さんは、週刊 AWS キャッチアップを開催してくださっていることもあり、各サービスへの理解、アイコンまで幅広く把握されていると感じました。

jaws-ug.doorkeeper.jp

今後

今回作った AWS アイコンクイズの構成に興味を持っていただいた方、どこかで登壇して欲しいとリクエストいただいた方など、多くコメントをいただきました。
ソースコードは Github で公開したいと考えていますが、AWS アイコンの配布権利がないので、方法は検討します。
少なくとも、どこかで登壇してご紹介したいです。

お詫び

トライできなかった方、ごめんなさい!

会場のネットワークが弱くクイズに参加できない方が多数いらっしゃったようで、ご迷惑をおかけしました。
オフラインでもある程度、動作するようにキャッシュさせる仕組みを考えたいと思います。

AWS Wavelength が二つありました

一問、選択肢に AWS Wavelength が二つあるというミスがありました。
DynamoDB の String 値を修正するだけだったのですが、バタバタしていて修正ができず失礼しました。

最後までお読みくださりありがとうございました。