【ITニュース解説】Building a Serverless Dungeon Master Agent on AWS
2025年09月29日に「Dev.to」が公開したITニュース「Building a Serverless Dungeon Master Agent on AWS」について初心者にもわかりやすく解説しています。
ITニュース概要
AWS上でAI搭載のサーバーレスなダンジョンマスター(DM)を構築した事例。Amazon BedrockやLambdaなどサーバーレス技術を使い、キャラクター記憶や動的なストーリー生成、リアルタイム応答を低コストで実現した。詳細な構築方法を公開している。
ITニュース解説
このニュース記事は、アマゾンウェブサービス(AWS)というクラウドサービスを使い、人工知能(AI)を搭載したダンジョンマスター(DM)エージェントを構築するプロジェクトについて解説している。これは、ゲームの進行役であるDMをAIが担当し、プレイヤーのキャラクター情報やゲーム状況を記憶し、リアルタイムで物語を作り出すシステムである。このシステムは、サーバーの管理が不要な「サーバーレス」という方法で構築されており、月々の運用コストも非常に低いのが特徴だ。
このAI DMは、Amazon BedrockというAIサービスと、他のサーバーレスなAWSサービスを組み合わせて作られている。Amazon Bedrockは、大規模言語モデルのような強力なAI機能を提供し、このプロジェクトではAIの「脳」として機能する。サーバーレスアーキテクチャとは、開発者が物理サーバーの準備やその運用管理をすることなく、使った分だけ料金を支払う仕組みのことだ。これにより、開発者はサービスの機能開発に集中でき、コストも効率的に抑えられる。
このAI DMの主な機能には、プレイヤーのキャラクターの能力値、持ち物、背景ストーリー、そしてゲーム中のあらゆる選択を記憶する「永続的なキャラクター記憶」がある。これにより、過去のセッション内容を忘れることなく、一貫したゲーム体験を提供できる。また、プレイヤーの行動や選択に応じて、AIがその場で物語を生成し、ユニークなストーリーを展開する「動的なストーリーテリング」も可能だ。AIからの応答は、まるで人間と会話しているかのように自然にリアルタイムでストリーミングされるため、没入感のあるゲームプレイが楽しめる。そして、カジュアルな使い方であれば、月にわずか1ドルから5ドル程度で利用できるため、非常にコスト効率が良い。
システムは複数のAWSサービスが連携して動作する。中心となるのは、AIの推論、記憶管理、必要な行動の調整を行う「Amazon Bedrock Agents」である。次に、「AWS Lambda」は、サーバーを意識せずにコードを実行できるサービスで、ここでは主に二つの機能を持つ。一つは「セッションプロキシ」という役割で、AIエージェントの呼び出しと、その応答をプレイヤーにストリーミングする処理を担当する。もう一つは「ゲームアクション」という役割で、キャラクターデータの作成、読み込み、更新、削除といった操作や、ゲームセッションの履歴を記録する処理を行う。
プレイヤーのキャラクター情報やゲームの進行状況といったデータは、「Amazon DynamoDB」というデータベースに保存される。DynamoDBは、高速で柔軟なNoSQLデータベースであり、自動的にスケールする特性を持つため、プレイヤーの数が増えても安定してデータを管理できる。プレイヤーが操作するWebクライアントと、これらのバックエンドサービスとの通信窓口となるのが「Amazon API Gateway」である。これは、WebAPIの入り口となり、プレイヤーからのリクエストをLambda関数へ安全に転送する役割を担う。そして、プレイヤーがゲームを操作するための軽量なWebインターフェースは、「Amazon S3」というストレージサービスでホスティングされている。S3は、静的なWebサイトを低コストで公開するのに適している。
具体的なシステムの動きは次のようになる。プレイヤーが「私は警備兵をこっそり通り過ぎる」といった行動をWebクライアントに入力すると、そのリクエストはまずAPI Gatewayに送られる。API Gatewayは、そのリクエストをLambdaのセッションプロキシ関数に転送する。セッションプロキシは、その入力を受け取り、Bedrock Agentに指示を出す。Bedrock Agentは、プレイヤーの行動を解釈し、直接物語を語るか、または特定の「アクショングループ」を呼び出すかを判断する。例えば、プレイヤーの隠密行動が成功するかどうかを確認するために、DynamoDBに保存されているキャラクターの「隠密スキル」を照会するといったアクションだ。AI DMからの応答は、Lambda関数を通じてリアルタイムにプレイヤーのWebクライアントへとストリーミングされて返ってくる。この一連の流れは、サーバーの管理を一切必要としない「サーバーレス」の仕組みで実現されている。
このシステムが機能するために重要なのは、「スマートな記憶管理」である。システムは、キャラクターの成長、持ち物の変化、ストーリー上の決定とその結果、そしてキャンペーン全体の履歴や世界の状態など、複数のセッションにわたる文脈を維持する。これにより、AI DMは常にゲームの全体像を把握し、一貫性のある体験を提供できる。また、「適応的な難易度調整」も特徴で、AI DMはキャラクターのレベルや過去のパフォーマンスに基づいて、挑戦の難易度を自動的に調整する。さらに、「拡張可能なゲームメカニクス」も考慮されており、サイコロを振るシステムや戦闘システム、あるいはカスタムルールなど、新しい機能を追加したい場合でも、モジュール化されたLambdaアーキテクチャのおかげで容易に拡張できる。
このAI DMを実際に構築するには、AWS CDKというツールが使われる。CDKは、プログラミング言語を使ってAWSのリソース(サービスや設定)を定義し、自動的にデプロイするためのフレームワークだ。これにより、複雑なインフラストラクチャもコードとして管理できるため、再現性が高く、変更も容易になる。デプロイのプロセスは、リポジトリのクローン、必要なパッケージのインストール、そして「npx cdk deploy」コマンドを実行するだけで完了する。
技術的な側面では、DynamoDBのテーブル設計が工夫されている。プレイヤーIDとセッションIDを組み合わせた複合キーを使用することで、複数のセッションをサポートしつつ、プレイヤーごとやセッションごとに効率的なデータ検索が可能になっている。また、Bedrock Agentの設定では、DMの個性や振る舞い、コンテンツの安全性を確保するための指示が詳細に定義されている。AIは、ゲームの状態を読み書きする必要があるときに、「GameActions」というアクショングループを通じて、特定のLambda関数を呼び出す仕組みだ。このアクショングループには、「キャラクターの取得」「キャラクターの保存」「ログの追加」といった具体的な操作が定義されており、それぞれがDynamoDBと連携するLambda関数と紐づいている。
開発の過程ではいくつかの課題に直面した。例えば、Amazon Bedrockのモデルへのアクセスがデフォルトで有効になっていないため、明示的にアクセスをリクエストする必要があった。また、Webクライアントからの通信で発生するCORS(クロスオリジンリソース共有)のエラーも、API GatewayとLambda関数の両方で適切にヘッダーを設定することで解決した。AIモデルの推論には時間がかかるため、デフォルトの短いLambdaタイムアウトでは不十分であり、これを延長する対応も必要だった。Bedrock AgentからLambda関数へ渡されるパラメータの形式が状況によって異なるため、柔軟にパラメータを処理するロジックを実装することも重要だった。さらに、DynamoDBに初めてログを書き込む際にリストが存在しないというエラーを避けるため、「if_not_exists」という条件付き更新式を使って、リストがなければ空のリストとして初期化する工夫も施された。
これらの課題解決は、クラウドサービスの利用における実践的な学習となった。デバッグの際には、CloudWatch Logsというログサービスを活用し、Lambda関数の実行状況やAIとのやり取りを詳細に確認することが重要だった。また、エラーが発生した際には、エラーの原因を明確に伝える構造化されたエラー応答を返すことで、迅速な問題特定に繋がる。
このプロジェクトは、既存のBedrock Agentsを基盤としているが、将来的には「Amazon Bedrock Agent Core」という、より高度なAIエージェント構築フレームワークへの移行が検討されている。Agent Coreは、より詳細な推論制御、高度な記憶管理、複数エージェントの連携、パフォーマンス最適化、そして企業向けの監視・監査機能などを提供し、より堅牢なAI DMの実現を可能にする。
このサーバーレスなAI DMエージェントの構築は、「もしAIがDMだったら?」というアイデアから始まり、コスト効率が良く、拡張性のあるプロトタイプとして具体化された。Amazon Bedrockとサーバーレスアーキテクチャを組み合わせることで、記憶し、適応し、楽しませるAI DMが実現できたことを示している。これは、ゲーム分野だけでなく、他のAI駆動型アプリケーションにおいても、サーバーレスなクラウドサービスがいかに想像力豊かなアイデアを実用的でメンテナンスのしやすいソリューションへと変えることができるかを示す良い例だ。未来のテーブルトークゲーム、そしてその先の技術は、サーバーレスによって大きく変わる可能性がある。