みなさんこんにちは、無資格・無免許エンジニアの三木です。
巷ではMCPが熱い話題ですが、Web本部では少し遅れてDevinの導入検証をはじめました。
まだ始めたばかりで知見というほどの情報がありませんが
少し触っただけでも得られる情報&感動があり、アウトプットの癖付けもかねて少しづつ記事化できればと思っています。
本日は以下のトピックです。
- 噂どおりすごい
- Wikiがすごい
- 人間が失敗しにくい環境構築がDevinにも優しい?
- AIフレンドリーな構成があると思う
噂どおりすごい
GitHub連携やSlack連携などの基本設定のあとリポジトリ毎の設定を行います。
リポジトリごとに、セッション開始の際の環境クリーンやlint/testなどの7項目ほどの設定を行えば利用開始できます。
この設定項目については、もうちょっと整理できると思うので別の機会に。
で、Good first issue for Devinという感じで以下の指示を。
Devinは最初に計画を立てるので、立てやすいようにタスクを分離して書くのが良いそうですが一旦雑に投げてみます。
末尾の変な指示は最初knowledgeの方に設定してみたのですが、指示に従ってくれたり、くれなかったりだったので、一旦本文に設定しました。
残念ですがロボット要素はスルーされています、このあたりも諦めずに頑張っていきたいです。
Devin自身はブラウザ上のVSCodeを使いながら(のイメージで)、Ubuntuインスタンス上で作業を実施します
プランニングのあと、作業をするすると進めて
1~2分で作業は完了、1ACUに満たないくらいなので、↑の一連の作業で200円前後という感じでしょうか。
上手く動作しない場合、あの手この手でリトライする結果値段が高くなる傾向があるようで、このあたりも適切な使い方がありそうです。
なお、結果としては
↓
という変更がなされたPRが出来ていました。
本格的な開発の知見はまた後日。
Wikiがすごい
導入前には知らなかったのですが、Betaの機能としてWikiやSearchの機能が2025/03/25から提供されています。
コードベースを読み込む過程で、mdファイルなどを参考に内部のアーキテクチャをwikiとしてまとめてくれます。しかもかなりのクオリティ。
こんな感じの7章立てのwikiを作ってくれて
構成やローカルのコンテナ情報の図まで用意してくれます。
各作業セッションのほか、同じく1.5から追加されたDevin Searchもこのwikiを参照するようで
「この構成の良い点と悪い点教えて」と問い合わせたところ、上記参照しつつ教えてくれました。
人間が失敗しにくい環境構築がDevinにも優しい?
Devinは作業指示のSessionにおいて
- コードを修正
- 開発サーバー起動&ブラウザで表示
- linterの実行
などの諸々を実施します。
途中なんらかの理由で上記が上手くいかないと、対処方法を探しだして解決しようと処理を繰り返します。
ex)chmodで権限変更して、コンテナ立ち上げなおす…など
途中の様子もリアルタイムで見られるのですが、設定不備が原因で繰り返し対処している姿は見てて心苦しいものがありました。また、ACUも消化されていくためお財布にも良くありません。
環境構築をdockerなどに徹底的に閉じ込めて、外部へのアクセスをほとんどカットし、誰でも環境構築に成功する…という状況を整備するのがまず重要かと思った次第です。
Devinが失敗する、もしくは詰まる箇所は人間も詰まる気がしています。
AIフレンドリーな構成があると思う
Devinは曖昧な指示だと、修正箇所に辿り着くのにかなりの時間を要していました
下記だと2~3分頑張ってたかなと思います。
例)
ダッシュボードの文言を「〇〇」に変更しておいて!
↓
デビ)了解、探すね!
↓
デビ)見つからないから、もっと頑張って探すね!
↓
デビ)検索だとヒットしないから、ブラウザでログインして直接探すね!
で、これを下記のようにすると
/resources/script/Pages/Dashboard/Dashboard.tsxのダッシュボードの文言を「〇〇」に変更しておいて!
↓
デビ)修正終わったよ!
のスピード感です。
まぁ、人間でもそれはそうか…という内容ではあるのですが
こうなってくるとDevinの有効活用の観点で
- 徹底的なドキュメンテーションor規約
- 例外を作らない汎用的な構成
が重要になると感じます。
.mdファイルなどにしっかり記載して、wikiにも書かれるようにするとより作業が安定化するのではないかと思っています。
このあたりも引き続き調査してまたの機会に。
おわりに
ふと思い立ってギャル語に変換したところ「良い点・マジ神!」などの表記がツボにはまってそのまま利用しています。
ただプロンプトに組み込んでいるだけのような状態でタイトルにしていてまことに申し訳ございません。
リポジトリ毎に「普段は厳しいが、ピンチになると助けてくれる兄貴キャラ」とか「ループしていて、コミットが成功するような調整をし続けている影を感じるキャラ」とか遊び心も大事にしたいのでknowledgeの使い方などもより詳しく調べていこうと思います