メインコンテンツへ移動
AIチュートリアル

Rust製ターミナルAIコーディングアシスタント「CometixCode」のビルドと実行

RustとICU4Cを使ったCometixCodeのビルド方法、ターミナルインターフェースの起動、ripgrepの解決設定、アクティブな検索バイナリの診断、プロジェクト分離テストの正しい実行方法を学びます。

Rust製ターミナルAIコーディングアシスタント「CometixCode」のビルドと実行

CometixCodeとは?

CometixCodeは、Rustで記述されたターミナルベースのAIコーディングアシスタントです。Anthropicの公式製品ではなく、AnthropicのClaude Codeターミナルインターフェースをファイル単位で独自に再実装したものです。

CometixCodeは非公式であり、Anthropicとは提携関係になく、Anthropicによる承認またはサポートも受けていません。ClaudeおよびClaude CodeはAnthropic, PBCの商標です。

オリジナルのClaude CodeターミナルUIは、ReactとInkを使用したTypeScriptで実装されています。CometixCodeは、保持モードのターミナルUIフレームワークであるiocraftのフォーク、CometixTUIを使用して、その構造をRustで再現しています。TypeScriptのコンポーネントはRustのコンポーネントに、フックはフックに対応付けられており、意図的なアーキテクチャ上の相違点はソース内に記録されています。

このプロジェクトは現在も開発中です。インタラクティブループ、ツール実行、権限、Model Context Protocol統合、スラッシュコマンドの大部分は実装されていますが、一部の領域はまだ部分的な実装にとどまっています。

主な機能とアーキテクチャ

  • RustベースのターミナルUI:Reactスタイルのコンポーネントおよびフックモデルでインターフェースを実装しています。
  • 忠実なアーキテクチャ移植:新しい設計に置き換えるのではなく、Claude Codeが公開しているCLI構造にファイル単位で従っています。
  • インタラクティブなコーディングワークフロー:アシスタントループとツール実行システムの主要部分を実装しています。
  • 権限とコマンド:権限処理とスラッシュコマンドのサポートを大幅に実装しています。
  • MCPサポート:Model Context Protocolの機能を含んでいますが、プロジェクト全体は引き続き開発中です。
  • 拡張されたターミナルプリミティブ:CometixTUIは、行単位の差分更新、イベント伝播、SIGCONTからの復旧、IMEカーソルサポート、ブラケットペースト、グリッドレイアウトを提供します。
  • 外部ファイル検索:CometixCodeは、ripgrepを独自バイナリにコンパイルせず、別個のripgrep実行ファイルを使用します。

前提条件

CometixCodeをビルドする前に、以下の依存関係をインストールしてください。

  • Rust 1.87以降。Rust edition 2024を使用します。
  • ICU4C。pkg-config経由でrust_icu_*クレートが必要とします。

macOSにICU4Cをインストールする

HomebrewはICU4Cをkeg-onlyパッケージとしてインストールします。インストール後、検索パスにpkgconfigディレクトリを追加してください。

brew install icu4c
export PKG_CONFIG_PATH="$(brew --prefix icu4c)/lib/pkgconfig"

CometixCodeをビルドするシェルでexportを実行してください。プロジェクトを定期的に扱う場合は、適切なシェル設定ファイルにこの変数を追加してください。

DebianまたはUbuntuにICU4Cをインストールする

sudo apt install libicu-dev pkg-config

CometixCodeをビルドする

リポジトリのルートでターミナルを開き、最適化されたリリースビルドを作成します。

cargo build --release

生成されるバイナリの名前はcometixです。リリースビルドではRustのリリース最適化が有効になるため、通常の利用に適しています。

アシスタントを実行する

以下のコマンドでCargoからCometixCodeをビルドして起動します。

cargo run --release

これにより、リリースプロファイルを使用してターミナルインターフェースが起動します。プロジェクトは活発に開発中のため、インタラクティブ機能、ツール、権限、MCP、コマンドの主要機能がすでに実装されていても、一部のワークフローが未完成である場合があります。

基本的な診断コマンド

