対象者
- DevinにFlutter開発をさせたい人
対象外
- Devinのセットアップをしたい人
他の人がDevinを用意してくれたので、そこは分かりません
はじめに
最近、プログラミングを自動で行う自立型AI「Devin」が注目されています。Web系で使われているのかな、と思うのですが、Flutterを利用したアプリ開発ではあまり検索で引っかからない。
幸いDevinを使う機会がありましたので、Flutter環境でDevinを使ってカウントアップアプリを実行する手順や、運用上の注意点、Devinの特性や活用方法を記載します。
また参加した勉強会(座談会?)で得た知見について紹介します。
Devinとは
Devinは、Cognition社が開発した、自律型AIソフトウェアエンジニアです 。自然言語による指示を理解して、ソフトウェアの設計、コーディング、テスト、デプロイまで、開発プロセス全体を自動的に実行できる、らしい 。
Cursorなどはコードの自動補完や提案を行うAIペアプログラマーですが、Devinは人間が指示を与えなくても自律的にタスクを実行できます。
月額500ドルから利用することができるので、「月給8万円で雇える」とあったけど、サービス残業はしてくれない。その後は従量課金。
とりあえず、感想。いわゆる「驚き屋」さんのブログにやられたかぁ、と感じました。なんか、期待値が上がってしまった。ちょっと与えるタスクが難しいからかもしれませんけど、、、
指示を受けて、コーディング、プルリクまでしてくれるのは凄いけど、コーディングレベルはChatGPTと変わらない。手動でファイルをコピーする手間代がそこまで払えるかなぁ、というのが今のところの感想。ChatGTPだとある程度私主体で動くけど、ゴミコードを作っても定額なのであまり気にならない。Devinに主体的に動いてもらって意図しないゴミコードを作っても費用は発生する。
将来もっと安く・早くなって、コードの案を3つくらい出して「どれが良いですか」となると、大分違ってくるとは思う。
Flutter開発を始める
とりあえず、最初の疑問は「DevinはFlutter開発してくれるのかしら」。カウントアップアプリが動作したので、その依頼方法を記載します。
カウントアップアプリを実行
以下のコマンドをそのまま記載していますので、Slackからそのまま貼り付けて実行すれば、いけます。ちなみに日本語でも大丈夫です。(それが分かる前の動作検証でした)
Hey @DevinAct as new envelopment
Don't use Knowledge Suggestions
Don't download source from github repository. Create new flutter project
Please verify that you can:
- download https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.27.2-stable.tar.xz and extract somewhere. add flutter/bin/ to path
- flutter create test_app
- cd test_app
- flutter pub get
- flutter test
- flutter run -d chrome
- show browser's screenshot
- clicking the + button in the bottom-right corner
- show browser's screenshot again
上記手順により、Flutterの環境構築からテスト、実行、そして実際にブラウザ上のFlutterWebでアプリの動作確認を行います。最初はシンプルなカウントアップアプリとして、+ボタンをクリックした際の挙動も確認できます。
- Flutterのバージョンは変更してください
- Ubuntuで実行している
- 最初はDockerで始めましたが、途中でDockerを使ってることを忘れてくれる。バイナリをダウンロードしてパスを通す、に切り替えました
- なんか「+」を押す動作が怪しかった。なかなか押してくれないような感じだった。スクリーンショットで値が変わってたので、大丈夫っぽい、、
疑問点
Androidのエミュレータとか実機に繋げたりできるのかしら、、、
注意点
- 自動生成コードの検証: Devinは自動でコードを生成するため、生成されたコードの品質や挙動を必ず人間がチェックしましょう。
- タスクの細分化: 大きなタスクをそのまま任せると暴走や不要なプルリクエストが発生する恐れがある。できるだけ小さな単位でタスクを依頼することが推奨されます。
- 運用ルール: ブランチのプッシュだけに留め、直接プルリクエストを作成させないなど、適切な運用ルールを設定する必要があります。
Flutterでの使用体験
使えそうだと思ったところ
-
JSONからのクラス作成
実際のWEBAPIから引っ張ってきたJSONから、Dartクラス作成→テスト作成→テスト実施はいけました。最初に答え(JSON)がある状態であると、使えるな、と思いました。ただ、テストに失敗したときの修正で、JSONを書き換えるという暴挙には出られた。OpenAPIなど仕様がはっきりしている物に対しては有効か。 -
ドキュメント作成
ええ、ドキュメント作成、苦手というか、嫌いなんですよぉ、、(ブログ書いてて、説得力がない?) -
コードレビュー
テストとか例外処理がないとか、ご指摘がある。人のコードレビューの前にチェックさせると良さそう
使えねぇな、と思ったところ
-
大きめのリファクタリング
画面のソースからロジックを抜き出そうとして、参考ソースも付けているが、うまく解釈して、再現してくれない。 -
やたらとプリリクしたがる
プルリクしないDevinなんて、存在しないと一緒、みたいな感じですが、プルリクのリストを汚されたくない。コードをちょっと修正する毎に、プルリクしてくるので、正直うざい。(プルリクへの修正依頼に対して、新しいプルリクを作る、、、)。「プッシュだけして。プルリクはするな」と指示して、内容を確認して、プルリク自体は自分で作るようにしてる。そのうち忘れられて、プルリクされるけど。
またプリリクを作って、「コメントを追記して」と指示を出すと、別のプリリクに追記してくれた。「プリリクを作成するな」の指示を忘れたorz -
待たない
Slack上でタイトルがてら「@Devin、●●を作成します」を送信して、仕様を考えてたら、裏で勝手に仕様を作ってプログラムして、全然違うコードを作ってくれました。とりあえずクズコードでも書けば給料がもらえると思っている新社会人プログラマみたいでイラッときました。それ以来、「ここまでできたら、待機して」と待たせるようにしてる
勉強会の内容
今回Devinについてまとめようと思ったきっかけになったイベント「Devin使ってみてどうだった?」のまとめです。
-
DevinがテストコードにAPIキーを含めてプッシュしてしまう問題が報告された
プライベートリポジトリのみ使用する運用ルールを検討 -
ChatGPTなどの他のAIツールと壁打ちをして仕様や具体的な方法をISUUEにまとめて、そこからDevinにプログラムをさせる
-
To-Doリスト作成機能や、タスク選択を自動化する仕組みの活用例
TODOとその見積もりを登録しておいて、空き時間を言うと適切なTODOを出してくれるようにした -
大きなタスクを小さく分割し、忘却が始まる前にタスクを完了する運用の重要性
-
Devinが自動でドキュメントやテストを生成し、ナレッジの蓄積に寄与する点の評価
まとめ
DevinなどのAIエージンとを使った開発は、効率化や自動化の可能性を大いに秘めており、今後の主流になっていくと思います。
ただし、現段階では、自動生成されたコードの検証、タスクの細分化、セキュリティ対策など、運用面での注意が必要。これらのポイントを踏まえ、適切な運用ルールを整備し、安全にAIを活用できる環境を構築して、開発の効率を上げていきたい
今後もこんなので使いました、というのを追記していきたい
参考
- Devin AIにテストを丸ごと書かせてCIがパスするまで作業してもらう方法
- Devinで4万溶かす方法
- Devin使ってみてどうだった?
Findyに登録するとアーカイブ方法が見られる - 2025年2月最新版:Devinに関するおすすめ資料(2/17追記)
Devinの情報が書かれたサイトへのリンクがたくさんあるので、インストールするときに役立ちそう