UnityにおけるAIエージェントの活用術

UnityにおけるAIエージェントの活用術

UnityにおけるAIエージェントの活用術

はじめに

本稿はQualiArts Advent Calendar 2025の16日目の記事になります。

株式会社QualiArtsでテクニカルアーティストをしている今井です。 2025年9月30日に開催されたCA.Unityにおいて、「開発現場で試行錯誤した、Unityでのゲーム開発におけるAIエージェント活用術」というテーマで登壇させていただきました。

登壇スライド(Docswell)

本稿では、UnityでAIエージェントを効果的に活用するにあたっての課題と解決策を、登壇時のスライドを引用しながら詳しく説明します。

最近、CursorやClaude Codeなど、開発を支援するAIエージェントが急速に進化しています。ゲーム開発の領域でも、CEDECのようなイベントでAI関連のセッションが増えたり、クラウド系イベントの基調講演がAI一色になったりと、活用の波を強く感じています。

一方でUnityでのゲーム開発においては、これらのツールをそのまま使ってもうまく機能しないケースが多いです。

※本稿では、CursorやClaude Codeのような開発支援のAIエージェントを指して、以降「AIエージェント」と呼びます。

本稿で扱うこと

  • UnityでAIエージェントを活用しづらい理由(アセット / Prefab / シーン / シリアライズ)
  • 仕様書駆動でAIの成功確率を上げるための進め方
  • MCP + 動的実行で「Unityの中で確かめながら」進めるアプローチ

UnityでAIエージェントを活用する際の課題

まず、Web上のChatGPTでシンプルなブロック崩しゲームを作成してみました。 チャット欄に「ブロック崩しを作って」と依頼すると、JavaScriptとCanvas APIを使って短時間で動作するゲームが完成しました。

ブラウザで作成されたブロック崩し

しかし、同じようにUnityでブロック崩しを作成しようとしたところ、結果は全く異なりました。 生成されたコードはコンパイルエラーを起こし、Prefabやシーンファイルは壊れた状態で出力され、.metaファイルも正しく生成されませんでした。

Unity版での失敗例

Unity開発におけるAIエージェント活用の主な課題として、ゲーム開発に必要な前提知識(コンテキスト)が伝わりにくいことアセットやシーンといったUnity固有の成果物が単純なコード生成だけでは扱いにくいことの2点が挙げられます。

課題1: ゲーム開発に必要なコンテキストの不足

ゲーム開発においては、使用するライブラリ、設計パターン、UIの構造、UnityのAPIなど様々なコンテキストが必要です。 単に「ブロック崩しを作って」という抽象的な指示では、Unityの複雑な構造を理解できません。

以下の画像のように指示は具体的であればあるほど、結果の精度は上がります。

具体的な指示

このように、仕様書レベルまで詳細な指示ができれば、AIエージェントは十分に自走してくれることがわかりました。 しかし、指示のたびに詳細な指示を考えていては効率化にはつながりません。さらにどの程度詳細な指示を与えれば良いのか、AIエージェントが何を理解していて、何を理解していないのかを把握しないと、指示の粒度も決めにくいです。

課題2: アセット管理とシーン構築の複雑さ

Unityのアセット管理は、他のゲーム開発環境と比べて独特です。画像、音声、3Dモデルなどのアセットはすべて.metaファイルによって一意に識別されます。これらの依存関係は複雑に絡み合っています。AIエージェントがこの依存関係を正しく理解せずにファイルを生成すると、プロジェクト全体が壊れてしまう可能性があります。

また、PrefabはUnityの重要な機能ですが、単なるファイル操作では作成できません。Unity Editorを通じて適切なAPIを呼び出す必要があり、この手順をAIエージェントに指示することは容易ではありません。

さらに、シーン構築においても課題があります。3D空間でのオブジェクト配置や階層構造は、テキストベースの指示では伝えにくく、AIエージェントが適切に理解することは困難です。

解決策1: 仕様書駆動開発のプロセス

これらの課題を解決するために、私たちは「仕様書駆動開発」というアプローチに注目しました。仕様書駆動開発とは、要件定義(仕様書)を作成してからコーディングを開始することで、実装精度を向上させる手法です。

仕様書駆動開発はAmazonがKiroを発表して以来、AIエージェントを使った開発ワークフローとして一般化しました。しかし一般的な仕様書駆動開発のツールをそのままUnityに適用することはできません。Unityには独自のアーキテクチャ、フレームワーク、ライブラリの使用パターン、コーディング規約があります。これらを考慮した仕様書を生成する必要があります。

そこで、Unity開発に特化したカスタムコマンドを開発しました。このコマンドは、AIエージェントがソースコードから以下のコンテキストを収集して仕様書を生成します。

  • プロジェクト全体のアーキテクチャ
  • 使用しているフレームワーク
  • ライブラリの使用パターン
  • コーディング規約
  • 既存実装の把握
  • 依存する機能の把握

これにより、AIエージェントはゲーム開発において必要なコンテキストを十分に理解した上で、それを仕様書に落とし込むことができます、

仕様書作成の流れ

仕様書作成は、以下のステップで進行します。

1. 要件入力

まず、作りたいものと要件を入力します。

要件入力

2. セットアップ

