コーディングエージェント「Junie」が JetBrains IDE で使えるツールを聞いてみた
はじめに
前回の記事でClaude Agent がJetBrains IDE で使えるツールを聞いてみたのですが、
今回はJetBrainsのコーディングエージェント Junie に「JetBrains IDE で使えるツールを聞いてみた」。
それではみていきましょう。Let's get it!
1. Junie ー どんなツールが使える?mdに記載せよ
さっそくJunieに聞いてみました。(使用モデルはClaude Sonnet 4.5)
どんなツールが使える?mdに記載せよ
Junieからの回答
利用可能なツール
このドキュメントでは、現在の環境で使用できるツールについて説明します。
## 1. bash
**説明**: ローカルターミナルで標準的なターミナルコマンド(PowerShell)を実行します。
**パラメータ**:
- `command` (必須): 実行するターミナルコマンド
- `background` (オプション): バックグラウンドでコマンドを実行する場合はtrueに設定
**注意事項**:
- 現在のOSはWindowsで、PowerShellを使用します
- `cat`、`echo`などのコマンドでファイルを作成・開くのではなく、専用ツールを使用してください
- 複数行のコマンドはサポートされていません
- `vim`や`python`などの対話型コマンドはサポートされていません
## 2. search_project
**説明**: プロジェクト内検索ツール(JetBrains製)
**機能**:
- ファイル名の検索
- シンボル名(クラス、メソッド、変数など)の検索
- ファイル内の正確なテキスト文字列の検索
- 完全一致または部分一致の検索
**パラメータ**:
- `search_term` (必須): 検索する用語
- `path` (オプション): 検索対象のディレクトリまたはファイルのフルパス
## 3. get_file_structure
**説明**: 指定されたファイルのコード構造を表示します。すべてのシンボル(クラス、メソッド、関数)の定義とインポート文をリスト表示します。
**パラメータ**:
- `file` (必須): ファイルへのパス
## 4. open
**説明**: 指定された行番号から100行分のファイルをエディタで開きます。
**パラメータ**:
- `path` (必須): 開くファイルのフルパス
- `line_number` (オプション): 表示を開始する行番号(省略時は1行目から)
**注意**: 画像ファイルの場合は画像全体を表示します
## 5. open_entire_file
**説明**: 可能な限りファイル全体の内容を表示しようとするツールです。
**パラメータ**:
- `path` (必須): 開くファイルのフルパス
**注意**: 大きなファイルの場合、非常に遅くコストがかかる可能性があります
## 6. scroll_down
**説明**: 現在開いているファイルの次の100行を表示するためにビューウィンドウを下に移動します。
**パラメータ**: なし
## 7. scroll_up
**説明**: 現在開いているファイルの前の100行を表示するためにビューウィンドウを上に移動します。
**パラメータ**: なし
## 8. create
**説明**: 指定された名前と内容で新しいファイルを作成します。
**パラメータ**:
- `filename` (必須): 作成するファイルのフルパス
- `content` (オプション): 新しく作成されるファイルの内容
**注意**: 現在のセッション中に作成したファイルは、このツールを再度実行することで完全に書き換えることができます
## 9. search_replace
**説明**: 検索と置換のアプローチを使用してコードに編集を適用します。
**パラメータ**:
- `file_path` (必須): 変更されるファイルのフルパス
- `search` (必須): 既存のソースコードから検索する連続したコードブロック
- `replace` (必須): `search`パラメータで見つかった既存のコードを置き換える行
**重要なルール**:
- `search`パラメータは既存のソースコードと完全に一致する必要があります
- 行の一部だけを検索パターンとして使用しないでください
- git diffスタイル(`+`や`-`)は使用しないでください
- 行番号は使用しないでください
## 10. rename_element
**説明**: コード要素の名前変更ツール(必須の専用使用)
**機能**:
1. 主要な定義の名前変更
2. コードベース全体のすべての参照を更新
3. すべてのインポート/エクスポート、コメント、ドキュメントを更新
4. コード機能を保持
5. 継承の管理
6. すべての変更を検証
**パラメータ**:
- `file_path` (必須): 名前変更する要素を含むファイルのフルパス
- `line_number` (必須): 名前変更する要素を含む行番号
- `element_to_rename` (必須): 名前変更する要素の名前
- `new_element_name` (必須): 要素の新しい名前
**重要**: コード要素の名前変更には、このツールを排他的に使用する必要があります
## 11. undo_edit
**説明**: プロジェクトに加えられた最後の編集を元に戻します。
**パラメータ**: なし
## 12. submit
**説明**: 現在のコードを送信し、セッションを終了します。
**パラメータ**: なし
## 13. ask_user
**説明**: `<issue_description>`が不明確な場合、またはアプローチが問題を解決しなかった場合、または行き詰まった場合に、ユーザーに助けを求めることができます。
**パラメータ**:
- `message` (必須): ユーザーに送信するメッセージ
## 14. answer
**説明**: `<issue_description>`に対する包括的な回答を提供し、ユーザーに表示してセッションを終了します。
**パラメータ**:
- `full_answer` (必須): `<issue_description>`への完全な回答(有効なMarkdown形式である必要があります)
**注意**: 回答はMarkdown形式である必要があり、レベル1およびレベル2のヘッダー(#または##)は使用できません
---
## 使用環境
- **OS**: Windows
- **シェル**: PowerShell
- **作業ディレクトリ**: プロジェクトルート
## 一般的な使用規則
- 可能な限り、一般的なツールよりも専門的なツールを使用してください
- 特殊ツールとターミナルコマンドを同じコマンドラインで組み合わせないでください
- `Effective Issue`が提案または要求しない限り、プロジェクトディレクトリ外に新しいファイルを作成しないでください
- 画像のバイトデータ(BMP、JPEG、PNG、TIFFなど)を直接使用しないでください
ふーん、14ツール使えるんだ。
んん、あれ前回のCAと使えるツールちがうぞ、私にはわかるのだ。
さあ、CAにも土俵に立ってもらいましょう。
2. Claude Agent ー どんなツールが使える?mdに記載せよ
前回もやりましたが、何回でもやります。
以下CAからの回答
# 利用可能なツール一覧
## コード実行・ターミナル操作
- **Bash** - シェルコマンドの実行(git、npm、dockerなど)
- **BashOutput** - バックグラウンドで実行中のシェルの出力を取得
- **KillShell** - バックグラウンドシェルの終了
## ファイル操作
- **Read** - ファイルの読み込み(画像、PDF、Jupyterノートブックにも対応)
- **Write** - ファイルの作成・上書き
- **Edit** - ファイル内の文字列置換による編集
- **NotebookEdit** - Jupyterノートブックのセル編集
## ファイル検索
- **Glob** - グロブパターンによるファイル検索(例: `**/*.js`)
- **Grep** - 正規表現によるファイル内容検索(ripgrep使用)
## タスク管理
- **Task** - 複雑なマルチステップタスクを自律的に処理するエージェントの起動
- **TodoWrite** - タスクリストの作成・管理
## Web操作
- **WebFetch** - URLからコンテンツを取得・分析
- **WebSearch** - Web検索の実行
## その他
- **ExitPlanMode** - プランモード終了(実装タスクの計画後)
- **SlashCommand** - スラッシュコマンドの実行
## JetBrains IDE統合(MCP)
### プロジェクト管理
- **get_run_configurations** - 実行構成のリスト取得
- **execute_run_configuration** - 実行構成の実行
- **get_project_dependencies** - プロジェクト依存関係の取得
- **get_project_modules** - プロジェクトモジュールのリスト取得
- **get_repositories** - VCSルートのリスト取得
### ファイル操作
- **create_new_file** - 新規ファイル作成
- **get_file_text_by_path** - パスによるファイル内容取得
- **replace_text_in_file** - ファイル内のテキスト置換
- **get_file_problems** - ファイルのエラー・警告分析
- **reformat_file** - コードフォーマットの適用
- **open_file_in_editor** - エディタでファイルを開く
### 検索
- **find_files_by_name_keyword** - ファイル名による検索
- **find_files_by_glob** - グロブパターンによる検索
- **search_in_files_by_text** - テキスト検索
- **search_in_files_by_regex** - 正規表現検索
### ナビゲーション
- **get_all_open_file_paths** - 開いているファイルのパス取得
- **list_directory_tree** - ディレクトリツリー表示
- **get_symbol_info** - シンボル情報の取得(ドキュメント、宣言など)
### リファクタリング
- **rename_refactoring** - シンボルのリネーム(全参照を自動更新)
### ターミナル
- **execute_terminal_command** - IDE統合ターミナルでコマンド実行
一目瞭然、使えるツール、ツール数がちがう。
両者のちがいを見ていきましょう。
3. JunieとCAの使えるツールのちがい
Junie が扱うツールはすべて「IDEのネイティブ操作」
見てみるとJunie のツールは、JetBrains IDE が標準で提供している内部 API(ファイル閲覧、プロジェクト検索、構造解析、リファクタリング)を操作するツールだけのようです。
ファイルの閲覧系
| ツール | IDE内部で行われている処理 |
|---|---|
| open | JetBrains の EditorManager API によってファイルを開く |
| open_entire_file | IDE のファイル読み取り API を利用して内容を取得する |
| scroll_up / scroll_down | エディタ内のカーソルやビュー位置を移動させる内部処理 |
これらは、ユーザーが IDE 上で「ファイルを開く」「スクロールする」といった基本操作を再現したものですよね。
プロジェクト検索系
| ツール | IDE内部の検索機能 |
|---|---|
| search_project | JetBrains の「Search Everywhere」相当の検索APIを利用し、シンボル・ファイル・テキストを検索する |
| get_file_structure | JetBrains の構文解析(AST)API を呼び出し、クラス・メソッドなどの構造を取得する |
JetBrains IDE が持つ「Search Everywhere」、シンボル解析や構文解析能力を Junie が呼びだせるのですね。
コード編集系
| ツール | IDE内部のリファクタリング機能 |
|---|---|
| search_replace | ファイル内テキストを「完全一致」条件で置換するAPIを利用する |
| rename_element | JetBrains 公式のリファクタリング API を使い、全参照を安全に更新する |
ユーザーが IDE 上で「Refactor → Rename」を実行した場合と同じ処理を内部で行っているため、コードが壊れにくい。
安全機能
| ツール | 内容 |
|---|---|
| undo_edit | IDE の UndoManager を呼び出し、直前の変更を取り消す |
Junie 独自の Undo ではなく、IDE 標準の取り消し処理を利用しているため安全です。
3.1. JetBrains IDE 自体が持つ強力な機能だけで十分
安全性・再現性を最大化
AI エージェントのハルシネーションで、
- 意図しないコード置換によるロジック破壊
- 参照更新漏れによるコンパイルエラー
- ファイル削除や移動などの破壊的操作
- プロジェクト外のファイルや設定に誤って影響を与える
Junie はこれらを避けるために、「AI が余計な操作を実行できないよう」 設計されているのではないでしょうか。
結果として、予期しない変更が起こりづらい ようになっています。
JetBrains IDE 自体が持つ強力な機能だけで十分
- 高性能なコード解析エンジン
- 信頼性の高いリファクタリング
- プロジェクト単位の検索機能
- 構文解析(AST)
- シンボル解析・依存関係追跡
Junie はこれらの既存機能を使えるようにしただけですので、
- IDE 内操作だけでコード編集が完結する
- 外部リソースへのアクセスが不要
- 操作範囲が限定されることで安全性が高まる
Junie は IDE がもともと持っている API や機能の範囲だけを扱うようなツールを持っていて、作業がIDE 内部で完結している。
その結果、安全で壊れないコード編集が可能になる反面、IDE が本来持っている機能を安全に AI が扱えるようにしています。
ではCAはどうでしょうか。
3.2. Claude Agent のツールは IDE 操作以外も含まれている
Claude Agent のツール一覧を見ると、IDE 操作以外のツールが含まれています。
Web関連の操作
| ツール | できること |
|---|---|
| WebFetch | Webページを取得して内容を解析する |
| WebSearch | 検索エンジンを使って情報を検索する |
ドキュメント・ファイル閲覧(PDF/画像/Jupyterなど)
Claude Agent はソースコード以外のファイル形式を操作できる。
| ツール | できること |
|---|---|
| Read | PDF、画像、テキスト、Jupyter ノートブックなどを読み取る |
| NotebookEdit | Jupyter ノートブックのセル内容を編集する |
| Write | 任意ファイルヘの書き込み |
タスク管理・ビジネスワークフロー支援
| ツール | 用途 |
|---|---|
| Task | 複雑なマルチステップタスクを自律的に処理 |
| TodoWrite | ToDo リストの生成・管理 |
OS レベルの補助ツール・外部作業
Claude Agent は IDE 外での処理も行える。
| ツール | 例 |
|---|---|
| Glob | プロジェクト外を含むファイルシステム検索 |
| Grep | 正規表現で高速全文検索 |
| Bash / execute_terminal_command | コマンドラインで任意の操作 |
これにより実現できる作業:
- リポジトリ全体の一括検索
- 外部プログラムの実行
- ツールチェーン(npm、docker、git など)の直接操作
このように、CAの使用可能ツールを見ると、
- 業務フローに沿って、IDE外のタスクを実行できる
- JetBrains IDEを中核としつつ、外の世界(Web・ファイル・OS)も扱える
CAとJunieはそもそも開発設計・目的がちがうのではないでしょうか。
比較
| 観点 | Junie | Claude Agent |
|---|---|---|
| 扱える範囲 | IDE内部のみ | IDE + Web + OS + ドキュメントの全領域 |
| bash の自由度 | 低い(制限多数) | 高い(ほぼ自由) |
| ファイル検索 | IDE内部の検索のみ | ripgrep / glob による高速広域検索 |
| 外部ツールチェーン操作 | 不可 | npm / docker / git などすべて可能 |
| リスク | 低い(安全) | 高いが強力(自由度が高い) |
結論:目的によって使い分けよう
Junie は JetBrains IDE の内部だけで安全にコードを扱うことに特化しており、誤った変更や参照漏れを防ぎながら、リファクタリングやコード編集を確実にしたいときに向いています。
一方で、Claude Agent はコードだけでなく、Web検索や外部ファイルの解析、OSコマンドの実行など、開発に付随する幅広い作業をまとめてサポートできるため、IDE の外まで含めて作業したいときに適しています。
JetBrains IDE でJetBrains AI を使えば両者とも使えて、“Bring Your Own AI Agent”にも対応したので、今後はユーザーの目的、好みのAgentを選ぶ世界線に突入しました。
それではまた会いましょう!
JetBrains IDE が ACP 対応へ — “Bring Your Own Agent”
Discussion