AIエージェント Cline とともに開発してみて感じた衝撃と感想「使わにゃ損」

最近話題の AI エージェント [Cline] を、私が関わっているいくつかのプロジェクトでの開発に導入してみました。私自身が Cline とともに開発をやってみた結果、感じた衝撃や感想、どのように活用しているのか、などを共有したいと思います。

## AI エージェント `Cline` とは？

[Cline] は、Visual Studio Code (VSCode) などの統合開発環境上の拡張機能として動作する `AIエージェント` です。

以下の OSS コミュニティで開発されており、 `Apache 2.0` ライセンスで提供されるので商用利用も可能です。

https://github.com/cline/cline

AI エンジンとしては、 Anthropic の [Claude 3.5 Sonnet] 、 OpenAI の [GPT-4o] 、 Google の [Gemini 2.0 Flash] など、各社の生成 AI モデルを利用可能です。利用者自身で使いたいモデルの API を契約して払い出した `APIキー` を Cline に設定して利用する形式なので、発生する料金は API の利用料のみです。

Cline に任せることができる主なタスクの一例としては以下のようなものがあります。
（使い方次第なのであくまでも一例）

- コード生成・編集・デバッグ
- テスト作成・実行・改善
- ドキュメント作成
- ターミナル操作
- ブラウザ操作

上記の 1 つ 1 つだけを見ると、今までの生成 AI とのチャットや [GitHub Copilot] でもこなせていた内容に過ぎません。しかし、従来の生成 AI や GitHub Copilot では、ユーザーと生成 AI とのやり取りは 1 往復で終わるものでした。当然、同じスレッド内で会話を継続すれば、過去のコンテキストを引き継いで継続はすることができましたが、都度ユーザーが指示を出し、生成 AI の成果物を人間が確認してから再び新たな指示を出すという使い方でした。

一方で、Cline が優れているのは、ユーザーに与えられたタスクに対して、**自発的に**計画を立てて (`Plan`) それらの計画を**自律的に**順次実行に移す (`Act`) 能力を持っているところです。また、単に計画を実行して終わりではなく、その実行の結果を都度確認し、何らかのフィードバックが必要であれば再び計画を見直して再実行するというサイクルを繰り返すことで与えられたタスクを完遂することを目指す、いわゆるエージェントとしての動きをしてくれます。

たとえば、ユーザーが `今のアプリにファイル削除機能を追加したい` というタスクを与えた場合、 Cline はこのタスクに対して以下のようにタスクを細分化して計画を立てます。もしエラーが発生すると、その都度改めて計画を立て直します。（あくまでもイメージです）

```mermaid
flowchart TB
    START@{ shape: circle, label: "Start" }
    A[ワークスペース内の<br>ファイル一覧を確認する]
    B[関連機能の記載が<br>ありそうなファイルを特定]
    C[ファイルを開いて<br>内容を理解]
    D[修正方法を検討]
    E[ソースコードを修正]
    F[テスト計画を立てる]
    G[テストコードを書く]
    H[テストを実行する]
    I[テスト結果を確認する]
    J{エラー？}
    K[エラー内容を解析して<br>原因を特定]
    L{原因は？}
    O[ドキュメントを更新する]
    END@{ shape: dbl-circ, label: "Stop" }

    START --> A
    A --> B
    B --> C
    C --> D
    D --> E
    E --> F
    F --> G
    G --> H
    H --> I
    I --> J
    O --> END

    %% エラー判定の分岐
    J -- "正常" --> O
    J -. "エラー" .-> K

    K:::errorRoute -.-> L

    %% 原因特定の分岐
    L:::errorRoute -. "実装に問題" .-> D
    L:::errorRoute -. "テストコードに問題" .-> F

    %% スタイル
    classDef errorRoute fill:#0000,stroke-dasharray: 5 5
```

## 類似の AI エージェントとの比較

Cline と同様の機能を持ち、開発領域で使える AI エージェントも複数登場してきているので紹介しておきます。

| 項目       | [Cline]<br />(旧 ClaudeDev) | [Devin]                  | [OpenHands]<br />(旧 OpenDevin) | [Composer Agent]  |
| ---------- | --------------------------- | ------------------------ | ------------------------------- | ----------------- |
| 月額費用   | -                           | $500                     | -                               | $20〜             |
| API 利用料 | 従量課金                    | -                        | 従量課金                        | -                 |
| 提供方式   | IDE 拡張機能                | SaaS +<br />IDE 拡張機能 | Docker イメージ                 | 専用 IDE          |
| 対応 IDE   | 任意のエディタ              | 任意のエディタ           | WebIDE(VSCode)                  | [Cursor]          |
| 開発主体   | OSS コミュニティ            | [Cognition AI, Inc.]     | OSS コミュニティ                | [Anysphere, Inc.] |
| ライセンス | Apache-2.0 license          |                          | MIT license                     |                   |
| リリース   | 2024 年 7 月                | 2024 年 3 月             | 2024 年 6 月                    | 2024 年 11 月     |

