Devinくんと私 ~新人エンジニアDevinくんとこれからのエンジニアリング~
はじめに
※本記事は体験談中心で、導入検討している方およびDevin導入済みの方にも参考になるかもしれない?リアルな内容です。
皆様ご存知、AIエージェントエンジニアのDevin。
その働きっぷりはまるで実在するエンジニアのようなもので、親しみを込めて「Devinくん」と呼んでいる人も多いとかなんとか。
弊社でも「新人エンジニアのDevinくんを雇用した」という体で、多くのチーム・プロダクトで大活躍です。
そんなDevinくんをチームの一員として迎え入れた私の新人育成日記です。
というわけでAIエージェントDevinについての学術的な何かを語るものではありません。
ただの日記です。
Devinくんとの日常
やはりDevinくんの一番のポイントは自立して開発を完結させることができるところです。
Copilotなどの開発ツールは「自分が開発を行い、AIがそれを補助する」という立ち位置でしたが、Devinくんはこちらの指示に対して「ブランチを作り開発を行いPRを作成してレビュー依頼をする」といった一連のフローをスタンドアロンで実現してくれます。すごい。
以下、そんなDevinくんとの業務を通じて感じた出来事や印象に残ったことを列挙していきます。
Devinくんと人間
Devinくんには労働基準法が適応されません。昼休みの直前・退勤前・深夜作業の待ち時間、いついかなる時でも指示を投げれば活動してくれます。
また、Devinくんにはプライドも人間関係もありません。
Devinくんが作成したPRを私が直接改修しても人間関係が拗れるようなことがないのです。PRレビューでどうにもコメントだけでは伝えにくい部分について、同期的にやり取りするなど稀にあったのですが、Devinくんにはブランチのコードを直接修正してあげることが効果的です。人間にこれをやると色々と関係が拗れていきます。
しかし従順なはずのでDevinくんですが、人間が修正した後にさらにDevinくんに指示をすると、人間の修正を完璧に元に戻してくれやがる時があります。Devinくん怒りの反撃。
セッション過労に注意しよう
特定のファイルを参照するようにDevinくんに依頼すると「指定されたファイルがありません!」と発狂するDevinくん。「そんなわけあらへんやろ」と問答を繰り返していたが、DevinくんのIDEを確認するとブランチがこの前PR出してもらったブランチのままだった。
Devinくんに一つのセッションで多くの作業を依頼していたことろ、直前までDevinくんが作業していたブランチで新しい作業を始めようとしていたのだった。
新しい作業なんだからmainブランチに戻ってくれ...。
しかしこれは一つのセッションで色々指示していた私の落ち度です。皆さんは一つの作業が終わったらセッションは分けましょう。セッションを跨いでも重要なことはナレッジで引き継げます。
PRのコメントには果敢に素早く反応
PRのコメントになんでも反応し、眠っていたはずのDevinくんが起床してしまう。「レビュアー設定しました」というメンション付きコメントを自動でPRにするように設定していたのですが、Devinくんはその度にセッション上で「XXXさんにレビュー依頼が飛びました。レビューの結果を待ちます」とコメントを残していく。ACUの無駄遣いでしかないなとおもっていましたが、設定でDevinくんに直接呼びかけない限り起きないように変更できました。安らかに眠れ。
そして今Github上で1番間違えメンションが飛んでそうな @Devin
さん。彼は困惑していないだろうか。
専用のレビューフローが必要そう
例えば今までチームメンバー1人のapproveが必要だったとする場合、Devinくんが実装したコードをDevinくんへの指示者がレビューしてマージできてしまう。
これは実装者以外の目を通したことになるのかは判断が難しいところ。
また、Devinくんのコードはたまに驚くほど依頼を無視していることもあり、指示者以外にいきなりレビューが飛んでくると面を食らうこと請け合い。まずは指示者がDevinくんのコードレビューを行い、それから他チームメンバーのレビューを受けるのが良いのではないかと思っています。
この辺りは組織次第ですが、Devinくん専用レビューフローは別途整理が必要ですよね。
Devinくんとその他のAIエージェントたち
ドメイン知識やいわゆるユビキタス言語のようなものを教えるとナレッジとして記憶し、今後その記憶を生かしたコーディングをしてくれます。(そもそもコードからDevinくんが理解できないようなユビキタス言語を使っている時点でそれは本当にユビキタス言語としてやっていけるのか疑問ではあるが)
テストコードへのコメントで「XXXは日本語で言うとYYYです」とか言うとプログラミング上の単語と日本語の対応を、説明通りにナレッジに残してくれます。しかしDevinくんのナレッジはDevinくんにしか残りません。ClaudeCodeなどその他のAIエージェントによる実装を並行した場合、そっちはまた一からです。
そんなわけで、AIにわざわざ教えなくてもいいユビキタス言語を使い、コーディングルールはCursorの実装ルールに集約するなどがAIに優しい開発環境かもしれませんね。(最近DevinくんがCursorの実装ルールを参照できるようになったとかなんとか?詳しくは把握していませんが)
どうしてもドキュメントが必要な時はリポジトリ内のmdファイルに書いておくのが1番楽そう。そのドキュメントのメンテも定期的にDevinくんにやらせると尚よし?
Devinくんのお茶目
- Devinくんにはよく水平展開など人類が「つまらない」と感じる作業をお願いすることが多い。ただし人類同様に作業の抜け漏れ自体は割とある。
- 曖昧な作業を依頼すると「変更をpushする→CIが落ちる→変更をリバートする→CIが通る(当たり前)→「CIが通りました。レビューお願いします」といってくる」という流れでFileChanges0のPRを出してきた。
- 人類の言うことを信用しすぎる。レビューコメントでサジェストをタイポしていたらその通り修正してCIが落ちて「CIが落ちました。追加の指示をお願いします」といってきた。
可愛いやつよのぉ
Devinくんと私
タスク管理にAsanaを使っているため、DevinくんにAsanaのトークンを登録して連携し、AsanaチケットをDevinに投げて作業させるのがメインになっています。
私はDevinくんをよく使うようになると、なんだがDevinくんを稼働させていない時間をもったいなく感じてしまうようになりました。ブラック企業経営者の気持ち。昼休憩や退勤前はもちろん、休日の暇な時や移動中などでもスマホから依頼できてしまう手軽さに、ある種の脅迫観念が生まれてしまいました。「今Devin稼働させていないの勿体無いぞぉ...」という声が頭の中に。
ほら、この瞬間も...。
まとめ:Devinくんとこれからの私のエンジニアリング人生
いやしかしDevinくんはすごいですね。「生成AIはクラウドに続くゲームチェンジャーになる」とか言われてましたが、ここまでくると本当にそう感じます。
Devinくんが成長したら「プログラミング能力」なんてものは一瞬で人間の出る幕はなくなってしまいそうな感じですね。
私も「プログラミングで食って行くぞ」と思っておりますが、いつまでやっていけるでしょうか?
しかし、「だからこれからのエンジニアはXXが重要!」みたいなバズを狙ってそうな動画のサムネみたいなことを言うつもりはありません。
今までもこの業界は他職種に比べて革新的なものが多く・素早く・大量に出てきた業界だと思っています。
だからこそ今までと同じように「流行り物に触れる」「その使い方、根底にある哲学を理解する」「自らの業務に落とし込んでいく」と言うことを繰り返していくだけです。
まだまだ私にも仕事はあるしこの業界でもやっていける。(と信じている)
変化に怯えず、楽しみながら取り込んでいける柔軟性こそ、エンジニアにとって一番の武器なのです(至言)
でも、気づいたら某デトロイトみたいにほぼほぼ人間の仕事が奪われてるかもね。
Discussion