ページの作成:「== 概要 == 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は、Cargo.tomlファイルの編集時に、依存関係の自動補完とバージョン管理機能を提供する。<br>
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ワークスペース ====
複数のクレートを含むワークスペースを作成する場合、ルートディレクトリにCargo.tomlファイルを作成する。<br>
複数のクレートを含むワークスペースを作成する場合、ルートディレクトリに <u>Cargo.toml</u> ファイルを作成する。<br>
<br>
  <syntaxhighlight lang="toml">
  <syntaxhighlight lang="toml">
  # Cargo.tomlファイル (ワークスペースルート)
  # Cargo.tomlファイル (ワークスペースルート)
222行目: 225行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
RustRoverは、ワークスペース内のすべてのクレートを自動的に認識し、相互参照を提供する。<br>
RustRoverは、ワークスペース内の全てのクレートを自動的に認識し、相互参照を提供する。<br>
<br><br>
<br><br>


228行目: 231行目:
==== GDBまたはLLDBのインストール ====
==== GDBまたはLLDBのインストール ====
Linuxでは、GDBまたはLLDBをインストールする必要がある。<br>
Linuxでは、GDBまたはLLDBをインストールする必要がある。<br>
  # openSUSE/SLESの場合
<br>
  # SUSE
  sudo zypper install gdb
  sudo zypper install gdb
   
  ## または、LLDBを使用する場合
# または、LLDBを使用する場合
  sudo zypper install lldb
  sudo zypper install lldb
<br>
<br>
  # RHEL/Fedoraの場合
  # RHEL
  sudo dnf install gdb
  sudo dnf install gdb
   
  ## または、LLDBを使用する場合
# または、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)を押下する。
# または、[Ctrl] + [Alt] + [L]キー (Linux / Windows) を押下する。
<br>
プロジェクトルートに <u>rustfmt.toml</u> ファイルを作成することで、フォーマット設定をカスタマイズできる。<br>
<br>
<br>
プロジェクトルートにrustfmt.tomlファイルを作成することで、フォーマット設定をカスタマイズできる。<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) を押下する。
# または、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><br>
<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]]