「インストール - CLion」の版間の差分
| (同じ利用者による、間の13版が非表示) | |||
| 57行目: | 57行目: | ||
<br><br> | <br><br> | ||
== | == Raspberry Pi / Qt 5との連携 == | ||
== | CLionを使用してRaspberry PiとQt 5のクロス開発を行う場合は、[[インストール_-_Qt5_Raspberry_Pi#CLion / Qt 5との連携]]のページを参照すること。<br> | ||
[ | <br><br> | ||
[ | |||
== PinePhone / Qt 5との連携 == | |||
CLionを使用してPinePhoneとQt 5のクロス開発を行う場合は、[[インストール_-_Qt5_PinePhone#CLion / Qt 5との連携]]のページを参照すること。<br> | |||
<br><br> | |||
== MSP430との連携 == | |||
==== MSP430向けGCCツールチェーンのインストール ==== | |||
[https://www.ti.com/tool/MSP430-GCC-OPENSOURCE TIの公式Webサイト]にアクセスして、MSP430のGCCツールチェーンおよびMSP430の開発向けヘッダファイル群をダウンロードする。<br> | |||
ダウンロードするファイルは2つである。<br> | |||
* Mitto Systems GCC 64-bit Linux installer incl. support files | |||
* Header and Support Files | |||
<br> | <br> | ||
ダウンロードしたファイルを解凍する。<br> | |||
# MSP430 GCCツールチェーン | |||
7z x msp430-gcc-full-linux-x64-installer-<バージョン>.7z | |||
# MSP430 開発向けヘッダファイル群 | |||
unzip msp430-gcc-support-files-<バージョン>.zip | |||
mv msp430-gcc-support-files-<バージョン> <任意のディレクトリ> | |||
<br> | <br> | ||
MSP430 GCCツールチェーンをインストールする。<br> | |||
sudo ./msp430-gcc-full-linux-x64-installer-<バージョン>.run \ | |||
--prefix <MSP430 GCCツールチェーンのインストールディレクトリ 例: /opt/TI/MSP430_GCC> \ | |||
--mode xwindow --installer-language ja | |||
# または | |||
kdesu -c './msp430-gcc-full-linux-x64-installer-<バージョン>.run \ | |||
--prefix <MSP430 GCCツールチェーンのインストールディレクトリ 例: /opt/TI/MSP430_GCC> \ | |||
--mode xwindow --installer-language ja' | |||
<br> | <br> | ||
/<MSP430 GCCツールチェーンのインストールディレクトリ>/bin/gdb_agent_consoleファイルに実行権限を付加する。<br> | |||
chmod +x /<MSP430 GCCツールチェーンのインストールディレクトリ>/bin/gdb_agent_console | |||
# または | |||
sudo chmod +x /<MSP430 GCCツールチェーンのインストールディレクトリ>/bin/gdb_agent_console | |||
<br> | <br> | ||
==== MSP Flasherのインストール (ez-FETを使用する場合) ==== | |||
[https://www.ti.com/tool/ja-jp/MSP430-FLASHER TIの公式Webサイト]にアクセスして、MSP Flasherをダウンロードする。<br> | |||
* Linux 64-Bit Installer for MSPFlasher | |||
* | |||
<br> | <br> | ||
ダウンロードしたファイルを解凍する。<br> | |||
unzip MSPFlasher-<バージョン>-linux-x64-installer.zip | |||
<br> | <br> | ||
解凍したファイル (インストーラ) に実行権限を付加する。<br> | |||
chmod u+x MSPFlasher-<バージョン>-linux-x64-installer.run | |||
<br> | <br> | ||
MSP Flasherをインストールする。<br> | |||
MSP Flasherのインストールディレクトリは、任意のディレクトリで構わない。<br> | |||
./MSPFlasher-<バージョン>-linux-x64-installer.run | |||
<br> | <br> | ||
==== MSP Debugのインストール ==== | |||
MSP Debugのビルドに必要なライブラリをインストールする。<br> | |||
# SUSE | |||
sudo zypper install readline-devel libusb-1_0-devel libusb-compat-devel | |||
<br> | <br> | ||
[ | [https://github.com/dlbeer/mspdebug.git MSP Debug]のGithubにアクセスして、ソースコードをダウンロードする。<br> | ||
git clone https://github.com/dlbeer/mspdebug.git | |||
cd mspdebug | |||
<br> | <br> | ||
= | MSP Debugをビルドおよびインストールする。<br> | ||
make PREFIX=<MSP Debugのインストールディレクトリ> -j $(nproc) | |||
make PREFIX=<MSP Debugのインストールディレクトリ> install | |||
<br> | <br> | ||
==== MSP430向けGCCツールチェーンのアンインストール ==== | |||
/<MSP430向けGCCツールチェーンのインストールディレクトリ>/binディレクトリに移動する。<br> | |||
cd /<MSP430向けGCCツールチェーンのインストールディレクトリ>/bin | |||
<br> | <br> | ||
MSP430向けGCCツールチェーンをアンインストールする。<br> | |||
sudo ./uninstall | |||
# または | |||
kdesu ./uninstall | |||
<br> | <br> | ||
==== CLionの設定 ==== | |||
===== CMakeツールチェーンファイルの作成 ===== | |||
vi /<MSP430プロジェクトのトップディレクトリ>/toolchain-msp430-gcc-ti.cmake | |||
<br> | <br> | ||
<syntaxhighlight lang="cmake"> | |||
# /<MSP430プロジェクトのトップディレクトリ>/toolchain-msp430-gcc-ti.cmakeファイル | |||
include(CMakeForceCompiler) | |||
# ツールチェーン等のパス | |||
SET(PLATFORM_PACKAGES_PATH "<上記のセクションでインストールしたMSP430 GCCツールチェーンのパス 例: /opt/TI/MSP430_GCC>") | |||
list(APPEND CMAKE_MODULE_PATH "<CLionのMSP430プロジェクトのトップディレクトリ 例: /home/user/MSP430Project>") | |||
list(APPEND CMAKE_MODULE_PATH "${PLATFORM_PACKAGES_PATH}/lib/cmake") | |||
list(APPEND CMAKE_PREFIX_PATH "${PLATFORM_PACKAGES_PATH}/lib/cmake") | |||
INCLUDE_DIRECTORIES("${PLATFORM_PACKAGES_PATH}/include ${INCLUDE_DIRECTORIES}") | |||
# ターゲットデバイス名 | |||
SET(SUPPORTED_DEVICES "<ターゲットデバイス名 例: msp430g2553>" CACHE STRING "Supported Target Devices") | |||
set(CMAKE_SYSTEM_NAME msp430-gcc) | |||
# コンパイラの設定 | |||
SET(MSP430_TI_COMPILER_FOLDER ${PLATFORM_PACKAGES_PATH}) | |||
SET(MSP430_TI_BIN_FOLDER ${MSP430_TI_COMPILER_FOLDER}/bin) | |||
SET(MSP430_TI_INCLUDE_FOLDER ${MSP430_TI_COMPILER_FOLDER}/include) | |||
SET(TOOLCHAIN_PREFIX msp430-elf) | |||
SET(TOOLCHAIN_BIN_PATH ${MSP430_TI_BIN_FOLDER}) | |||
SET(FLASHER_PATH <上記のセクションでインストールしたMSP Flasherのパス 例: /home/user/MSPFlasher>) | |||
SET(MSPDEBUG_PATH <上記のセクションでインストールしたMSP Debugのパス 例: /home/user/MSP_Debug/bin>) | |||
SET(MSPDEBUG_DEVICE ezfet) | |||
INCLUDE_DIRECTORIES(${MSP430_TI_INCLUDE_FOLDER} ${INCLUDE_DIRECTORIES}) | |||
LINK_DIRECTORIES(${MSP430_TI_INCLUDE_FOLDER} ${LINK_DIRECTORIES}) | |||
FIND_PROGRAM(MSP430_CC ${TOOLCHAIN_PREFIX}-gcc PATHS ${TOOLCHAIN_BIN_PATH}) | |||
FIND_PROGRAM(MSP430_CXX ${TOOLCHAIN_PREFIX}-g++ PATHS ${TOOLCHAIN_BIN_PATH}) | |||
FIND_PROGRAM(MSP430_AR ${TOOLCHAIN_PREFIX}-ar PATHS ${TOOLCHAIN_BIN_PATH}) | |||
FIND_PROGRAM(MSP430_AS ${TOOLCHAIN_PREFIX}-as PATHS ${TOOLCHAIN_BIN_PATH}) | |||
FIND_PROGRAM(MSP430_OBJDUMP ${TOOLCHAIN_PREFIX}-objdump PATHS ${TOOLCHAIN_BIN_PATH}) | |||
FIND_PROGRAM(MSP430_OBJCOPY ${TOOLCHAIN_PREFIX}-objcopy PATHS ${TOOLCHAIN_BIN_PATH}) | |||
FIND_PROGRAM(MSP430_SIZE ${TOOLCHAIN_PREFIX}-size PATHS ${TOOLCHAIN_BIN_PATH}) | |||
FIND_PROGRAM(MSP430_NM ${TOOLCHAIN_PREFIX}-nm PATHS ${TOOLCHAIN_BIN_PATH}) | |||
FIND_PROGRAM(MSPDEBUG mspdebug PATHS ${MSPDEBUG_PATH}) | |||
FIND_PROGRAM(MSP430_FLASHER MSP430Flasher PATHS ${FLASHER_PATH}) | |||
set(CMAKE_C_COMPILER ${MSP430_CC} CACHE STRING "C Compiler") | |||
set(CMAKE_CXX_COMPILER ${MSP430_CXX} CACHE STRING "C++ Compiler") | |||
set(AS ${MSP430_AS} CACHE STRING "AS Binary") | |||
set(AR ${MSP430_AR} CACHE STRING "AR Binary") | |||
set(OBJCOPY ${MSP430_OBJCOPY} CACHE STRING "OBJCOPY Binary") | |||
set(OBJDUMP ${MSP430_OBJDUMP} CACHE STRING "OBJDUMP Binary") | |||
set(SIZE ${MSP430_SIZE} CACHE STRING "SIZE Binary") | |||
IF(NOT CMAKE_BUILD_TYPE) | |||
SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING | |||
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." | |||
FORCE) | |||
ENDIF(NOT CMAKE_BUILD_TYPE) | |||
set(MSPGCC_OPT_LEVEL "g" CACHE STRING "MSPGCC OPT LEVEL") | |||
set(MSPGCC_WARN_PROFILE "-Wall -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wunused" | |||
CACHE STRING "MSPGCC WARNINGS") | |||
set(MSPGCC_DISABLED_BUILTINS "-fno-builtin-printf -fno-builtin-sprintf" | |||
CACHE STRING "MSPGCC Disabled Builtins") | |||
set(MSPGCC_OPTIONS "-gdwarf-3 -fdata-sections -ffunction-sections -fverbose-asm ${MSPGCC_DISABLED_BUILTINS}" | |||
CACHE STRING "MSPGCC OPTIONS") | |||
set(CMAKE_C_FLAGS "${MSPGCC_WARN_PROFILE} ${MSPGCC_OPTIONS} -O${MSPGCC_OPT_LEVEL} -DGCC_MSP430" CACHE STRING "C Flags") | |||
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--gc-sections -Wl,--print-gc-sections" | |||
CACHE STRING "Linker Flags") | |||
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--gc-sections" | |||
CACHE STRING "Linker Flags") | |||
# リンカコマンドの設定 | |||
set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_C_COMPILER> ${CMAKE_EXE_LINKER_FLAGS} <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>" | |||
CACHE STRING "C++ Executable Link Command") | |||
set(CMAKE_C_LINK_EXECUTABLE ${CMAKE_CXX_LINK_EXECUTABLE} CACHE STRING "C Executable Link Command") | |||
set(PROGBIN ${MSP430_FLASHER} CACHE STRING "Programmer Application") | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
===== リンカコマンドファイルのコピー ===== | |||
ターゲットデバイスのリンカコマンドファイルを、プロジェクトのトップディレクトリにコピーする。<br> | |||
cp /<上記のセクションでインストールしたMSP430 GCCツールチェーンのパス>/include/<ターゲットデバイス名>.ld \ | |||
<MSP430プロジェクトのトップディレクトリ> | |||
# 例: MSP430G2553を使用する場合 | |||
cp /<上記のセクションでインストールしたMSP430 GCCツールチェーンのパス>/include/msp430g2553.ld \ | |||
<MSP430プロジェクトのトップディレクトリ> | |||
<br> | |||
===== プロジェクトの設定 ===== | |||
# プロジェクトを開いて、[ファイル]メニューバー - [設定]を選択する。 | |||
# [設定]画面の左ペインから、[ビルド、実行、デプロイ] - [CMake]を選択する。 | |||
# [設定]画面の右ペインから、[+]アイコンを選択して、CMakeの設定を行う。 | |||
#* [名前] | |||
#*: 任意の名前 | |||
#* [ビルドタイプ]プルダウン | |||
#*: Debug | |||
#* [ツールチェーン]プルダウン | |||
#*: MSP430ツールチェーンを選択する。 | |||
#* [ジェネレーター] | |||
#*: [デフォルトを使用する] | |||
#* [CMakeオプション] | |||
#*: <code>-DCMAKE_TOOLCHAIN_FILE=<上記のセクションで作成したCMakeツールチェーンファイルのパス></code> | |||
# [OK]ボタンを押下する。 | |||
<br><br> | |||
==== | == ACPを使用したOpenCodeとの連携 == | ||
ACP (Agent Client Protocol) を使用すると、CLionのAI ChatからOpenCodeをコーディングエージェントとして利用できる。<br> | |||
<br> | |||
ACPは、コードエディタとAIコーディングエージェント間の通信を標準化するオープンなプロトコルであり、LSP (Language Server Protocol) が言語サーバ統合を標準化したのと同じ役割を、エージェント向けに果たす。<br> | |||
CLionはACP互換エージェントをサブプロセスとして起動して、JSON-RPC over stdioで通信する。<br> | |||
<br> | |||
==== ACPの仕組み ==== | |||
ACP連携時の全体構成は次のとおりである。<br> | |||
<br> | |||
* CLion (AI Assistant) | |||
*: AI Chatからエージェントを選択し、プロンプトを送信する。 | |||
*: ACP互換エージェントをサブプロセスとして起動する。 | |||
* 通信経路 (JSON-RPC / stdio) | |||
*: CLionとエージェントの間で、JSON-RPCメッセージを標準入力と標準出力でやり取りする。 | |||
*: ローカル実行が基本であり、ネットワークポートの開放は不要である。 | |||
* OpenCode (<code>opencode acp</code> コマンド) | |||
*: OpenCodeの <code>acp</code> サブコマンドが、ACP互換サーバとしてstdio上で待ち受ける。 | |||
*: 設定済みのツール、MCPサーバ、<u>AGENTS.md</u> ファイルのルール等を通常どおり利用する。 | |||
<br> | |||
JetBrains公式では、ACP互換エージェントはJetBrains AIサービスのサブスクリプション無しでも接続・利用可能とされている。<br> | |||
ただし、Windows Subsystem for Linux (WSL) 環境では、ACP互換エージェントはサポート対象外である。<br> | |||
<br> | |||
==== 前提条件 ==== | |||
* OpenCodeがインストール済みであること。 | |||
*: インストール手順は、[[インストール - OpenCode]]のページを参照すること。 | |||
* OpenCodeのプロバイダ認証が完了していること。 | |||
* CLionでAI Assistantが利用可能であること。 | |||
* WSL環境ではないこと。 | |||
<br> | |||
==== OpenCode側の準備 ==== | |||
ACP設定の前に、OpenCode側の初期化と認証を済ませておく。<br> | |||
これは、JetBrains側の設定ファイルにAPIキーを直接記述しなくて済むようにするためである。<br> | |||
<br> | |||
===== プロバイダの認証 ===== | |||
OpenCodeのプロバイダ認証には、CLIとTUIの2つの方法がある。<br> | |||
どちらの方法でも、認証情報は <u>~/.local/share/opencode/auth.json</u> ファイルに保存される。<br> | |||
<br> | |||
* <code>opencode auth login</code> コマンド (CLI) | |||
*: ターミナルから直接プロバイダを選択して認証する。 | |||
* <code>/connect</code> コマンド (TUI) | |||
*: OpenCodeを起動して、TUI内で <code>/connect</code> コマンドを実行してプロバイダを選択し、APIキーを入力する。 | |||
<br> | |||
CLIで認証する場合は、次のコマンドを実行する。<br> | |||
<br> | |||
opencode auth login | |||
<br> | |||
TUIで認証する場合は、OpenCodeを起動後、TUI内で以下に示すコマンドを実行する。<br> | |||
<br> | |||
/connect | |||
<br> | |||
設定済みのプロバイダを確認する。<br> | |||
<br> | |||
opencode auth list | |||
<br> | |||
利用可能なモデル一覧を更新して確認する。<br> | |||
<br> | |||
opencode models --refresh | |||
<br> | |||
===== プロジェクト設定ファイルの準備 ===== | |||
OpenCodeは、プロジェクトルートの <u>opencode.json / opencode.jsonc</u> ファイルを読み込み、グローバル設定よりも優先する。<br> | |||
<br> | |||
OpenCodeは起動時にカレントディレクトリから設定ファイルを探して、Gitルート方向へ探索する。<br> | |||
プロジェクト固有のモデル指定やMCPサーバ設定は、このファイルに記述する。<br> | |||
<br> | |||
* <u>opencode.json / opencode.jsonc</u> | |||
*: <syntaxhighlight lang="json"> | |||
{ | |||
"$schema": "https://opencode.ai/config.json", | |||
"model": "opencode-go/glm-5.2", | |||
"instructions": [ | |||
"AGENTS.md" | |||
] | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
作業ルールや設計方針は、プロジェクトルートの <u>AGENTS.md</u> ファイルに記述する。<br> | |||
OpenCodeはこのファイルを読み込み、プロジェクト専用のルールとして適用する。<br> | |||
<br> | |||
<u>AGENTS.md</u> ファイルは手動で作成するほか、OpenCode TUIの <u>/init</u> コマンドで生成できる。<br> | |||
OpenCodeを起動して、TUI内で <code>/init</code> コマンドを実行すると、OpenCodeがプロジェクト構成を解析して、<u>AGENTS.md</u> ファイルのひな形を作成または更新する。<br> | |||
<br> | |||
==== JetBrains側のACP設定 ==== | |||
===== ~/.jetbrains/acp.jsonの作成 ===== | |||
JetBrains系IDEのACP設定は、ユーザ単位のファイル <u>~/.jetbrains/acp.json</u> ファイルで管理される。<br> | |||
<br> | |||
このファイルは、次のいずれかの経路から作成・編集できる。<br> | |||
<br> | |||
* AI Chatツールウィンドウ右上のメニュー - [Add Custom Agent] | |||
*: ファイルが存在しない場合は新規作成され、編集用に開かれる。 | |||
* [設定] - [ツール] - [AI Assistant] - [Agents] | |||
*: Agents設定画面からエージェントの追加やMCP設定の切り替えを行う。 | |||
<br> | |||
手動で作成する場合は、以下に示す通り、ディレクトリとファイルを用意する。<br> | |||
<br> | |||
mkdir -p ~/.jetbrains | |||
<br> | <br> | ||
===== OpenCode実行ファイルの絶対パスの確認 ===== | |||
<code>command</code> コマンドには、OpenCode実行ファイルの絶対パスを指定する必要がある。<br> | |||
<br> | <br> | ||
JetBrains公式のトラブルシューティングでも、エージェント起動失敗時はフルパスの使用が推奨されている。<br> | |||
<br> | <br> | ||
command -v opencode | |||
readlink -f "$(command -v opencode)" | |||
# 出力例 | |||
/home/<ユーザ名>/.opencode/bin/opencode | |||
<br> | |||
===== acp.jsonの記述 ===== | |||
確認した絶対パスを <code>command</code> キーに設定する。<br> | |||
<code>args</code> キーには <code>acp</code> を指定し、OpenCodeをACPサーバとして起動する。<br> | |||
<br> | |||
* <u>~/.jetbrains/acp.json</u> | |||
*: <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> | </syntaxhighlight> | ||
<br> | <br> | ||
下表に、各設定項目の意味を示す。<br> | |||
<br> | <br> | ||
<syntaxhighlight lang=" | <center> | ||
{| class="wikitable" | |||
|+ acp.jsonの設定項目 | |||
! 項目 !! 配置 !! 説明 | |||
|- | |||
| <code>default_mcp_settings</code> || 最上位 || 全ローカルエージェントに適用される既定のMCP設定<br><code>use_idea_mcp</code> と <code>use_custom_mcp</code> を配下に持つ。 | |||
|- | |||
| <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> 配下 || JetBrains内蔵のIntelliJ MCP Serverをエージェントへ公開するかどうか。<br>既定値は <u>false</u> | |||
|- | |||
| <code>agent_servers</code> || 最上位 || 登録するエージェントの最上位オブジェクト<br>各キーがAI Chatに表示されるエージェント名になる。 | |||
|- | |||
| <code>command</code> || 各エージェント配下 || エージェントの実行ファイルパス<br>AI Assistantはこのファイルをサブプロセスとして起動する。<br><br><u>※絶対パスを指定すること。</u> | |||
|- | |||
| <code>args</code> || 各エージェント配下 || 起動時に渡すコマンドライン引数の配列<br>OpenCodeでは <code>acp</code> を指定する。 | |||
|- | |||
| <code>env</code> (省略可能) || 各エージェント配下 || エージェントプロセスに設定する環境変数<br>プロキシ等が必要な場合に使用する。 | |||
|} | |||
</center> | |||
<br> | |||
===== 環境変数が必要な場合の記述 ===== | |||
プロキシ環境等で環境変数が必要な場合は、<code>env</code> キーに追加する。<br> | |||
<br> | |||
<u>APIキーは <code>env</code> キーに直接記述せず、原則として <code>opencode auth login</code> コマンドで設定した認証情報を使用すること。</u><br> | |||
<br> | |||
<syntaxhighlight lang="json"> | |||
{ | |||
"agent_servers": { | |||
"OpenCode": { | |||
"command": "/home/<ユーザ名>/.opencode/bin/opencode", | |||
"args": [ | |||
"acp" | |||
], | |||
"env": { | |||
"HTTP_PROXY": "http://proxy.example.local:8080", | |||
"HTTPS_PROXY": "http://proxy.example.local:8080" | |||
} | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== CLionでの有効化と動作確認 ==== | |||
===== 設定の反映 ===== | |||
<u>acp.json</u> ファイルを作成または編集した直後から、通常はAI Chatでエージェントを選択できる。<br> | |||
エージェントがAI Chatに表示されない場合は、<u>acp.json</u> ファイルのJSON形式を確認したうえでCLionを再起動すること。<br> | |||
<br> | |||
ファイル形式の確認とIDE再起動は、JetBrains公式のトラブルシューティング手順にも挙げられている。<br> | |||
<br> | |||
===== エージェントの選択 ===== | |||
CLionでAI Chatツールウィンドウを開いて、チャットモードのエージェントセレクタから[OpenCode]を選択する。<br> | |||
<br> | |||
追加したエージェントは、エージェントアイコン付きでリストに表示される。<br> | |||
<br> | |||
===== 動作確認 ===== | |||
まず読み取り中心の指示で接続を確認する。<br> | |||
<br> | |||
このプロジェクトのCMakeビルド構成と主要モジュールを調査し、ビルド方法とテスト方法を要約してください。 | |||
ファイルは変更しないでください。 | |||
<br> | |||
エージェントが応答して、ファイル参照や検索を実行できれば、ACP連携は成功である。<br> | |||
<br> | |||
その後、実装や修正の指示を出して運用に進めればよい。<br> | |||
<br> | |||
===== OpenCode単体での事前確認 ===== | |||
JetBrains側でトラブルシュートする前に、ターミナルで <code>opencode acp</code> コマンドが起動するか確認できる。<br> | |||
正常な場合は、プロセスがJSON-RPCメッセージを待機する状態で停止する。<br> | |||
<br> | |||
/home/<ユーザ名>/.opencode/bin/opencode acp | |||
<br> | |||
==== プロジェクト単位の設定 ==== | |||
ACPエージェントの登録自体は、JetBrainsユーザ単位 (<u>~/.jetbrains/acp.json</u>) でのみ行う。<br> | |||
<br> | |||
JetBrains公式仕様では、プロジェクトルートや <code>.idea</code> ディレクトリ配下にACP設定を置いて、プロジェクト単位で有効化することはサポートされていない。<br> | |||
プロジェクトごとにACPエージェントを切り替えたい要件はYouTrackで要望が挙がっている機能であり、現時点では未対応である。<br> | |||
<br> | |||
一方、OpenCode側の挙動はプロジェクト単位で制御できる。<br> | |||
推奨される構成を次に示す。<br> | |||
<br> | |||
* <u>~/.jetbrains/acp.json</u> | |||
*: JetBrains全体でOpenCodeのACPエージェントを1つ登録する。 | |||
* <u><プロジェクトルート>/opencode.json</u> | |||
*: そのプロジェクト専用のOpenCode設定を記述する。モデル、MCPサーバ、ツールの許可等を指定できる。 | |||
* <u><プロジェクトルート>/AGENTS.md</u> | |||
*: そのプロジェクト専用の作業ルール、設計方針、禁止事項を記述する。 | |||
<br> | |||
この分離により、ACPエージェントの登録はユーザ単位のまま、OpenCodeの挙動だけをプロジェクトごとに切り替えられる。<br> | |||
<br> | |||
==== トラブルシューティング ==== | |||
===== OpenCodeエージェントがAI Chatに表示されない ===== | |||
* 原因 | |||
*: <u>acp.json</u> ファイルの形式誤り、または設定変更がIDEに反映されていない。 | |||
*: <br> | |||
* 解決方法 | |||
** <u>acp.json</u> ファイルが正しいJSON形式であることを確認する。 | |||
** CLionを再起動して設定を反映し直す。 | |||
<br> | |||
===== エージェントの起動に失敗する ===== | |||
* 原因 | |||
*: OpenCodeの絶対パス誤り、OpenCode側の認証未完了、実行ファイルの異常 | |||
*: <br> | |||
* 解決方法 | |||
** OpenCode実行ファイルの絶対パスが指定されていることを確認する。 | |||
** ターミナルで <code>opencode</code> コマンドを手動実行して、OpenCodeが起動するか確認する。 | |||
** <code>opencode auth list</code> コマンドを実行して、プロバイダ認証が完了しているか確認する。 | |||
<br> | |||
===== ACPログの取得 ===== | |||
AI Chatツールウィンドウ右上のメニューから[Get ACP Logs]を選択すると、エージェントのログをアーカイブ形式で取得できる。<br> | |||
<br> | |||
より詳細なログが必要な場合は、Registryの <code>llm.agent.extended.logging</code> キーを有効化する。<br> | |||
ただし、この詳細ログにはチャット内容等の機密情報が含まれる可能性があるため、共有前には内容を確認すること。<br> | |||
<br> | |||
Registryの有効化手順は次のとおりである。<br> | |||
<br> | |||
# [Shift]キーを2回押下して、Search Everywhereを開く。 | |||
# <u>Registry</u> と入力して、[Enter]キーを押下する。 | |||
# [Ctrl] + [F]キーを押下して、<u>llm.agent.extended.logging</u> を検索して、有効化する。 | |||
# CLionを再起動する。 | |||
<br> | |||
==== セキュリティと運用上の注意 ==== | |||
* APIキーを <u>acp.json</u> ファイルに平文で記述しないこと。 | |||
*: プロバイダ認証は <code>opencode auth login</code> コマンドで行い、保存された認証情報を再利用する。 | |||
* <code>llm.agent.extended.logging</code> 有効時のログの取り扱いに注意すること | |||
*: チャット内容やファイル内容が含まれる可能性がある。 | |||
*: 共有時には事前に機密情報を取り除くこと。 | |||
* WSL環境ではACP互換エージェントは動作対象外である。 | |||
*: ネイティブLinux環境でCLionとOpenCodeを動かすこと。 | |||
* <code>command</code> コマンドには絶対パスを使用すること。 | |||
*: 相対パスやシェルのエイリアスは、JetBrainsのサブプロセス起動では解決されない場合がある。 | |||
* MCPサーバの公開範囲を意識すること | |||
*: <code>use_idea_mcp</code> キー および <code>use_custom_mcp</code> キーで、エージェントへ公開するMCPサーバを制御できる。 | |||
<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> | <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,CLion,JetBrains,IDE,OpenCode,ACP,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - MochiuWiki: CLion (C/C++ IDE) のインストール手順、MSP430/Raspberry Pi/PinePhone との連携、ACPを用いたOpenCode連携設定 | This page is {{PAGENAME}} in MochiuWiki - installation guide for CLion IDE, cross-development with MSP430/Raspberry Pi/PinePhone, and ACP-based OpenCode integration | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:C]][[カテゴリ:C++]][[カテゴリ:Qt]] | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:C]][[カテゴリ:C++]][[カテゴリ:Qt]][[カテゴリ:MSP430]] | ||
2026年7月13日 (月) 03:30時点における最新版
概要
CLionは、C/C++向けのクロスプラットフォームIDEである。
- コーディング支援
- エディタは、コードの読み取りと記述を効果的に行うことができる。
- スマート補完に入力すれば補完結果を絞り込み、パンくずリストでは範囲階層内で場所をトラッキングすることができる。
- また、パラメータ名ヒントのお陰で、関数呼び出しに関する洞察も得られる。
- シンボルの使用箇所をコンテキストに合わせて検索したり、名前を入力するだけでそのシンボルに移動することも可能である。
- CLionでは、書式設定や命名規則等も含む様々なコーディングガイドラインに準じたコード検証も行うことができる。
- コード生成
- 多数のボイラープレートコードを瞬時に生成する。
- 関数のオーバーライドや実装には単純なショートカットが用意されており、コンストラクタ、デストラクタ、getter、setter、等値、リレーショナル、ストリーム出力演算子も生成できる。
- ステートメントでコードブロックをラッピングしたり、使用箇所から宣言を生成することも可能である。
- カスタムライブテンプレートを作成することにより、頻繁に使用するコードブロックをコードベース全体で再利用できるようになるため、開発にかかる時間を短縮して、一貫したスタイルを維持することができる。
- 安全なリファクタリング
- シンボル名の変更、関数、変数、マクロのインライン化、階層内でのメンバの移動、関数シグネチャの変更、関数、変数、パラメータ、
typedefの抽出等、 - 使用する自動リファクタリングに関係なく、全コードへの適切な変更は、CLionが安全にプロパゲートする。
- シンボル名の変更、関数、変数、マクロのインライン化、階層内でのメンバの移動、関数シグネチャの変更、関数、変数、パラメータ、
- クイックドキュメント
- キャレットのあるコードをインスペクションすることにより、関数シグネチャの詳細、コメントの表示、Doxygen式ドキュメンテーションのプレビュー、明示的な型が不足するシンボルの推論型の確認、
- 適切に書式設定された最終的なマクロの置換の確認まで、コードに関するあらゆる情報を知ることができる。
- 統合デバッガ
- GDBまたはLLDBをバックエンドとして使用するCLionのデバッガを使用することにより、問題の調査と解決を難なく行うことができる。
- ローカルプロセスへのアタッチ、リモートデバッグが可能である。
- 組み込み開発では、CLionのOpenOCD、Embedded GDB Server構成により、オンチップデバッグが可能となる。
- 組み込みデバイス用の分解ビュー、メモリビュー、ペリフィラルビューを活用すれば、さらに詳細な情報を得ることができる。
また、統合されたC/C++開発環境として、以下に示すような特徴もある。
- プロジェクトモデル
- CLionでは、プロジェクトモデルを使用して、コーディング支援、リファクタリング、コーディングスタイルの一貫性、その他のスマートアクションに関する情報をエディター内に表示する。
- CMake、Makefile、Gradle、コンパイルデータベース等に対応している。
- リモートでのコラボレーション作業
- ソースコードをローカルで編集した後、アプリケーションまたはユニットテストをローカル、リモート、オンチップで、ビルドおよび実行できる。
- コラボレーション環境を向上させて、複数人とリアルタイムでCLionプロジェクトの作業を行うことができる。
- 必要なものを全て1箇所に集約
- CLionには、VCS (SVN / Git / GitHub / Mercurial / Perforce)、ユニットテスト用のGoogle Test / Catch / Boost.Testフレームワーク、
- Doxygen、データベースツール、Markdown等をサポートしており、開発タスクに欠かせないあらゆる機能が含まれている。
CLionのインストール
CLionの公式Webサイトにアクセスして、CLionをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf CLion-<バージョン>.tar.gz mv CLion-<バージョン> CLion
必要ならば、CLionを任意のインストールディレクトリに配置する。
mv CLion <任意のインストールディレクトリ>
CLionのデスクトップエントリファイルを作成する。
CLionを起動して、[ツール]メニューバー - [デスクトップエントリの作成]を選択する。
~/.local/share/applicationsディレクトリにCLionのデスクトップエントリファイルが作成される。
Raspberry Pi / Qt 5との連携
CLionを使用してRaspberry PiとQt 5のクロス開発を行う場合は、インストール_-_Qt5_Raspberry_Pi#CLion / Qt 5との連携のページを参照すること。
PinePhone / Qt 5との連携
CLionを使用してPinePhoneとQt 5のクロス開発を行う場合は、インストール_-_Qt5_PinePhone#CLion / Qt 5との連携のページを参照すること。
MSP430との連携
MSP430向けGCCツールチェーンのインストール
TIの公式Webサイトにアクセスして、MSP430のGCCツールチェーンおよびMSP430の開発向けヘッダファイル群をダウンロードする。
ダウンロードするファイルは2つである。
- Mitto Systems GCC 64-bit Linux installer incl. support files
- Header and Support Files
ダウンロードしたファイルを解凍する。
# MSP430 GCCツールチェーン 7z x msp430-gcc-full-linux-x64-installer-<バージョン>.7z # MSP430 開発向けヘッダファイル群 unzip msp430-gcc-support-files-<バージョン>.zip mv msp430-gcc-support-files-<バージョン> <任意のディレクトリ>
MSP430 GCCツールチェーンをインストールする。
sudo ./msp430-gcc-full-linux-x64-installer-<バージョン>.run \
--prefix <MSP430 GCCツールチェーンのインストールディレクトリ 例: /opt/TI/MSP430_GCC> \
--mode xwindow --installer-language ja
# または
kdesu -c './msp430-gcc-full-linux-x64-installer-<バージョン>.run \
--prefix <MSP430 GCCツールチェーンのインストールディレクトリ 例: /opt/TI/MSP430_GCC> \
--mode xwindow --installer-language ja'
/<MSP430 GCCツールチェーンのインストールディレクトリ>/bin/gdb_agent_consoleファイルに実行権限を付加する。
chmod +x /<MSP430 GCCツールチェーンのインストールディレクトリ>/bin/gdb_agent_console # または sudo chmod +x /<MSP430 GCCツールチェーンのインストールディレクトリ>/bin/gdb_agent_console
MSP Flasherのインストール (ez-FETを使用する場合)
TIの公式Webサイトにアクセスして、MSP Flasherをダウンロードする。
- Linux 64-Bit Installer for MSPFlasher
ダウンロードしたファイルを解凍する。
unzip MSPFlasher-<バージョン>-linux-x64-installer.zip
解凍したファイル (インストーラ) に実行権限を付加する。
chmod u+x MSPFlasher-<バージョン>-linux-x64-installer.run
MSP Flasherをインストールする。
MSP Flasherのインストールディレクトリは、任意のディレクトリで構わない。
./MSPFlasher-<バージョン>-linux-x64-installer.run
MSP Debugのインストール
MSP Debugのビルドに必要なライブラリをインストールする。
# SUSE sudo zypper install readline-devel libusb-1_0-devel libusb-compat-devel
MSP DebugのGithubにアクセスして、ソースコードをダウンロードする。
git clone https://github.com/dlbeer/mspdebug.git cd mspdebug
MSP Debugをビルドおよびインストールする。
make PREFIX=<MSP Debugのインストールディレクトリ> -j $(nproc) make PREFIX=<MSP Debugのインストールディレクトリ> install
MSP430向けGCCツールチェーンのアンインストール
/<MSP430向けGCCツールチェーンのインストールディレクトリ>/binディレクトリに移動する。
cd /<MSP430向けGCCツールチェーンのインストールディレクトリ>/bin
MSP430向けGCCツールチェーンをアンインストールする。
sudo ./uninstall # または kdesu ./uninstall
CLionの設定
CMakeツールチェーンファイルの作成
vi /<MSP430プロジェクトのトップディレクトリ>/toolchain-msp430-gcc-ti.cmake
# /<MSP430プロジェクトのトップディレクトリ>/toolchain-msp430-gcc-ti.cmakeファイル
include(CMakeForceCompiler)
# ツールチェーン等のパス
SET(PLATFORM_PACKAGES_PATH "<上記のセクションでインストールしたMSP430 GCCツールチェーンのパス 例: /opt/TI/MSP430_GCC>")
list(APPEND CMAKE_MODULE_PATH "<CLionのMSP430プロジェクトのトップディレクトリ 例: /home/user/MSP430Project>")
list(APPEND CMAKE_MODULE_PATH "${PLATFORM_PACKAGES_PATH}/lib/cmake")
list(APPEND CMAKE_PREFIX_PATH "${PLATFORM_PACKAGES_PATH}/lib/cmake")
INCLUDE_DIRECTORIES("${PLATFORM_PACKAGES_PATH}/include ${INCLUDE_DIRECTORIES}")
# ターゲットデバイス名
SET(SUPPORTED_DEVICES "<ターゲットデバイス名 例: msp430g2553>" CACHE STRING "Supported Target Devices")
set(CMAKE_SYSTEM_NAME msp430-gcc)
# コンパイラの設定
SET(MSP430_TI_COMPILER_FOLDER ${PLATFORM_PACKAGES_PATH})
SET(MSP430_TI_BIN_FOLDER ${MSP430_TI_COMPILER_FOLDER}/bin)
SET(MSP430_TI_INCLUDE_FOLDER ${MSP430_TI_COMPILER_FOLDER}/include)
SET(TOOLCHAIN_PREFIX msp430-elf)
SET(TOOLCHAIN_BIN_PATH ${MSP430_TI_BIN_FOLDER})
SET(FLASHER_PATH <上記のセクションでインストールしたMSP Flasherのパス 例: /home/user/MSPFlasher>)
SET(MSPDEBUG_PATH <上記のセクションでインストールしたMSP Debugのパス 例: /home/user/MSP_Debug/bin>)
SET(MSPDEBUG_DEVICE ezfet)
INCLUDE_DIRECTORIES(${MSP430_TI_INCLUDE_FOLDER} ${INCLUDE_DIRECTORIES})
LINK_DIRECTORIES(${MSP430_TI_INCLUDE_FOLDER} ${LINK_DIRECTORIES})
FIND_PROGRAM(MSP430_CC ${TOOLCHAIN_PREFIX}-gcc PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_CXX ${TOOLCHAIN_PREFIX}-g++ PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_AR ${TOOLCHAIN_PREFIX}-ar PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_AS ${TOOLCHAIN_PREFIX}-as PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_OBJDUMP ${TOOLCHAIN_PREFIX}-objdump PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_OBJCOPY ${TOOLCHAIN_PREFIX}-objcopy PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_SIZE ${TOOLCHAIN_PREFIX}-size PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_NM ${TOOLCHAIN_PREFIX}-nm PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSPDEBUG mspdebug PATHS ${MSPDEBUG_PATH})
FIND_PROGRAM(MSP430_FLASHER MSP430Flasher PATHS ${FLASHER_PATH})
set(CMAKE_C_COMPILER ${MSP430_CC} CACHE STRING "C Compiler")
set(CMAKE_CXX_COMPILER ${MSP430_CXX} CACHE STRING "C++ Compiler")
set(AS ${MSP430_AS} CACHE STRING "AS Binary")
set(AR ${MSP430_AR} CACHE STRING "AR Binary")
set(OBJCOPY ${MSP430_OBJCOPY} CACHE STRING "OBJCOPY Binary")
set(OBJDUMP ${MSP430_OBJDUMP} CACHE STRING "OBJDUMP Binary")
set(SIZE ${MSP430_SIZE} CACHE STRING "SIZE Binary")
IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)
set(MSPGCC_OPT_LEVEL "g" CACHE STRING "MSPGCC OPT LEVEL")
set(MSPGCC_WARN_PROFILE "-Wall -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wunused"
CACHE STRING "MSPGCC WARNINGS")
set(MSPGCC_DISABLED_BUILTINS "-fno-builtin-printf -fno-builtin-sprintf"
CACHE STRING "MSPGCC Disabled Builtins")
set(MSPGCC_OPTIONS "-gdwarf-3 -fdata-sections -ffunction-sections -fverbose-asm ${MSPGCC_DISABLED_BUILTINS}"
CACHE STRING "MSPGCC OPTIONS")
set(CMAKE_C_FLAGS "${MSPGCC_WARN_PROFILE} ${MSPGCC_OPTIONS} -O${MSPGCC_OPT_LEVEL} -DGCC_MSP430" CACHE STRING "C Flags")
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--gc-sections -Wl,--print-gc-sections"
CACHE STRING "Linker Flags")
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--gc-sections"
CACHE STRING "Linker Flags")
# リンカコマンドの設定
set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_C_COMPILER> ${CMAKE_EXE_LINKER_FLAGS} <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>"
CACHE STRING "C++ Executable Link Command")
set(CMAKE_C_LINK_EXECUTABLE ${CMAKE_CXX_LINK_EXECUTABLE} CACHE STRING "C Executable Link Command")
set(PROGBIN ${MSP430_FLASHER} CACHE STRING "Programmer Application")
リンカコマンドファイルのコピー
ターゲットデバイスのリンカコマンドファイルを、プロジェクトのトップディレクトリにコピーする。
cp /<上記のセクションでインストールしたMSP430 GCCツールチェーンのパス>/include/<ターゲットデバイス名>.ld \ <MSP430プロジェクトのトップディレクトリ> # 例: MSP430G2553を使用する場合 cp /<上記のセクションでインストールしたMSP430 GCCツールチェーンのパス>/include/msp430g2553.ld \ <MSP430プロジェクトのトップディレクトリ>
プロジェクトの設定
- プロジェクトを開いて、[ファイル]メニューバー - [設定]を選択する。
- [設定]画面の左ペインから、[ビルド、実行、デプロイ] - [CMake]を選択する。
- [設定]画面の右ペインから、[+]アイコンを選択して、CMakeの設定を行う。
- [名前]
- 任意の名前
- [ビルドタイプ]プルダウン
- Debug
- [ツールチェーン]プルダウン
- MSP430ツールチェーンを選択する。
- [ジェネレーター]
- [デフォルトを使用する]
- [CMakeオプション]
-DCMAKE_TOOLCHAIN_FILE=<上記のセクションで作成したCMakeツールチェーンファイルのパス>
- [名前]
- [OK]ボタンを押下する。
ACPを使用したOpenCodeとの連携
ACP (Agent Client Protocol) を使用すると、CLionのAI ChatからOpenCodeをコーディングエージェントとして利用できる。
ACPは、コードエディタとAIコーディングエージェント間の通信を標準化するオープンなプロトコルであり、LSP (Language Server Protocol) が言語サーバ統合を標準化したのと同じ役割を、エージェント向けに果たす。
CLionはACP互換エージェントをサブプロセスとして起動して、JSON-RPC over stdioで通信する。
ACPの仕組み
ACP連携時の全体構成は次のとおりである。
- CLion (AI Assistant)
- AI Chatからエージェントを選択し、プロンプトを送信する。
- ACP互換エージェントをサブプロセスとして起動する。
- 通信経路 (JSON-RPC / stdio)
- CLionとエージェントの間で、JSON-RPCメッセージを標準入力と標準出力でやり取りする。
- ローカル実行が基本であり、ネットワークポートの開放は不要である。
- OpenCode (
opencode acpコマンド)- OpenCodeの
acpサブコマンドが、ACP互換サーバとしてstdio上で待ち受ける。 - 設定済みのツール、MCPサーバ、AGENTS.md ファイルのルール等を通常どおり利用する。
- OpenCodeの
JetBrains公式では、ACP互換エージェントはJetBrains AIサービスのサブスクリプション無しでも接続・利用可能とされている。
ただし、Windows Subsystem for Linux (WSL) 環境では、ACP互換エージェントはサポート対象外である。
前提条件
- OpenCodeがインストール済みであること。
- インストール手順は、インストール - OpenCodeのページを参照すること。
- OpenCodeのプロバイダ認証が完了していること。
- CLionでAI Assistantが利用可能であること。
- WSL環境ではないこと。
OpenCode側の準備
ACP設定の前に、OpenCode側の初期化と認証を済ませておく。
これは、JetBrains側の設定ファイルにAPIキーを直接記述しなくて済むようにするためである。
プロバイダの認証
OpenCodeのプロバイダ認証には、CLIとTUIの2つの方法がある。
どちらの方法でも、認証情報は ~/.local/share/opencode/auth.json ファイルに保存される。
opencode auth loginコマンド (CLI)- ターミナルから直接プロバイダを選択して認証する。
/connectコマンド (TUI)- OpenCodeを起動して、TUI内で
/connectコマンドを実行してプロバイダを選択し、APIキーを入力する。
- OpenCodeを起動して、TUI内で
CLIで認証する場合は、次のコマンドを実行する。
opencode auth login
TUIで認証する場合は、OpenCodeを起動後、TUI内で以下に示すコマンドを実行する。
/connect
設定済みのプロバイダを確認する。
opencode auth list
利用可能なモデル一覧を更新して確認する。
opencode models --refresh
プロジェクト設定ファイルの準備
OpenCodeは、プロジェクトルートの opencode.json / opencode.jsonc ファイルを読み込み、グローバル設定よりも優先する。
OpenCodeは起動時にカレントディレクトリから設定ファイルを探して、Gitルート方向へ探索する。
プロジェクト固有のモデル指定やMCPサーバ設定は、このファイルに記述する。
- opencode.json / opencode.jsonc
{ "$schema": "https://opencode.ai/config.json", "model": "opencode-go/glm-5.2", "instructions": [ "AGENTS.md" ] }
作業ルールや設計方針は、プロジェクトルートの AGENTS.md ファイルに記述する。
OpenCodeはこのファイルを読み込み、プロジェクト専用のルールとして適用する。
AGENTS.md ファイルは手動で作成するほか、OpenCode TUIの /init コマンドで生成できる。
OpenCodeを起動して、TUI内で /init コマンドを実行すると、OpenCodeがプロジェクト構成を解析して、AGENTS.md ファイルのひな形を作成または更新する。
JetBrains側のACP設定
~/.jetbrains/acp.jsonの作成
JetBrains系IDEのACP設定は、ユーザ単位のファイル ~/.jetbrains/acp.json ファイルで管理される。
このファイルは、次のいずれかの経路から作成・編集できる。
- AI Chatツールウィンドウ右上のメニュー - [Add Custom Agent]
- ファイルが存在しない場合は新規作成され、編集用に開かれる。
- [設定] - [ツール] - [AI Assistant] - [Agents]
- Agents設定画面からエージェントの追加やMCP設定の切り替えを行う。
手動で作成する場合は、以下に示す通り、ディレクトリとファイルを用意する。
mkdir -p ~/.jetbrains
OpenCode実行ファイルの絶対パスの確認
command コマンドには、OpenCode実行ファイルの絶対パスを指定する必要がある。
JetBrains公式のトラブルシューティングでも、エージェント起動失敗時はフルパスの使用が推奨されている。
command -v opencode readlink -f "$(command -v opencode)" # 出力例 /home/<ユーザ名>/.opencode/bin/opencode
acp.jsonの記述
確認した絶対パスを command キーに設定する。
args キーには acp を指定し、OpenCodeをACPサーバとして起動する。
- ~/.jetbrains/acp.json
{ "default_mcp_settings": { "use_idea_mcp": true, "use_custom_mcp": true }, "agent_servers": { "OpenCode": { "command": "/home/<ユーザ名>/.opencode/bin/opencode", "args": [ "acp" ] } } }
下表に、各設定項目の意味を示す。
| 項目 | 配置 | 説明 |
|---|---|---|
default_mcp_settings |
最上位 | 全ローカルエージェントに適用される既定のMCP設定use_idea_mcp と use_custom_mcp を配下に持つ。
|
use_custom_mcp |
default_mcp_settings 配下 |
ユーザ設定済みのMCPサーバをエージェントへ公開するかどうか。 既定値は true |
use_idea_mcp |
default_mcp_settings 配下 |
JetBrains内蔵のIntelliJ MCP Serverをエージェントへ公開するかどうか。 既定値は false |
agent_servers |
最上位 | 登録するエージェントの最上位オブジェクト 各キーがAI Chatに表示されるエージェント名になる。 |
command |
各エージェント配下 | エージェントの実行ファイルパス AI Assistantはこのファイルをサブプロセスとして起動する。 ※絶対パスを指定すること。 |
args |
各エージェント配下 | 起動時に渡すコマンドライン引数の配列 OpenCodeでは acp を指定する。
|
env (省略可能) |
各エージェント配下 | エージェントプロセスに設定する環境変数 プロキシ等が必要な場合に使用する。 |
環境変数が必要な場合の記述
プロキシ環境等で環境変数が必要な場合は、env キーに追加する。
APIキーは env キーに直接記述せず、原則として opencode auth login コマンドで設定した認証情報を使用すること。
{
"agent_servers": {
"OpenCode": {
"command": "/home/<ユーザ名>/.opencode/bin/opencode",
"args": [
"acp"
],
"env": {
"HTTP_PROXY": "http://proxy.example.local:8080",
"HTTPS_PROXY": "http://proxy.example.local:8080"
}
}
}
}
CLionでの有効化と動作確認
設定の反映
acp.json ファイルを作成または編集した直後から、通常はAI Chatでエージェントを選択できる。
エージェントがAI Chatに表示されない場合は、acp.json ファイルのJSON形式を確認したうえでCLionを再起動すること。
ファイル形式の確認とIDE再起動は、JetBrains公式のトラブルシューティング手順にも挙げられている。
エージェントの選択
CLionでAI Chatツールウィンドウを開いて、チャットモードのエージェントセレクタから[OpenCode]を選択する。
追加したエージェントは、エージェントアイコン付きでリストに表示される。
動作確認
まず読み取り中心の指示で接続を確認する。
このプロジェクトのCMakeビルド構成と主要モジュールを調査し、ビルド方法とテスト方法を要約してください。 ファイルは変更しないでください。
エージェントが応答して、ファイル参照や検索を実行できれば、ACP連携は成功である。
その後、実装や修正の指示を出して運用に進めればよい。
OpenCode単体での事前確認
JetBrains側でトラブルシュートする前に、ターミナルで opencode acp コマンドが起動するか確認できる。
正常な場合は、プロセスがJSON-RPCメッセージを待機する状態で停止する。
/home/<ユーザ名>/.opencode/bin/opencode acp
プロジェクト単位の設定
ACPエージェントの登録自体は、JetBrainsユーザ単位 (~/.jetbrains/acp.json) でのみ行う。
JetBrains公式仕様では、プロジェクトルートや .idea ディレクトリ配下にACP設定を置いて、プロジェクト単位で有効化することはサポートされていない。
プロジェクトごとにACPエージェントを切り替えたい要件はYouTrackで要望が挙がっている機能であり、現時点では未対応である。
一方、OpenCode側の挙動はプロジェクト単位で制御できる。
推奨される構成を次に示す。
- ~/.jetbrains/acp.json
- JetBrains全体でOpenCodeのACPエージェントを1つ登録する。
- <プロジェクトルート>/opencode.json
- そのプロジェクト専用のOpenCode設定を記述する。モデル、MCPサーバ、ツールの許可等を指定できる。
- <プロジェクトルート>/AGENTS.md
- そのプロジェクト専用の作業ルール、設計方針、禁止事項を記述する。
この分離により、ACPエージェントの登録はユーザ単位のまま、OpenCodeの挙動だけをプロジェクトごとに切り替えられる。
トラブルシューティング
OpenCodeエージェントがAI Chatに表示されない
- 原因
- acp.json ファイルの形式誤り、または設定変更がIDEに反映されていない。
- 解決方法
- acp.json ファイルが正しいJSON形式であることを確認する。
- CLionを再起動して設定を反映し直す。
エージェントの起動に失敗する
- 原因
- OpenCodeの絶対パス誤り、OpenCode側の認証未完了、実行ファイルの異常
- 解決方法
- OpenCode実行ファイルの絶対パスが指定されていることを確認する。
- ターミナルで
opencodeコマンドを手動実行して、OpenCodeが起動するか確認する。 opencode auth listコマンドを実行して、プロバイダ認証が完了しているか確認する。
ACPログの取得
AI Chatツールウィンドウ右上のメニューから[Get ACP Logs]を選択すると、エージェントのログをアーカイブ形式で取得できる。
より詳細なログが必要な場合は、Registryの llm.agent.extended.logging キーを有効化する。
ただし、この詳細ログにはチャット内容等の機密情報が含まれる可能性があるため、共有前には内容を確認すること。
Registryの有効化手順は次のとおりである。
- [Shift]キーを2回押下して、Search Everywhereを開く。
- Registry と入力して、[Enter]キーを押下する。
- [Ctrl] + [F]キーを押下して、llm.agent.extended.logging を検索して、有効化する。
- CLionを再起動する。
セキュリティと運用上の注意
- APIキーを acp.json ファイルに平文で記述しないこと。
- プロバイダ認証は
opencode auth loginコマンドで行い、保存された認証情報を再利用する。
- プロバイダ認証は
llm.agent.extended.logging有効時のログの取り扱いに注意すること- チャット内容やファイル内容が含まれる可能性がある。
- 共有時には事前に機密情報を取り除くこと。
- WSL環境ではACP互換エージェントは動作対象外である。
- ネイティブLinux環境でCLionとOpenCodeを動かすこと。
commandコマンドには絶対パスを使用すること。- 相対パスやシェルのエイリアスは、JetBrainsのサブプロセス起動では解決されない場合がある。
- MCPサーバの公開範囲を意識すること
use_idea_mcpキー およびuse_custom_mcpキーで、エージェントへ公開するMCPサーバを制御できる。
関連情報
- JetBrains公式 ACP ドキュメント
- OpenCode公式 ACP Support
- OpenCode公式 CLI
- OpenCode公式 Config
- Agent Client Protocol 仕様
- インストール - OpenCode