ソフトウェア開発領域の AI エージェントとしては、[Devin] が 2024 年 3 月に発表され先行テストが開始したのが最初だったと記憶しています。その後、Devin は 2024 年 12 月に正式リリースされ $500/月 という価格設定が話題になりました。

Devin のリリースとその衝撃を受けて、OSS コミュニティにおいて Devin と同等の機能を目指す OpenDevin というプロジェクトが立ち上がりました。同プロジェクトは商標の問題か現在は [OpenHands] という名前で開発が継続しています。

[Cline] は OpenHands とほぼ同時期に、 Claude モデルを用いた開発支援エージェントとしてリリースされた ClaudeDev に端を発しています。現在は Claude に限らず各社のモデルに対応し Cline に改名しました。

[Composer Agent] は VSCode から fork し、AI 機能を統合したエディタ [Cursor] の新機能として 2024 年 11 月 にリリースされ、こちらも $20/月 から利用可能なため多くの開発者が利用を始めている AI エージェントです。

## 実際に Cline とともに開発してみた

Cline が他のツールと何が違い、何がすごいのかを理解するのには実際に使ってみるのが近道です。私自身が関わっているいくつかのプロジェクトで実際に Cline を使った開発をしてみました。

大まかに試してみたことは以下のようなことです。

- 既存 Web アプリケーション (Nuxt.js + FastAPI)
  - 追加機能開発
  - ドキュメント執筆
- 新規アプリケーション
  - モックアップ開発 × 2
- OSS 開発
  - Cline の機能改善
  - 新規 Python パッケージ開発

どの事例も、Cline の導入によって今までとは全く異なる開発体験を味わうことができました。

この中で、今回は `新規 Python パッケージ開発` の事例をご紹介します。

### プロジェクトの概要

https://github.com/itTkm/pandoc-mermaid-selenium-filter

汎用ドキュメント変換ツールとして知られている Pandoc の filter 機能を用いて、 Markdown 上の Mermaid 記法で書かれた図表を画像に変換する機能を追加する Python パッケージです。

パッケージが実行されると Selenium によって Chrome WebDriver のヘッドレスブラウザが起動し、一時的にブラウザ上 Mermaid.js を呼び出して図表を描画し、スクリーンショットとして保存するような挙動をとります。

### 初版公開までに Cline に与えたタスクとコスト

以下は、初版公開までに Cline に依頼したタスクと、それぞれにかかったコストをまとめたものです。（為替レート: \$1 = 155 円）。

|   # | タスク                                               |          USD |     日本円 |
| --: | :--------------------------------------------------- | -----------: | ---------: |
|   1 | コアロジック開発                                     |     \$0.6327 |      99 円 |
|   2 | Pandoc の filter として対応                          |     \$0.3709 |      58 円 |
|   3 | 出力結果微調整 - 画像のレイアウト調整                |     \$1.0061 |     156 円 |
|   4 | 出力結果微調整 - 画像の余白調整                      |     \$0.3152 |      49 円 |
|   5 | 出力結果微調整 - 画像の解像度調整                    |     \$0.1208 |      19 円 |
|   6 | デバッグ機能追加                                     |     \$0.1071 |      17 円 |
|   7 | テストコード実装                                     |     \$1.2523 |     195 円 |
|   8 | GitHub Actions ワークフロー実装 (ビルド・テスト)     |     \$0.1024 |      16 円 |
|   9 | GitHub Actions ワークフロー実装 (リリース)           |     \$0.0836 |      13 円 |
|  10 | OSS 公開に向けたドキュメントやコード内コメントの翻訳 |     \$0.6528 |     102 円 |
|     | **合計**                                             | **\$4.6439** | **724 円** |

それぞれのタスク単位で Cline にはプロンプトを与えました。このタスク単位で Cline 自身が更にタスクを細分化して計画・実行してくれます。

たとえば、 `1. コアロジック開発` では以下のようなシンプルなプロンプトを与えました。

```text
mermaid記法で書かれた文字列を画像に変換するコードを作成します。
- Pythonのみで完結する
- ヘッドレスブラウザが必要な場合はseleniumを利用すること
- 出力はpng画像とする
```

これに対して Cline は以下のようなステップを順次実行してくれました。

**(1) タスク分析**
**(2) 必要なファイルを作成 (`mermaid_converter.py`)**
**(3) Selenium のインストール (`pip install selenium`)**

