Appearance
命名規則ガイドライン
概要
このドキュメントは、プロジェクト全体で統一された命名規則を定義し、PSR-4準拠を確保するためのガイドラインです。
基本原則
本プロジェクトはWordPress環境で動作することを前提としています。
そのため、以下の原則に基づいて命名規則を定義しています:
- PSR-4準拠: 名前空間とディレクトリ構造を完全に一致させる(オートローディング)
- WordPress Coding Standards準拠: メソッド名・プロパティ名はsnake_caseを使用
- 一貫性: プロジェクト全体で統一された命名規則を適用
- 可読性: 明確で理解しやすい命名を心がける
PSR-4とWordPress Coding Standardsの併用について
本プロジェクトは以下の方針を採用しています:
- PSR-4(オートローディング): 名前空間とディレクトリ構造の対応関係に準拠
- WordPress Coding Standards(命名規則): メソッド名・プロパティ名にsnake_caseを採用
なぜPSR-12に完全準拠しないのか
PSR-12では、メソッド名・プロパティ名にcamelCaseを推奨していますが、本プロジェクトでは以下の理由からsnake_caseを採用しています:
- WordPress環境との整合性: WordPressコア・プラグイン・テーマ開発ではsnake_caseが標準
- 保守性の向上: WordPress開発者にとって読みやすく、メンテナンスしやすいコード
- 既存コードとの一貫性: プロジェクト全体でWordPress規約に統一することで可読性を確保
トレードオフ: PSR-12完全準拠を犠牲にする代わりに、WordPress環境での開発効率と保守性を優先しています。
ディレクトリ命名規則
メインディレクトリ(PascalCase)
トップレベルの機能的な役割を持つディレクトリは PascalCase を使用します。Admin/, Bootstrap/, Converter/, Dto/, Infrastructure/, PostType/, Template/ など、core_src 直下の他のディレクトリも同様にメインディレクトリ(PascalCase)です。
core_src/
├── Admin/ ✓ PascalCase
├── Bootstrap/ ✓ PascalCase
├── Controller/ ✓ PascalCase
├── Converter/ ✓ PascalCase
├── Service/ ✓ PascalCase
├── Model/ ✓ PascalCase
├── View/ ✓ PascalCase
├── ShortCode/ ✓ PascalCase
├── Enum/ ✓ PascalCase
├── Factory/ ✓ PascalCase
├── Handler/ ✓ PascalCase
├── Interface/ ✓ PascalCase
├── Util/ ✓ PascalCase
├── Support/ ✓ PascalCase
├── Exception/ ✓ PascalCase
└── Constants/ ✓ PascalCase機能別サブディレクトリ(lowercase)
メインディレクトリ(core_src 直下の各ディレクトリ)の 直下 に置くサブディレクトリは、機能別・用途別を問わず lowercase を使用します。複数語の名前は snake_case の lowercase とします(例: event_master, create_daily_article)。本プロジェクトでは feature/1138 にて一括リネームを実施済み。
ShortCode/CreateDailyArticleRelationalDay/
├── dto/ ✓ lowercase(DTOファイルを格納)
├── converter/ ✓ lowercase(コンバータファイルを格納)
└── validation/ ✓ lowercase(バリデーションファイルを格納)
View/components/BirthDayIndex/
├── dto/ ✓ lowercase
├── util/ ✓ lowercase
├── converter/ ✓ lowercase
└── style/ ✓ lowercase変更例(Admin/EventMaster の場合)
ルールを適用する場合、ディレクトリ名のみ lowercase(複数語は snake_case)にし、クラス名・ファイル名は PascalCase のままにします。
| 項目 | 変更前 | 変更後 |
|---|---|---|
| ファイルパス | core_src/Admin/EventMaster/EventMasterAdminPage.php | core_src/Admin/event_master/EventMasterAdminPage.php |
| 名前空間 | App\Admin\EventMaster | App\Admin\event_master |
補足: 既存の Interface/Controller, Converter/ToController, Admin/EventMaster などは、名前空間・参照の変更が多くなるため、現時点ではドキュメント上でルールと変更例を示すにとどめ、一括リネームは別タスクとします。新規に追加するディレクトリでは本ルールに従うことを推奨します。
クラス命名規則
クラス名(PascalCase)
すべてのクラス名は PascalCase を使用します。
php
✓ CreateDailyArticleRelationalDayRequestDto
✓ BirthDayIndexComponentDto
✓ CreateDailyArticleRelationalDayConverter
✓ HallEnum
✓ ValidationExceptionメソッド名(snake_case)
すべてのメソッド名は snake_case を使用します(WordPress Coding Standards準拠)。
php
✓ convert_to_dto()
✓ validate_and_convert_hall()
✓ parse_where_condition()
✓ get_birth_day_index_url()プロパティ名(snake_case)
プロパティ名は snake_case を使用します(WordPress Coding Standards準拠)。
php
✓ $request_dto
✓ $hall_enum
✓ $birth_day_index_url
✓ $character_birthdaysInterface の命名規則
Repository Interface および Service Interface は、それぞれ {RepositoryName}Interface / {ServiceName}Interface とし、配置場所や実装要件の詳細は coding-standards.md セクション 11 を参照してください。
ファイル命名規則
PHPファイル(PascalCase)
PHPクラスファイルは、クラス名と完全に一致させ、PascalCase を使用します。
✓ CreateDailyArticleRelationalDayRequestDto.php
✓ BirthDayIndexComponentDto.php
✓ CreateDailyArticleRelationalDayConverter.php
✓ HallEnum.php設定ファイル(lowercase)
設定ファイルは lowercase を使用します。
✓ composer.json
✓ phpstan.neon
✓ config/phpcs.xml
✓ phpunit.xmlドキュメントファイル(kebab-case)
ドキュメントファイルは kebab-case を使用します。
✓ coding-standards.md
✓ naming-convention-guide.md
✓ adr-psr4-hybrid-approach.md
✓ project-architecture.md(概要)
✓ directory-structure.md(詳細)
✓ mvc-and-dip.md(詳細)
✓ bootstrap-and-di.md(詳細)
✓ adapter-layer.md(詳細)
✓ design-principles.md(詳細)
✓ production-deploy.md(詳細)
✓ notes-and-related-files.md(詳細)名前空間とPSR-4準拠
正しい例
php
// ファイル: ShortCode/CreateDailyArticleRelationalDay/dto/CreateDailyArticleRelationalDayRequestDto.php
namespace App\ShortCode\CreateDailyArticleRelationalDay\dto;
class CreateDailyArticleRelationalDayRequestDto {
// ...
}php
// ファイル: ShortCode/CreateDailyArticleRelationalDay/converter/CreateDailyArticleRelationalDayConverter.php
namespace App\ShortCode\CreateDailyArticleRelationalDay\converter;
use App\ShortCode\CreateDailyArticleRelationalDay\dto\CreateDailyArticleRelationalDayRequestDto;
class CreateDailyArticleRelationalDayConverter {
public function convert_to_dto(array $request): CreateDailyArticleRelationalDayRequestDto {
// ...
}
}誤った例
php
// ❌ ディレクトリ名と名前空間が不一致
// ディレクトリ: converter/ (lowercase)
// 名前空間: Converter (PascalCase)
namespace App\ShortCode\CreateDailyArticleRelationalDay\Converter;
class CreateDailyArticleRelationalDayConverter {}php
// ❌ ディレクトリ名と名前空間が不一致
// ディレクトリ: Dto/ (PascalCase)
// 名前空間: dto (lowercase)
namespace App\ShortCode\CreateDailyArticleRelationalDay\dto;
class CreateDailyArticleRelationalDayRequestDto {}フロントエンドの命名規則(CSS)
新規実装の CSS では BEM(Block__Element--Modifier)を採用します。既存のデータ可視化用クラス(coin-up3, rotation-up2 等)はリネームしないでください。BEM の具体例や原則の詳細は CLAUDE.md およびプロジェクトの HTML/CSS 編集スキル(.cursor/skills/html-css-editing/SKILL.md)を参照してください。
参考資料
- coding-standards.md(本プロジェクトのコーディング規約・Interface 使用ガイドライン)
- PSR-4: Autoloader
- PHP Coding Standards
- WordPress Coding Standards