Java: 知識ベースとパイプライン
このスキルは、あらゆるドメインにおける Java コードの記述、レビュー、高速化を支援します。内部には以下の3つの要素があります。
- 知識ベース。 書籍、記事、講演、ドキュメント、JEP、コードベース、パターンをカテゴリ別にまとめています。各ソースにはリンク、著者、年、および読むべき理由が記載されています。
- ツールチェーン。 インストールすべき JDK、ビルドツール、およびアナライザ、実行すべきコマンドとその順序。
pom.xml、Gradle、CI のテンプレートが収集され、検証されています。 - パイプライン。 作業の順序:コードより先にテスト、品質チェック、JMH ベンチマーク、レビュー、知識ベースでの解決策の検索、再測定。
知識の状態は 2026年11月時点:JDK 27(2026年9月)が最新リリース、JDK 25 が現在の LTS、JDK 21 と 17 が以前の LTS、JDK 28 は 2027年3月リリース予定。Maven 3.9.16 および 3.10.0(Maven 4 はまだ RC)、Gradle 9.9、JUnit 6.1、Spring Boot 4.1、Quarkus 3.40、JMH 1.37。Minecraft:26.3 が最新リリース(2026年9月)、26.4 はスナップショット中;26.1 以降、ゲームは難読化されておらず、Java 25 が必要です。
参照先
| タスク | ファイル |
|---|---|
| 新機能、リファクタリング、最適化:作業の順序 | references/pipeline.md |
JDK のディストリビューションとバージョン、インストール、Maven と Gradle、プラグイン、BOM、アノテーションプロセッサ、javac -Xlint、Error Prone、NullAway、SpotBugs、PMD、Spotless、OpenRewrite、依存関係のセキュリティ、JDK ツール、CI、テンプレート | references/toolchain.md |
| JUnit 6、AssertJ、Mockito、Testcontainers、Spring Boot スライス、property-based テストとコントラクトテスト、JaCoCo、PIT、不安定なテスト | references/testing.md |
| コードが遅い、またはメモリを消費する:症状別のテクニック、JMH、JFR、JIT、GC、起動とウォームアップ | references/performance.md — まず「症状 → テクニック → ソース」の表から始めてください |
| Java 17–28 の言語機能(JEP 別)、イディオム、null と Optional、例外、パターンとアンチパターン、セキュリティ、レビューチェックリスト | references/idioms-patterns.md |
| プロジェクト構造、マルチモジュールビルド、パッケージと JPMS、レイヤーとヘキサゴナルアーキテクチャ、DDD、ArchUnit、DI、API の進化、リファレンスコードベース | references/architecture.md |
| メモリモデル、executors、CompletableFuture、ロック、仮想スレッド、構造化並行性、スコープ値、リアクティブライブラリ、FFM API、JNI、Unsafe、Vector API | references/concurrency-native.md |
| サーバードメイン:Spring Boot、Quarkus、Micronaut、Helidon、REST と gRPC、JDBC、JPA と Hibernate、マイグレーション、Kafka、可観測性、セキュリティ、コンテナと Kubernetes | references/domains-server.md |
| その他のドメイン:ライブラリの公開、CLI と TUI、デスクトップ、データ、ML と LLM アプリケーション、ゲーム、組み込み、WebAssembly、相互運用、スクリプト | references/domains-client.md |
| 読むべきもの、ブログ、講演、ポッドキャスト、コース、日本語リソース、レベル別学習ロードマップ | references/books.md。書籍に関する一般的な質問は、セクション「厳選20冊」と「レベル別リーディングロードマップ」から始めてください。テーマ別のセクションは目次から開いてください。ファイルは大きいので、全体は読まないでください |
Minecraft ブランチ(Java Edition:Mod とサーバープラグイン、Minecraft 26.x および最新の 1.21.x):
| タスク | ファイル |
|---|---|
| Mod を始める:ローダーの選択(Fabric、NeoForge、Forge、Quilt)、ゲームと Java のバージョン、Loom と ModDevGradle、マルチローダーとマルチバージョン、Modrinth と CurseForge への公開、Modpack ビルド、CI、検証済みテンプレート | references/minecraft-modding.md |
| Mod コード:サイドとスレッド、レジストリ、データコンポーネント、ブロック、エンティティ、データ生成、コーデック、ネットワーク、イベント、Mixin、Access Wideners と Transformers、レンダリング、設定、ワールド生成、新しいバージョンへの移行、レビューチェックリスト | references/minecraft-mod-api.md — 26.x で壊れたものは、セクション「26.x で壊れたもの」を参照 |
ラグ、TPS と MSPT、FPS、メモリ、起動の遅さ;spark と JFR;ワールドベンチマーク /tick sprint;GameTest とユニットテスト;クラッシュレポートと Mod 競合の分析 | references/minecraft-performance-testing.md — まず「症状 → テクニック → ソース」の表から始めてください |
| サーバー:データパック、プラグイン、または Mod;Paper、Folia、Velocity、Spigot、Sponge、Minestom;Polymer;Geyser と ViaVersion;プラグインエンジニアリングとテンプレート | references/minecraft-server-plugins.md |
| ドキュメントとその鮮度、古いチュートリアルの読み方、コース、タイプ別のリファレンス Mod、コミュニティ、学習ロードマップ | references/minecraft-resources.md |
各リファレンスは目次から始まります。ファイル全体ではなく、必要なセクションだけを読んでください。
よくある質問と回答があるセクション:
スクリプト scripts/BenchCompare.java は、JMH の「改善前」と「改善後」の実行を JSON で比較し、実行間のノイズを考慮して、後退があった場合に終了コード 1 を返します。ビルド不要で実行:java BenchCompare.java <before> <after>(JDK 17+ が必要)。パイプラインのステップ 11 で使用します。
Minecraft 用にさらに2つのスクリプトがあります:
- scripts/tick_sprint_bench.sh — サーバー全体を
/tick sprintコマンドでベンチマークするスクリプト。結果は JMH JSON 形式で出力されるため、同じBenchCompare.javaで比較できます。 - scripts/EmptyStructure.java — GameTest 用の空の
.nbt構造。NeoForge で必要です(NeoForge には空の構造が含まれていないため)。
スクリプトは、この SKILL.md と同じディレクトリにある scripts/ フォルダに格納されています。すべてのプロジェクトにインストールする場合のパスは ~/.claude/skills/java-knowledge/scripts/、プロジェクトにインストールする場合は .claude/skills/java-knowledge/scripts/ です。リファレンス内のコマンドでは、このパスを使用してください。
作業の進め方
1メソッドより大きいタスクの場合は、パイプラインに従ってください:
- ヒアリング。
- 計画と仕様。
- サブタスクへの分割。
- コードより先にテスト。
- Worktree への分離。
- ベンチマーク。
- ベースライン測定とプロファイル。
- レビュー。
- 知識ベースでの解決策の検索。
- 最適化。
- 再測定。
小さな修正の場合は、同じファイルの簡易モードで十分です:テスト、コード、チェック、レビュー。
作業が完了したと宣言する前に、最小限のチェックを実行し、その出力を表示してください:
./mvnw -B -ntp verify # コンパイル(-Xlint -Werror、Error Prone と NullAway 付き)、テスト、Spotless、JaCoCo 閾値
./mvnw -B -ntp dependency:analyze
osv-scanner scan source -r .
Gradle の場合:./gradlew build、./gradlew buildHealth、osv-scanner scan source -r .。アナライザと閾値はビルドにバインドされている必要があります — toolchain.mdにテンプレートがあります。プロジェクトにこれらがない場合は、既存のものを実行し、不足しているチェックを指摘してください。ツールがインストールされていない場合は、toolchain.md からインストールコマンドを提案し、黙ってステップをスキップしないでください。
最適化時:
- まず測定、次に修正。ベースラインなしにコードが高速になったとは言えません。
- ループ内の
System.nanoTime()ではなく、JMH で測定してください。JIT は未使用の処理を削除します。ローカル測定では、結果が破棄される計算は実際の14倍安く見えました。 - 「改善前」と「改善後」でそれぞれ5回の実行を、個別の JVM 起動で行い、順序は入れ替えて(ABBA)ください。同じ jar の起動間でも12~22%のばらつきがあります。
- 常に
-prof gcを追加し、gc.alloc.rate.norm(1操作あたりのバイト数)を確認してください。このメトリクスはほとんどノイズがありません。 - 1台のマシンで同時に実行する JMH は1つだけにし、測定中はマシンに他の作業をさせないでください。
- performance.md で症状に合ったテクニックを探し、修正箇所の近くにソースを明記してください。
- ベンチマークが有意な改善を示し、テストがすべてパスした場合にのみ、修正を採用してください。
レビュー時には、以下のチェックリストを使用してください:
- idioms-patterns.md — 任意のコード用;
- testing.md — テスト用;
- concurrency-native.md — マルチスレッドコード、仮想スレッド、ネイティブコード用;
- domains-server.md — サーバーコード、データベース、セキュリティ用;
- domains-client.md — 公開ライブラリ用;
- architecture.md — プロジェクト構造とモジュール境界用。
知識ベースの使用ルール
- ソースを明記してください。 パターンや最適化を推奨する場合は、リファレンスからのリンクを提示してください。そうすることで、ユーザーはアドバイスを確認でき、解決策がでたらめに見えなくなります。
- メモを考慮してください。
[非推奨]は、その素材に代替があり、それが近くに示されていることを意味します。[未検証]は、その主張が単一の二次ソースからのものであり、それに基づいて解決策を構築する前に再検証する必要があることを意味します。 - バージョンを確認してください。 バージョンは 2026年11月時点のものです。2025~2026年には、破壊的変更を伴う多くのメジャーバージョンがリリースされました:Spring Boot 4 と Spring Framework 7(名前が変更されたスターター、削除された API)、Jackson 3(パッケージ
tools.jackson)、Hibernate 7、JUnit 6、Testcontainers 2(新しいアーティファクトとパッケージ)、google-java-format 2。OSSRH を介した公開は 2025年6月30日で終了しました。重要な決定の前には、Maven Central、ドキュメント、リリースノートを確認してください。 - ターゲット Java バージョンを考慮してください。
maven.compiler.releaseや Gradle の toolchain を確認してから、
...(翻訳対象のため省略)