🏋

業務委託エンジニアとしてDevinを使ってみた2025年2月時点の感覚値

2025/02/26に公開

はじめに

はじめましての人ははじめまして、こんにちは!mentoで業務委託として働いています、フロントエンドエンジニアのがっちゃん( @gatchan0807 )です!

今回は、mentoで業務委託エンジニアとしてDevinを使ってみた感想を(2025年2月時点の情報であるという前提で)まとめてみたいと思います。

その前に軽く自己紹介をしておきますと、私は2024年11月から業務委託(副業)としてmentoに参画し、主にフロントエンド周りの業務を担当しています。
この記事はもともと、社内向けに書いていたものを一部修正して公開したもので、Devinを導入しようか迷っている方に向けて参考になれば幸いです。

業務委託として入ったエンジニア目線で、Devinの使い勝手や感覚値をまとめていきますので、ぜひ最後までお付き合いいただければと思います!

Devinとは? ~ 自律型AIソフトウェアエンジニア

まず軽くDevinのおさらいと、その前提知識としてAIと一緒にプログラミング・Webアプリケーション開発をする際のコラボレーション方法をまとめておきます。

自分はざっくり以下の3つに分類したイメージで使い分けていたりします。

ツール ChatGPT / Gemini GitHub Copilot / Cursor Devin
私の役割 質問者、指示者 ドライバー(主体的にコードを書く) ナビゲーター(タスクを指示し、進捗を監視)
私がやること AIからの回答を評価し、必要に応じて追加の質問や指示を行う。 AIからの提案を参考にしながら、コードを記述、修正、完成させる。 Devinの動作を確認し、必要に応じて介入(指示の修正、方向性の調整)を行う。
イメージ Slackなどで相談する、経験豊富なエンジニアへの相談(たまにキャプチャを共有できるぐらい) 画面共有しながらペアプログラミング。自分がドライバーで、AIが優秀なナビゲーター。 GitHub Issueを起票してタスクを依頼。進捗はDevinの専用Webエディタで確認。人間がナビゲーターで、Devinがドライバー兼ナビゲーター。
補足: 自分の中での使い分けイメージ

1. ChatGPT / Gemini

  • 主な用途:
    • テキストベースの質疑応答
    • 文章生成、アイデア出し
    • プログラミングに関する質問
    • 一般的な知識の取得
  • インタラクション:
    • ユーザーからの質問や指示(プロンプト)に対して、テキストで応答
    • 基本的には1対1の対話形式
  • 開発プロセスとの関わり:
    • 開発プロセスの一部(調査、アイデア出し、プロトタイピングなど)を支援するが、基本的には独立したツール
  • 補足:
    • コード生成能力もあるが、あくまでテキストベース。実行環境はない
    • API経由で他のアプリケーションと連携可能

2. GitHub Copilot / Cursor

  • 主な用途:
    • コーディング支援(コード補完、提案)
    • エディタ内でのコード生成
    • エラーチェック
    • リファクタリング支援
  • インタラクション:
    • エディタ内でのリアルタイムなコード補完、提案
    • ユーザーがコードを書いている最中に、文脈に応じた候補を表示
  • 開発プロセスとの関わり:
    • 開発プロセスに統合されたツール
    • コーディング作業を効率化し、開発者の生産性を向上させる
  • 補足:
    • 多くの主要なIDE(VS Code, JetBrains IDEsなど)で利用可能
    • 開発者のコーディングスタイルを学習し、より適切な提案を行う

3. Devin

  • 主な用途:
    • 自律的なソフトウェア開発(タスクの実行、問題解決、コード生成、テスト、デプロイ)
  • インタラクション:
    • ユーザーからの指示(自然言語、タスクリスト、GitHub Issueなど)に基づき、自律的にタスクを実行
    • 進捗状況や結果は、専用のエディタやログで確認可能
  • 開発プロセスとの関わり:
    • 開発プロセス全体を自動化、または大幅に効率化することを目指す
    • 設計、実装、テスト、デプロイなど、従来の開発プロセスをDevinが主体的に実行する
  • 補足:
    • WebベースのIDE(Devin専用エディタ)を提供
    • Slackから利用が可能
    • GitHubとの連携が可能(PRの作成、参照など)
    • 将来的には、他のツール(Notion, Figmaなど)との連携も期待される

