概要
これは、アドベンドカレンダー「AI エージェント機能で進化した JetBrains の開発体験をシェアしよう by JetBrains Advent Calendar 2025」の1日目の投稿です。
以下、本アドベントカレンダーの概要より抜粋。
このカレンダーは、AI エージェント機能で進化した JetBrains IDE(例:IntelliJ IDEA / PyCharm / GoLand / RubyMine など)を活用した、実践的な開発体験の共有をテーマとしています。
計画 → 実装 → テスト/インスペクション の一連を IDE の中で完結させる工夫を歓迎します。小さな Tips から機能単位の具体的な事例まで、複数ファイル編集・リファクタリング・テスト生成・ドキュメント化など、現場で再現しやすいノウハウの投稿をお待ちしています。
本投稿では、「Junieを使ってUnityプロジェクトにRequired属性を一括付与する」事例・ノウハウを紹介します。
JetBrains の AI コーディングエージェント「Junie」を使って、条件を満たした箇所にC#の属性(Javaのアノテーションに近い要素)を付与し、Unityプロジェクトにおける発生しやすいトラブルを回避します。
前提・背景となるUnityの課題
本記事の概要を理解するための前提・背景を簡単に紹介します。本記事で紹介する事例・ノウハウは、ゲームエンジンUnity向けのものです。
Unityでは、C#コード・画像・3Dモデル・音楽ファイル・Unity専用の構成要素・プロジェクト設定ファイルなど、様々なフォーマットのファイルを集めて、プロジェクトとして扱います。
UnityプロジェクトにはSceneという要素があります。Sceneは、GameObjectという要素で構成されます。次の画像は、非常にシンプルなSceneである、Sampleシーンのスクリーンショットです。下の画像左側はSceneの内容を表示しています。SampleシーンはGameObject「Main Camera」、「SampleSceneManager」、「Character」で構成されています。
GameObjectはComponentという要素で構成されます。上の画像右側は、GameObject「Main Camera」の構成要素を示しています。画像右側の「Transform」や「Camera」などはComponentです。
Unityプロジェクトの開発作業では、ComponentをC#でコーディングし、Unity Editor上でGUI操作により、Scene・GameObject・Componentを構築・編集・設定します。Componentの構築・編集・設定作業において、「プロジェクト内のファイル」や「他のGameObjectや他のComponent」を参照設定を行います。
以下に示すコードはComponentのコードである、「SampleSceneManager」クラスのコードです。SerializeField属性が付与されたcharacterフィールドに注目してください。
using UnityEngine;
public class SampleSceneManager : MonoBehaviour
{
[SerializeField] Character character;
}
Unity Editor上のSampleSceneManager Componentには「Character」という項目が表示されます。この項目に、Scene上のCharacter Componentへの参照を設定します。
よくあるUnityプロジェクトのトラブルとして、「Componentに設定した参照が壊れてしまい、実行時エラーが発生してしまう」というトラブルがあります。これは、Componentから参照設定していたプロジェクト内のファイルや、Scene上の他GameObjectを、誤って消してしまうことが原因です。
これを解決するために、本記事ではSerializeField属性が付与されている箇所に、Required属性を付与します。
SerializeField属性は、UnityEngine.SerializeField属性です。
Required属性は、Unityの有償アセット(ライブラリ)「Odin Inspector and Serializer」のSirenix.OdinInspector.Required属性です。
Required属性は、参照設定が必要・必須なこと示す属性です。コードでRequired属性がついているのに、Componentで参照が設定されていない箇所は、次のようにUnity Editor上でエラー表示をしてくれます。
また姉妹製品の「Odin Validator」を使えば、プロジェクト内のRequired属性が付与されているのに、参照が設定されていない箇所を一括で探すことができます。
このようにRequired属性を使い、参照が必要・必須なのに参照されていない箇所を見つけだし、「Componentに設定した参照が壊れてしまい、実行時エラーが発生してしまう」というトラブルを回避することは非常に有効です。
ところで、開発・運用がある程度進んだプロジェクトにおいて、多数存在するSerialzieField属性利用箇所の全てに対して、Required属性を付与するのはなかなか大変です。
そこで、Junieを使ってSerialzieField属性利用箇所に対して、Required属性を付与します。
Junieを使ってRequired属性を付与する
JunieはJetBrains の AI コーディングエージェントです。
Junieを使って実プロジェクト中のSerializeField属性利用箇所に対して、Required属性を付与していきます。
Junieタブを開いて、次のようなプロンプトを入力します。
SeriarizeField属性が付与されているすべてのフィールドにRequired属性を付与してください。
付与する対象は、Assets/MyProjctCodePath以下のすべてのcsファイルが対象です。対象でないファイルは一切変更しないでください。
SeriarizeField属性とは、厳密にはUnityEngine.SeriarizeField属性です。
Required属性とは、厳密にはSirenix.OdinInspector.Required属性です。
付与した後のコードは、[Required, SeriarizeField]のような形式で、一行でかつカンマ区切りで付与してください。
必要に応じて、namespace文を追加してください。
余分な変更は行わず、コンパイルエラーにならないような修正をしてください。
いくつか補足します。
付与する対象は、Assets/MyProjctCodePath以下のすべてのcsファイルが対象です。対象でないファイルは一切変更しないでください。
Unityでは、サードパーティーのライブラリ・アセット・コードも「Assets」という管理・開発対象ディレクトリに配置されます。そこで、上記のプロンプトで、編集する対象を自作コードに明確に限定します。
SeriarizeField属性とは、厳密にはUnityEngine.SeriarizeField属性です。
Required属性とは、厳密にはSirenix.OdinInspector.Required属性です。
上記のプロンプトで、付与する対象を明確にします。
付与した後のコードは、[Required, SeriarizeField]のような形式で、一行でかつカンマ区切りで付与してください。
上記のプロンプトで、付与した後のコードフォーマットを具体的にします。
コードフォーマットに対しては、プロジェクト固有の設定に合わせることをおすすめします。また、Junieから「既存コードが複数行の場合は、複数行にしていいか」など問われることもあるでしょう。
必要に応じて、namespace文を追加してください。
上記のプロンプトで、追加のコーディング指示を行います。
余分な変更は行わず、コンパイルエラーにならないような修正をしてください。
上記のプロンプトで、プロジェクトが常にコンパイルエラーにならないような支持を追加します。
先のプロンプトを入力すると、Junieは設定に合わせて、対話的に今後の作業プランの提示、確認をしてくれます。プロジェクトに合わせて適切な作業内容、変更内容、一括で行うか・漸進的に行うかなどを指示・やり取りしてください。
誰にこの作業がおすすめか、なぜこの作業がおすすめか
この「Junieを使ってUnityプロジェクトにRequired属性を一括付与する」作業は、Unity開発者、特に個人開発者や小規模チームにおすすめです。
- 作業量が多く、手作業でやるにはなかなか精神的に手が出しにくい(場合がある・人もいる)
- Junieの作業結果のレビューが明確で簡単
- プロジェクト全体に対して一括で作業を行わなくても、漸進的・部分的に作業をしても効果がある
- 万が一作業漏れがあっても、大きなトラブルにはならない
とくに初めてのJunieでの作業におすすめです。
おすすめの追加指示
Required属性に加えて、場所ごとにAssetsOnly属性とSceneObjectsOnly属性を付与させるのもおすすめです。
さいごに
本記事では「Junieを使ってUnityプロジェクトにRequired属性を一括付与する」事例を紹介しました。
「やれば終わるし、やったら効果的。だけれど、そこそ面倒」という作業はたくさんあります。そのような作業を、Junieにどんどんお任せしてみるのはいかがでしょうか?
無料の非商用利用向け IDE のご利用や、1 か月間の無料トライアルをご活用いただけます。
また、AI 機能は別途サブスクリプションとなりますが、AI Pro の 1 か月間無料トライアルも併せてご利用ください。
本記事執筆時点では、無料で使えるトライアルもあるようです。ぜひ試してみてください!
JetBrains IDEはいいぞ!Riderはいいぞ!Junieはいいぞ!