> このタイミングで、依存関係は [uv] で管理したかったので、一旦介入して `uv init && uv add selenium` を手動で実行し、その旨を Cline に伝えました。
>
> 最初のプロンプトで `パッケージマネージャーは uv を使うこと` や `パッケージの追加には uv pip install ではなく uv add を使うこと` のように制約事項を与えておくと、こういった介入も不要になります。
>
> その後 Cline は以下のように処理を継続してくれました。

**(4) タスクの再分析**
**(5) `mermaid_converter.py` を修正**
**(6) webdriver-manager のインストール (`uv add webdriver-manager`)**
**(7) コードの実行 (`python mermaid_converter.py`)**
**(8) タスクの完了報告**

ここまでに要した時間はプロンプトの入力から数分でした。

以降のタスクについての詳細な言及は避けますが、多くのタスクは Cline のタスク完了の宣言時点である程度の完成度の成果物に仕上がっており、微調整が必要な箇所を指摘して数ターンで満足のいく完成度になりました。
一方で、なかなか思い通りの結果にならなかったり、エラーが取り切れずに試行を繰り返したり、ユーザーとのターン数が増えると消費トークン数が増えコストに影響することもありました。

上記の 1〜10 の一連のタスクを終えて実際にパッケージを公開する準備が整うまでにかかったコストは `4.6439 (724円)` で、実働時間は `のべ 2 時間程度`でした。
むしろ、初めての Python パッケージの公開だったため、そのお作法を調べたりするのに時間をかけてしまった印象があります。（とはいえ、こういった調査も [Perplexity] のお陰でだいぶ効率は上がりました）

この規模のプロジェクトは、従来の開発手法であれば数日から 1 週間程度はかかったはずなので、その効果は歴然です。

### Cline による技術紹介記事の作成

また、今回のプロジェクトでは Cline 自身に技術解説記事を書いてもらう実験も行いました。
その成果として、以下の記事が公開されています。

https://qiita.com/itTkm/items/690c06c624fffd608c39

この記事では、以下のようなプロンプトを与えることで、プロジェクトの技術的な背景や使用例、技術的なポイントを Cline に執筆してもらいました。

```text
このパッケージを開発したことについて、Qiitaに技術記事を執筆しようと考えています。
まずは記事のアウトラインを検討し、その後記事の内容を検討してください。
記事の原稿は新たに `qiita.md` というファイルで作成してください。
```

最初に初稿が作成された時点で、きちんとプロジェクト内のドキュメントや重要なコードの内容を理解したうえで執筆してくれたことから、執筆内容の精度の高さには驚かされました。

記事の粒度や内容の正確性には全く問題がなかったため、同一スレッド内で体裁を微修正する追加依頼を数回行って記事は完成しました。

記事執筆にかかったコストは `$1.7148 (266円)` で、執筆の所要時間は `30分程度` でした。

:::note info
ちなみに、この記事はアウトラインの検討や図表の作成、計算、校正など、各所で `o1` や `GPT-4o` にもサポートしてもらいながら書いていますが、本文は私自身が執筆しているので、お見苦しい点が多々あるかもしれません。
:::

## 感想と課題

### 感想

私が Cline を使ってみたことで、これまで `便利な道具` として使ってきた生成 AI が `頼れる仲間` に一気に変わったなと感じました。

裏で動いている生成 AI のモデル自体は今までと何ら変わりませんが、エージェントとしてラップされることで有益度が格段に上がったのです。

Cline とともに開発をしていると、信頼している同僚や部下と仕事をしている感覚でタスクを頼むことができますが、そのレスポンスの速さが生身の人間とは比べ物にならない速さなので、格段に開発力が上がります。Cline にタスクをお願いしている間や、効率化して浮かせることができた時間で、人間は本当にクリエイティブな部分に集中できるようになります。

つまり、人間はプロダクトマネージャーやプロダクトオーナーとして `Why` / `What` を考えることに専念でき、Cline のような AI エージェントに `How` を任せるというサイクルが実現できるようになります。

当然、成果物の最終的なレビューや、成果物に対する責任を持つのは人間の責務であることに変わりはありませんが、それでも従来の開発手法と比べると格段に効率が上がるのは明らかです。

今後のソフトウェア開発業界では Cline のような AI エージェントを活用した開発が当たり前になり、それ以外の領域においても各領域に特化した AI エージェントが普及して、我々人間の生活を様変わりさせてくれる未来がすぐ眼の前まで来ているように思います。

もう、私は Cline のような AI エージェントの居ない開発へは二度と戻ることができません。

### 衝撃的な出来事

Cline を使い始めたタイミングで、今後 Cline を本格的に業務利用する場合に生じるであろう問題点を見つけました。

Issue や Discussion を読んでいくと、同じ問題に起因して困っている方が複数いることがわかったので、私自身で修正をかけて Cline の OSS プロジェクトに対して貢献してみることにしました。

