0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIコーディングエージェントClineとコンテキスト

Last updated at Posted at 2025-05-11

はじめに

ソフトウェア開発において、AIは「便利な道具」から「不可欠な道具」へと変化しつつあります。それを示すように、海外のテック企業ではAI活用の義務化が進んでいます。

  • Microsoft
    • パフォーマンスレビューにAI活用スキルの評価を組み込む
  • Duolingo
    • AIが対応可能な業務については、外部委託を段階的に廃止
    • AIの活用は採用要件の一部になる
  • Shopify
    • AI活用経験の共有を義務化

AIコーディングエージェントを最大限に活用するには、「コンテキスト」が重要だとされています。本記事では、AIコーディングエージェント「Cline」を効果的に使うための方法、とくにコンテキストに焦点を当てて、私が学んだ知見を共有します。

目次

Clineとは

Clineは、VS Code上で動作するAIコーディングアシスタントです。

ユーザーはClineに自然言語でタスクを指示し、Clineはそれに基づいて実現計画の策定、ファイルの読み書き、コマンドの実行などを行います。Clineは、VS CodeとLLM(大規模言語モデル)とのインターフェースとして動作し、LLMにプロンプトを送り、その応答に基づいてファイル編集やコマンド実行を行い、自然言語で応答を返します。

Clineの詳細な仕組みについては、以下の記事が非常に参考になります。
https://qiita.com/DayuanJiang/items/58e0b7f1bbef8a9f50b0

コンテキストとは

ここでのコンテキストとは、簡単に言えば「AIモデルがプロジェクトに関して知っている情報」です。

通常、AIエージェントに「〇〇を実装して」といった単純な指示をしても、期待した成果を得ることは困難です。AIコーディングエージェントは「ChatGPT や Claude などのLLMにプロンプトを投げ、その応答に基づいて操作を実行する」という仕組みのため、LLMに対して十分な情報を与える必要があります。

たとえば以下のような情報がコンテキストになります。

  • プロジェクト内のファイル構成
  • VS Codeでアクティブなファイルやタブで開いているファイル
  • 指示されたタスクに関連するファイルの中身
  • セッション内の過去のやり取り
  • プロジェクトの要件
  • 採用しているアーキテクチャ
  • 判断基準や過去の意思決定

AIエージェントが自動で収集してLLMに渡す情報もあれば、ユーザーが明示的に指定しなければならない情報もあります。

コンテキストが少ないと...

AIは限られた情報で実装を行うことになるため、ユーザーの意図やプロジェクト方針から外れた結果になりやすくなります。

コンテキストが多すぎると...

重要な情報に集中できなくなったり、トークン上限を超えて前半の指示が無視されるなど、パフォーマンス低下や誤動作の原因になります。

コンテキスト管理

Clineを効果的に活用するには、コンテキスト管理が非常に重要です。
使用するLLMモデルにより、扱えるトークン数(=コンテキストウィンドウ)が異なります。Clineでは、このウィンドウの使用状況を視覚的に確認できます。

context-usage-bar

以下のようなタイミングで、使用率バーを確認し、必要に応じて新しいセッションの開始を検討しましょう。

  • 長時間の作業中
  • 複数ファイルを扱う場合
  • 複雑なタスクを始める前
  • Clineが指示と異なる動作をしたと感じたとき

使用率が70〜80%に達した場合は、新しいセッションの開始が推奨されています。

コンテキストの与え方

ここでは、Clineに対してコンテキストを与える5つの方法を紹介します。

方法 内容 重要度
1 コンテキストを直接指定 ★★★
2 clinerulesによる指定 ★★
3 clineignoreによる指定 ★★
4 メモリバンクの活用 ★(セッションをまたぐ作業に有効)
5 構造化アプローチ ★(複雑な機能実装時に有効)

1. コンテキストを直接指定

Clineでは、作業に関連するファイルやコミットなどを明示的にUIから指定できます。左下の「@」ボタンを押すことでコンテキストを追加できます。
Clineは必要なソースファイルを自動的に読み取るとは限りません。基本的にはすべてのセッションで明示的に指定しましょう。簡単な操作で精度が大きく向上します。

direct-context

ファイル量が多くUIから指定するのが大変な場合は、タスクメッセージに重要なファイルの一覧を記載しましょう。重要なファイル一覧を記述したファイルを作成し、そのファイルを指定することもできます。


2. clinerulesによる指定

プロジェクト固有の情報を常にコンテキストとして渡す方法です。

.clinerules ファイルをプロジェクト直下に配置することで、その内容をClineが常に参照します。たとえば以下のような内容が含まれます。

  • プロジェクトの要件
  • 設計方針
  • 採用しているアーキテクチャ
  • コーディングルール

より高度に管理したい場合は、.clinerules/ フォルダを用意し、複数ファイルに分けて記述することも可能です。

(例)

your-project/
├── .clinerules/              # Folder containing active rules
│   ├── 01-coding.md          # 主要なコーディング標準
│   ├── 02-documentation.md   # ドキュメントに関するルール
│   └── current-sprint.md     # 現在のスプリント特有のルール
├── src/
└── ...

詳細はこちら


3. clineignoreによる指定

コンテキストに含めたくないファイルを除外する設定です。

.clineignore ファイルを .gitignore と同様の形式で作成し、不要なディレクトリやファイルを指定することで、LLMに渡す情報量を削減できます。これにより、パフォーマンス向上や機密情報の保護が可能になります。

.clineignore の例
# 依存関係
node_modules/
**/node_modules/

# ビルド成果物
/build/
/dist/

# テスト関連
/coverage/

# 環境変数
.env
.env.*

# 大きなデータファイル
*.csv
*.xlsx

4. メモリバンク

メモリバンクとは、セッション間でコンテキストを維持できるようにする、構造化されたドキュメンテーションシステムです。

通常、AIは1つのセッションの範囲でしか記憶を保持できませんが、メモリバンクを活用することで、あるセッションの結果を次のセッションに引き継ぎ、一貫性のある支援を受けることが可能になります。

メモリバンクは、以下のようなサイクルで動作します。

  1. セッション開始時にメモリバンクファイルを読み取り、コンテキストを構築する
  2. タスク実行後、その結果や学習内容をメモリバンクに保存する
  3. 次回セッションで再び読み込まれることで、知識が引き継がれる

このループを繰り返すことで、Clineはプロジェクトの長期的な記憶を保ちながら支援を行えます。

参考資料:


5. 構造化アプローチ

複雑な機能を既存のコードベースに実装する場合、1回のセッション・1つのプロンプトですべてを完結させるのは困難です。
このような場合には「構造化アプローチ」が有効です。

手順概要

  1. 計画フェーズ

    • 実装の目的、対象ファイル、依存関係などの情報を、人間とAIの対話を通じて整理
    • 計画フェーズの各プロンプトで「結果を〇〇にマークダウンとして出力して」と指示
    • 計画フェーズのアウトプットとして「設計ファイル」「実装計画ファイル」などを作成
  2. 実装フェーズ

    • 新しいセッションを開始し、作成した計画ファイルを読み込ませる
    • 実装を段階的に進める

このように、情報を明示的に整理・ファイル化してからセッションを分けることで、コンテキストの混乱を避け、AIの性能を最大限に引き出すことができます。

参考リンク

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?