3
0

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-Clineでアプリケーション開発を安全に進めるプラクティスを考える

Last updated at Posted at 2025-01-12

はじめに

「Roo-Cline」 (ルークライン) は、「Cline」 (クライン) を基に開発された、Visual Studio Code (VSCode) で利用可能な、AIによるコーディングまたは周辺作業のアシスタントを行う拡張機能です。

image.png

VSCodeにインストールして、プラグインが持つチャットフォームから指示を出すだけで、コードを1から作成したり、既存コードを修正したりできます。
単に開発者と会話しながらコードを作成するだけではなく、プロジェクト (ディレクトリ) 構成を1から作成したり、ターミナルコマンドを実行してサービスの再起動やコンテナイメージの作成、さらにデプロイまで、開発者が行う一連の作業を自動的に実行することができます。

X (旧Twitter) などのSNSでは、まるで 「ClineやRoo-Clineに指示を出して任せればコーヒーを飲みながら待っているだけでアプリケーションが開発できる」 と言ったような、かなりの驚き屋的な表現でこの技術を歓迎する声があります。
ただ、そのような声を聞くと、本当にそんなにうまく行くのかと疑問に思う方が多くいらっしゃるのではないかと思います。

そこで、本記事では、実際にRoo-Clineを使ってみて、うまく行かなかったこと (行かないなと思ったことも含む)、工夫してうまく行ったことなどを解説し、この技術を活用しようと迷っている方や、ちょっと触って諦めてしまった方に向けた解説をしてみたいと思います。

なぜRoo-Clineなのか

Roo-Clineでは何かを開発する指示を出す前に、指示を出す先のAIのモデルを選択します。
現状、Roo-Clineは利用できるモデルの幅がClineよりも広く、例えばAmazon Bedrockと接続する場合、Clineでは選べないAmazon Nova Proが選べるなど、選択肢が多くなっています。

以下が、Roo-Clineを利用している場合に選べるモデルの選択肢です。
Amazon Bedrockで選べるモデルがずらりと並び、Claude以外の選択肢があると分かります。

image.png

一方で、Clineの場合は、記事執筆時点ではAnthropicのClaudeしか選べません。

image.png

また、Priceの欄を見ていただくと分かりますが、Amazon Nova ProとClaude 3.5 Sonnetでは、コストに大きな差があります。
Amazon Nova ProでClaude 3.5 Sonnetと同じ体験が得られるかどうかは今後要検証ですが、コストを節約したい方にとっては、Roo-ClineとAmazon Nova系の組み合わせが選択肢に入るでしょう。

この他、Roo-Clineには、Clineにはない機能が搭載されています。
詳しくは、Roo-Clineについて現在最も詳しく解説されている、以下の記事を読むことをお勧めします。

触ってみて感じたプラクティス

ここからは主観に基づく、Roo-Clineを使う時のコツと思われるプラクティスをまとめてみたいと思います。
なお、記事執筆 (または更新) 時点の機能に基づく情報であり、お読みになったタイミング次第では、より良いプラクティスが出来ている可能性があることにご留意ください。

1. 曖昧な指示は避けた方が良い

これはRoo-Clineを使う時の教訓というよりは、日頃何らかの生成AIを使う時や、ベンダーサポート問い合わせる際にも共通して言える話ですが、例えば「1からアプリケーションを開発したい」と思っている時に 「こんなアプリを作ってください」 と、曖昧 (ざっくり) な指示を出したいケースがあると思います。

例えば、以下の画像のような指示が挙げられます。

image.png

この画像を見ると、簡単な指示を出すだけでアプリケーションのコードができていく様が良く分かると思いますが、ここで、この結果を見ると、例えば以下のことが分かります。

  • AIが開発言語を決めている点
  • AIが採用するライブラリを決めている点
  • AIが要件を決めている点
  • その他

このまま「Save」ボタンを押し続けていくと、AIが提案する要件やコードに沿った成果物が出来上がっていきます。
この内容を全て理解してボタンを押している限りはトラブルになりませんが、もし訳も分からずボタンを押している場合、出来上がってからのトラブルシューティングが非常に難しくなりそうです。

経験のない言語やライブラリのトラブルシューティングを全てAIに任せてしまうと、動作不良が起きた時に、修正指示を適切に出すことが難しくなり、結果、動かないアプリケーションが出来てしまいます。

このようなトラブルを回避するには、以下のことを考慮した方が良いでしょう。

指示に条件を付けるなど、具体的な指示を心がける

例えば、自分のスキル見合いや得意とする環境を意識して「Pythonで開発したい」「コンテナで動かしたい」など、少しでも指示が具体的になるだけで、手に負えないアプリケーションが出来上がる可能性は小さくなります。

指示を早めに細かくやり直す

例えば、先ほどの画面において、PythonではなくRubyで開発したいと思った時には、指示をやり直すことが可能です。
「Save」ボタンを押すのではなく、チャットで指示を出し直せば、コードを書き直すことが出来ます。

image.png

このように、AIからの結果を盲目的に鵜呑みにするのではなく、ある程度ポリシーを持って、自分が期待する結果が出るまでの間、AIからの提案を拒否し続けて、指示を出し続けることも大事です。

