「BedrockとLambdaで作る リアルタイム進行型推理ゲーム」 というタイトルで、Developers IO Osaka 2026 に登壇しました #devio2026

「BedrockとLambdaで作る リアルタイム進行型推理ゲーム」 というタイトルで、Developers IO Osaka 2026 に登壇しました #devio2026

「BedrockとLambdaで作る リアルタイム進行型推理ゲーム」 というタイトルで、Developers IO Osaka 2026 に登壇しました #devio2026
2026.10.01

こんにちは
おうちに帰るまでが文化祭
運用イノベーション部のかわいです。

今年もクラスメソッドの技術祭典 Developers IO Osaka 2026 が開催されました。
今年度、大阪オフィスではなんと2日間の開催となり、天候の悪いなか、たくさんの方に来場いただきました。ありがとうございました!

2026年度は文化祭をテーマとし、Day 1 は前夜祭、Day 2 は本番・後夜祭的な位置づけで、わちゃわちゃした感じであっという間の2日間でした。楽しかった。
https://classmethod.connpass.com/event/400604/
https://classmethod.connpass.com/event/401017/

私は2日目に「BedrockとLambdaで作るリアルタイム進行型推理ゲーム」というテーマで話したので、本記事ではその登壇内容を紹介したいと思います。

~おまけ~
運営委員会ではノベルティにタオルとステッカーを作成しました。
来場いただいた方はぜひご愛用ください

IMG_0067

▼資料

「もりのたんていじけんぼ」の概要

opening

  • 利用費を超爆裂低コストに抑えた(後述)地球🌍️に優しい、リアルタイム進行形の推理アドベンチャーゲーム(を、目指しました)
  • 4匹の動物たちのなかに、村の危険を脅かす犯人(因子)を特定します
  • みんなの証言やヒントをもとに、誰が犯人かを推理します
  • 動物たちは、たまにはぐらかしたり、たまにボロを出します

遊びと実験に振り切ったセッションとなりました。

なぜ作ったのか?

9af4fff5-8ab2-4c06-ba0c-e3822bd31a65

AWS SUMMIT 2026で AWS の方が、生成AIを使った本格的なリアルタイムマーダーミステリーゲームを作っていたのを見て(AI Game Forge)、自分も作ってみたくなったので。
https://dev.d3n7qn00zvdwg4.amplifyapp.com/docs/gameforge-summit-pitch-final.pdf
ブースは人気すぎてタイミング合わずゲーム画面の写真撮れず...
シナリオや画像、音楽まですべて生成していて、めちゃくちゃすごかった

アーキテクチャやパイプラインを見る限り、1プレイ$5前後かかってるのでは?と推測。
→ これは自分の環境ではコストがかかりすぎる。。
→ Lambda と Nova 2 Lite でなんとか作ってみる ←イマココ

AIまかせにしすぎず、可能な限り Lambda側での制御を目指しました。

ゲームモードについて

流れ

ゲームモードは2種類

  1. 動物たちへの尋問フェーズ(各5分)が2回のみ、事件シナリオが毎回ランダム生成される短編モード
  2. 尋問フェーズ3回、シナリオ固定、ユーザは場所を移動しながら、動物たちに質問をしていく長編モード

各尋問フェーズはスキップ可能で、制限時間が迫ってくるとフクロウ村長からヒントが与えられたり、動物たちがヒントやアリバイの矛盾を出しやすくなっていきます。

ゲームイメージ

▼長編モードの1シナリオ「大きな樫の木のツリーハウス殺人事件」のオープニング画面

ツリーハウス


ある静寂な夜、森に悲鳴が響き渡ります。
村人たちがかけつけると、村の長老が樫の木の根元で倒れていた。
ツリーハウスに上る唯一の手段である梯子は、外側からはずされていた。
探偵は、長老転落事件を調べ始めます。


事件が開始すると、マップ画面に遷移します。
手始めに、森の道に移動してみます。

マップ選択画面

キツネのコン太に尋問し、事件当時のアリバイなどを質問します。

尋問

重要な手がかりがつかめたので、次は犬のハチに質問しにいきます。

手がかり

基本的にはこのような流れに沿って手がかりを集め、ユーザは犯人に近づいていきます。
途中でフクロウ村長がヒントをくれるので、詰まっても次に何をすればいいか誘導してくれるようになっています。

全体構成について

以下がおおまかなアーキテクチャ図。

アーキテクチャ

フロントからのリクエストを API Gateway で受け、進行役の Lambda 関数に投げます。
そこから進行役が配下の Lambda を適宜呼び出し、Bedrock で動物たちの発言を生成します。
会話の記録は DynamoDB で管理。Lambda 関数がメインのため超低コスト。
また、モデルには Nova 2 Lite を使用し、こちらでもコストをかなり抑えています。
一部シナリオ画像生成には Nava Canvas を使用しました。
(※注:Nova Canvas は2026/9/30 でモデルが廃止されました)
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/model-card-amazon-nova-2-lite.html

難しかった点

  1. ゲームバランス

完全にLLM任せだと、手がかりの出方が安定しなかった。
 → 結果、終盤なのに何も証拠が出てこない / 逆に序盤から核心に触れてしまう...等が発生
  → 進行役に0~3のヒントレベルを持たせ、時間経過などでアリバイを崩しやすくした

  1. 自然な会話と整合性

同じキャラが「元気出してね!」と3連続で発言する事象が発生
 → 直前の発言をAI自身がその場で読み、同じ言い回しが続いていないか?を毎回チェックしてから答えさせることで改善(ここはまだまだ課題)

3.過去の会話の記録と参照

質問への回答と、容疑者の発言を別々に記録することで、より整合性の撮れた会話を担保
・尋問への回答 → 探偵に聞かれて答えたこと
・独り言 → 誰も聞いていないのに容疑者が勝手に話しかけてくる雑談
・jsonでシナリオ構成と会話ログを別々に保管

気になるコスト

1プレイあたり~2円程度🐭

■実測値 (短編モード、尋問2ラウンド分を実行して計測)
1プレイあたり 約$0.0095(約1.5円)

内訳: Input 13,793 tokens / Output 1,503 tokens
(Nova 2.0 Lite / ap-northeast-1)

まとめ的な

いやはや、AIとの壁打ちのおかげもあり、かなり低コストかつ手軽な構成でゲームを形にできました。
一方で、会話の整合性担保やユーザ体験(難易度など)はやはり難しかったし課題と感じました。コスト縛りがあるなかでトレンドな構成は取っていませんが、Lambda 関数の連携は何かに応用できるかもしれないとも感じました。
とにかく作ってみて楽しかった。

来年の Developers IO に向けて、もっとおもしろい企画を考えていきたいと思います!

ではまた!

完

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事