二層構造のコードインテリジェンス
Kiro CLI は、コードを深く理解するために2つの層を備えています。
| 層 | 技術 | セットアップ | 特徴 |
|---|---|---|---|
| 第1層 | Tree-sitter(組み込み) | 不要 | 即座に使える、18言語対応 |
| 第2層 | LSP 統合(オプション) | /code init が必要 |
参照検索、リネーム、型情報 |
Tree-sitter は言語サーバーのインストールなしで動作するため、すぐにコードインテリジェンス機能を使い始めることができます。LSP を追加すると、さらに高度な機能が利用可能になります。
Tree-sitter の基本機能
対応言語
Bash、C、C++、C#、Elixir、Go、Java、JavaScript、Kotlin、Lua、PHP、Python、Ruby、Rust、Scala、Swift、TSX、TypeScript の18言語に対応しています。
シンボル検索
ファジーマッチで関数、クラス、メソッドを素早く見つけられます。
> handleSubmit 関数はどこに定義されていますか?
Kiro CLI は code ツールを使って自動的にシンボル検索を実行します。
ドキュメントシンボル
特定ファイル内のすべてのシンボル(関数、クラス、変数など)を列挙できます。
> src/api/handlers.ts に定義されているすべての関数を教えてください
シンボルルックアップ
名前を指定して正確にシンボルを検索します。
> UserService クラスの定義を見せてください
コードベース概要
/code overview コマンドで、ワークスペース全体の構造を高レベルで把握できます。
> /code overview
プロジェクトのディレクトリ構造、主要なファイル、依存関係の概要が表示されます。
コードベースマップ
ディレクトリの構造と組織を分析します。
> このプロジェクトのアーキテクチャを分析してください
コードサマリーの生成
/code summary コマンドで、プロジェクトのドキュメントを自動生成できます。
> /code summary
AGENTS.md、README.md、CONTRIBUTING.md などのファイルをインタラクティブに生成します。
LSP 統合
セットアップ
LSP 統合を有効化するには、プロジェクトルートで /code init を実行します。
> /code init
プロジェクトで検出された言語に対応する言語サーバーが自動的にセットアップされます。
言語サーバーのインストール
/code init の前に、対応する言語サーバーをインストールしておく必要があります。
# TypeScript / JavaScript
npm install -g typescript-language-server typescript
# Python
pip install pyright
# または
pipx install pyright
# Rust
rustup component add rust-analyzer
# Go
go install golang.org/x/tools/gopls@latest
LSP で追加される機能
| 機能 | 説明 |
|---|---|
| 参照検索 | シンボルがどこから使われているか検索 |
| 定義ジャンプ | シンボルの定義元を特定 |
| リネーム | プロジェクト全体でのシンボル名変更 |
| 診断 | ファイルのエラーと警告を表示 |
| 型情報 | 変数や関数の型を表示 |
| 補完候補 | コンテキストに応じたコード補完 |
実用例
> handleSubmit 関数を使っているすべての場所を教えてください
> UserService を UserManager にリネームしてください
> src/api/handlers.ts のエラーと警告を表示してください
パターン検索とリライト
Tree-sitter の AST(抽象構文木)を使った構造的なコード検索・変換機能です。
メタ変数
パターン内で使用する特殊な変数です。
| メタ変数 | マッチ対象 |
|---|---|
$VAR |
単一のノード(識別子、式など) |
$$$ |
0個以上のノード |
パターン検索の例
> var $N = $V というパターンを検索してください
var で宣言されたすべての変数をマッチします。
> console.log($$$) というパターンを検索してください
すべての console.log 呼び出しをマッチします。
パターンリライト
マッチしたコードを別のパターンに変換します。
> var $N = $V を const $N = $V に変換してください
dry_run: true オプションを使うと、実際に変更する前にプレビューできます。
> var $N = $V を const $N = $V に変換してください(プレビューのみ)
実用的な変換例
# require を import に変換
> const $N = require($M) を import $N from $M に変換してください
# コンソールログの削除
> console.log($$$) パターンを検索して、すべて削除してください
# テスト関数の命名規約変更
> test($NAME, $$$) を it($NAME, $$$) に変換してください
flowchart TB
subgraph TreeSitter["Tree-sitter(組み込み)"]
TS1["シンボル検索"]
TS2["ドキュメントシンボル"]
TS3["パターン検索/リライト"]
TS4["コードベース概要"]
end
subgraph LSP["LSP 統合(オプション)"]
L1["参照検索"]
L2["定義ジャンプ"]
L3["リネーム"]
L4["診断・型情報"]
end
Init["/code init"]
TreeSitter -->|"すぐ使える"| Code["コードインテリジェンス"]
Init --> LSP
LSP -->|"セットアップ後"| Code
style TreeSitter fill:#3b82f6,color:#fff
style LSP fill:#8b5cf6,color:#fff
style Code fill:#22c55e,color:#fff
コードインテリジェンスの管理
ステータス確認
> /code status
LSP サーバーの状態(起動中、接続済み、エラーなど)を確認できます。
ログの確認
> /code logs
LSP サーバーのデバッグログを表示します。問題が発生した場合の調査に使います。
ベストプラクティス
| 項目 | 推奨事項 |
|---|---|
| 初期化 | プロジェクトごとに1回 /code init を実行 |
| 言語サーバー | 使用言語のサーバーを事前にインストール |
| パターンリライト | 変更前に dry_run でプレビュー |
| 検索の精度 | 具体的なシンボル名やパターンを指定 |
| 診断 | ファイルの構文が正しいことを確認してから分析 |
まとめ
| 項目 | 内容 |
|---|---|
| Tree-sitter | 18言語対応、セットアップ不要の組み込み機能 |
| LSP 統合 | /code init で有効化、参照検索・リネーム等 |
| パターン検索 | AST ベースの構造的コード検索 |
| パターンリライト | $VAR, $$$ メタ変数で一括変換 |
/code overview |
プロジェクト構造の概要表示 |
/code summary |
ドキュメントの自動生成 |
Day 7 では、ステアリングファイルとコンテキスト管理を学びます。