ページの作成:「== 概要 == JetBrains RustRoverは、IntelliJプラットフォームをベースにしたRust専用の統合開発環境である。<br> <br> RustRoverには、Cargo、デバッガ、Rustfmt、Clippy等の主要なRustツールチェーンとの統合機能が含まれており、Rust開発に必要な機能が最初から備わっている。<br> また、Web開発関連のプラグインも付属しているので、Webシステム開発も同じ環境で開発…」 |
編集の要約なし |
||
| (同じ利用者による、間の2版が非表示) | |||
| 180行目: | 180行目: | ||
<br> | <br> | ||
この設定は、以下に示すような場合に有効である。<br> | この設定は、以下に示すような場合に有効である。<br> | ||
* std::io::stdin().read_line()等の入力待ちを使用する場合 | * <code>std::io::stdin().read_line()</code> 等の入力待ちを使用する場合 | ||
* プログラムの実行結果をより見やすく表示する場合 | * プログラムの実行結果をより見やすく表示する場合 | ||
* IDE内蔵のコンソールで文字化け等の問題が発生する場合 | * IDE内蔵のコンソールで文字化け等の問題が発生する場合 | ||
| 187行目: | 187行目: | ||
== Cargoの設定 == | == Cargoの設定 == | ||
==== Cargo.tomlの編集 ==== | ==== Cargo.tomlの編集 ==== | ||
RustRoverは、<u>Cargo.toml</u> ファイルの編集時に、依存関係の自動補完とバージョン管理機能を提供する。<br> | |||
<br> | <br> | ||
依存関係を追加する場合、以下のようにCargo.tomlファイルを編集する。<br> | 依存関係を追加する場合、以下のようにCargo.tomlファイルを編集する。<br> | ||
<br> | |||
<syntaxhighlight lang="toml"> | <syntaxhighlight lang="toml"> | ||
# Cargo.tomlファイル | # Cargo.tomlファイル | ||
| 204行目: | 205行目: | ||
<br> | <br> | ||
または、以下のコマンドで依存関係を追加できる。<br> | または、以下のコマンドで依存関係を追加できる。<br> | ||
<br> | |||
cargo add serde --features derive | cargo add serde --features derive | ||
cargo add tokio --features full | cargo add tokio --features full | ||
<br> | <br> | ||
==== Cargoワークスペース ==== | ==== Cargoワークスペース ==== | ||
複数のクレートを含むワークスペースを作成する場合、ルートディレクトリに <u>Cargo.toml</u> ファイルを作成する。<br> | |||
<br> | |||
<syntaxhighlight lang="toml"> | <syntaxhighlight lang="toml"> | ||
# Cargo.tomlファイル (ワークスペースルート) | # Cargo.tomlファイル (ワークスペースルート) | ||
| 222行目: | 225行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
RustRoverは、ワークスペース内の全てのクレートを自動的に認識し、相互参照を提供する。<br> | |||
<br><br> | <br><br> | ||
| 228行目: | 231行目: | ||
==== GDBまたはLLDBのインストール ==== | ==== GDBまたはLLDBのインストール ==== | ||
Linuxでは、GDBまたはLLDBをインストールする必要がある。<br> | Linuxでは、GDBまたはLLDBをインストールする必要がある。<br> | ||
# | <br> | ||
# SUSE | |||
sudo zypper install gdb | sudo zypper install gdb | ||
## または、LLDBを使用する場合 | |||
sudo zypper install lldb | sudo zypper install lldb | ||
<br> | <br> | ||
# RHEL | # RHEL | ||
sudo dnf install gdb | sudo dnf install gdb | ||
## または、LLDBを使用する場合 | |||
sudo dnf install lldb | sudo dnf install lldb | ||
<br> | <br> | ||
==== デバッガの設定 ==== | ==== デバッガの設定 ==== | ||
[File] - [Settings] - [Build, Execution, Deployment] - [Debugger]を選択する。<br> | [File] - [Settings] - [Build, Execution, Deployment] - [Debugger]を選択する。<br> | ||
[Rust]セクションで、使用するデバッガ(GDBまたはLLDB)を選択する。<br> | [Rust]セクションで、使用するデバッガ (GDBまたはLLDB) を選択する。<br> | ||
<br> | <br> | ||
デバッグビルドを実行するには、以下の手順を実行する。<br> | デバッグビルドを実行するには、以下の手順を実行する。<br> | ||
# ブレークポイントを設定する箇所で、行番号の左側をクリックする。 | # ブレークポイントを設定する箇所で、行番号の左側をクリックする。 | ||
# [Run] - [Debug...] | # [Run] - [Debug...]を選択するか、ツールバーのデバッグアイコンを選択する。 | ||
# デバッガが起動し、ブレークポイントで停止する。 | # デバッガが起動し、ブレークポイントで停止する。 | ||
<br> | <br> | ||
| 257行目: | 259行目: | ||
<br> | <br> | ||
テストを実行する方法を、以下に示す。<br> | テストを実行する方法を、以下に示す。<br> | ||
# | # テスト関数の横に表示される実行アイコンを選択する。 | ||
# または、[Run] - [Run...]から該当するテストを選択する。 | # または、[Run] - [Run...]から該当するテストを選択する。 | ||
# または、以下のキーボードショートカットを使用する。 | # または、以下のキーボードショートカットを使用する。 | ||
#* 個別のテストを実行: Ctrl+Shift+F10 (Linux/Windows) | #* 個別のテストを実行: [Ctrl] + [Shift] + [F10] (Linux / Windows) | ||
#* 最後のテストを再実行: Shift+F10 (Linux/Windows) | #* 最後のテストを再実行: [Shift] + [F10] (Linux / Windows) | ||
<br> | <br> | ||
全てのテストを実行するには、以下のコマンドを使用する。<br> | 全てのテストを実行するには、以下のコマンドを使用する。<br> | ||
<br> | |||
cargo test | cargo test | ||
<br> | <br> | ||
特定のテストのみを実行するには、以下のようにする。<br> | 特定のテストのみを実行するには、以下のようにする。<br> | ||
<br> | |||
cargo test test_name | cargo test test_name | ||
<br><br> | <br><br> | ||
| 274行目: | 278行目: | ||
<br> | <br> | ||
Rustfmtをインストールする。<br> | Rustfmtをインストールする。<br> | ||
<br> | |||
rustup component add rustfmt | rustup component add rustfmt | ||
<br> | <br> | ||
| 282行目: | 287行目: | ||
手動でフォーマットを実行するには、以下の手順を実行する。<br> | 手動でフォーマットを実行するには、以下の手順を実行する。<br> | ||
# [Code] - [Reformat Code]を選択する。 | # [Code] - [Reformat Code]を選択する。 | ||
# | # または、[Ctrl] + [Alt] + [L]キー (Linux / Windows) を押下する。 | ||
<br> | |||
プロジェクトルートに <u>rustfmt.toml</u> ファイルを作成することで、フォーマット設定をカスタマイズできる。<br> | |||
<br> | <br> | ||
<syntaxhighlight lang="toml"> | <syntaxhighlight lang="toml"> | ||
# rustfmt.tomlファイル | # rustfmt.tomlファイル | ||
| 299行目: | 305行目: | ||
<br> | <br> | ||
Clippyをインストールする。<br> | Clippyをインストールする。<br> | ||
<br> | |||
rustup component add clippy | rustup component add clippy | ||
<br> | <br> | ||
| 304行目: | 311行目: | ||
<br> | <br> | ||
Clippyを手動で実行するには、以下のコマンドを使用する。<br> | Clippyを手動で実行するには、以下のコマンドを使用する。<br> | ||
<br> | |||
cargo clippy | cargo clippy | ||
<br> | <br> | ||
全ての警告を修正候補付きで表示するには、以下のコマンドを使用する。<br> | 全ての警告を修正候補付きで表示するには、以下のコマンドを使用する。<br> | ||
<br> | |||
cargo clippy --fix | cargo clippy --fix | ||
<br> | <br> | ||
特定のClippy lintを無効にする場合、以下のようにコード内で指定できる。<br> | 特定のClippy lintを無効にする場合、以下のようにコード内で指定できる。<br> | ||
<br> | |||
<syntaxhighlight lang="rust"> | <syntaxhighlight lang="rust"> | ||
#![allow(clippy::lint_name)] | #![allow(clippy::lint_name)] | ||
| 326行目: | 336行目: | ||
マクロ展開を表示する手順を、以下に示す。<br> | マクロ展開を表示する手順を、以下に示す。<br> | ||
# マクロ呼び出しにカーソルを置く。 | # マクロ呼び出しにカーソルを置く。 | ||
# [Tools] - [Rust] - [Show Macro Expansion]を選択する。 | # [Tools] - [Rust] - [Show Macro Expansion]を選択する。<br>または、[Ctrl] + [Shift] + [M]キー (Linux / Windows) を押下する。 | ||
<br> | <br> | ||
展開結果が別ウィンドウに表示され、マクロがどのようにコードを生成するかを確認できる。<br> | 展開結果が別ウィンドウに表示され、マクロがどのようにコードを生成するかを確認できる。<br> | ||
| 336行目: | 345行目: | ||
<br> | <br> | ||
Cargo Flamingoをインストールする。<br> | Cargo Flamingoをインストールする。<br> | ||
<br> | |||
cargo install flamegraph | cargo install flamegraph | ||
<br> | <br> | ||
プロファイリングを実行するには、以下のコマンドを使用する。<br> | プロファイリングを実行するには、以下のコマンドを使用する。<br> | ||
<br> | |||
cargo flamegraph | cargo flamegraph | ||
<br> | <br> | ||
生成されたフレームグラフ(flamegraph.svg)を、ブラウザで開いて確認する。<br> | 生成されたフレームグラフ (flamegraph.svg) を、ブラウザで開いて確認する。<br> | ||
<br> | <br> | ||
<u>※注意</u><br> | <u>※注意</u><br> | ||
<u>Linuxでは、perfツールへのアクセス権限が必要な場合がある。</u><br> | <u>Linuxでは、perfツールへのアクセス権限が必要な場合がある。</u><br> | ||
<u> | <u>その場合、以下に示すコマンドを実行する。</u><br> | ||
<br> | |||
echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid | echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid | ||
<br><br> | <br><br> | ||
| 353行目: | 365行目: | ||
<br> | <br> | ||
WASMターゲットをインストールする。<br> | WASMターゲットをインストールする。<br> | ||
<br> | |||
rustup target add wasm32-unknown-unknown | rustup target add wasm32-unknown-unknown | ||
<br> | <br> | ||
wasm-packをインストールする。<br> | wasm-packをインストールする。<br> | ||
<br> | |||
cargo install wasm-pack | cargo install wasm-pack | ||
<br> | <br> | ||
WASMプロジェクトをビルドするには、以下のコマンドを使用する。<br> | WASMプロジェクトをビルドするには、以下のコマンドを使用する。<br> | ||
<br> | |||
wasm-pack build --target web | wasm-pack build --target web | ||
<br> | <br> | ||
| 364行目: | 379行目: | ||
<br><br> | <br><br> | ||
== MCPサーバの設定 == | |||
Model Context Protocol (MCP)を使用することにより、AI Assistantは外部ツールやデータソースと連携できる。<br> | |||
MCPサーバに接続することで、AI Assistantの機能を大幅に拡張することができる。<br> | |||
<br> | |||
==== サポートされる転送メカニズム ==== | |||
AI Assistantは、以下に示す転送メカニズムをサポートしている。<br> | |||
<br> | |||
* Standard Input/Output (STDIO) | |||
*: AI AssistantがMCPサーバをサブプロセスとして起動し、標準入出力でデータを交換する。 | |||
* Streamable HTTP | |||
*: HTTPを使用してMCPサーバに接続する。 | |||
* SSE | |||
*: レガシーMCPサーバ向けの転送メカニズム | |||
<br> | |||
==== MCPサーバへの接続 ==== | |||
MCPサーバに接続する手順を以下に示す。<br> | |||
# [Settings] - [Tools] - [AI Assistant] - [Model Context Protocol (MCP)]を選択する。 | |||
# [Add]ボタンを押下して、新しいMCPサーバ設定を追加する。 | |||
# JSON設定を入力する。 | |||
# [OK]ボタンを押下する。 | |||
# [Apply]ボタンを押下して、MCPサーバを起動する。 | |||
<br> | |||
==== JSON設定例 ==== | |||
MCPサーバへの接続方法に応じて、JSON設定が異なる。<br> | |||
<br> | |||
===== ローカルインストール ===== | |||
MCPサーバがローカルにインストールされている場合の設定例を以下に示す。<br> | |||
<br> | |||
<syntaxhighlight lang="json"> | |||
{ | |||
"mcpServers": { | |||
"filesystem": { | |||
"command": "node", | |||
"args": [ | |||
"/path/to/server/dist/index.js", | |||
"/Users/username/Desktop" | |||
] | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
===== NPXを使用する場合 ===== | |||
NPXを使用してMCPサーバを実行する場合の設定例を以下に示す。<br> | |||
<br> | |||
<syntaxhighlight lang="json"> | |||
{ | |||
"mcpServers": { | |||
"filesystem": { | |||
"command": "npx", | |||
"args": [ | |||
"-y", | |||
"@modelcontextprotocol/server-filesystem", | |||
"/Users/username/Desktop" | |||
] | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
===== Dockerを使用する場合 ===== | |||
Dockerを使用してMCPサーバを実行する場合の設定例を以下に示す。<br> | |||
<br> | |||
<syntaxhighlight lang="json"> | |||
{ | |||
"mcpServers": { | |||
"filesystem": { | |||
"command": "docker", | |||
"args": [ | |||
"run", | |||
"-i", | |||
"--rm", | |||
"--mount", "type=bind,src=/local/path,dst=/container/path", | |||
"mcp/filesystem", | |||
"/projects" | |||
] | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
===== リモートサーバ ===== | |||
リモートMCPサーバに接続する場合の設定例を以下に示す。<br> | |||
<br> | |||
<syntaxhighlight lang="json"> | |||
{ | |||
"mcpServers": { | |||
"microsoftdocs": { | |||
"url": "https://learn.microsoft.com/api/mcp" | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== IDEをMCPサーバとして使用する ==== | |||
JetBrains IDE (バージョン 2025.2以降) は統合MCPサーバを提供しており、外部クライアントからIDEのツールにアクセスできる。<br> | |||
<br> | |||
MCPサーバを有効にする手順を以下に示す。<br> | |||
# [Settings] - [Tools] - [MCP Server]を選択する。<br> | |||
# [Enable MCP Server]を有効にする。<br> | |||
# [Clients Auto-Configuration]セクションで、各クライアントの[Auto-Configure]ボタンを押下する。<br> | |||
# クライアントを再起動する。<br> | |||
<br> | |||
===== 手動設定 ===== | |||
手動で設定する場合、以下のいずれかの設定をコピーしてクライアントの設定ファイルに貼り付ける。<br> | |||
<br> | |||
*SSE Config | |||
*: SSE接続用の設定<br> | |||
* Stdio Config | |||
*: STDIO接続用の設定<br> | |||
<br> | |||
===== 確認なしでアクションを実行する ===== | |||
外部クライアントが確認なしでターミナルコマンドや実行構成を実行できるようにするには、以下に示す設定を有効にする。<br> | |||
<br> | |||
# [Settings] - [Tools] - [MCP Server]を選択する。<br> | |||
# [Command execution]セクションで、[Run shell commands or run configurations without confirmation (brave mode)]を有効にする。<br> | |||
# [Apply]ボタンを押下する。<br> | |||
<br> | |||
==== サポートされるツール ==== | |||
下表に、統合MCPサーバが提供するツールの一覧を示す。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|+ MCPサーバが提供するツール | |||
! ツール名 !! 説明 | |||
|- | |||
| execute_run_configuration || 指定した実行構成を実行する。 | |||
|- | |||
| get_run_configurations || プロジェクトの実行構成一覧を取得する。 | |||
|- | |||
| get_file_problems || 指定したファイルのエラーと警告を分析する。 | |||
|- | |||
| get_project_dependencies || プロジェクトの依存関係一覧を取得する。 | |||
|- | |||
| get_project_modules || プロジェクトのモジュール一覧を取得する。 | |||
|- | |||
| create_new_file || 指定したパスに新しいファイルを作成する。 | |||
|- | |||
| find_files_by_glob || globパターンに一致するファイルを検索する。 | |||
|- | |||
| find_files_by_name_keyword || ファイル名にキーワードを含むファイルを検索する。 | |||
|- | |||
| get_all_open_file_paths || 開いている全ファイルのパスを取得する。 | |||
|- | |||
| list_directory_tree || ディレクトリツリーを表示する。 | |||
|- | |||
| open_file_in_editor || 指定したファイルをエディタで開く。 | |||
|- | |||
| reformat_file || 指定したファイルをフォーマットする。 | |||
|- | |||
| get_file_text_by_path || ファイルのテキスト内容を取得する。 | |||
|- | |||
| replace_text_in_file || ファイル内のテキストを置換する。 | |||
|- | |||
| search_in_files_by_regex || 正規表現でファイル内を検索する。 | |||
|- | |||
| search_in_files_by_text || テキストでファイル内を検索する。 | |||
|- | |||
| get_symbol_info || 指定した位置のシンボル情報を取得する。 | |||
|- | |||
| rename_refactoring || シンボルの名前を変更する。 | |||
|- | |||
| execute_terminal_command || ターミナルコマンドを実行する。 | |||
|- | |||
| get_repositories || プロジェクトのVCSルート一覧を取得する。 | |||
|} | |||
</center> | |||
<br> | |||
詳細な設定については、[https://www.jetbrains.com/help/ai-assistant/mcp.html JetBrains公式ドキュメント]を参照すること。<br> | |||
<br><br> | |||
== ACPを使用したOpenCodeとの連携 == | |||
ACP (Agent Client Protocol) を使用すると、RustRoverのAI ChatからOpenCodeをコーディングエージェントとして利用できる。<br> | |||
<br> | |||
ACPは、コードエディタとAIコーディングエージェント間の通信を標準化するプロトコルである。<br> | |||
エディタはACP互換エージェントをサブプロセスとして起動し、JSON-RPC over stdioで通信する。<br> | |||
RustRoverは、OpenCodeをサブプロセスとして起動して標準入出力を介して通信する。<br> | |||
<br> | |||
ACPエージェントはJetBrains AIサービスサブスクリプションなしで利用できるため、RustRoverの非商用無料ライセンスでもOpenCodeをACP経由で使用可能である。<br> | |||
<br> | |||
==== 前提条件 ==== | |||
* OpenCodeがインストールされ、プロバイダ認証が完了していること。 | |||
* RustRoverでAI AssistantおよびAI Chatが利用可能であること。 | |||
*: AI AssistantプラグインはRustRoverと互換であり、非商用無料ライセンスでも有効化できる。 | |||
* WSL (Windows Subsystem for Linux) 環境ではないこと。 | |||
*: JetBrains公式ドキュメントでWSL環境でのACP互換エージェントはサポート対象外とされている。 | |||
<br> | |||
==== OpenCode側の認証とプロジェクト設定 ==== | |||
OpenCodeの認証は、RustRoverの設定ファイル <u>acp.json</u> ファイルにはAPIキーを記述せず、OpenCode側で行う。<br> | |||
JetBrains公式ドキュメントでも、ほとんどのエージェントはAPIキーを <u>acp.json</u> ファイルに記述せず、ターミナルで認証することが推奨されている。<br> | |||
<br> | |||
プロバイダを認証するには、ターミナルで以下に示すコマンドを実行する。<br> | |||
<br> | |||
opencode auth login | |||
<br> | |||
認証済みのプロバイダを確認する場合は、以下に示すコマンドを実行する。<br> | |||
<br> | |||
opencode auth list | |||
<br> | |||
認証情報は、<u>~/.local/share/opencode/auth.json</u> ファイルに保存される。<br> | |||
<br> | |||
プロジェクト固有のモデル、MCPサーバ、権限等は、Cargoプロジェクトまたはワークスペースのルートに <u>opencode.json</u> または <u>opencode.jsonc</u> ファイルを配置して設定する。<br> | |||
<br> | |||
OpenCodeは起動時にカレントディレクトリから設定ファイルを探して、最も近いGitディレクトリまで上方向へ探索する。<br> | |||
CargoワークスペースのルートがGitリポジトリのルートと一致する場合が多いため、リポジトリまたはワークスペースルートに配置すれば自動検出される。<br> | |||
<br> | |||
作業ルールや設計方針は、同じプロジェクトルートの <u>AGENTS.md</u> ファイルに記述する。<br> | |||
ACP経由でも <u>AGENTS.md</u> ファイルのプロジェクトルールは有効である。<br> | |||
<br> | |||
==== JetBrains側のACP設定 ==== | |||
===== ~/.jetbrains/acp.jsonの作成 ===== | |||
JetBrains IDEのACP設定は、ユーザ単位の <u>~/.jetbrains/acp.json</u> ファイルで管理する。<br> | |||
<br> | |||
AI Chatツールウィンドウ右上の[...(More)]ボタンから[Add Custom Agent]を選択すると、設定ファイルを作成して編集できる。<br> | |||
<br> | |||
手動で作成する場合は、次のコマンドを実行する。<br> | |||
<br> | |||
mkdir -p ~/.jetbrains | |||
<br> | |||
===== OpenCode実行ファイルの絶対パスの確認 ===== | |||
<code>command</code> キーには、OpenCode実行ファイルの絶対パスを指定する。<br> | |||
JetBrains公式ドキュメントで、<code>command</code> パラメータには実行ファイルのフルパスを使用することが明記されている。<br> | |||
<br> | |||
GUIから起動されるRustRoverのプロセスは、環境変数 <codePATH</code> を継承しない場合があるため、相対パスやエイリアスは失敗する可能性がある。<br> | |||
<br> | |||
次のコマンドで実行ファイルの場所を確認する。<br> | |||
<br> | |||
command -v opencode | |||
readlink -f "$(command -v opencode)" | |||
<br> | |||
出力されたパスを <code>command</code> キーの値に使用する。<br> | |||
<br> | |||
===== acp.jsonの記述 ===== | |||
<u>~/.jetbrains/acp.json</u> ファイルに、次の内容を記述する。<br> | |||
<br> | |||
<syntaxhighlight lang="json"> | |||
{ | |||
"default_mcp_settings": { | |||
"use_idea_mcp": true, | |||
"use_custom_mcp": true | |||
}, | |||
"agent_servers": { | |||
"OpenCode": { | |||
"command": "/home/<ユーザ名>/.opencode/bin/opencode", | |||
"args": [ | |||
"acp" | |||
] | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
<code>command</code> キーのパスは、実際に確認した絶対パスへ置き換える。<br> | |||
<code>args</code> 配列には <code>acp</code> を指定して、OpenCodeをACPサーバとして起動する。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|+ acp.jsonの設定項目 | |||
! 項目 !! 配置 !! 説明 | |||
|- | |||
| <code>default_mcp_settings</code> || 最上位 || 全ローカルエージェントに適用する既定のMCP設定<br>エージェント固有設定で上書き可能 | |||
|- | |||
| <code>use_custom_mcp</code> || <code>default_mcp_settings</code> 配下 || ユーザが設定したMCPサーバをエージェントへ公開する。<br>既定値は <u>true</u> | |||
|- | |||
| <code>use_idea_mcp</code> || <code>default_mcp_settings</code> 配下 || IntelliJ MCP Serverをエージェントへ公開する。<br>既定値は <u>false</u><br><br>trueの場合、<code>idea_mcp_allowed_tools</code> キーで公開ツールを制限可能 | |||
|- | |||
| <code>agent_servers</code> || 最上位 || ACPエージェントの一覧<br>キーはAI Chatに表示される名前になる。 | |||
|- | |||
| <code>command</code> || 各エージェント配下 || エージェントの実行ファイル<br>JetBrainsがサブプロセスとして起動するため、絶対パスを指定する。 | |||
|- | |||
| <code>args</code> || 各エージェント配下 || 起動時に渡す引数の配列<br>OpenCodeでは <code>acp</code> を指定する。 | |||
|- | |||
| <code>env</code> (省略可能) || 各エージェント配下 || エージェントプロセスに設定する環境変数<br>プロキシ等が必要な場合に使用する。<br>APIキーの平文記述は避けること。 | |||
|} | |||
</center> | |||
<br> | |||
===== 特定の作業ディレクトリで起動する設定 ===== | |||
<code>--cwd</code> オプションを使用すると、特定の作業ディレクトリでOpenCodeを起動できる。<br> | |||
<br> | |||
複数のCargoプロジェクトを扱う場合に有効である。<br> | |||
<br> | |||
<syntaxhighlight lang="json"> | |||
{ | |||
"agent_servers": { | |||
"OpenCode-ProjectA": { | |||
"command": "/home/<ユーザ名>/.opencode/bin/opencode", | |||
"args": [ | |||
"acp", | |||
"--cwd", | |||
"/path/to/project-a" | |||
] | |||
}, | |||
"OpenCode-ProjectB": { | |||
"command": "/home/<ユーザ名>/.opencode/bin/opencode", | |||
"args": [ | |||
"acp", | |||
"--cwd", | |||
"/path/to/project-b" | |||
] | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== ACP Registryからのインストール ==== | |||
JetBrains IDE バージョン 2025.3以降では、ACP RegistryからOpenCodeを直接インストールできる。<br> | |||
OpenCodeはACP Registryに登録されており、"Community-driven, fully open-source agent"として提供されている。<br> | |||
<br> | |||
ACP Registryからインストールする手順を、以下に示す。<br> | |||
# AI Chatツールウィンドウを開く。 | |||
# チャットモードセレクタから[Install From ACP Registry]を選択する。 | |||
#: または、[Settings] - [Tools] - [AI Assistant] - [Agents]から開くこともできる。<br> | |||
#: <br> | |||
# [Agents]ページで、OpenCodeを選択してインストールする。 | |||
# インストール完了後、AI ChatのエージェントセレクタにOpenCodeが表示される。 | |||
<br> | |||
ACP Registryを利用するには、RustRoverおよびJetBrains AI プラグインを最新版へ更新する必要がある。<br> | |||
<br> | |||
==== RustRoverでの有効化と動作確認 ==== | |||
===== 設定の反映 ===== | |||
<u>acp.json</u> ファイルの保存後、RustRoverのAI Chatでエージェントを選択できる。<br> | |||
<br> | |||
表示されない場合は、JSON形式と実行ファイルのパスを確認して、RustRoverを再起動する。<br> | |||
<br> | |||
===== エージェントの選択 ===== | |||
RustRoverでAI Chatツールウィンドウを開いて、チャットモードのエージェントセレクタから[OpenCode]を選択する。<br> | |||
<br> | |||
===== Cargoプロジェクトの動作確認 ===== | |||
Cargoプロジェクトまたはワークスペースを開いた状態で、読み取り中心の指示を送信する。<br> | |||
<br> | |||
# プロンプト例 | |||
このCargoプロジェクトの構成と主要クレートを調査し、ビルド方法とテスト方法を要約してください。 | |||
ファイルは変更しないでください。 | |||
<br> | |||
エージェントが応答し、プロジェクト内のファイルを参照できれば、ACP連携を確認できる。<br> | |||
<br> | |||
===== OpenCode単体での事前確認 ===== | |||
RustRover側を確認する前に、ターミナルで <code>opencode acp</code> コマンドを実行して、起動できるか確認する。<br> | |||
JetBrains公式ドキュメントでも、ターミナルで手動実行して動作確認することが推奨されている。<br> | |||
<br> | |||
~/.opencode/bin/opencode acp | |||
<br> | |||
<code>command</code> キーに設定した絶対パスへ置き換えて実行する。<br> | |||
このコマンドはACPサーバを起動し、標準入力と標準出力でACPメッセージを待機する。<br> | |||
<br> | |||
==== プロジェクト単位の設定 ==== | |||
ACPエージェントの登録はユーザ単位の <u>~/.jetbrains/acp.json</u> ファイルで行う。<br> | |||
<br> | |||
一方、OpenCodeの動作はプロジェクト単位で設定できる。<br> | |||
次のファイルをCargoプロジェクトまたはワークスペースのルートに配置する。<br> | |||
<br> | |||
* <u>opencode.json</u> または <u>opencode.jsonc</u> | |||
*: モデル、MCPサーバ、権限等のプロジェクト設定を記述する。 | |||
* <u>AGENTS.md</u> | |||
*: 作業ルール、設計方針、禁止事項等を記述する。 | |||
<br> | |||
OpenCodeは起動時にカレントディレクトリから設定ファイルを探して、最も近いGitディレクトリまで上方向へ探索するため、サブディレクトリから作業してもルートの設定が適用される。<br> | |||
<br> | |||
==== トラブルシューティング ==== | |||
===== OpenCodeエージェントがAI Chatに表示されない ===== | |||
* 原因 | |||
*: <u>acp.json</u> ファイルのJSON形式が正しくない、または、設定変更がRustRoverに反映されていない。 | |||
*: <br> | |||
* 解決方法 | |||
** <u>acp.json</u> ファイルが正しいJSON形式であることを確認する。 | |||
** RustRoverを再起動する。 | |||
<br> | |||
===== エージェントの起動に失敗する ===== | |||
* 原因 | |||
*: <code>command</code> キーの絶対パスが誤っている、OpenCodeの認証が完了していない、実行ファイルを起動できない。 | |||
*: <br> | |||
* 解決方法 | |||
** <code>command -v opencode</code> コマンド および <code>readlink -f</code> コマンドで絶対パスを確認する。 | |||
** 設定した絶対パスで <code>opencode acp</code> コマンドを手動実行する。 | |||
** <code>opencode auth list</code> コマンドを実行して、プロバイダ認証を確認する。 | |||
<br> | |||
===== ACPログの取得 ===== | |||
AI Chatツールウィンドウ右上の [...(More)]ボタンから[Get ACP Logs]を選択すると、エージェントログのアーカイブを取得できる。<br> | |||
<br> | |||
詳細な要求と応答を記録するには、Registryの <code>llm.agent.extended.logging</code> キーを有効してRustRoverを再起動する。<br> | |||
<br> | |||
Registryを開く手順を、以下に示す。<br> | |||
# [Navigate]メニュー - [Search Everywhere]を選択する、または、[Shift]キーを2回押下して検索ウィンドウを開く。 | |||
# <u>Registry</u> と入力して、[Enter]キーを押下する。 | |||
# ダイアログで[Ctrl] + [F]キーを押下して、<code>llm.agent.extended.logging</code> キーを検索して、有効化する。 | |||
# [Close]ボタンを押下して、RustRoverを再起動する。 | |||
<br> | |||
ログにはチャット内容等の機密情報が含まれる可能性があるため、共有前に確認すること。<br> | |||
<br> | |||
==== セキュリティと運用上の注意 ==== | |||
* APIキーを <u>~/.jetbrains/acp.json</u> ファイルに平文で記述しないこと。 | |||
*: OpenCodeの認証機能 (<code>opencode auth login</code>) で設定した認証情報を使用する。 | |||
*: 認証情報は、<u>~/.local/share/opencode/auth.json</u> ファイルに保存される。 | |||
* <code>command</code> キーには絶対パスを指定すること。 | |||
*: シェルのエイリアスや相対パスは、RustRoverから起動できない場合がある。 | |||
* <code>use_idea_mcp</code> キー と <code>use_custom_mcp</code> キーの公開範囲を確認すること。 | |||
*: 有効にしたMCPサーバの機能がエージェントから利用可能になる。 | |||
*: 必要最小限に留め、<code>idea_mcp_allowed_tools</code> キーでツールを制限できる。 | |||
* 詳細ログを共有する前に機密情報を除去すること。 | |||
*: <code>llm.agent.extended.logging</code> 有効時のログには、チャット内容やファイル内容が含まれる可能性がある。 | |||
* WSL環境ではACP互換エージェントを使用しないこと。 | |||
*: JetBrains公式ドキュメントでサポート対象外とされている。 | |||
<br> | |||
==== 関連情報 ==== | |||
* [https://www.jetbrains.com/help/ai-assistant/acp.html JetBrains公式 ACPドキュメント] | |||
* [https://opencode.ai/docs/acp/ OpenCode公式 ACP Support] | |||
* [https://opencode.ai/docs/cli/ OpenCode公式 CLI] | |||
* [https://opencode.ai/docs/config/ OpenCode公式 Config] | |||
* [https://agentclientprotocol.com/ Agent Client Protocol仕様] | |||
* [[インストール - OpenCode]] | |||
<br><br> | |||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Rust]] | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Rust]] | ||