· ローカルAI

tree-sitter駆動のコード意味解析ツールPerspicaが公開される

20秒でわかる内容解説

開発者sshah03が2026年9月30日、コード変更の意味を解析するdiffツールPerspicaを公開した。構文木解析で機械的なノイズを除去し、ローカル実行で数百ミリ秒以内に応答する。APIキー不要のコア機能は、PCでLLMや画像生成モデルを動かす技術者にとって、ネットワーク通信を最小限に抑えつつコードレビューの精度を上げる手段となる。

コア機能とローカル実行

Perspicaの核心はtree-sitterという構文解析ライブラリにある。このライブラリはソースコードを木構造に変換し、フォーマットやコメントといった機械的なノイズを除去する。結果として実際の変更点のみを抽出する意味的diffが生成される。

変数名の変更、引数の追加、関数の移動、ロジックの変更などが分類される。対応言語はTypeScript、JavaScript、Python、Rust、Go、Java、Scala、Cの8言語だ。これら以外の言語は従来の行Diffにフォールバックする。

コア機能は単一のローカルバイナリで動作する。典型的なプルリクエストに対して数百ミリ秒以内に応答し、毎回同じ結果を返す。APIキーを必要としないため、インターネットに接続していない環境や、通信コストを気にするローカルAI愛好家にも適している。

ターミナル出力やJSON形式のほか、組み込みのWebビューアも備える。--webフラグを付けると127.0.0.1でサーバーが立ち上がり、ブラウザから変更履歴を閲覧できる。Webビューアは外部のホストやサイトからのリクエストを拒否するため、セキュリティ面でも堅牢だ。

仕組みとLLM統合

ツールの仕組みは明確だ。perspica-coreライブラリがソースコードを受け取り、トークンレベルのハッシュで項目を指紋化し、新旧のバージョン間で一致させる。名前、形状、類似度に基づいてリネームや編集をマッチングする。さらにクロスファイルパスを実行し、関数の移動や消滅した名前、影響を受けた呼び出し箇所を検出する。これにより、通常のdiffでは見逃されがちな未更新の呼び出しや、未使用になったコードを特定できる。

LLMはオプション機能として組み込まれている。--summarizeフラグまたはWebビューアのAnalyzeボタンで起動する。デフォルトモデルはclaude-opus-5-5だが、claude-sonnet-5-5やclaude-haiku-4-5も選択可能だ。変更リストと変更されたコードのみを送信し、完全なファイルを送ることはない。

ローカル実行を重視する開発者向けに、Ollamaでの動作もサポートする。gemma4:12bやqwen3-coder:30bなどをダウンロードし、ローカルで動かせる。M4 Pro搭載のMacでは10ファイルのプルリクエストに対して約1分で分析が完了する。

APIキー、Anthropic認証トークン、OpenAIキー、Claude Codeのログイン、Ollamaの順で優先度が決まっている。写真では関数の呼び出し順を表示した画面で、エントリポイントから変更された関数へと段階的に解説が進む。

Reading order for pallets/click#3767: get_pager_file, then the pager context manager and the pagers it calls, each with the test path that reaches it
関数の呼び出し順を表示した画面。エントリポイントから変更された関数へと段階的に解説が進む(出典:Hacker News)
オプション機能で利用可能なLLMモデルの選択
モデル名特徴
claude-opus-5-5デフォルト
claude-sonnet-5-5高速処理
claude-haiku-4-5簡易初期判定
OllamaローカルAPIキー不要

コミュニティの反応と設計意図

Hacker Newsでの公開後、開発者と技術愛好家の間から反応が寄せられた。作者は未対応言語の追加や機能リクエストを直接求めている。利用者はクロスファイルでの関数マッチングにおいて、リネームと編集が重複した場合に誤検知率が高くなるリスクを指摘した。類似度閾値がどのように設定され、行Diffへのフォールバック基準になるかについて質問が相次いだ。

開発エージェントの出力レビューを想定して設計されている点も評価されている。Claude CodeやCodexのセッション履歴を読み取り、ユーザーの指示とエージェントの判断を区別して表示する。これにより、エージェントが独自に決定した変更部分を優先してレビューできる。

解析結果は.git/perspica/ディレクトリに保存される。同じ差分に対して再実行しても、保存された分析結果が再利用されるため、LLM利用料の節約になる。--freshフラグを指定すると強制的に再分析が実行される。

今後の予定と拡張性

今後の展開では、ユーザーの要望に応じて対応言語の追加順序が決まる。現在未定なクロスファイルの類似度閾値の設定方法も、コミュニティのフィードバックを踏まえて調整される予定だ。ツールの設計思想は、ネットワーク依存を排除し、ローカルの計算資源を最大限に活用することにある。

画像生成モデルのワークフローでも、プロンプトやパラメータの変更履歴を解析する際に同様の仕組みが活用できる可能性がある。現在はコード言語に特化しているが、構文解析の応用範囲は広がりつつある。perspicaのコマンドライン引数には--prや--branchがあり、GitHubのプルリクエストやブランチ比較も直接実行できる。

2026年9月30日に公開されたPerspicaは、MITライセンスで配布されている。cargo installまたは各OS向けのバイナリダウンロードで導入でき、今後とも言語対応の拡充が続けられる。

出典