Cursorを使ったバイブコーディングで工夫していること

に公開

AIコードエディターとして有名なCursorを昨年から使い始め、これまでいくつかのアプリケーションを作ってきた経験から、Cursorを使う上で工夫しているポイントをまとめました。

この記事で得られること

✅Cursorを使う上で失敗しにくいバイブコーディング方法が得られます。

Cursorとは?🧠

https://cursor.com/ja
AIコードエディターと呼ばれ、AIとチャットしながらコーディングをすることができるツールです。
AIが自動的にコーディングを行うため、コーディング作業が大幅に効率化されます。

また、AgentモードにすることでWeb検索やコマンドラインを自動実行することができ、要件定義やデバック作業もお任せすることが可能です。

バイブコーディングとは?✨

AIに対して自然言語で目的や要件を指示することでコーディングを進める開発スタイルです。
人間は上流工程のコンセプトや要件定義に集中することができます。

AIがコーディングしてくれるって最高じゃん!😍

AIに自然言語で指示するだけでコーディングを自動的に行うことは数年前まで考えられなかったのですが、ChatGTPの出現以降コーディング作業に革命が起きました。

私が初めてCursorを触ったときは衝撃を受け、楽しすぎたのでいつも深夜まで遊んでいました笑

また、エンジニアでなくても「こんなアプリがあったらいいな」と思っている人がコーディングできるようになったので、誰でもエンジニアの楽しさを味わえる時代になりました。

Cursorを使ったバイブコーディングでぶち当たった壁😨

1.AIが過去のコンテクストを忘れる😯

チャット画面からコーディングを進めているとたまに変な実装が始まることがあります。

「あれ、余計なコード作ってない?こんな機能だったっけ???」

また、AIがエラーを修正したら別のエラーが発生し、さらに修正が始まり、といったことを繰り返す悪循環にハマることも。
こうなると、せっかく作ったコードの原型が失われてしまいます。

これは、AIが最初のコンテクスト(文脈)を忘れてしまうことによって発生します。

AIに入力できる最大トークン数は決まっており、コーディングに必要な最初の情報が失われることで整合性が取れないコードが生成されてしまうのです。

2.どこまで実装できたのか迷子になる🤪

「さて、昨日の実装の続きをするか・・・。そういやどこまで進んだっけ?」

AIにコーディングを任せすぎると、どこまで実装が進められたのか分からなくなります。

また、全体に対しての進捗が分からないので終わりが見えなくなることもしばしば。

そのため、毎回Cursor起動時にチャット画面で「どこまで実装したか教えて」を行うことになります。

3.ツールコール数制限(25回)に引っかかる→VPNエラーで強制停止→プロンプトもう一度打つ、が何度も発生する😡

CursorのAgentモードではツールを使ってコーディングを進めてくれますが、ツールコール回数には25回の制限があり(MAXモードでは200回)、制限に引っかかると動作が強制停止されます。

とは言え、Continueボタンを押せばインタラクション(1回の指示に対するAIの一連の作業)の続きを行ってくれるのですが、この時私がよく遭遇したのはVPNエラーが発生しインタラクションの続きが行えないという事象。

こうなるとプロンプトを打ち直す必要があり、タイミングによっては中途半端にコーディングされている状態なので、前回のインタラクションで実装/修正されたコードをRejectする必要があります。
(APIコストがもったいない😢)

さらにネットワークの調子によってはこの事象が何度も発生し、うんざりすることも。

こういった開発効率を下げるボトルネックを回避するために工夫したことは次です。

Cursorを使ったバイブコーディングでの工夫ポイント

✅要求仕様書を書く

AIにコーディングを指示する前に要求仕様書を書きます。

要求仕様書とはユーザーに提供する機能やソフトウェアの要件(Windows環境で動きます、Pythonで作ります、等)を記載したドキュメントです。

これの何が良いかというと、この要求仕様書を常に参照させるようにすればAIがコンテクストを失うことなくコーディングを作業することができるようになります。

これでAIが迷うことなくコーディングを進められるようになります!

ちなみに要求仕様書もAIに書かせることができるので、アイデアやどんなモノを作りたいのかをチャットに入力して要求仕様書を作ってもらいましょう。

✅実装計画を書く

要求仕様書が出来たら次に実装計画を書きましょう。

実装計画には、どういったディレクトリ構成にするのか、どんな機能から実装を進めるのか、について書きます。

これもAIに書かせることができるので、先ほど書いてもらった要求仕様書を基に書いてもらいましょう。

これで全体の計画が明確になりコーディングの進捗管理がしやすくなります。

この実装計画も常にAIに参照させるようにすれば、どんな実装を次から進めるのか迷うことが無くなります。

✅進捗リストを書く

実装計画に対して今回のインタラクションで何をどこまで進めたのかを毎回書いてもらいます。

これはインタラクションの度にAIに書いてもらいます。

こうすることにより、全体計画に対する進捗が明確になり、作業が中断されたり時間が空いて忘れてしまってもプロジェクトの進捗管理が可能になります。

✅タスクを分割する/プロンプトにツールコール制限数を含める

ツールコール回数が25回に引っかかる場合、指示しているタスクの粒度大きいことが原因です。
この場合、指示するタスクの粒度を小さくする方法が有効です。

ただし、プロンプトでも回避することはできます。
ツールコール制限に近づいたら進捗リストを更新して動作停止するように指示することで、ツールコール制限に引っかかる前にインタラクションでやったことをまとめて進捗リストに書いてもらえます。

これでもうContinueからのVPNエラーにビクビクする必要が無くなります!

※お金に余裕がある人はMAXモードを使えば上記の心配は実質不要になります。

終わりに

Cursorはとても便利ですがいきなりコーディングを始めるより要求仕様書と実装計画を準備しましょう。
その後、インタラクションの度に進捗リストを更新するようにし、コーディングを計画通り進めていきましょう。

コーディングの成功率が上がること間違いなしです。

それでは皆様良いCursorライフを!

Discussion