AIエージェントが仕様書作成の準備を行います。

セットアップ

3. AIエージェントの自律調査

AIエージェントが既存のコードベースを自律的に調査し、関連する実装パターンや依存関係を把握します。

AI自律調査

4. 方向性の質問

AIエージェントが調査結果をもとに、実装の方向性について質問します。

方向性の質問

5. ユーザー回答

ユーザーがAIエージェントの質問に答えることで、実装方針を確認・軌道修正します。

ユーザー回答

6. 追加調査

ユーザーの回答をもとに、AIエージェントがさらに詳細な調査を行います。

追加調査

7. エキスパート質問

必要に応じて、より専門的な質問が行われます。

エキスパート質問

8. 完了

すべてのステップが完了すると、詳細な仕様書が生成されます。

完了

Unity特有の工夫

このカスタムコマンドには、Unity開発に特化したいくつかの工夫があります。

UnityCsReferenceの参照

UnityのEditor側のソースコードが公開されており、これをサブモジュールとして参照することで、Unity APIの詳細な実装を理解できます。

UnityCsReferenceの参照

メソッドシグネチャの検証

呼び出すメソッドのシグネチャを実際のソースコードから検証し、存在しないメソッドを呼び出さないようにします。

メソッドシグネチャの検証

これにより、仕様書の精度が大幅に向上し、UnityのAPIも間違えずに呼び出してくれるようになります。

AIエージェントからユーザーへの質問

AIエージェントは仕様書を作成するにあたり、5つの質問をユーザーに行います。 これによりユーザーはAIエージェントの仕様書が、想定とずれていないか確認し、ずれている場合は軌道修正を行います。 この質問を2回行うことで、ユーザーの意図に沿った仕様書を作成します。

※紹介したカスタムコマンドは以下のリポジトリで公開しています。

https://github.com/rarudo/UnityAIAgentWorkflowSample/blob/master/.claude/commands/requirements-start.md

解決策2: UnityMCPによる動的な連携

仕様書駆動開発により、Editor拡張やツール開発は可能になりましたが、まだ課題が残っています。

具体的には、AIエージェントが生成したコードやYAMLをそのままファイル出力しても、Unityが管理するアセット/Prefab/シーン/シリアライズはUnity Editorを介した処理が必要になるため、外部からは安全にコントロールできません。

残りの課題

これらの課題を解決するために、MCPサーバーを活用しました。MCP(Model Context Protocol)は、AIとアプリケーション間の連携を可能にするプロトコルです。

MCPの活用

Unity向けのMCPサーバーはいくつかありますが、本稿ではuLoop MCPを使用します。

uLoop MCPは他のMCPと比較して、後述するコードの動的実行が強力であり、これによりAIエージェントとUnityの連携がより強化されます。

https://github.com/hatayama/uloopmcp

uLoop MCPを使用すると、以下のような操作が可能になります:

  • コンパイルの実行
  • コンパイルエラーの取得と修正
  • Prefabの情報取得と編集
  • シーンの情報取得と編集
  • Unityの実行

コードの動的実行

さらに、コードの動的実行機能を活用することで、AIエージェントがUnity APIを呼び出すコードを書いて即座に実行できるようになりました。

動的実行の仕組み

従来は「コードを作成 → コンパイル → 実行」という手順が必要でしたが、動的実行により、AIエージェントが書いたコードを即座に実行できます。

動的実行を使いUnity APIを呼び出すことで、アセット管理、Prefab作成、シーン構築、シリアライズといった課題がすべて解決できるようになりました。

実際に作成したもの

Unityで作成したブロック崩し

Unity上でもブロック崩しを作成し、ゲームロジック、UI、入力処理まで一通りAIエージェントが対応できることを確認しました。

完成したブロック崩し

※完成したプロジェクトと、その仕様書はこちらのリポジトリで公開しています

https://github.com/rarudo/UnityAIAgentWorkflowSample

まとめ

本稿では、UnityにおけるAIエージェントの活用方法について紹介しました。Unity開発では、アセット管理やシーン構築の複雑さから、一般的な開発支援AIエージェントをそのまま使用することが難しいという課題があります。

この課題を解決するために、私たちは以下のアプローチを採用しました:

  • 仕様書駆動開発: Unity特有のアーキテクチャやライブラリを考慮した詳細な仕様書をAIエージェントに生成させる
  • カスタムコマンド: 既存コードベースの調査、ユーザーとの対話、メソッドシグネチャの検証などを自動化
  • UnityMCPの活用: uLoop MCPによるUnity操作と、コードの動的実行により、AIエージェントがUnity APIを直接呼び出せるようにする

これにより、Unityにおけるゲーム開発の課題を乗り越え、AIエージェントが対応できる範囲が大幅に広がりました。ただし、AIエージェントを用いた開発効率化はまだまだ発展途上であり、指示の仕方や与えるツールにより、さらに精度が上がる可能性があります。

本稿が、Unity開発やAI活用に取り組む皆さまの参考になれば幸いです。

著者

今井 駿汰のプロフィール画像

(Imai Shunta)

2019年に株式会社サイバーエージェントに入社、テクニカルアーティストとしてライブシステムや、Unityツールの開発を担当

この記事をシェア

目次