アプリケーション全体を作ってから指示をやり直そうとすると、前述のようによく分からない状況となった時、そもそもどういう指示を出して良いのかも分からなくなります。
直せなくなれば1からやり直すことになり、これまでの指示で使ったコストが無駄になってしまいます。
コストについては後述しますが、何か1つのアプリケーションを開発しようとする場合に、指示ごとのコストの積み重ねによって、非常に高額となる可能性があります。
コストのことを考えると、モデルの選び方だけでなく、指示の出し方や、やり直し方が重要となります。

2. 小さなアプリケーションを作って改修し続けた方が良い

先ほどの画面を見ても分かるように、曖昧な指示を出して、構成が複雑なアプリケーションを作り出してしまうと、何がどうなっているのか分からなくなり、結局1から作り直すことを繰り返したり、トラブルシューティングができなくなったりするケースがあると考えられます。

一方で、これまで人間が何かのコードを開発するときの行動としては、少しずつ書いては保存して動かしてみて、都度足した動作を確かめていくような作業を繰り返すことが多いのではないでしょうか。

この人間が行ってきた開発体験と、AIが一瞬でアプリケーション全体を開発してしまう体験との間のギャップが大きいと考えられ、このことが 「自動的に全て出来上がるのは確かに凄いけど、危ないし怖い」 のように感じる方を増やしているのではないかと思われます。

そこで、Roo-Clineを使いながら、トライアンドエラーを積み重ねていく (小さく開発することを繰り返す) にはどうすれば良いかということを考えてみます。

一つの案として、非常に簡素なモック的アプリケーションをまず作り、そこに「こんな機能を増やしたい」という要望を細かく出し、機能を足していくことを考えてみます。

実際に見ていくとイメージが掴めますが、以下は既に開発が進んでいるコードに対して、特定の関数という限定されたスコープに対して、改修の指示を出すケースです。

このようにスコープを限定して指示を出すと、その指示による変更箇所は限定されやすく、AIによる変更で何がどのように変わっているかを比較的理解しやすいと考えられます。

image.png

Roo-Clineでこのような小さな変更指示を繰り返せば、開発者の理解の範疇から大きく逸脱することなく、半自動的に少しずつアプリケーションを作り上げていくことができ、確かに生産性を上げることが可能です。

また、気に入らないポイントがあれば「Save」ボタンを押す前に指示をやり直したり、コードを直接変更してから「Save」を押すこともできます。
以下は、AIに提案されたS3バケット名が気に入らなかったため、指示の途中でコードを直接変更した時の様子ですが、Roo-Clineは自動的にその変更を読み取り、次の指示を受ける前に反映するようです。
AIによる自動作業の間に、人手の作業を介入させても問題なく動作することが分かります。

image.png

なお、Roo-Clineの全ての機能を使えば、最初の指示から全自動でタスクを完了させることも可能で、これらが使えれば、主に生産性のメリットが最大になりますが、以下の画像にもあるように、ハイリスクな機能としてマークされており、影響を理解した上で使う必要があります。

image.png

3. 必要に応じて外部から情報を与える

Roo-Clineでは、チャットで@を先頭につけてURLを与えることで、URLを内部ブラウザで開いて情報を引用することが可能です。
この機能で本当にURLが開けるかどうかを、開発の文脈と全く関係ない、かつ名詞から記事内容を推測することもできないURLを与えて確認してみたところ、確かに与えたURLを開いて情報を得ていることが確認できました。

image.png

この機能を使えば、例えばAIが直接学習していない最新のAPIのドキュメントを読み込んで、ドキュメントに書かれたAPIの仕様に基づくコードを書かせるといったことが可能です。

image.png

4. コストを気にしながら利用する

非常に便利なRoo-Clineですが、一回あたりの推論にかかるコストは安くても、指示の積み重ねによって開発を進めていく中で、コストは高額になっていきます。

image.png

上の図では、このタスクにかかったトータルのコストが$5.8258で、タスク内の指示1つにかかったコストが$0.3791であると分かります。
ドルだと感覚が麻痺しそうですが、関数1つのアップデートのためのタスクで、日本円で¥1,000近く払っている計算です。
一つのタスクを完了するまでの間に、指示を何度か出すことになりますので、開発に没頭したのち、気づくと大きなコストを払っているケースも出てきそうです。

このコストはオンデマンド推論では青天井になりますので、コストの表示を気にしつつ、指示の出し方を調整したり、人手でコードを修正する作業を挟みながら使っていくのが良いでしょう。

このコストについては、人件費との比較という議論もありそうですが、青天井である以上は、トータルコストを気にして使う必要があります。

まとめ

Roo-Clineをうまく使いこなせば、アプリケーション開発の生産性が爆上がりすることは間違いありません。
ただ、個人や企業で利用する場合に、ツールの凄さは何となく分かっていても「どう始めるのが良いのだろうか」「大丈夫だろうか」と、漠然とした不安を抱えている方が少なくないのではないかと思います。
また、このRoo-ClineなどのAIアシスタント系ツールについては、話題になっているからと使ってみて、あまりの凄さに驚くも、これまでの経験とのギャップでうまく使えなくて諦めてしまったケースもあるかもしれません。

この記事では、自ら触ってみて経験したことをベースに、出来るだけ浮世離れや現実離れしないように考慮して説明をしたつもりですが、内容がこれから利用されようと考えている方の一助になれば幸いです。

参考リンク

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?