Clineを使用した次世代AIコーディング。もうCursorは要らない？

## AI コーディングとは
ChatGPT や Claude, Perplexity など の AI にコードを生成してもらうことは既に一般化しているかと思います。各サービスの Web サイトにチャット形式でやり取りしてコードを生成し、それをエディターなどにコピーアンドペーストして実行できて便利です。
しかし、直接 VSCode で AI とやり取りできたらもっと便利ではないでしょうか？ブラウザとエディタを何度も行き来し、コピーアンドペーストを繰り返す必要がなくなり、差分だけ提示されたのをどうマージすればいいのか考える必要もなくなります。


## Cline とは
そんな希望を叶えてくれるのが、VSCode の Extension である Cline https://github.com/cline/cline （以前の名前は Claude Dev）です。

どんな動きをするのかは、この動画を見ていただきたい。
https://youtube.com/clip/UgkxE2CfZteKIV1ZuoKGCLrokO9ZqbT_GbiO?si=drAuTYrYu7NOA7W2

作者の紹介を以下に引用します。

> CLIとエディターを使用できる AI アシスタント、Cline をご紹介します。
> 
> Claude 3.5 Sonnet のエージェント コーディング機能により 、Cline は複雑なソフトウェア開発タスクを段階的に処理できます。ファイルの作成と編集、大規模なプロジェクトの調査、ターミナル コマンドの実行 (許可後) を可能にするツールにより、コード補完やテクニカル サポートを超えた方法で支援できます。自律 AI スクリプトは従来、サンドボックス環境で実行されますが、この拡張機能は、すべてのファイル変更とターミナル コマンドを承認するための人間参加型 GUI を提供し、エージェント AI の可能性を探索するための安全でアクセスしやすい方法を提供します。

VSCode 上で AI とチャットすることで、直接ファイルやコードを生成、実行、結果を確認して修正というサイクルを AI が自動でやってくれるため、人間は AI が実行する処理を確認し、進めるか、拒否するかを判断するだけです。
また、特徴として使用する AI の API Provider は選択可能であり、現在は以下から選択することができます。

- OpenRouter
- Anthropic
- Google Gemine
- GCP Vertex AI
- AWS Bedrock
- OpenAI
- OpenAI Compatible
- Ollama

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44167/840f4921-ded3-1b65-8ca7-aa096dae17d1.png">

例えば API Provider として Anthropic を選択すると Claude Sonnet 3.5 v2 などが選択できます。
勘違いしやすいかもしれませんが、ChatGPT の有料プランである Plus や、Claude Pro など月額 \\$20 で提供されているものとは別ものということです。
例えば Anthropic であれば、予め API 利用クレジットを $5 分買って、その中から使っていくという感じになります。\\$5 分を使い切るとそれ以上の処理はできなくなるので、気づいたら利用量が高額になっていたのようなことは避けられます。
一方 AWS Bedrock は IAM ユーザーを発行し使用するため、上限なく使用できてしまうので、AWS Budgets を使って AWS の利用料金の通知やモニタリングをする必要があります。

あまり聞き慣れませんが、各 AI をラッピングして提供する OpenRouter という Provider もあり、毎日刻一刻と状況の変わるこの業界の変化に追従できそうです。

## Cursor と比較して

エディタ上で直接 AI アシスタントによるコーディングを行うものとして、Cursor https://www.cursor.com/ があります。
これは VSCode をフォークし AI を組み込んだエディタであり、拡張機能などを使わずに単体で AI コーディングができるソフトです。
単体で完結し、AI アシスタントの機能がソフトウェアにインテグレートされているため、簡単かつ使い勝手もよいです。
一方で、使用する AI の自由度はないため、自分が好みの AI を使いたいや、新しいモデルを使ってみたいなどの柔軟性には欠けます。
また月額モデルなので、使いたいときだけ使うという用途にもあまり向いていません。

## 使用方法

