solid-java について
solid-javaは、Java 25以降の開発でモジュール型アーキテクチャとSOLID原則を適用するためのスキルです。必須の再利用チェック、構成ルール、各種コンポーネントの資料とテンプレートでコーディングエージェントを支援します。
主な機能
- 01機能ごとのモジュール構成
- 02実装前の再利用チェック
- 03SOLID原則のリファレンス
- 04モジュールと各層のテンプレート
- 05コード量とドキュメントの規則
活用シーン
- 01新しいJava機能の構成設計
- 02ロジック追加前の共有コード確認
- 03サービスやリポジトリのひな型作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ fusengine/ agents --skill solid-javaインストール後、Claude Code で/solid-javaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/architecture-patterns.mddependency-inversion.mdinterface-segregation.mdliskov-substitution.mdopen-closed.mdsingle-responsibility.mdsolid-principles.mdreferences/templates/error.mdinterface.mdmodule.mdrepository.mdservice.mdtest.md詳細
SOLID Java では、Java 25 以降(現行の LTS)向けのモジュール型アーキテクチャを徹底します。各機能は `modules/[feature]/`(コントローラー、サービス、リポジトリ、インターフェース、モデル/DTO)の下に配置し、共有コードは `modules/core/` に配置します。インターフェースは `modules/[feature]/interfaces/` のみに配置し、コントローラーは 50 行未満に保ってサービスに処理を委譲します。DTO にはレコードを、制限付き階層にはシールド型を使用し、すべての public メソッドに Javadoc を付けます。
新しいコードを書く前に、modules/core/services と modules/core/interfaces を対象に DRY チェックを行う必要があります。概要については solid-principles.md を参照してください。SRP/OCP/LSP/ISP/DIP の詳細については各原則のリファレンスを、モジュール/サービス/インターフェース/リポジトリ/エラー/テストのひな形についてはテンプレートを参照してください。
SOLID Java - モジュール型アーキテクチャ
エージェントのワークフロー(必須)
実装を行う前に、3 つのエージェントを並行して起動してください。それぞれの Agent 呼び出しには name を指定します。
- fuse-ai-pilot:explore-codebase - 既存のアーキテクチャを分析します
- fuse-ai-pilot:research-expert - Context7 を使って Java のドキュメントを確認します
- fuse-ai-pilot:sniper - 実装後の検証を行います
DRY - 作成する前に再利用する(必須)
新しいコードを書く前に必ず行うこと:
- 類似するインターフェース、サービス、ロジックをコードベース全体から Grep で検索します
- 共有領域を確認します:
modules/core/services/、modules/core/interfaces/ - 類似コードがある場合は、重複させずに拡張または再利用します
- 2 つ以上の機能でコードを使用する場合は、
modules/core/に作成します
アーキテクチャ(モジュール必須)
| レイヤー | 配置場所 | 最大行数 |
|---|---|---|
| コントローラー | modules/[feature]/controllers/ | 50 |
| サービス | modules/[feature]/services/ | 100 |
| リポジトリ | modules/[feature]/repositories/ | 100 |
| インターフェース | modules/[feature]/interfaces/ | 30 |
| モデル/DTO | modules/[feature]/models/ | 50 |
| 共有 | modules/core/{services,interfaces,models}/ | - |
フラットな src/ 構造は絶対に使用せず、常に modules/[feature]/ を使用してください
重要なルール(必須)
| ルール | 値 |
|---|---|
| ファイルの上限 | 100 行(90 行で分割) |
| コントローラー | 50 行未満にし、サービスに処理を委譲します |
| インターフェース | modules/[feature]/interfaces/ のみ |
| Javadoc | すべての public メソッドにドキュメントを付けます |
| レコード | DTO に使用します(Java 16 以降) |
| シールド型 | 制限付き階層に使用します(Java 17 以降) |
リファレンスガイド
概念
| トピック | リファレンス | 参照するタイミング |
|---|---|---|
| SOLID の概要 | solid-principles.md | クイックリファレンス |
| SRP | single-responsibility.md | 肥大化したクラス |
| OCP | open-closed.md | プロバイダーの追加 |
| LSP | liskov-substitution.md | 契約 |
| ISP | interface-segregation.md | 肥大化したインターフェース |
| DIP | dependency-inversion.md | インジェクション |
| アーキテクチャ | architecture-patterns.md | モジュール型パターン |
テンプレート
| テンプレート | 使用するタイミング |
|---|---|
| module.md | 機能モジュールの構造 |
| service.md | ビジネスロジックのサービス |
| interface.md | 契約の定義 |
| repository.md | データアクセス層 |
| error.md | カスタム例外 |
| test.md | モックを使った単体テスト |
禁止事項
| アンチパターン | 対処方法 |
|---|---|
| 100 行を超えるファイル | 90 行で分割します |
| 実装ファイル内のインターフェース | interfaces/ ディレクトリに移動します |
サービス内での new ConcreteClass() | 依存性注入を使用します |
フラットな src/ 構造 | modules/[feature]/ を使用します |
| 神クラス | 責務ごとに分割します |
コメント
Markdown 対応