Devinの強み - より人間(他人 / Agent)のようなインターフェイスのAI

1. 自然言語での指示から実際のPR作成までが一貫して可能

これがDevinの一番の強みであり、話題になった要因だと思いますが、SlackやDevinのチャット画面から日本語で指示をして、人間側がブランチを切り替えたりコードを書いたりしなくても勝手にPRが作ることができる。という体験がこれまでの生成AIとは一線を画しているなと感じています。

さらに、業務委託としてジョインした人間の目線で感じるところとして大きいのが、Devinに指示している人間がプロジェクト詳細にまではまだ詳しくない状態でも、Devinがある程度代わりに調べてくれるため「こういうものだよね?」という質問を通して認識齟齬のセルフチェックしながらプロジェクトへの貢献作業ができる点です(Devinと一緒にオンボーディング受けていて、仲間みたいな気持ちになる)

例えば、以下のような形での依頼できちんとPRが作成されていました

Devinに自然言語でSlackからボタンカラーを差し替えるPRの作成を依頼したキャプチャ

コラム

これができるのは、みやっちさんも記事で書いていた

プログラミングの場合は "コンパイルエラー"(プログラムの文法ミスを自動チェックする機能)や "テスト"(動作確認)などで誤りをすぐ検出できる仕組みがあるのが大きいポイントです。つまり、AIが間違えても即座に気付けるという安全性があります

という前提があるな〜と思いました。

つまり、テストやコンパイル時のエラー発生によって「確認」という行為が人間の手を介さずにできていることで、AI Agentの活用度合いが高まる。という話です。
ただ、翻って考えると人間の「確認」が大きくなり、その確認作業時間が全体のボトルネックになるような作業をAI Agentに依頼するのは本末転倒になりやすいのかな…と実感しています。

なので、 AI Agentに頼む範囲は「成果物が人間が現実的な時間で理解できる範囲」 にしておき、さらには「人間はAI Agentにとってボトルネックになるものだ。」という前提で使うのが大事なのだと思っています。

2. GitHub PRの参照が可能

上述の話にも若干繋がるのですが、PRを作れるということは参照することもできる。ということでして「過去の自分や他の人が作ったPRを参考に作って」や「過去のPRにミスがあってこういう状態になってるから修正して」というのが かんたんにできます。

もちろん、PRタイトルやPR Description部分のテンプレートや書き方も踏襲させることができます。

今までは構文解析などを使って自前で作っていたScaffollding / Codemodツールなどがもっと柔軟にできるようになったので、それらが不要になった。というのがある種、生成AIによる変化かもしれません。

例えば、以下のような形で自分が作業した部分に不具合があったので修正をしてもらうPRを出す指示をしたりしていました。(ただし、↓の依頼ではDescriptionsにキャプチャ貼る部分は失敗していました。「ローカルでキャプチャして」とか言えばいけたのかもしれない…?)

過去のPRを参照して、追加作業・修正作業のPRを作成する依頼をしたキャプチャ

コラム

とはいえ、現時点のDevinにおける理解可能なコンテキスト量は思っているよりも少ない(広げようとすると時間 ≒ お金がかかる)とは思っているので、かなり細かい範囲でプロダクションコードもテストコードも切って作業させるべきだと考えています。そのために、コンポーネント志向やレイヤードアーキテクチャなど、細かい単位で切りやすいアーキテクチャを選択しておくのはAI協働時代においても強いメリットになるかもしれません。

