3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Roo Codeで仕様書を書き起こし、Cursor Composer(Yolo)で構築する

Posted at

[AI個人開発] Cursorで自動化レバレッジを最大化するためにしたこと10と、Cursor Composer メインでも、Claude 3.5 SonnetならAI開発自動化が進む話の続きです。

日々進歩しているので、このやり方が通用する時期は短いと思います。
ただし、基本的な考え方は今後ツールが変わっても有効だと考えています。

なお、Cursor月額 $20 に収めなくても構わない方は、API叩きまくるRooへ寄せても良いと思います。

メインをCursorに置く

Yoloモードは、Roo Codeに比べると処理出来る範囲が限られています。
Computer use がコマンドライン前提になっているためです。

一方、それはそれで安心感があって、触る範囲に予測が付くメリットにも繋がります。

AI開発への期待は完全自動化ですが、実際は内部的にコードを書くわけなので、うまくコードベースに反映することを中心に考えます。

そうすると、Cursorが月額$20で(Slowを許容しながら)Claude-3.5-sonnetを使える点で優位になります。最近DeepSeekが良いらしいため、API叩く上では追加検証してくことになりますが、月額固定である良さはCursorにあります。

Roo Codeに行ってもらうこと

最近Geminiの無料開放枠が大きくなったこと、従量で比べても安いことから、Rooから使う際にはGeminiを選択します。
ここでClaude精度を求めてはいけません。

では、どういった点でRooの良さを引き出すか?

  1. 全てを網羅的に自動で完成させる
  2. 持っているコンテキスト量が増えても処理ができる

この2点を活かすために、仕様書作成やQA観点のチェック作業をRooへ寄せます。

Roo → Cursor → Roo という流れです。

Rooに任せる範囲

Roo が用いるモデルとバージョン

Roo のAPIにGemeniを設定します。バージョンは好きなもので良いと思いますが、制約の小さい(tokenサイズの大きい、コール上限数が大きい)モデルが良いと思います。

直近では gemini-2.0-flash-thinking-exp-01-21 が開放されています。

設定

Rooにはシステムプロンプトを複数渡せます。これらは共通して、役割に必要な情報を持たせるように考えられています。

私は、アプリケーションの意図から仕様を検討する役割と、アプリケーションの意図を踏まえて品質をチェックする役割の2つを設定しています。

指示

Rooには、出来る限り細かな指示を渡しません。
Cursorに細かく渡しているため、それ以外の作業を自動化するためにも、できる限り人間が行う作業を減らしたいです。

必要な制約(障る範囲、触ってはならない範囲)はシステムプロンプトへ入れておきます。
使って欲しい観点は、役割として定義しておきます。

そのうえで、指示は抽象度の高いものを入れます。ただし、スコープが絞られないと無限に広がってしまうため、

最近2週間以内に追加されたコードを洗い出してください。それらを1つずつスコープを定めて検証し、ミッションをクリアしてください。
あなたの役割は、テスト対象の漏れや、コード修正が必要な課題を洗い出して、直したり整理することです。
システムプロンプトの指示に従って作業しなさい。

のようにします。システムプロンプトが無視される場合は、重要なプロンプトを繋いだ状態にしてから、指示すると良いでしょう。

仕様を決めていくときは、

今回は、仕様決めがゴールです。実装は不要です。
アプリケーションの課題は、**情報は一覧表示があるものの、edinetの一覧表示はないことです。
また、別々に閲覧するのは不便であるため、**とedinetが混在した一覧作成を行うことが望まれています。

そこでまず、**を表示している箇所を洗い出してください。
そのうえで、以下の要求から必要な仕様を考えて整理し、最善と考える仕様を決定してください。

  • ヘッダのリンク「**」情報を表示している方法と同じような、一覧表示を新設したいです。
  • 一覧は「開示」というリンクにします。内容は**とedinetを混在した一覧にします。
  • ** のリンク先は、既存の ** と同様にします。edinetのリンク先は、stock showに存在するリンクと同じにします。

あなたの役割は、既存システムやドキュメントを読み解いて、仕様を考え、仕様を決めて記載することです。
考えた仕様は、****** へまとめなさい。

検討プロセス自体はタスク管理し、ステータスを更新しながら進めなさい、

これで自走します。

成果

詳しくは書きませんが、成果の測り方や保存の仕方には工夫が必要です。
ドキュメント作成をゴールにする場合は、ドキュメントの出力場所や形式、ボリュームを決めていく必要があります。

また、Cursorへ引き継ぐために、目的や背景を記載させることも重要になります。

フロント側であれば設計効率や速度とUI/UXを、バックエンドであれば堅牢性・セキュリティ・冪等性を重視するなど、いくつか異なる観点を交えてRooに作業させつつ、Cursorへ渡すときには絞り込まれた状態にしておく必要があります。

いずれにしても、自走するRooにはカバー範囲の広い上流を、狭い範囲でパフォーマンスを発揮するCursor Composerにはコーディングを担当させるのが、今のところ有効そうに思います。

最後に

こうしたAI開発環境を作ることで、自らコーディングせずに済みます。
最近は、精度が上がっているため、ブランチのMergeもCursor Composer(Yolo)へ任せています。ボタンを押すプルリクは、最後のmainブランチへのマージだけです。

時々、ミスは起こります。
例えばブランチを綺麗にするためにpruneなどをさせて綺麗にします。そのときに、merge済みのブランチを削除させようと指示を同時に出すと、まだマージしていないブランチを削除したりします。 -D で強制削除することもあります。

従って、ブランチを切りながら、作業をコミットさせていくことによって、手戻りを許容する必要があります。Gitで管理できない差分のある作業は、まだ任せられません。

ただ、良いコードの積み上げを自律的に行い、人間はコーディングせずに開発できる時代になっていることを、自分自身の肌身で感じています。

もう、AIが書いたコードを念のために読むこともなくなってきています。
セキュリティの懸念、パフォーマンスの懸念なども、繰り返しRooやCursorに作業させているため、回数で品質をカバーできているように思います。
(セキュリティやバリデーションのレベルを強めすぎて、自分で書いたテストが通らずにループするケースがあるほどなので、仕様や要件の水準コントロールが、次の課題かな・・とは感じています。)

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?