144-java-data-oriented-programming について
Java 開発者向けに、イミュータブルなレコード、純粋変換、検証によるデータ指向の設計とリファクタリングを案内するスキルです。変更前のコンパイルと、変更後のビルド検証を求めます。
主な機能
- 01データ構造と振る舞いの分離
- 02イミュータブルなレコードと構造
- 03純粋なデータ変換の合成
- 04ID 参照によるフラットなデータ
- 05純粋関数によるデータ検証
- 06汎用データアクセスインターフェース
活用シーン
- 01Java データモデルのリファクタリング
- 02振る舞いとイミュータブルデータの分離
- 03データ整合性の検証
- 04データ変換パターンのレビュー
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jabrena/ plinth --skill 144-java-data-oriented-programmingインストール後、Claude Code で/144-java-data-oriented-programmingを入力して読み込まれたか確認します。
同梱ファイルreferences/144-java-data-oriented-programming.md
詳細
Java のデータ指向プログラミングのベストプラクティス
Java でデータ指向プログラミングを適用します。レコードを使ってデータと振る舞いを分離し、不変データ構造を使い、変換には純粋関数を用い、ID 参照を使ったフラットな非正規化構造を採用します。必要に応じて汎用型から具体型へ変換し、純粋な検証関数と柔軟な汎用データアクセス層を利用します。すべての変換は明示的で追跡可能な、明確な純粋関数型のステップで構成してください。
このスキルで扱う内容
- 関心の分離:データ構造(レコード、POJO)と振る舞い(ユーティリティクラス、サービス)
- 不変性:レコード、
finalフィールド、変換では新しいインスタンスを生成 - 純粋なデータ変換:入力のみに依存し、副作用のない関数
- フラットな非正規化データ:深いネストの代わりに ID 参照を使用
- 具体化は必要になるまで行わない:動的データには Map<String,Object> を使い、処理時にレコードへ変換
- データの整合性:検証結果を返す純粋な検証関数
- 柔軟な汎用データアクセス:汎用 CRUD インターフェースと、交換可能な実装
対象範囲: 参照資料は、各主要領域について、(良い/悪いコードパターンの)例を中心に構成されています。該当する例に基づいて推奨事項を適用してください。
制約事項
データ指向プログラミングに関する推奨事項を適用する前に、プロジェクトがコンパイルできることを確認してください。コンパイルに失敗した場合は、作業を進めないでください。改善を適用した後は、完全な検証を実行してください。
- 必須: 変更を適用する前に
./mvnw compileまたはmvn compileを実行してください - 安全性: コンパイルに失敗した場合は、ただちに停止してください。問題が解決するまで先へ進まないでください
- 検証: 改善を適用した後に
./mvnw clean verifyまたはmvn clean verifyを実行してください - 適用前: 各データ指向プログラミングパターンの詳細な良い例/悪い例、制約事項、安全策について、参照資料を読んでください
このスキルを使用する場面
- データ指向プログラミングでコードを改善する
- データ指向プログラミングを適用する
- データ指向プログラミングを使ってコードをリファクタリングする
- レコードと純粋関数で Java のデータをモデル化する
- Java の振る舞いを不変データ構造から分離する
- 純粋な Java 関数でデータの整合性を検証する
ワークフロー
- データ指向の変更を行う前にプロジェクトをコンパイルする
./mvnw compile または mvn compile を実行し、コンパイルに失敗した場合はただちに停止してください。
- データ指向プログラミングの参照資料を読み、モデル設計を評価する
references/144-java-data-oriented-programming.md を読み、データと振る舞いの分離や不変変換に適した箇所を特定してください。
- データ指向のリファクタリングを適用する
レコード、純粋な変換関数、フラットな構造、明示的な検証を使って、選択した改善を実装してください。
- 完全なビルドで検証する
改善を適用した後に ./mvnw clean verify または mvn clean verify を実行してください。
参照資料
詳細なガイダンス、例、制約事項については、references/144-java-data-oriented-programming.md を参照してください。