具体的な流れとしては、一歩目の指示は細かい範囲で依頼する。ここで問題なければPR化しちゃう。それでダメなら、そこに追加してステップごとに作業依頼をする。という流れが良いかなと思っています。

もしくは、いっそのこと相手が人間ではないので、そのPRを担当していたDevinセッションをオフにしちゃって、PR自体を奪って手元でGitHub Copilotと追加作業をしてコミットを積む。みたいなこともやるのがよいかな?と思っています👀(人間目線では、最初のちょっと手間に感じる部分を代替してもらえるというベネフィットがあります)

ローカルの環境を使わなくても良い

Dependabotが作ったPRでCIが落ちている場合や、ちょっとしたリファクタリング作業などの「変更するコード自体はそんなに多くないんだけど、手元でPR作ったり動作確認したりちょっとだけ手間かかるんだよな…」という作業って、毎日のように頭に浮かんでは消えを繰り返しているのではないでしょうか?

手元の環境が大きめのプロジェクトの実装中だったりすると「ブランチを切り替えるのめんどくさい…」となって後回しにしてしまったりすることもあるでしょう(自戒)

それを解決できる方法として、Devinでは1セッションごとに環境(コンテナをベースにした環境)がDevin内に用意されるので、頭に浮かんだタイミングで一旦SlackでDevinに指示をしてセッション立ち上げを行い、対応方針の検討や軽いPRの作成までやっておいてもらう。というのが可能です。

また、Dependabotの対応などの場合、CIやテスト実行時のエラーログに原因や対応策が出ていることが多いです。この場合、バージョンアップデートの作業をDevinでも問題なく対応しやすいところが相性が良いですね。

yoshikenさんが以下のように実行しているのをみて「これは賢い…!」ってなったので例示はこちらを使わせていただきます🙋

DependabotのPRを渡し、対応をDevinに依頼するキャプチャ

コラム

これまで自分は「人間が覚えていられる範囲はたかが知れている」と考えて積極的にPCやスマホにメモやTODOリストを書いて「記憶・自分の頭から一旦追い出そう、必要になったタイミングで取り出せるようにしておこう!」と考えてきました。

ただそれが、AI Agentの時代になると 「追い出した上で勝手に解決してもらう」というところまで、これまで以上に低コストで実現できる(使用人や秘書を雇えば今でもできなくはないけど、誰でもできるわけではない)ようになることが一番AI Agent時代の大きい変化だなぁと思っています。

このAgentな動きは、「あくまで人間の判断・指示をベースにして動く」という状態と「自分の作業環境・手を使わなくても良い」という状態どちらも満たせる必要があると思っています。
そのため、ClineやClaude Desktop(MCP)のようなローカル環境を目の前で勝手に動かすアプリケーションは目の前でドラム式洗濯機を眺めているような感覚になるので、あまり惹かれていなかったりします🤔

だったら、GitHub Copilotのようにサジェストを出してくれるペアオペ相手としてほしいんですよね…🤔(これがAgentic Workflowな気もする)

ワークスペース内の調査代行

Devinには自然言語で指示するので「検索」という行為を通常の横断検索よりも柔軟な範囲・検索条件で実行することができます。

また、「ワークスペース(プロジェクト・リポジトリ)」という範囲である程度しぼりながら、表記揺れも吸収しつつリストアップする。という動きであれば比較的精度高く検索することができそうです。(変数名の想像がつきにくい、一般名詞関連のコードを探す時など想像がつかない場合はなおのこと適している感じがある)

ただ、「ファイルを横断的に検索してもらう」と「Storybookファイルが必要か?という判断をする」を同時に行う命令は精度の問題があったり、コストがかかりすぎそうだった(思考ステップが思った以上に多かった)ので途中で止めたりもしました。

Devinにワークスペース内を検索してStorybookが必要なものがあるかの調査依頼をするキャプチャ

Devinの弱み - まだ苦手なこと、注意すべきこと

これまでの得意なポイントとは逆に、個人的に感じたDevinの弱みをまとめておきます。

