4月28日、Chris Nager氏が「DOOM runs in ChatGPT and Claude / Blog」と題した記事を公開した。この記事では、ChatGPTやClaude内で直接プレイ可能なDOOMを開発し、MCP(Model Context Protocol)アプリとして動作させる技術について詳しく紹介されている。
実際にChatGPTのチャット画面内でキーボード操作によるDOOMのプレイが可能となっており、AIとの会話の中でそのままゲームを楽しめる画期的な実装となっている。これは単なるデモンストレーションではなく、MCP技術の新たな可能性を示す実用的なアプリケーションとして注目されている。
MCP(Model Context Protocol)の背景と意義
MCP(Model Context Protocol)は、AIモデルとアプリケーション間でリッチなインタラクションを実現するためのプロトコルである。Anthropicが開発したMCPにより、従来のテキストベースのやり取りを超えて、AIチャット画面内で本格的なアプリケーションを動作させることが可能になった。
Nager氏の実装は、このMCP技術の実用性を証明する興味深い事例となっている。開発者は「ツールと構造化された相互作用のために設計されたプロトコルに対して『DOOMは動くか?』と問いかけることの面白さ」について言及している。
技術実装:シンプルさを重視した設計
Nager氏が開発したシステムは、ChatGPTやClaude内でインライン表示されるプレイ可能なDOOMアプリとして動作する。最終版のアーキテクチャは意図的にシンプルに設計されている:
- DOOMセッションをインライン作成するMCPツール1つ
- 通常のブラウザ用起動URLを返すMCPツール1つ
/doom/playのブラウザルート1つ- 両方の環境で動作する署名トークンフロー1つ
MCP(Model Context Protocol)アプリとは、「Claude DesktopのようなMCPホスト内でレンダリングされるインタラクティブなUIアプリケーション」と定義されている。MCP対応していないクライアントでは、通常のブラウザURLにフォールバックする仕組みとなっている。
技術的基盤:WebAssemblyとFreedom
ブラウザ側の実装では**Cloudflareが提供するdoom-wasm**を使用している。これにより、ゲームエンジンを一から構築することなく、ブラウザ内で実際のDOOMランタイムを実現した。
**Freedoom Phase 1**をデフォルトコンテンツとして採用することで、プロジェクトの再配布可能性を保っている。FreedoomはオープンソースのDOOM互換ゲームコンテンツであり、商用ライセンスの制約なしに配布できる。
最初のバージョンでは、ランタイムをロードし、キャンバスをマウントしてDOOMを起動するシンプルなブラウザシェルとして実装された。
インライン表示の技術的挑戦
最も困難だったのは、MCP アプリ内でのDOOMのインラインレンダリングの実装だった。URLの起動は簡単だが、チャット画面内での直接表示で複数の問題が生じた。
初期の埋め込みバージョンでは、ネストしたiframe設定を使用していたが、以下の課題に直面した:
- ブラウザのセキュリティポリシー
- ホストのCSP(Content Security Policy)
- 埋め込み制限
- 壊れた起動オリジン
- 間違った場所から解決されるWADパス
- Netlify関数のパッケージング問題
解決策として、MCPアプリUIをより直接的な方式に再設計した。アプリビューを別のフレーム周りのシェルとして扱うのではなく、DOOMキャンバスをホストiframe内で直接動作させる方式に変更した。
特に厄介だったコンテンツパスのバグについては、blob-backedプリロードパスを削除し、WAD/configを直接Emscriptenファイルシステムに書き込む方式に変更することで解決した。これにより可動部品が減り、インラインアプリパスがより信頼性の高いものとなった。
モバイル対応と幅広い互換性
注目すべきは、ChatGPTとClaudeのiOSアプリでもDOOMが部分的に動作することが確認されていることだ。これにより、デスクトップだけでなくモバイル環境でもAIチャット内でのゲームプレイが可能となっている。
現在のバージョンでは以下の機能が実現されている:
- 対応ホストでのMCPアプリビュー内でのDOOMインライン起動
- その他すべての場所での通常ブラウザURLの返却
- 両方のケースで同じ署名トークンセッションモデルからの実行
- ブラウザパスが開始時に永続ストレージを必要としない十分な自己完結性
開発者は「DOOMをプレイ」するパスがサーバー状態に依存しすぎると「遊び心のあるものではなくインフラストラクチャになってしまう」として、遊び心のあるものを目指したと述べている。
MCP技術の未来への示唆
Nager氏によると、このプロジェクトによりMCPアプリが実際に何であるかを明確に考えることができた。単にJSONを返すツールではなく、「レイアウト、フォーカス、アセットローディング、入力、セキュリティ境界など、ウェブと同じ制約を持つ真のインタラクティブ表面」である。
このサイドプロジェクトは、AI時代における新しいアプリケーション配信方式の可能性を示している。従来のアプリストアやウェブブラウザを介さず、AIとの会話の中で直接アプリケーションを起動・実行できる環境は、ソフトウェアの利用体験を根本的に変える可能性を秘めている。
最終的な実装では、シンプルなインタラクションに集約されている。DOOMを要求すると、ツールがセッションを作成し、可能であればアプリがインラインで開く。不可能な場合でも起動URLが提供され、ゲームは動作する。
開発者は「私はやろうとしていたことを達成した:最大限の機能ではなく、最後まで貫かれた明確なアイデアだ」と総括している。
詳細はDOOM runs in ChatGPT and Claude / Blogを参照していただきたい。