リンドくん
たなべ先生、ゲーム開発を始めたんですけど、プロジェクトのフォルダがぐちゃぐちゃになっちゃって...
どこに何を置けばいいのかわからないんです。
たなべ
あるある!実は自分も最初はそうだったよ。
でもね、最初にしっかりとしたフォルダ構成を作っておくと、後々の開発がものすごく楽になるんだ。今日はその秘訣を教えるね。
HackATAは、エンジニアを目指す方のためのプログラミング学習コーチングサービスです。 経験豊富な現役エンジニアがあなたの学習をサポートします。
✓ 質問し放題
✓ β版公開中(2025年内の特別割引)
ゲーム開発を始めたばかりの方が最初につまずくポイントの一つが、プロジェクトのフォルダ構成です。
最初は小さなプロジェクトでも、開発が進むにつれてファイルは増え続け、気づけば「あのスクリプトどこだっけ?」「このテクスチャはどこに保存したっけ?」という状況に陥りがちです。
プロフェッショナルなゲーム開発現場では、プロジェクト開始時にフォルダ構成のルールをチーム全体で統一することが当たり前になっています。
なぜなら、適切なフォルダ構成には以下のような大きなメリットがあるからです。
この記事では、ゲーム開発初心者の方でもすぐに実践できる、プロジェクト作成時のフォルダ構成のベストプラクティスを詳しく解説していきます。
リンドくん
でも先生、とりあえず動けばいいじゃないですか?
フォルダの整理って後回しでもいいような...
たなべ
その気持ちはわかるよ!でもね、後回しにすると必ず痛い目に遭うんだ。
自分も学生時代に「後で整理すればいいや」って思ってたら、提出前日に大パニックになったことがあるよ(笑)
ゲーム開発では、プロジェクトが進むにつれて以下のような問題が発生しがちです。
ファイルの所在がわからなくなる
例えば、「プレイヤーの移動スクリプト」を修正したいとき、PlayerController.csがどこにあるか分からず、フォルダを何十個も探し回る...なんてことが起こります。これは貴重な開発時間の無駄遣いです。
似たようなファイルが重複する
整理されていないプロジェクトでは、「あれ、このキャラクターのテクスチャ、前にも作ったような...」と、同じようなアセットを何度も作ってしまうことがあります。これはストレージ容量の無駄にもつながります。
チームメンバーとの連携が困難になる
複数人で開発する場合、各自が好き勝手な場所にファイルを置くと、「誰がどこに何を置いたのか」が把握できなくなり、コミュニケーションコストが跳ね上がります。
バグの原因究明に時間がかかる
関連するファイルがバラバラに配置されていると、バグが発生したときに「どのファイルが関連しているのか」を追跡するのが非常に困難になります。
一方、最初からしっかりとしたフォルダ構成を作っておくと、以下のようなメリットがあります。
フォルダ構成は、まさにゲーム開発の土台なのです。土台がしっかりしていれば、その上に建てる建物(ゲーム)も安定します。
リンドくん
わかりました!じゃあ、どんなフォルダを作ればいいんですか?
たなべ
基本的な考え方としては、「種類別」「機能別」「シーン別」の3つの軸で整理するといいんだ。順番に見ていこう。
最も基本的なのが、ファイルの種類ごとにフォルダを分ける方法です。これはどんなゲームエンジンでも使える普遍的な考え方です。
この構成のメリットは、「スクリプトを探すときはScriptsフォルダを見る」というように、ファイルの種類で直感的に探せる点です。小規模なプロジェクトでは、これだけでも十分機能します。
プロジェクトが大きくなってきたら、機能やシステムごとにフォルダを分けるのが効果的です。
この構成では、関連するファイルが一箇所にまとまるため、特定の機能を修正・改善する際に非常に便利です。例えば、プレイヤー関連の処理を変更したいときは、Player/フォルダ内だけを見れば済みます。
ステージやレベルが複数あるゲームでは、シーンごとにフォルダを分けることも有効です。
この方法は、ステージ固有のアセットと共通アセットを明確に分けられるのが利点です。
実際のプロジェクトでは、これら3つの考え方を組み合わせるのがベストプラクティスです。
この構成では、まず大きく「プロジェクト固有」「外部プラグイン」「リソース」に分け、その中で種類別・機能別に整理しています。これにより、スケーラビリティと可読性を両立できます。
リンドくん
先生、Unityを使ってるんですけど、Unity特有の注意点ってありますか?
たなべ
あるよ!Unityには特別な意味を持つフォルダ名があるんだ。これを知らないと思わぬトラブルに遭うから、しっかり覚えておこう。
Unityでは、特定の名前のフォルダに特別な機能が割り当てられています。
Resourcesフォルダ
Resources/フォルダに置いたアセットは、Resources.Load()を使ってコードから動的にロードできます。
ただし、このフォルダの使用は最小限にすべきです。なぜなら、Resourcesフォルダ内のアセットはすべてビルドに含まれ、起動時間やメモリ使用量に影響するからです。
Editorフォルダ
Editor/フォルダに置いたスクリプトは、Unityエディタ上でのみ動作し、ビルドには含まれません。カスタムエディタツールやインスペクタ拡張を作る際に使用します。
Pluginsフォルダ
Plugins/フォルダは、外部ライブラリやネイティブプラグインを配置する場所です。C++で書かれたネイティブコードなどをここに置きます。
StreamingAssetsフォルダ
StreamingAssets/フォルダに置いたファイルは、そのままの形でビルドに含まれ、実行時にファイルパスでアクセスできます。動画ファイルや設定ファイルなどを配置します。
Unityの公式ドキュメントやコミュニティで推奨されている構成の一例です。
この構成のポイントは、プロジェクト固有のアセットを_Project/フォルダにまとめている点です。アンダースコアをつけることで、Asset Storeからインポートした外部アセットと明確に区別できます。
リンドくん
構成の考え方はわかってきました!でも、実際に運用するときのコツってありますか?
たなべ
理論だけじゃなくて、実践的なテクニックもたくさんあるんだ。現場で使われている工夫を紹介するよ。
フォルダ構成と同じくらい重要なのが、ファイルやフォルダの命名規則です。
推奨される命名ルール
PlayerController, EnemySpawner
playerHealth, currentScore
main-menu, game-over
Player_Idle, Enemy_Attack, UI_Button
避けるべき命名
My Script.cs ではなく MyScript.cs)temp, test, newなど)各主要フォルダにREADME.mdファイルを置くと、そのフォルダの目的や使い方を明確にできます。
README.mdの例:
Gitなどのバージョン管理システムを使う場合、.gitignoreファイルで不要なファイルを除外することが重要です。
GitHubで公開されているUnity用の.gitignoreも参考にしてください。
これにより、チームメンバー間で必要なファイルだけを共有でき、リポジトリサイズも小さく保てます。
フォルダ階層は深すぎず浅すぎずが理想です。
悪い例(深すぎる)一般的に、3〜5階層程度が適切とされています。それ以上深くなると、ファイルへのアクセスが面倒になります。
Unityのプレハブは数が増えやすいため、特に整理が重要です。
プレハブバリアント機能を活用すると、基本となるプレハブから派生バリエーションを作成でき、共通の変更を一括で反映できます。
リンドくん
友達と一緒にゲームを作ることになったんですけど、何か気をつけることはありますか?
たなべ
チーム開発ではルールの統一が何より大切だよ!
みんなが好き勝手にファイルを置くと、すぐにカオスになっちゃうからね。
チーム開発では、プロジェクト開始時に以下を明文化することが重要です。
これらをCONTRIBUTING.mdやProjectGuidelines.mdといったドキュメントにまとめ、チーム全員が参照できるようにしましょう。
複数人で同じプロジェクトを編集すると、コンフリクト(競合)が発生することがあります。これを避けるためのテクニックです。
シーンの分割
大きなシーンを複数人で編集すると、高確率でコンフリクトが発生します。そのため、シーンを機能ごとに分割することが推奨されます。
実行時にこれらのシーンをAdditive(加算的)にロードすることで、一つのゲームとして動作させられます。
担当領域の明確化
各メンバーの担当フォルダを明確にすることで、不要な干渉を避けられます。
プルリクエスト時に、フォルダ構成のルールが守られているかもレビューポイントに含めましょう。
レビューチェックリスト例:
リンドくん
先生、やっぱり失敗しちゃいそうで不安です...
たなべ
大丈夫!誰でも最初は失敗するものだよ。
よくある失敗パターンを知っておけば、同じ轍を踏まずに済むからね。
問題点: ファイル数が増えるとスクロールが大変で、目的のファイルを見つけるのに時間がかかる
対処法: 最低限、種類別にフォルダを分ける
問題点: Stuff/, Misc/, Other/といった曖昧なフォルダ名を使うと、何を入れるべきか分からなくなる
対処法: 具体的で説明的な名前をつける
Stuff/ → UtilityScripts/ または SharedAssets/Misc/ → 該当する具体的なカテゴリに分類問題点: PlayerController_v1.cs, PlayerController_v2_final.cs, PlayerController_v2_final_REAL.csのようなファイル名
対処法: Gitなどのバージョン管理システムを使う。ファイル名でバージョン管理しない
問題点: Test.cs, NewScript.cs, Temp.unityといった一時ファイルがプロジェクトに残る
対処法:
_Tests/を作る.gitignoreで除外する問題点: 1つのスクリプトに何百行もコードを書いてしまう
対処法:
リンドくん
なるほど!フォルダ構成って、思ったより奥が深いんですね。
たなべ
そうなんだよ!最初にしっかり設計しておけば、後の開発がとても楽になるんだ。
プロのゲーム開発者も、みんな最初にこの部分を丁寧に作り込んでいるんだよ。
この記事では、ゲーム開発におけるプロジェクト作成とフォルダ構成のベストプラクティスについて解説してきました。
最後に、重要なポイントをまとめておきましょう。
Resources/, Editor/, Plugins/などの特殊フォルダの役割を理解するまずは小さなプロジェクトから実践してみましょう。以下のステップで始めるのがおすすめです。
フォルダ構成は一度作ったら終わりではありません。プロジェクトが成長するにつれて、継続的に改善していくことが大切です。
この記事で紹介した内容は、あくまで基本的なベストプラクティスです。
より高度なプロジェクト管理手法や、大規模プロジェクト特有の課題については、実際に開発を進めながら学んでいくことになります。
ゲーム開発は楽しいものです。しかし、プロジェクトが混乱していると、その楽しさが半減してしまいます。
適切なフォルダ構成で、ストレスのない開発環境を整え、ゲーム制作を心から楽しんでください!