外部リソース(Notion/Figma)への直接アクセス制限

ここに対しては、Devin側に外と連携するプラグインが追加される。などのインターフェイスレベルでの解決はあるとは思います。
ただ、以下のような根本的な問題がありそうで、Devin(に限らずAI Agent)の利用者としてはそれをどう解決するかを考えていかねばいけないポイントだと感じています。

  1. AI Agentに搭載されたLLMが認識可能な範囲のトークン数が、AI Agentを便利に使える範囲を決める
    1. AI Agentを提供しているサービスのコンピューターインフラと利用しているモデル一つ一つが一定以上の規模のトークンを理解し、高速にレスポンスできないとAgenticな挙動を実現できず、中途半端な情報量をつまみ食いした作業をしてしまって、人間がそれを指摘して治す 。と言う流れになってしまう問題
    2. 上述のような実用に足るAI Agentを実現するのに 必要なコンピューターインフラを(サービス提供元の企業がビジネスが継続できるレベルで)用意し続けられるのだろうか? という問題
  2. そもそもAI Agentから見た外部リソース(社内の知識資産)って綺麗に整えられてるっけ?問題
    1. Notion、Figmaなどをはじめとした知識資産はどんな規模の企業になっても一時的に作られたファイルなどが生まれるし、そこにしかない情報があったりするので情報の鮮度とプライオリティがまちまちになりがち。結果、上述のトークン数問題で頭打ちになってしまうのではなかろうか…(あくまで推測)
    2. Notion AIでSlackも含めて検索し、それらを要約して使うRAGのような形は一つの解決策っぽいけど、あくまで人間が読むことを前提 && 人間に判断できる知識がある前提なので、AI Agentが見つけたデータが誤っていた場合に自己修正してPR作成というアクションまで辿りつけるのだろうか…?

この辺りの問題は人間側のワークフローや情報整理の仕方にもよるので、AI Agentを使う前にチームの情報整理の仕方を見直すことも大事なのかなと思っています 🙋

ゼロからの生成の難しさ

既存のLLMにも言えることですが、AI Agentは既存の思想をなぞることはとても得意ですが、ワークスペース内に参考にできるファイルがないものを一発で作る。というのはまだまだ苦手そうです。

テクニックとしてプロンプトエンジニアリングを使って「LLMがすでに学習した情報をベースにした最大公約数的回答を得る」という選択肢もありますが、それを元に自分が作業するscaffoldingを担ってもらうだけならまだしも、一発でマージできる状態のPRを作るにはクオリティコントロールがうまく行かない感覚があります。

なので、細かいところだとLinterの作成やフォーマットルールの設定、大きいところだとチームの温度感やレベル感・サービスのフェーズに合わせたアーキテクチャの選定を行って、情報としてリポジトリに残っている状態(前述のとおりADRをMarkdownファイルにしておくとか)にした上でAI Agentを動かすのが良さそうかなと思っています🙋

この考え方に関しては、Ubieさんの記事でも似た考え方が言及されていて、自分の考えともリンクしているなと感じているのでこちらもぜひご覧ください🙋

コラム

個人的には、アーキテクチャの選定はDevinにやらせるよりもChatGPTやGeminiのような、人間が主体で相談している感覚になる生成AIを使うのが適していると感じています。

わかりやすいイメージで言うとSlackで先輩エンジニアと話しながらラバーダッキングするテンションで作っていく感じですね。

僕自身がUIやフロントエンドに興味が強いので、UIが異なっていることで人間側のテンションや向き合い方が変わることを検証するためにAIを触っていたりします。

自然言語で指示して柔軟にタスクの対応を24時間行ってくれる。という生成AI自体の本質的価値が大きくは変わらない範囲で、なおかつ汎用的な使い方がしやすいインターフェイスで作られたいろんな形式のAIを使ってみてるのですが、意外とUI次第で人間側の使うテンションが変わるのを感じていてこの辺りとても面白いです👀

