IntelliJ IDEA — .class を開くと自動逆コンパイル

IntelliJ IDEA は Fernflower を内蔵しており、.class ファイルを開くと 自動的に逆コンパイルしてソースとして表示する。何もインストールや設定は不要だ。

IntelliJ IDEA — .class を開く手順
# 1. Project ツールウィンドウで .class ファイルをダブルクリック
# 2. 「Decompiled .class file, bytecode is shown」というバナーが表示される
# 3. バナー上の [Choose Sources...] または [Download Sources] を選択可能

# JAR / WAR の場合:
# File → Project Structure → Libraries → + (新規追加) → Java
# → myapp.jar を選択
# → プロジェクトに依存として追加後、クラスを Ctrl+クリックで逆コンパイル表示

💡 ライブラリの .class を Ctrl+クリックしたとき

プロジェクトに含まれるライブラリの任意のクラスを Ctrl+クリック(Mac: Cmd+クリック)すると、 自動的に逆コンパイルされたソースが開く。ソース JAR が Maven Central にあれば「Download Sources」ボタンで正式ソースを取得できる。

IntelliJ — 逆コンパイルソースをプロジェクトに紐付ける

CFR で事前に逆コンパイルしたソースを IntelliJ に紐付けることで、 正式ソースとして扱い、コード補完・ジャンプ・検索が使えるようになる。

IntelliJ — ソース紐付け手順
# 前提:CFR で逆コンパイル済みソースが ./decompiled/ にある

# 1. ソースをソース JAR として再パッケージ
jar cf myapp-sources.jar -C decompiled/ .

# 2. IntelliJ IDEA で
#    File → Project Structure → Libraries
#    → 対象ライブラリを選択
#    → [+] Sources をクリック
#    → myapp-sources.jar を選択 → OK

# 3. これで .class へのジャンプ時に逆コンパイルソースが表示される
# (正式ソースと同様の操作感になる)

IntelliJ で効率よく読むためのテクニック

操作ショートカット用途
宣言に移動Ctrl+B / Cmd+B変数・メソッドの定義元へジャンプ
使用箇所を検索Alt+F7 / Option+F7フィールド・メソッドの呼び出し元を全列挙
全文検索Ctrl+Shift+F文字列・メソッド名をプロジェクト全体から検索
構造ビューAlt+7 / Cmd+7クラスのフィールド・メソッド一覧
クラス階層Ctrl+H継承ツリーを確認
リネームShift+F6難読化変数をリネームして読みやすくする
インライン展開Ctrl+Alt+N意味不明な変数をインライン化して式を単純化

難読化コードのリネーム活用

難読化されたクラス・メソッド名は Shift+F6 でリネームしながら読み進めるのが効果的。 リネームは逆コンパイルしたソースファイル上で行い、元の .class は変更しない。

VS Code + Java Extension Pack での活用

VS Code の Java Extension Pack(Microsoft 提供)には Language Support for Java が含まれており、.class を開くと自動で逆コンパイルされる。

VS Code — セットアップ
# 1. 拡張機能のインストール(コマンドパレットまたは Extensions ビュー)
# Extension ID: vscjava.vscode-java-pack
# インストールされる主な拡張:
#   - Language Support for Java (Red Hat)
#   - Debugger for Java
#   - Java Test Runner
#   - Maven for Java
#   - Project Manager for Java

# 2. .class ファイルを VS Code で開く
# → 自動的に逆コンパイルされてソースとして表示される

# 3. JAR をライブラリとして追加(Maven プロジェクトでない場合)
# .vscode/settings.json に記述
{
  "java.project.referencedLibraries": [
    "lib/**/*.jar",
    "path/to/myapp.jar"
  ]
}

VS Code に逆コンパイルソースを紐付ける

VS Code — ソース JAR を紐付ける
# Maven プロジェクトの場合:pom.xml で sources を追加
# (Maven Central にソース JAR がある場合はこちらが最も確実)
mvn dependency:sources

# ソース JAR がない場合は CFR で生成して追加
jar cf myapp-sources.jar -C decompiled/ .

# .vscode/settings.json に source jar を追加
{
  "java.project.referencedLibraries": {
    "include": ["lib/myapp.jar"],
    "sources": {
      "lib/myapp.jar": "lib/myapp-sources.jar"
    }
  }
}

IDE 比較まとめ

項目IntelliJ IDEAVS Code
自動逆コンパイル✅ Fernflower 内蔵✅ Language Support for Java 内蔵
ソース紐付け✅ Project Structure で簡単✅ settings.json で設定
定義ジャンプ✅ 非常に強力✅ 対応
リネーム支援✅ リファクタリング機能が充実⚠️ 基本的なもののみ
クラス階層ビュー✅ 専用ウィンドウあり⚠️ 拡張で補完
デバッガ連携✅ ブレークポイントを .class に設定可✅ Debugger for Java で対応
コストCommunity 版は無料(機能制限あり)無料

💡 どちらを使うべきか

本格的な解析・リファクタリングには IntelliJ IDEA が圧倒的に使いやすい。 軽量に確認するだけであれば VS Code でも十分。 すでにどちらかを使っているならそのままで問題ない。

次の PART では…

PART 08(最終回)ではシリーズ全体を振り返り、ツール選定フロー早見表・注意点・参考リンク集をまとめる。

→ PART 08 — まとめへ