コーディングルール
January 11, 2026 · View on GitHub
Effekseer ではコードベースを一定に保つため、共通のフォーマット設定と命名規約を採用しています。本ドキュメントに記載されているルールは、サードパーティとして明示されているファイルを除き、すべての変更に適用してください。
全体方針
- リポジトリに含まれている整形ツールを使用し、整形結果と矛盾する手作業のインデントやスペース調整は避けてください。
- 差分を読みやすく保つため、整形は自分が編集した行に限定してください。
- 取り込んだサードパーティコードや自動生成コードでは、既存のスタイルが異なっていてもそちらを優先します。
- 大規模なクリーンアップや全面的な再整形を行う場合は、プルリクエストを送る前にメンテナと調整してください。
CMake ガイドライン
フォーマット
python -m pip install cmake-formatでcmake-formatを導入してください。python Script/Format_CMake.pyを実行してCMakeLists.txtと*.cmakeを整形します(プラットフォーム共通)。- スクリプトは生成物やサードパーティコードの再整形を避けるため、
.git、build、Dev/Cpp/3rdPartyを除外します。
C++ ガイドライン
フォーマット
Dev/Cpp/.clang-formatにある設定でclang-formatを実行してください。エディタに統合するか、clang-format -i <file>を利用します。- 設定は LLVM ベースであり、オールマンスタイルの波括弧、幅 4 のタブ(
UseTab = Always,IndentWidth = 4)、列制限なしが特徴です。可読性のために必要に応じて手動で改行してください。 clang-formatが生成した include の順序や空白を保ち、不要な微調整は行わないでください。- 挙動変更と同時にファイル全体を整形しないでください。全面的な整形が必要な場合は、事前相談またはフォーマット専用の変更として提出します。
命名
| 対象 | 規約 | 例 |
|---|---|---|
| public のデータメンバ | PascalCase(CamelCase) | RenderTarget |
| protected/private のデータメンバ | 末尾に _ を付けた lowerCamelCase(camelBack_) | currentIndex_ |
| クラス・構造体・列挙体 | PascalCase(CamelCase) | ModelRenderer |
| メンバ関数 | PascalCase(CamelCase) | UpdateBuffer() |
- 名前空間は周辺モジュールと一貫させてください(例:
Effekseer,EffekseerRendererGL)。 - 省略語ではなく意味の分かる単語を使い、表現を明確にしてください。
C# ガイドライン
フォーマット
.editorconfigの設定に従って整形します。エディタープロジェクトではDev/Editor/.editorconfig、その他の C# プロジェクトでもソースと同じ階層に設定ファイルがあります。- 現在の設定はタブインデント(
indent_style = tab,indent_size = 4)と制御構文での波括弧必須を指定しています。 - 編集したコードに対して整形を適用してください。Visual Studio では編集後に「ドキュメントの整形」 (
Ctrl+K, Ctrl+D) を実行するか、プロジェクトディレクトリでdotnet formatを使用します。 - 別の
.editorconfigが存在する箇所を編集する際は、そのローカル設定に従ってください。
命名
.editorconfigで定義されている .NET の規約に従います。クラス、構造体、プロパティ、イベント、public メソッドは PascalCase、private フィールドは必要に応じて末尾に_を付けた camelCase を使用します。- インターフェイスには
Iを接頭辞として付け(例:IRenderer)、非同期メソッドにはAsyncを接尾辞として付けます。 - プロジェクト内で広く認知されているものを除き、意味の伝わりにくい略語は避けてください。
例外
- これらのルールに一時的に従えない大きな差分(例: サードパーティコードのアップデート)をマージする必要がある場合は、事前にメンテナへ連絡するか、プルリクエストの説明で逸脱理由を共有してください。
- 意図的なスタイルの例外は、レビュアーが理解できるようコードコメントやレビュー説明に明記してください。