すぎしーのXRと3DCG

主にXR, Unity, 3DCG系の記事を投稿していきます。

Claude Code での Unity 開発の振り返り (2025年)

こんにちは、すぎしーです。クラスター株式会社にジョインして4年目になります! クラスター Advent Calendar 2025 の11日目の記事です!

qiita.com

前日は @Kazuya0123 さんの 「僕と地域とクラスター」でした。僕も cluster がオンラインで様々な市区町村がつながるプラットフォームとして認知されるよう、頑張っていきたいです。

note.com

さて、今回は2025年の Claude Code での Unity 開発の振り返りについてです。

世間の例に漏れず、クラスターのエンジニアたちにも AI コーディングを使った開発があっという間に浸透しました。

せっかく導入した年なので、そんな AI コーディングの1つである Claude Code を Unity で何に使ったかについて、3つほどピックアップして振り返ってみようと思います。

クラスターでの AI コーディングの開発事例については Cluster Tech Blog もどうぞ!

何に Claude Code を使った?

UnityEditor 向けツールの作成

UnityEditor 向けツールの作成がやりやすくなったのは、一番わかりやすい恩恵だったように思います。
特にいままで一番時間を要していた「Unity の API 仕様書を都度調べる時間」が大幅に削減できるという点は非常にありがたいと感じています。

以前までは EditorGUILayout, AssetDatabase, SerializedObject, EditorWindow といったお馴染みなものから Addressables などライブラリまで、様々な API の仕様書とにらめっこしながら開発していたことが AI にツールの仕様を伝えるだけであっという間に出来上がるようになりました。とんでもない時代が来ましたね。

以下のようなツールも作ったのですが、コード行のほとんどが Claude Code による生成です。

InputAction の編集

Unity の InputSystem で用いる InputAction ですが、項目が多いと UI でポチポチするのが大変ですし、何よりミスが起きやすいです。 特に VR のトラッカーは 11点 * 3要素(位置、回転、状態) の合計33点を指定する必要があるので、指定ミスしないように注意が必要でした。

そこで InputAction の中身を確認したところ JSON 形式でユニークなGUIDを各入力に紐づけるフォーマットだったので、 Claude Code に必要な項目を指定して規則性に従って編集してもらうことにしました。

少し調整はありましたが、あっという間に作ってくれました。

{
        ...
        {
            "name": "Tracker",
            "id": "b6b46f2b-fb24-4481-9840-28738adcb0d6",
            "actions": [
                {
                    "name": "LeftFootPosition",
                    "type": "Value",
                    "id": "969c5f83-4d27-4f58-8deb-2b6dd6365b8e",
                    "expectedControlType": "Vector3",
                    "processors": "",
                    "interactions": "",
                    "initialStateCheck": true
                },
                {
                    "name": "LeftFootRotation",
                    "type": "Value",
                    "id": "65634ff7-fa1b-4a27-bb29-f74dc757d170",
                    "expectedControlType": "Quaternion",
                    "processors": "",
                    "interactions": "",
                    "initialStateCheck": true
                },
                {
                    "name": "LeftFootState",
                    "type": "Value",
                    "id": "c9d667fd-f506-4a68-bee8-39225817751e",
                    "expectedControlType": "Integer",
                    "processors": "",
                    "interactions": "",
                    "initialStateCheck": true
                },

余談ですが、AI に GUID の生成を任せると「GUID っぽい文字列」を作ってしまいます。 例: a1b2c3d4-e5f6-g7h8-a1b2-c3d4e5f6g7h8

ちゃんとした GUID を使わせたい場合は、GUID を生成するコマンドを渡しておくと良いです。 例: ./generate-guid.gob6b46f2b-fb24-4481-9840-28738adcb0d6

GUID に限らず、AI がシンプルに使えるツールを用意することも大事ですね。

エラー通知から修正案を出させる

Claude Code に Sentry MCP Server の使用を許可して Issue のリンクを渡し、必要に応じて修正案を出させています。
補足: Sentry とは、エラー監視プラットフォームのことです。

まだすべてを任せているわけではなく、以下のような AI エージェントでも比較的解決しやすい部類の Issue をお願いする形を取っています。

  • HTTP レスポンスのハンドリング漏れ
  • 例外 (IOException) などのハンドリング漏れ

修正内容の精度がまだ安定していない部分があるのでエラー通知毎にプルリクエストを提出させる形にはしていませんが、いずれはそうしていきたいなと考えています。

その他

以下のような活用をしています。

  • client 視点での server 側の実装調査 (重要度の低いものに限定、重要度が高い場合は server エンジニアに直接確認します)
  • 設計、実装の壁打ち
  • ライブラリの詳細調査
  • リリース後に不要となった Feature Flag 分岐コードの廃止、及び関連して不要になったコードの削除
  • GitHub Actions で使用しているバージョンの一括更新
  • Node.js の Node バージョンの更新

雑感

というわけで Claude Code を Unity 開発でどのように活用したかについて書いてみましたがいかがだったでしょうか?

今年は AI コーディングを単に導入しただけでなく、AI がスムーズに開発できる環境づくりにも力をいれていた年だったかなと思います。

AI の進化の早さにも食らいついていって、どんどん開発を回していきたいですね。

さて、明日は @FUKUDA_concrete さんの 「はじめてのUnityワールド作成のススメ」です。お楽しみに!