122-java-type-design について
Java の型設計をレビュー、リファクタリングするためのスキルです。型安全性、ドメインモデリング、命名、構成を例で解説し、変更前のコンパイルと変更後の検証を求めます。
主な機能
- 01型階層と命名規則
- 02値オブジェクトとジェネリクス
- 03流れるようなインターフェースとビルダー
- 04型の選択とインターフェース設計
- 05変更前のコンパイルと完全なビルド検証
活用シーン
- 01Java の型設計レビュー
- 02プリミティブ値から値オブジェクトへの置換
- 03型階層と流れるような API のリファクタリング
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jabrena/ plinth --skill 122-java-type-designインストール後、Claude Code で/122-java-type-designを入力して読み込まれたか確認します。
同梱ファイルreferences/122-java-type-design.md
詳細
Java の型設計思考
タイポグラフィの概念をコードの構造や構成に応用する包括的な型設計原則を用いて、Java コードをレビューし、明瞭さと保守性を最大限に高めます。
このスキルで扱う内容
- 明確な型階層:ネストされた静的クラス、論理的な構造
- 一貫した命名規則:ドメイン駆動のパターン、インターフェースと実装の統一された命名
- 読みやすさを高めるための戦略的な空白
- 型安全なラッパー:プリミティブ型への執着を置き換える値オブジェクト(EmailAddress、Money)
- ジェネリック型パラメーター:柔軟で再利用可能な型、境界付きパラメーター
- ドメイン固有の流暢なインターフェース:ビルダーパターン、メソッドチェーン
- 型の重み:概念上の重要度 — 中核となるドメイン、補助、ユーティリティ
- インターフェースによる型のコントラスト:契約と実装の分離
- 整合性のあるメソッドシグネチャー:関連クラス間で一貫したパラメーター型と戻り値型
- 自己文書化コード:明確で説明的な名前
- 精度が重要な計算(財務・金銭処理)には BigDecimal
- 戦略的な型の選択:Optional、Set と List の使い分け、具象型よりインターフェースを優先
範囲: リファレンスは、各主要領域について例(良いコードと悪いコードのパターン)をまとめています。該当する例に基づいて推奨事項を適用してください。
制約事項
型設計の変更を適用する前に、プロジェクトがコンパイルできることを確認してください。コンパイルに失敗した場合は、直ちに作業を中止し、解決するまで先に進まないでください。改善を適用した後は、完全な検証を実行してください。
- 必須: 変更を適用する前に
./mvnw compileまたはmvn compileを実行してください - 安全性: コンパイルに失敗した場合は、直ちに作業を中止して先に進まないでください。コンパイルの失敗は作業を妨げる条件です
- 検証: 改善を適用した後に
./mvnw clean verifyまたはmvn clean verifyを実行してください - 適用前: 詳細な例、良いパターンと悪いパターン、制約事項について、リファレンスを読んでください
- エッジケース: 依頼の範囲が曖昧な場合は、変更を適用する前に作業を中止し、明確化の質問をしてください
- エッジケース: 必要な入力、ファイル、またはツールが不足している場合は、不足しているものを報告し、セットアップの案内を進めてよいか確認してください
このスキルを使用する場面
- Java コードの型設計をレビューする
- Java コードの型設計を改善する
- Java コードのプリミティブ型への執着を解消する
- Java コードで値オブジェクトを作成する
- Java コードで型階層を作成する
- Java コードで流暢なインターフェースを作成する
ワークフロー
- 型設計の変更前にプロジェクトをコンパイルする
./mvnw compile または mvn compile を実行し、コンパイルに失敗した場合は直ちに作業を中止してください。
- 型設計のリファレンスを読み、コードを調査する
references/122-java-type-design.md を読み、型階層、命名、値オブジェクトの改善点を特定してください。
- 型設計のリファクタリングを適用する
該当するパターンに基づいて、選択した型安全性と可読性の改善を実装してください。
- 完全なビルドで検証する
改善を適用した後に ./mvnw clean verify または mvn clean verify を実行してください。
リファレンス
詳細なガイダンス、例、制約事項については、references/122-java-type-design.md を参照してください。