CometixCode内で以下のスラッシュコマンドを使用すると、使用されているripgrep実行ファイルなど、設定済みの環境を確認できます。

/doctor

ファイル検索を利用できない場合や、CometixCodeがパッケージ版とホストにインストールされたrgバイナリのどちらを選択したか確認したい場合に特に便利です。

ファイル検索用にripgrepを設定する

CometixCodeはファイル検索をrg(ripgrepのコマンドラインツール)に委譲します。ripgrep実行ファイルは外部アセットとして保持され、cometix実行ファイルにコンパイルされることはありません。

CometixCodeは、以下の順序でripgrepを検索します。

  1. リリースアーカイブで使用される、実行ファイルの隣にあるvendor/ripgrep/<arch>-<os>/rg。
  2. 開発時に使用される、ソースツリー内のvendor/ripgrep/<arch>-<os>/rg。
  3. PATHから利用できるホストシステムのrgコマンド。

そのため、対応するvendor/ripgrep/プラットフォームディレクトリに固定バージョンのripgrepビルドを配置するか、ホストにripgrepをインストールしてPATH上でrgを利用できるようにしてください。

ホストのripgrepバイナリを強制的に使用する

ベンダー提供のripgrepアセットをスキップしてホストの実行ファイルを使用する場合は、USE_BUILTIN_RIPGREPを0に設定します。

USE_BUILTIN_RIPGREP=0 cargo run --release

起動後、/doctorを実行して選択されたバイナリを確認してください。

テストスイートを正しく実行する

CometixCodeには、環境変数やOnceLockキャッシュなど、プロセス全体で共有される状態があります。1つのプロセス内で全テストをスレッドとして実行すると、テスト間で状態が漏洩する可能性があるため、このクレートでは通常のcargo testを有効な品質ゲートとはみなしません。

このプロジェクトでは、just経由で実行するcargo-nextestを使用します。これにより各テストが独自のプロセスで実行され、テストが otherwise 継承する可能性のあるホスト状態が固定されます。

全スイートを実行する

just test

これはプロジェクトで必須となっている完全なテストゲートです。

パターンに一致するテストを実行する

just t <pattern>

<pattern>を、実行したいテストの絞り込みに使用する部分文字列に置き換えます。

高速なコードチェックを実行する

just check

これはリンクを行わずに型チェックと借用チェックを実行するため、Rustコードの編集時に素早くフィードバックを得るのに役立ちます。

高度な開発のヒント

  • 通常の使用にはリリースモードを優先する: cargo run --releaseを使用して、プロジェクトのドキュメントで指定されている最適化済みビルドを実行します。
  • まずICUの検出を確認する: macOSでICUに関連するビルド失敗が発生した場合、PKG_CONFIG_PATHにHomebrewのICU4Cメタデータディレクトリが含まれていない可能性があります。
  • /doctorでファイル検索を診断する: vendoredファイルやシステム設定を変更する前に、選択されているripgrep実行ファイルの正確なパスを確認します。
  • 再現性が重要な場合はripgrepを固定する: グローバルにインストールされているバージョンに依存せず、対象のバイナリをプラットフォーム固有のvendor/ripgrep/パスに配置します。
  • プロジェクトのゲートの代わりにcargo testを使わない: コードベースが想定するプロセス分離でテストを実行するため、just testを使用します。
  • テストの根拠についてはjustfileを確認する: ヘッダーに、選択されたテスト戦略の根拠となる測定結果が記載されています。

ライセンスに関する考慮事項

CometixCodeはAGPL-3.0-onlyライセンスの下で配布されています。このライセンスにはネットワーク利用条項が含まれており、改変版をネットワークサービスとして運用する場合、その利用者は対応する改変済みソースコードを入手する権利を持ちます。

まとめ

CometixCodeは、CometixTUIを使用してClaude CodeのターミナルアーキテクチャをRustで再現したものです。Rust、ICU4C、適切なripgrep実行ファイルが利用可能になれば、Cargoでビルドして起動し、/doctorで検索設定を確認し、プロセス分離を行うプロジェクトのjust testワークフローで変更を検証できます。