UE × AIコーディング (ClaudeCode) 半年間試してみた
概要
Unreal Engine (UE) Advent Calendar 2025 の15日目の記事です
他の人の開発手法が気になる今日このごろなので
まずは自分が半年間試行錯誤した上で行っている開発手法を公開してみようと思いました!
現在の開発環境の構成
- Windows11
- Rider 2025.2.5
- Riderは非商用利用であれば無料なのでまじおすすめ
- ClaudeCode 2.0.69
- メインのコーディング
- Codex
- コードレビュー用
- PlasticSCM
- UnrealEngine 5.5
Copilot使ったり、Cursor試したり色々してましたが
ここ3ヶ月くらいはこれで開発して結構快適!
▶ 代替可能そうな構成
- ClaudeCode → Codex
- 色んな記事見る限り今ならCodexのがいいかも?
- Rider → VisualStudio
▶ ClaudeCodeのセットアップ(必要だったら見てね)
Claudeのインストール
npm install -g @anthropic-ai/claude-code@latest
claudenpm使えないならnode.js入れてね
RiderのClaudePluginの追加
設定から追加できます
プロジェクトルートに
CLAUDE.mdを配置プロジェクトの構造、ビルドコマンド、アーキテクチャ情報をまとめたファイルを用意することで、ClaudeCodeがプロジェクトの文脈を理解できます。
初回に自動で作ってくれますが、追記しても良いかも
VLSPluginDev/ ├── CLAUDE.md ├── VLSPluginDev.uproject ├── Source/ ├── Plugins/ │ ├── VLS/ │ └── VLS_CGToolKit/ └── Content/ちなみに自分のはこんな感じ Claude.md · GitHub
基本の開発方法
設計を考えて依頼、作ってもらったものを動作確認してレビューを行う人になってます
- 作りたい機能のタスク化、1タスクで1つのことを実装する粒度で
- タスクをClaudeCodeに実装してもらう
- ClaudeCodeでビルド&デバッガでの起動を行う
- 動作確認を行う
→ 修正が必要であれば5へ、不要であれば6へ - 修正内容をClaudeCodeに投げる、3に戻る
- ClaudeCodeでバージョン管理を行う
→ 完成であれば終わり、必要なタスクが残っていれば2へ
UE × Rider × ClaudeCode を使う上でのTips
▶ uprojectを開くこと
ソリューションファイル(sln)の再生成が不要になります
VS2022でもそうなってるね
Visual Studio で Unreal Engine プロジェクトを開く | Microsoft Learn
Unityから移行した時はこの作業のせいでUE嫌いだったなぁ~
▶ ClaudeはwindowsならGitBash上で動かすこと
公式ドキュメントにも書かれてるのですがPowershellと相性よくありません
Set up Claude Code - Claude Code Docs
ClaudeがBashコマンドを実行しようとしてコマンドが使えないってエラーを吐いて Powershell用に書き換えて実行し直してることないですか?それが無くなります
実行速度やコンテキストにも影響すると思います
▶ JetBrainsのMCPServerのPluginを使う
Riderの機能を一部Claudeから呼び出せるようになります
一番便利なのはコード修正→ビルド→UE起動の一連の流れをClaudeで行えるようになること
▶ ModelをSonnet1Mにする
コード量やSessionがある程度の大きさになってくるとContext量が足りずConversationCompactの頻度が高くなってイラつきますよね
/modelからModelをこれに変えると解消されます
使用量も上がるので気をつけて
▶ ターミナルタブから「エディタに移動」させる
ターミナルタブでいじってるとESCがフォーカスを外すボタン扱いになっていたり色々使いづらいので一つのタブにしちゃいましょう
▶ ctrl + J で改行
これはどのAIコーディングツールでも一緒なんですがCLIで指示する場合
ctrl + Jで改行できます
実例
今回実装した機能
LevelSnapshotのようなPluginであるActorSerializationを自作しました
指定したActorのその時の状態をバイナリとして保存、復元でき、外部にJSONとして出力できる機能です
その時の開発の流れを書いていきます
Projectに一部依存しているところを修正して記事にしているので実際の入出力とは違いますがご了承ください
▶ Phase0: 記事を書くために履歴を取得
この記事を書くことをタスク実装時は考えていなかったのでどういうやり取りをしていたか
思い出すためにこの作業を行いました
/resumeで見れる履歴ってどこに保存されてるの?
● Claude Codeの履歴保存場所について、公式ドキュメントを確認します:
● Fetch(https://code.claude.com/docs/en/claude_code_docs_map.md)
⎿ Received 25.7KB (200 OK)
~~~~~~
● 見つかりました!
履歴の保存場所
~/.claude/history.jsonl (約189KB)
このファイルに会話履歴が保存されています。履歴ファイル見つけた!ありがとう!
俺からのチャットしか載ってないけどResumeするとClaudeからの回答もちゃんと戻るよね
これってどこか別のところに保存されているの?● history.jsonlの中身を確認して、どのような形式で保存されているか見てみましょう:
● Bash(head -20 ~/.claude/history.jsonl)
… +125 lines (ctrl+o to expand)
~~~~~
Claude側の応答はローカルには保存されていない可能性が高いです。代わりに:
1. サーバー側に保存: sessionIdをキーにAnthropicのサーバーに保存
2. /resumeの動作:
- ローカルのhistory.jsonlからsessionIdを取得
- サーバーにsessionIdを送信
- サーバーから完全な会話履歴(Claude側の応答含む)を取得
見てもらえると分かると思うんですけど友達みたいに会話してますw
AIとのやり取り見せるのちょっと恥ずいっすよね
▶ Phase1: ブランチ作成
今回はバージョン管理も含めAIで任せようと思うのでここも任せます
指示内容
「レベル上に存在するActorをSerializeDeserialize出来る機能を作ろうとしています。
PlasticSCMでcmコマンドを使い、現在のブランチから、ブランチを切って始めてください。
ブランチ名はfeature_serialize_dataとかでいいです。」出力
ブランチの作成と移動
▶ Phase2: 初期実装
指示内容1
「Level上に存在するActorをDataTableにシリアライズとデシリアライズする機能を作りたいです。 シリアライズしたデータは今後JSONとして使用する予定があるのでその点も考慮してください。」動作確認
ビルドエラーだったり細かいところを修正後、SerializeとDeserializeは一旦動作確認が取れた。指示内容2
PlasticSCMで現在の変更内容を見て、適切なコミットメッセージを日本語で書いてCheckinして。コミット履歴
Serializationフォルダと3つのファイルを新規作成 - ActorSerializationStructs.h: FVLS_SerializedActorData構造体 - ActorSerializationBPFL.h/.cpp: シリアライズ/デシリアライズ関数 - ActorSerialization_Usage.md: 使い方ドキュメント 実装機能 ✓ バイナリシリアライズ/デシリアライズ ✓ JSON形式でのTransform/Component/Property抽出 ✓ DataTable保存・取得 ✓ CSV出力対応
▶ Phase3: バイナリファイル分離
課題
初期実装ではバイナリデータをDataTable内に直接保存していたため、DataTableが肥大化し、エディタでの閲覧するとクラッシュするようになった。また、ActorのAttachment情報が保存されていなかったのでComponentの親子関係が維持できていなかった。
指示内容1
DataTableがクラッシュが開くとクラッシュするようになってしまいました。ログを見ると原因としては恐らくDataTable内に書かれたバイナリをエディタ上で見ることでクラッシュしてそうです(ログを添付)。どう思いますか?出力
原因としては合っていそう
バイナリを別データファイルにするかどうかの提案
指示内容2
バイナリデータをDataTable内ではなく、別ファイルとして保存するように変更し、そのリンクを持つようにして。保存先はSaved/にフォルダを作ってその中に。ファイル名はCut名とActorIDNameから命名するように。
出力
BinaryDataFileを.bin形式で保存するような機能の追加
バイナリパスをDataTableに保存するように変更
動作確認
バイナリデータが分離されていることを確認
DataTableが開けるようになっていることを確認
DataTableにアクターのComponentの親子情報が保存されていないことを発見、DeserializeをするとComponentが全て並列になる
BP_Person
├── SkeletalMesh
└── TextRender指示内容3
「ActorのComponentの親子関係が保存されておらず並列になってしまっているのでAttachment情報を保存して」
出力
Attachmentを追加するために構造体を追加
動作確認
BP_Person
└── SkeletalMesh
└── TextRenderのようにAttachment情報が付与されてDeserialize出来ることを確認
コミット履歴
✅ バイナリは別ファイルとして保存するように 変更内容: - FActorSerializedActorDataにBinaryDataFilePathを追加 - FActorSerializedComponentData構造体を追加(アタッチメント情報含む) - バイナリデータをSaved/ActorSerialization/{Map}_{ActorIDName}.binとして保存 - バイナリファイルパスを自動生成
Phase4: パスの相対化
Phase5: カスタムEnum対応
Phase6: JSONフォーマット修正
Phase7: 複雑なプロパティ対応
Phase8: Actor追跡とコンポーネント復元
Phase9: バッチ処理とUndo対応
Phase10: DataAsset移行
書き出すの大変すぎて途中で諦めた
所感
このPlugin作るのにコードを9割以上は書いてもらいました、すごい!
UE5.5で使えない関数を呼ぶことがほぼなくてストレスフリーでした
Engineの内容をコンテキストとして含めてるんですかね?
最後に
UEでAIコーディングを使っての開発手法が詳しく書かれている記事が
あまり見当たらなかったので書いてみました
みんなはどんな風に使ってるのかな~
【UnrealEngine / UE5】新しいPCで既存プロジェクト(要ビルド)を開くまでのメモ(Mac版も対応)
新しいPCにセットアップする時に毎度詰まってるのでメモ!
Windows版
EpicGameLauncherを入れる
https://store.epicgames.com/ja/download
エンジンをインストールする
EpicGameLauncherを一度終了しもう一度開く(.uprojectを関連付ける)
VisualStudioをインストールする
Optionとして必ず以下を含める(ビルドに必要)
バージョンはPC間で合わせて入れてる
公式の対応バージョンは以下
Unreal Engine で C++ プロジェクトの Visual Studio 開発環境をセットアップする | Unreal Engine 5.4 ドキュメンテーション | Epic Developer Community
.uprojectから「Generate Visual Studio project files」を行う


(任意)Riderをインストールする
VisualStudio(or Rider)で.slnファイルを開く
Project 'UE5' load failed / Project '[Project名]' load failed って出る場合
Explorerで [Project]/Intermediate/ProjectFiles を確認
UE5.vcxprojと[Project名].vcxprojが恐らくない
.uprojectから「Generate Visual Studio project files」を行う
生成できたら.slnを開き直す
生成できなかったらVisualStudioのOptionを入れ忘れてる
インストーラーをもう一度実行し以下を選択する


終わったらも一度.uprojectから「Generate Visual Studio project files」を行う
これで出来なかったらわからん...
ビルドして終わったら開く
Macの場合
EpicGameLauncherを入れる
エンジンをインストールする
VisualStudioをインストールする
XCodeを入れる、最新にする
GenerateXCodeProject
自分の場合はなんか二つ出てきたけどUnealEditorServicesの方しか効かなかった

[Project]/Intermediate/ProjectFilesに
UE5と[Project名]の.xcodeprojが出来ているのを確認

UE5.xcodeprojを開きXCodeからビルド
ソースから Unreal Engine をビルドする | Unreal Engine 5.2 ドキュメンテーション | Epic Developer Community
ビルドして終わったら開く
【UnrealEngine】Riderでビルドできない時用のメモ
エラー起きたら追記していく
Expecting to find a type to be declared in a module rules named ‘RD’ in UE5Rules, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null. This type must derive from the ‘ModuleRules’ type defined by Unreal Build Tool.
原因
RDはRiderLinkのこと
UE5ではRiderLinkはGame/Pluginに置かなきゃいけないのに、Engine/Plugin下に入っているとビルド時にエラーが起きる模様
でもビルド通ることもあってある日突然エラー吐かれて???ってなった
対処方法
- $Engine$/Developer/RiderLink をディレクトリごと削除する
$Engine$はデフォルト"C:\Program Files\Epic Games\UE_X.X" - Riderを再起動もしくはTools/RefreshRiderProjectする
- RiderLinkをGame以下に入れるか聞かれるのでOKを押す
出ない場合はメニューのFile/SettingsからLanguages&Frameworks/UnrealEngineにInstallRiderLink in Gameというボタンがあるのでそれをクリックする

よく見たらInstall~EngineにDoesn't work with UE5 from Epic Games Launcher. UE5では動かないよ、って書いてある...なんでこんな項目あるんだろ...
参考
Trouble creating C++ project in UE5 EA - #5 by DerUhu - C++ - Epic Developer Community Forums
Riderで略語やGPTなどの大文字続きにWarningが出ないようにする
問題
例えばChatGPTと打つとChatGptが命名スタイル的に合ってるよ、と怒られる
Suggested name is 'ChatGpt'.

解決方法
命名スタイルと異なる単語を略語リストに登録する
- Warningが出ている単語にキャレットを設定(入力をその単語に合わせる)
- Alt+Enter もしくは コード列の左に出ている電球マークを押しアクションリストを開く
Inspection: 'Inconsistent Naming'からAdd 'GPT' to the abbreviations listのどれかを選ぶ

設定の保存場所
3で選んだ項目により場所が違う
- This computer
%USERPROFILE%\AppData\Roaming\JetBrains\Rider{Riderのバージョン}\resharper-host\GlobalSettingsStorage.DotSettings - Solution team-shared
{プロジェクト名}.sln.DotSettings - Solution personal
{プロジェクト名}.sln.DotSettings.user
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GPT/@EntryIndexedValue">GPT</s:String>
このような記述がされているので文字列を削除すれば設定は消える
行ごと削除しようとすると後ろに別の閉じタグがついていたりするので確認して消すこと
【Unity】MacでEditor上で文字化け、潰れが起きた時の対処法(PackageManager、AssetStore、Services、UIToolKit等)
起きる内容
EditorのWindowを開いた際に下記のような文字化け、潰れが起きます
PackageManagerとか見れないと困る...

発生したバージョン
Unity2020.3.43f1以前
対処方法
可能ならバージョンを上げる
この問題はUnity2020.3.43f1で修正されています
それ以前のバージョンが必須でないならバージョンを上げてしまうのがベストです
Auto Graphic API for MacOS を変更する
バージョンを上げられない場合は
Auto Graphic API for MacOS を「Metal」から「OpenGL Core」に変更することで対処可能です
デメリットとして
Unityのパフォーマンスが低下する模様です。
ビルドする際などは「Metal」に戻す必要がありそうです。
手順
- Edit/ProjectSettingのPlayerタブを開きます
- OtherSettingsの「Auto Graphics API for Mac」のチェックを外します
- Graphics APIs for Mac という配列が表示されるので「+」マークを選択し、「OpenGL Core」を追加します
- 「OpenGL Core」の順番がMetalより下になっているので一番上に上げます

上記の手順をするとEditorを再起動するか聞かれるので再起動します

これで文字化けが解消されます
参考サイト
【Unity】Riderで1行Summaryを使えるようにする(LiveTemplate)
できること
1行Summaryが使える
/// <summary> </summary>

やり方
Preferencesの「Editor/LiveTemplates/C#」を開く

右上の赤丸が「NewTemplate」ボタンなので新しいTemplateを作成する

/// <summary> $END$ </summary>
このように設定して保存
設定についての説明は最後に書いておきます
使い方
コード上で「sum」と入力すると予測変換で出てくるので選択して使えます!
説明

$END$ はこのLiveTemplateを使った後のテキストカーソルの位置
パラメータ説明
雰囲気で使ってる部分もあります
- Shortcut
- コード上でこの文字を打った時にこのLiveTemplateを使える
Description
- 説明

- 説明
Options:
- Reformat
- コード整形を行うか(多分その付近を整形してくれる)
- Shorten qualified references
- 名前空間などから出来るだけ短い参照にする
- Reformat
- Availability
- どのバージョンから使用可能か
- Use in
- Generation
- 通常の使い方
- Surround
- 選択した部分を囲う
- () とかはこれ
- Both
- どちらも
- for とかはこれ
- Generation
- Mnemonic
- ブックマーク的なことができるらしいけど上手く使えてない...
- Show in context action
- 「option + Enter」 or 「Alt + Enter」を押したときに表示するか
【Unity】UnityRecorderで画面のスクショを撮る(Script不要、透過・連番・グリーンバック可能、解像度自由)
環境
Unity 2021.3.3f1
UnityRecorder 3.0.3
できたもの

今回やりたかったこと
- Scriptを使わずにスクショを撮りたい
- Game画面のサイズに合わせた画像が欲しい
- 透過画像も撮りたい
いくつかプロジェクトがありそれぞれでScreenShot撮りたい場合、ScriptやPrefabをコピペするのがめんどくさくてこの方法を使ってました
手順
シーンの設定
Cameraの設定

- ClearFlags: SolidColor
- BackGround Alpha: 0
背景の色を決めているのでグリーンバックにしたければ #00FF00 にしつつAlphaを255にすると良いです
撮りたいオブジェクトを配置
今回はLive2D公式のSampleキャラクターを配置してます

UnityRecorderの設定
UnityRecorderをInstallする
「Window/PackageManager」のUnityRegistryにあります

Recorder画面の設定
Recorderを追加
「Window/General/Recorder/RecorderWindow」でWindowを開き
AddRecorderからImageSequenceを選択します

設定

FrameRate
- TargetFPS: Custom
- Value: 1
→ 1秒間に何回スクショを撮るかの設定なので、連番画像を撮りたい場合は30や60、29.97などにすると良いです)
Capture
- Source: GameView
- OutputResolution: MatchWindowSize
→ GameViewのSizeに合わせて撮る設定です、お好みで変えてください
→ GameViewのSizeを4Kなどにすればその通りの画像が書き出せます

