142-java-functional-programming について
不変性、純粋関数、関数合成などの実践を評価・改善する Java 開発者向けスキルです。Stream、Optional、ラムダ式や新しい Java 機能を扱い、変更前にコンパイルと言語バージョンとの互換性を確認します。
主な機能
- 01不変オブジェクトと純粋関数の改善
- 02ラムダ式、メソッド参照、関数型インターフェースの活用
- 03Stream と Optional の慣用的な使用
- 04関数合成と高階関数の適用
- 05Java バージョンとの機能互換性の確認
活用シーン
- 01不変性を高める Java コードのリファクタリング
- 02Stream や Optional の安全な導入
- 03副作用と中核ロジックの分離
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jabrena/ plinth --skill 142-java-functional-programmingインストール後、Claude Code で/142-java-functional-programmingを入力して読み込まれたか確認します。
同梱ファイルreferences/142-java-functional-programming.md
詳細
Java 関数型プログラミングのルール
Java で関数型プログラミングの原則を特定して適用し、不変性、表現力、保守性を向上させます。
このスキルで扱う内容
- 不変オブジェクトとレコード(JEP 395)
- 副作用のない純粋関数
- 関数型インターフェース:
Function、Predicate、Consumer、Supplier、カスタムの@FunctionalInterface - ラムダ式とメソッド参照
- Stream API:filter/map/reduce パイプライン、並列ストリーム、
toUnmodifiable*コレクター Optionalの慣用的な使い方:isPresent()+get()よりもmap/flatMap/filter/orElse*を使用- 関数の合成:
andThen/compose - 高階関数:メモ化、カリー化、部分適用
instanceofとswitchのパターンマッチング(Java 21)- 網羅的なドメイン階層を実現するためのシールドクラスとインターフェース(Java 17)
- Switch 式(Java 14)、Stream Gatherers(JEP 461)
- 副作用の分離:副作用は境界に置き、コアロジックは純粋に保つ
- 不変コレクション:
List.of()、Collectors.toUnmodifiableList()
対象範囲: 各主要領域について、例(適切/不適切なコードパターン)を中心にリファレンスを構成しています。該当する例に基づいて推奨事項を適用してください。
制約
関数型プログラミングの変更を適用する前に、プロジェクトがコンパイルできることを確認してください。コンパイルに失敗した場合は、直ちに中止し、プロジェクトが正常にコンパイルできるようになるまで先に進まないでください。maven-compiler-plugin の source/target が、使用する Java 機能に対応していることを確認してください。
- 必須:変更を適用する前に
./mvnw compileまたはmvn compileを実行してください - 安全性:コンパイルに失敗した場合は、直ちに中止し、プロジェクトが正常にコンパイルできるようになるまで先に進まないでください
- 確認:maven-compiler-plugin の source/target が、使用する Java 機能に対応していることを確認してください
- 確認:改善を適用した後に
./mvnw clean verifyまたはmvn clean verifyを実行してください - 適用前:各関数型プログラミングパターンの適切/不適切な例、制約、安全対策の詳細について、リファレンスを読んでください
- エッジケース:依頼の範囲が曖昧な場合は、変更を適用する前に中止して確認を求めてください
- エッジケース:必要な入力、ファイル、またはツールが不足している場合は、不足しているものを報告し、セットアップ方法の案内を進めてよいか確認してください
このスキルを使用する場面
- 関数型プログラミングでコードを改善する
- 関数型プログラミングを適用する
- 関数型プログラミングでコードをリファクタリングする
- ストリームまたはOptionalを安全に使用するようJavaコードをリファクタリングする
- Javaで不変性と純粋関数を改善する
ワークフロー
- 関数型リファクタリングの前にプロジェクトをコンパイルする
./mvnw compileまたはmvn compileを実行し、コンパイルに失敗した場合は直ちに中止してください。
- Java 機能との互換性を確認する
maven-compiler-plugin の source/target が、導入予定の関数型機能に対応していることを確認してください。
- 関数型プログラミングのリファレンスを読み、コードを評価する
references/142-java-functional-programming.mdを読み、不変性、純粋関数、関数合成の機会を特定してください。
- 関数型プログラミングによる改善を適用する
副作用を境界に保ちながら、選択した関数型リファクタリングを実装してください。
- 完全なビルドで検証する
改善を適用した後に./mvnw clean verifyまたはmvn clean verifyを実行してください。
リファレンス
詳しいガイダンス、例、制約については、references/142-java-functional-programming.mdを参照してください。