費用

これに関しては、使いこなし度合いによって高いと感じるか安いと感じるかが変わると思います。
個人的な感覚としては金額面だけ見てかなり高いな…と感じていましたが、実際に使ってみると人間のエンジニアを一人雇い、オンボーディングして実作業を開始できるようにサポートするよりかは相当コストが低いと感じることが多いです。

その分、「仕事を奪われるのではないか…感」みたいなのは少し感じていて、使いこなし度合いが上がれば上がるほどお得感を感じるようにはなりつつ、若干のジレンマを感じることはあります🤔
とはいえ、できる限り「金額高いな…」や「仕事なくなるんじゃ…」のようなネガティブな先入観を持たず、まずはフラットにツールとしてのAI Agentに対して触り始めてみてほしい。というのが自分の思想なので、実態をできる限りお伝えしたく、こういう記事を書いていたりします。

また、それとは別に「売上は全てを癒す」という言葉もあるとおり、売上が立っていて余裕がある時は良いのですがここまで高いとさすがに最序盤でコストカット対象になりうるサービスだなと思っているので、定期的な費用対効果が高いことの証明やそのための活用方法などをどんどん使って学習していきたいな〜と思っていたりします🙋‍♀️
GitHubはお金がかかるので解約します!と言われたらエンジニアが退職を検討するように、Devinはお金がかかるので解約します!と言われた時に退職検討するようなサービスにいずれはなっていく(その頃にはDevinじゃないものな気はするけど)と思っているので、必要経費であると言えるぐらいにきちんと活用した上で、適切に費用対効果が合う・コスパが良いツールであるとコミュニケーションしておきたいサービスだなと考えています!

Devinの使いどころ (ユースケース)

最後に、自分が現時点おDevinの使い所として良いな、合っているなと感じたユースケースをまとめておきます

強みを活かせる場面

  • 人間がテストコード・テスト内容を見るだけで責任を担保できる範囲のタスク
    • 小規模な機能追加、修正
    • リファクタリング
    • バグ修正
    • 特定のPRを参考にしたコード修正
  • 既存のコードにコメントを追加したり、Docsを追加したりするタスク
  • 技術調査

避けるべき/注意すべき場面

  • 大規模な新規開発
  • 複雑なアーキテクチャ設計
  • 創造性が求められるタスク
  • プロジェクト固有のルールが多数存在するタスク(特に言語化・テキスト化されていない場合)
  • セキュリティが非常に重要なタスク

まとめ

以上、業務委託でDevinを使わせていただいているエンジニアの視点からDevinの強み・弱み、使いどころをまとめてみました。

個人的にAIに対して色々可能性を感じていて、いろんなプロダクトでいろんな使い方を試している中で、プログラミング領域におけるAI Agentの走り(として語り継がれそうな)Devinを触れたのはとても経験としてありがたいですし、肌感覚を養えてとても助かっています🙏
なによりmentoさんに対して、業務委託でのJoinにも関わらずDevinくんを使わせていただけていることに感謝です🙏🙏

今のところの個人的なDevinに対しての感想は、やはりLLM・AIの特徴の「既存の思想や考え方、方針をなぞるのが得意」という部分が強めなバーチャル社員エンジニア。という感じです。

現状、参照できるトークン数の問題や、コンピューターリソース問題で拙い部分も大いにあるな〜とは感じてはいますが、ここはサービス運営者(Cognition Labs)のお財布事情やブランディング、意思決定によっていずれ解消されるとも思っています。

それよりも「AIは人間・組織にマッチした思想・方針を作ることはどうしても得意ではない」という部分に着目して、エンジニアとして能力を研鑽していくのがとても重要そうだな…と強く感じたので、生成AI時代、AI Agent時代を生き残ってビジネスに対して価値提供できるように頑張っていきます💪

ここまで読んでいただきありがとうございました!

Discussion