Format
OutputFile
スクショが置かれる場所とファイル名などが設定できます、お好みで
ここを押すと画像の保存先が開けるので便利です
撮影する
「START RECORDING」を押すとUnityがPlayされます
録画が開始され1秒ごとに1枚写真が撮られるので必要な画像が撮れたか確認したければ「STOP RECORDING」
止めてよければUnityのSTOPをします
OutputFileの対象ディレクトリにこのように画像群が保存されているので必要なものだけ残して削除してOKです

完成
最初に載せた画像が撮れました、わーい

【Unity】TextMeshProでネオン風のテキストを作ってみた
環境
- Unity 2021.3.8f1
- TextMeshPro 3.0.6
できたもの

今回やりたかったこと
- Unityのデフォルト機能のみでネオン表現が出来る
- テキストを簡単に変更できる
注意点
立体感は出ない
手順
PackageManagerでTextMeshProのInstall
「Window/PackageManager」から開けます

ネオン風のFontをDL
今回使わせていただいたフォント
www.graphicpear.com
個人&商用利用無料(クレジットは必要)とのこと
NEONEON - FREE FONT on Behance
フォントからTextMeshProのFontAssetを作成
.otfファイルが入っているのでそのままUnityのアセットに追加
フォントファイルを右クリックし、「Create/TextMeshPro/FontAsset」を選択することでサクッとFontAssetが作れます
パラメータ設定とかしたい場合は「WIndow/TextMeshPro/FontAssetCreator」から作成するといいっぽい?
FontAssetからMaterialを作成
Project上のFontAssetを選択し、Inspectorの右上の縦3点リーダーから「CreateMaterialPreset」を選択します
これをしておくと共通のMaterialでなく個別のMaterialとして設定できます


TextMeshProを作成し設定する
オブジェクト作成して背景とかフォントサイズとか変えただけの状態

TextMeshProのComponentのプロパティを変更


変更点
- FontAsset
- MaterialPreset
- VertexColor #3643FF

Materialの値を変更


変更点
- Face Softness
- Outline Color Alpha 204
- Outline Thickness
- Glow Color R:0 G:7 B:255 A:125 Intensity:0
- Glow Offset
- Glow Outer
- Glow Power
完成!
TextMeshProでいい感じのネオン表現が出来た気がします

Play中にテキストを変更することも可能です

追加でやったこと
日本語に対応させる
このままだとNeoneonのフォントが日本語に対応していないため文字化けします

NeoneonのFontAssetのFallbackFontAssetsのFallbackListに、フォントが見つからなかった際に使うFontAssetを設定しておきます

今回使わせて頂いたフォント booth.pm
Fallbackする文字は「まるこいあすフォント」を使うように変更できました
(別フォントなので違和感はある)

別の文字色を使う

オブジェクトとMaterialを複製して色を変えるというゴリ押し...
悲しみ...






