10日で覚えるKiro CLIDay 6: コードインテリジェンス
books.chapter 610日で覚えるKiro CLI

二層構造のコードインテリジェンス

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 では、ステアリングファイルとコンテキスト管理を学びます。