1. VSCode をインストール
1. 拡張機能から Cline を検索してインストール
1. 自分の使いたい API Provider の API キーを取得し、Cline にセット
1. （任意）Custom Instruction を設定

Custom Instruction は AI とやり取りするための前提を記載しておくことで、会話で都度指定することを省けます。例えば、「日本語でやり取りしたい。使用する言語は Python を優先。環境を汚したくないので venv を使用する。大きな変更ごと git にコミットして。」など。

設定を行えば、あとは「Type your task here」の欄にやりたいことを入力するだけです。コードの生成だけでなく、コマンドの実行も可能であるため、必要なビルドツールやライブラリのインストールを行ってくれます。

## 使ってみての感想・注意点

#### API 料金が意外に高い

AI は トークンで課金されますが、AI コーディングを行っていると思っている以上に料金が高くなります。
Cline は Task という単位でやり取りを行いますが、Task 内で過去の経緯を含めて処理を行うということは、今までの結果を全て入力して次の出力を得ているようです。
つまりやり取りが長くなると Input のトークン数が増えていきます。
1 回やり取りするごとにかかった費用が表示されますが、最初のコードを生成した際には \\$0.03 とか微々たるものだなと思っていると、やり取りをするごとに上がっていき、\\$0.5 とかになってきます。
ある程度やり取りが長くなってきたら Task を切り替え、新規 Task としてやり直すことをお勧めします。今までの経緯は把握していない AI に戻ってしまうので、ある程度サマリーを補足してあげるといい感じに続きから実行できます。

これは Cline の作者も認識しているようで、Prompt Caching という機能を使うことである程度トークン数を節約することはできるようです。しかし Antholopic など一部の API Provider しか対応していません。

#### API のレートリミット
トライ&エラーを繰り返していると API のレートリミットにかかることがあります。API Provider ごとに分間や日次で実行できる API のトークンには上限があったり、リソースが不足していたりするとエラーで実行できなくなります。
しばらく時間を置いてから実行するか、別の API Provider に切り替えることで、リミットを超えられる場合があります。
そのため、ヘビーに使うようになったら、いくつかの API Provider を使えるようにしておくとよいです。（Anthropic は複数のアカウントを使うことは禁止しているようです）

#### コード変更中に画面を操作するとバグる
AI が修正をする場合、既存のコードを上から下へ読みながら差分を実装していきます。どうも画面から入力を得ているようで、エディタ上で他のファイルを開いていたりすると正しく差分が実装されず、壊れたコードが生成されてしまいます。前回との差分という形でコードを生成するためか、一度壊れたコードを反映してしまうと、元に戻らなくなってしまうことが何度かありました。そのため、コード修正中は画面はいじらないようにしつつ、自分は都度 git commit してもらうように指示しています。

#### コードが長くなると全行出力しなくなる
処理できるトークン数の限界により、`//rest of code here` や `[残りのコードは変更なし]` のように省略したコードを生成する場合があります。
プロジェクトでもこの問題を認識していて、現在の全行を書き換える方針では根本的には解決が難しいようです。
しかし、トークン数の上限は将来的に上がることが期待されるため、徐々に解消するかもしれません。
また、Anthoropic の Fast Edit Mode と呼ばれる、全行ではなく差分で処理をできるようにするアプローチを行われつつあるようで、今後の改良に期待です。
1 ファイルが 200 行を超えると怪しくなるので、モジュールして別ファイルにすることもベストプラクティスとして作者が挙げています。

https://github.com/cline/cline/issues/14
https://github.com/cline/cline/wiki/Troubleshooting-%E2%80%90-Cline-Deleting-Code-with-%22Rest-of-Code-Here%22-Comments

## まとめ
仕事での大規模な開発や、高度な処理にはまだ熟練のエンジニアの技術が必要だとは思いますが、私のような週末プログラマーが自分でコードをゼロから書く時代は終わったと思いました。
プログラミングが誰にもできる時代がついに来ました。