Skip to content

命名規則ガイドライン

概要

このドキュメントは、プロジェクト全体で統一された命名規則を定義し、PSR-4準拠を確保するためのガイドラインです。

基本原則

本プロジェクトはWordPress環境で動作することを前提としています。

そのため、以下の原則に基づいて命名規則を定義しています:

  1. PSR-4準拠: 名前空間とディレクトリ構造を完全に一致させる(オートローディング)
  2. WordPress Coding Standards準拠: メソッド名・プロパティ名はsnake_caseを使用
  3. 一貫性: プロジェクト全体で統一された命名規則を適用
  4. 可読性: 明確で理解しやすい命名を心がける

PSR-4とWordPress Coding Standardsの併用について

本プロジェクトは以下の方針を採用しています:

  • PSR-4(オートローディング): 名前空間とディレクトリ構造の対応関係に準拠
  • WordPress Coding Standards(命名規則): メソッド名・プロパティ名にsnake_caseを採用

なぜPSR-12に完全準拠しないのか

PSR-12では、メソッド名・プロパティ名にcamelCaseを推奨していますが、本プロジェクトでは以下の理由からsnake_caseを採用しています:

  1. WordPress環境との整合性: WordPressコア・プラグイン・テーマ開発ではsnake_caseが標準
  2. 保守性の向上: WordPress開発者にとって読みやすく、メンテナンスしやすいコード
  3. 既存コードとの一貫性: プロジェクト全体で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.phpcore_src/Admin/event_master/EventMasterAdminPage.php
名前空間App\Admin\EventMasterApp\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_birthdays

Interface の命名規則

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 では BEMBlock__Element--Modifier)を採用します。既存のデータ可視化用クラス(coin-up3, rotation-up2 等)はリネームしないでください。BEM の具体例や原則の詳細は CLAUDE.md およびプロジェクトの HTML/CSS 編集スキル(.cursor/skills/html-css-editing/SKILL.md)を参照してください。

参考資料