ClineでOpenAI APIを利用した感想についてまとめました!
Clineを利用してGPTモデルを用いたコードを書いてみた際の感想をまとめます。本記事では、GPTをモデルとして活用した際の所感を中心に記述しています。(2025年1月13日時点の記事です。今後進化すると思います。)内容にはネガティブな部分も含まれますが、私の環境における結果である点にご注意ください。また、今後の進化に期待しています。
Clineについての基本的な説明も記載していますので、既にご存知の方は2. 利用した環境まで読み飛ばしていただいて構いません。
1. Clineについて
Clineは、AIを活用して開発者の生産性を向上させる次世代型の開発支援ツールです。主にVisual Studio Code(VSCode)などの統合開発環境(IDE)で利用でき、AIによる高度なコーディング支援を提供します。
注目を集めているため、フォーク版であるCool-ClineやRoo-Clineといった派生ツールも登場しており、情報がやや混乱している面もあります。
また、Terminal上でのコマンド実行も可能なため、npm run dev
などのスクリプトを直接実行することもできるようです。
1.1. 主な特徴
-
複数AIモデルに対応:
- OpenAI(GPTシリーズ)、Anthropic(Claude)、Google Geminiなど複数のAIモデルを選択可能。プロジェクトの要件に応じて最適なモデルを利用できます。
-
課金制度:
- 各モデルのAPI仕様に基づく従量課金制。
-
幅広い機能:
- コード生成、エラー修正、リファクタリング、Git操作、自動タスク実行など、多岐にわたる開発支援機能を搭載。
-
カスタマイズ性:
- Model Context Protocol(MCP)を活用し、自動化ツールやカスタムワークフローを柔軟に構築可能。
-
シンプルな使用感:
- VSCodeにインストールするだけで利用開始可能。設定箇所が少なく、直感的な操作が可能です。
1.2. メリット
- 柔軟な統合: 既存の開発環境にスムーズに組み込めるため、導入が容易。
- 効率的な開発支援: 大規模プロジェクトでも長文の文脈を保持しつつ的確なサポートを提供。
2. 利用した環境
- OS: Windows(WSL2)
-
IDE: VSCode
- WSLへのリモート接続で利用
-
Cline: 標準版
- モデル: OpenAI (gpt-4o)
記事執筆に際して、minorun365さん の記事を参考にしました。特に設定の手順や使用感について、大いに助けられました。
3. 感想
結論として、「期待したほど実用的ではない」という印象を受けました。ただし、これはあくまで私の環境と設定に基づく感想です。
モデルの選択や使用状況に大きく依存するため、適切なモデルを選ぶことが重要だと感じました。
4. 利用した結果、わかったこと
4.1. 👎 gpt-4oモデルはコストが高い
以下の理由から、gpt-4oは不適切と感じました。
-
コストが高すぎる
- 2~4回のチャットで約$1.3を消費。これはGitHub Copilot(月額$10)と比較すると高コストです。
- 利用時間は15~30分程度ですが、この間にトークン数制限にも頻繁に引っかかりました。
-
トークン制限による処理中断
- OpenAI APIの仕様により、処理途中で中断されることがありました。
4.2. 👎 簡単なコードでも誤りが発生
特にFastAPI(Python 3.10環境)を使用した際、以下のようなミスが目立ちました。
- import文の誤り: 文法エラーが発生。
- SQLModelの記述ミス: 不適切な型ヒントの指定。
importの誤り
非常に簡単な内容です。
-
はじめのコード
提供した正常なコードです。from app.models import ( Item, Message, UpdatePassword, User, UserCreate, UserPublic, UserRegister, UsersPublic, UserUpdate, UserUpdateMe, )
-
Clineが記述したコード
Roleクラスをmodelsで作成したのでimportした際に記述を誤る。
複数importするための "("がなくなっています。Roleは追加されていますが...
なかなか間違いにくい内容だと思います。from app.models import Role Item, Message, UpdatePassword, User, UserCreate, UserPublic, UserRegister, UsersPublic, UserUpdate, UserUpdateMe, )
SQLModelの誤り例
以下の不適切なコードが生成されました。
-
出力された結果です。
class UserBase(SQLModel): email: EmailStr = Field(unique=True, index=True, max_length=255) is_active: bool = True roles: List[Role] = Relationship(back_populates="users", link_model=user_roles) # 本来はこれと同じ定義になるはず。 full_name: str | None = Field(default=None, max_length=255) class UserCreate(UserBase): password: str = Field(min_length=8, max_length=40) roles: List[uuid.UUID] = [] # NOTE:ここが誤り
-
正しくはこちら。
Baseで正しく定義しているので間違えないような気がしますが、子クラスで誤っています。class UserBase(SQLModel): email: EmailStr = Field(unique=True, index=True, max_length=255) is_active: bool = True roles: list[Role] = Relationship(back_populates="users", link_model=user_roles) full_name: str | None = Field(default=None, max_length=255) class UserCreate(UserBase): password: str = Field(min_length=8, max_length=40) roles: list[Role] = [] # NOTE:ここが誤り
また、上記のコードもそうですが、実は元のコードをわざわざlist
からList
に書き換えてくれています。list
のまま残っている箇所もあるので、少々不可解な挙動ではあります。
別箇所でも誤っていますが、python3.10の場合は、List
ではなく list
を利用します。元のコードはすべて list
を利用しています。
4.3. 👍️利用準備は非常に楽
- 拡張機能のインストールとOpenAIのAPIのSecretKeyを準備するだけ。
ただ、それが利点とするならばGithub Copilotのほうが利用しやすいと感じました。Copilotも同じように設定は簡単ですからね。
5. 対策として
ここまでの経験を元にGPTを利用するならこれは必要だと思った対策です。
- gpt-4-miniモデルを利用: コストが抑えられ、実用性が高い。
- カスタムインストラクションの設定: プロジェクトの前提条件(例: Pythonバージョンなど)を明示的に指定する。
- これにより前提条件の指定ができますので、統一したコードを記述できると思います。(実際にはtypingの修正はできませんでしたが...)
5.1. 根本的な対策
根本的には、以下のような対策が必要だと思います。当面は私がGPTとClineの構成で利用することはないでしょう。
- GPTモデルを利用しない。
- Cursorを利用する
- GitHub Copilotを利用する
- GPTに直接コードを生成してもらう
現状聞いている限り、OpenRouterのclaude-3.5とかがいいんでしょうか?オール・インワンという意味では、Cursorを利用するのがいいような気がしますね。
「あなた使い方わかってないよ!」という意見があればぜひコメント下さい。もっと使いこなしたいです。
6. まとめ
GPT-4oの利用は現状ではコストパフォーマンスに課題があります。特にコード生成には他のツール(例: GitHub Copilot)の方が適していると感じました。なお、利用するモデルや設定次第で結果は大きく変わるため、引き続き検証を進めていく予定です。
ClineのGPT-4miniでコードを生成。X用に動画は端折っています。
— がっちりしたDev (@dev_chickenx) January 13, 2025
結果は不適切なコードを書いています。GPT4oを利用しても間違える箇所なので、指摘しないと間違えたままゴリゴリコードを書いていきます。他のモデルであればいい感じに記述してくれる可能性はあります。 #Cline pic.twitter.com/6eOwLOesD6
また、生成AIの経験則についての話は、別記事(生成AIでコーディングをしてきた感想)にざっくりまとめていますので良かったら、読んでいただけると嬉しいです。