【入門編】IntelliJ IDEAの『プラグイン開発』で業務効率を自動化:独自のインテンション・アクションを作成する方法 – 総合開発環境(IDE)生産性向上バイブル

IntelliJ IDEAを「自分専用の副操縦士」に仕立てる:Intention Action開発入門

こんにちは。普段、皆さんは何気なくIntelliJ IDEAの「Alt+Enter(またはOption+Enter)」を使っているはずです。あの魔法のような自動修正機能、実はあれ、「自分で作ることもできる」という事実はあまり知られていません。

多くのエンジニアが、チーム独自の命名規則や、複雑なドメイン特有の定型コードを「手動」で修正し、レビューで指摘し合っています。しかし、その「指摘」をIDEの機能として組み込んでしまえば、レビューコストはゼロになり、開発の質は強制的に担保されます。

今日は、IntelliJ Platform Plugin SDKを使って、あなたとあなたのチームの生産性を劇的に向上させる「独自のインテンション・アクション(Intention Action)」開発の入り口へご案内しましょう。

—

1. なぜ「インテンション・アクション」なのか

IDEの機能は、単なるテキストエディタを超えた「コンテキストの理解」にあります。

  • 既存ツールでは足りない理由: OSSのLinterや静的解析ツールは強力ですが、導入に時間がかかり、複雑なビジネスロジックに基づいた「社内ルール」までは検知できません。
  • インテンション・アクションの真価: 開発者が「コードを書いているその瞬間」に介入し、ボタン一つで修正を完了させます。これは、教育コストをシステムに肩代わりさせるという、DevOps的な視点でも極めて投資対効果の高い戦略です。

—

2. 開発環境のセットアップ:最強の「Plugin DevKit」

IntelliJのプラグイン開発には、公式が提供する「IntelliJ Platform Plugin Template」を使うのが現代のベストプラクティスです。

最低限の準備

1. IntelliJ IDEA (UltimateまたはCommunity) をインストール。
2. JDK 17以上 を環境に設定。
3. [IntelliJ Platform Plugin Template](https://github.com/JetBrains/intellij-platform-plugin-template) をGitHubからテンプレートとして生成(Use this templateボタンを押す)。

このテンプレートには、GitHub ActionsによるCI/CD設定や、テスト環境が全て揃っています。ゼロからビルド設定を書くのは時間の無駄です。プロの現場では、常に「枯れた環境」から出発します。

—

3. Hello World: 「特定のコメントを削除する」アクションを作る

今回は、「`// TODO: デバッグコード`」という文字列を見つけたら、それを一瞬で消し去るアクションを作ります。

手順1: アクションの定義 (`plugin.xml`)

プラグインのメタデータを記述する設定ファイルです。`src/main/resources/META-INF/plugin.xml` に以下を追記します。




com.example.plugin.RemoveDebugCommentAction
Custom Rules

手順2: ロジックの実装

Javaクラス `RemoveDebugCommentAction.java` を作成します。`PsiElement`という、IDEがコードを解析した後の抽象構文木(AST)を操作するのが鍵です。

package com.example.plugin;

import com.intellij.codeInsight.intention.impl.BaseIntentionAction;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;

public class RemoveDebugCommentAction extends BaseIntentionAction {

// ユーザーに表示されるアクション名
@NotNull
@Override
public String getText() { return “不要なデバッグコメントを削除する”; }

@NotNull
@Override
public String getFamilyName() { return “Custom Rules”; }

// アクションが有効になる条件判定
@Override
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) {
// 現在のカーソル位置の要素を取得
PsiElement element = file.findElementAt(editor.getCaretModel().getOffset());
return element != null && element.getText().contains(“TODO: デバッグコード”);
}

// 実行ボタンが押された時の処理
@Override
public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
PsiElement element = file.findElementAt(editor.getCaretModel().getOffset());
if (element != null) {
// 要素を安全に削除する(IDEのAST操作APIを使用)
element.delete();
}
}
}

—

4. なぜこれが「現場で震えるほど役立つ」のか

このコードのポイントは、`PsiElement`(Program Structure Interface)を操作している点です。

単なる文字列置換(正規表現など)でコードを修正すると、インデントが崩れたり、構文が破壊されたりするリスクがあります。しかし、Psiを使用すれば、IDEはコード構造を維持したまま安全に修正を適用します。

現場での活用例

  • レガシーコードの撲滅: 廃止予定のメソッドを呼び出している箇所でAlt+Enterを押し、「最新のAPIに置換する」を選択させる。
  • アーキテクチャの強制: Layered Architectureにおいて、コントローラーから直接DAOを呼んでいるコードに対し、「サービス層を経由してください」という警告と自動修正を出す。

—

5. 最後に:賢いエンジニアは「環境」を作る

プラグイン開発は、最初は少し腰が重いかもしれません。しかし、一度「自分たちのルールをIDEに教え込む」体験をしてしまえば、あなたの開発スタイルは劇的に変わります。

「手作業の繰り返し」は、エンジニアにとっての敗北です。
今回作成した小さなアクションが、やがてチーム全体のコーディング規約を自動化し、あなたのチームを世界で最も効率的な開発チームへと進化させる礎になるはずです。

まずは、このコードを動かして「自分でIDEをハックした」という成功体験を味わってください。質問があればいつでもどうぞ。あなたのエンジニアリングライフが、より創造的で楽しいものになることを心から願っています!

タイトルとURLをコピーしました