このときの開発・修正作業にも Cline を使いました。このとき目の当たりにしたのは Cline が Cline 自身を修正していく光景です。最初に大筋の大方針は私からプロンプトという形で与えているとはいえ、なんとも言えない不思議な感覚になりました。

`AI が AI を作る` 近い将来来るであろうと言われている、そんな時代を先行体験してしまいました。

### 課題

Cline を触っていると、いくつかの課題に直面する場面がありました。それぞれへの現時点での解決策や Tips を以下に挙げます。

- **ターミナルの出力を読み取れず、実行失敗と判断して暴走し始めることがある**

  - これに対しては Cline に設定する **`Custom Instructions` に以下のような一文を追加**することで回避できるようになりました

    ```text
    ターミナルの出力を正常に確認できない場合、ユーザーが代理で出力を確認してからチャットに貼り付けるので、その都度ユーザーに問い合わせを行ってください。
    ```

<p />

- **依存関係の解消に失敗することがある**

  - 依存関係の解消は複雑なため人間でも手間取ることがある作業です
  - 各言語には対応するパッケージマネージャーが複数存在するため、通常はプロジェクト単位で何を使うかが決まっています。Cline にもその方針を指示として事前に与えることが有効でした
  - このような、**プロジェクト単位の決まり事は [.clinerules] というファイルをプロジェクトのルート階層に配置して Markdown 形式で定義しておくことで、プロンプトに記載する内容を減らすこともできる**ようになります
  - また、事前にわかっている依存関係であれば、手動で依存関係を解消した状態で Cline のタスクを解消すると無駄な試行を減らすことができました

<p />

- **新技術やニッチな技術の場合、生成 AI モデルの知識量が少なく対応しきれない場合がある**

  - これは Anthropic がリリースしている **[Model Context Protocol] (MCP) でインターネット場の最新情報を検索して取り込む**方法が有効です
  - **Cline も MCP による機能拡張に対応**しています

<!--
さらに今後は、Cline に限らず AI エージェントを導入することで AI への依存度が増していきますが、それによって引き起こされるであろう課題も見えてきました。

- AI への依存度が上がることで、自らのスキルの維持・向上が難しくなる
  - これまでは何をするにも自ら学び実践することで新しいスキルを身に着けた上で開発などの実業務で実践していくスタイルだった
  - AI エージェントが普及することで、すでに学習済みの AI が支援してくれるので、学ぶ必要性が薄れてしまい、自分自身のスキルアップをせずとも業務を回せてしまう
- AI に依存しすぎることで若い開発者が育ちづらくなる。
  - これから AI ネイティブの人材が増えてくると、これまでであれば自らコードを書いたりデバッグしたりすることで培われた開発力をなかなか身につけることができず、開発者の育成が難しい時代になりそうな気がしています。
- AIの成果物の妥当性の判断が難しくなる
  - レビューの観点や判断基準などを経験などから学ぶことができなくなってしまい、AI の成果物の妥当性を判断することすらも難しくなってしまう可能性があります
-->

## さいごに

ソフトバンクグループ株式会社の代表である孫正義氏が 2023 年 10 月の SoftBank World 2023 の [特別講演](https://youtu.be/h3052XnZhVI) で ChatGPT を使ってない方々に対して `人生を悔い改めた方がいい` という発言をされておりました。

私は今の Cline に同じことを感じています。VSCode のような統合開発環境を使って開発を行うすべての開発者は AI エージェントを即刻導入して活用すべきだと思います。導入する AI エージェントは Cline に限らず、Devin や Cursor の Composer Agent など、何でも構いません。

もしこの記事を読んでいただいた方で、まだ開発に AI エージェントを導入されていない方は、是非とも何らかの AI エージェントを試してみることを強くオススメします。

[Cline]: https://cline.bot/
[Claude 3.5 Sonnet]: https://www.anthropic.com/news/claude-3-5-sonnet
[Model Context Protocol]: https://modelcontextprotocol.io/introduction
[GPT-4o]: https://openai.com/index/hello-gpt-4o/
[Gemini 2.0 Flash]: https://ai.google.dev/gemini-api/docs/models/gemini-v2?hl=ja
[GitHub Copilot]: https://docs.github.com/ja/copilot
[Devin]: https://devin.ai/
[Cognition AI, Inc.]: https://www.cognition.ai/
[OpenHands]: https://docs.all-hands.dev/
[Cursor]: https://www.cursor.com/
[Anysphere, Inc.]: https://anysphere.inc/
[Composer Agent]: https://docs.cursor.com/composer/overview
[uv]: https://docs.astral.sh/uv/
[Perplexity]: https://www.perplexity.ai/
[.clinerules]: https://docs.cline.bot/improving-your-prompting-skills/prompting#clinerules-file