♻️

Devinと仕組み化で繰り返しタスクの作業効率化

に公開

こんにちは、株式会社エスマットでエンジニアリングマネージャーを担当している仙葉です
弊社ではマイクロサービスアーキテクチャを採用しており、システムの柔軟性を高める一方で、横断的な修正が必要になった際に作業量が増大するという課題があります
今回はDevinを利用し、各マイクロサービスに対して効率的に作業を行うための活用方法と、将来的な自動化への展望についてご紹介します

取り組んだタスクの概要

作業内容

  • DB管理用MSに集められているテーブル定義にカラム、テーブルコメントを追加する
  • 各マイクロサービスの実装やドキュメントを参照し、コメント内容を決定する
    • そのテーブル独自でID以外のにはサンプルデータも記載してもらう

期待する成果物

  • テーブルスキーマ修正
  • 反映用のAlterTableクエリ作成

このタスクは技術的には難易度が低いものの、複数マイクロサービスを参照し、同様の作業を横展開する必要があり、繰り返し作業による効率低下やヒューマンエラーのリスクが懸念されました(モチベーション的にも辛いのでAIに丸投げしたかった)
そこで、自立型AIエージェントツールである「Devin」を活用してタスク実行の効率化を試みました

Devinに対する3つのアプローチ

横展開を始める前に、Devinを使ってみた感じとして同じ成果を安定させることに課題感があったので、同じタスクに対して3つの異なるアプローチを試みました

1. 1ステップ毎に指示を行い、ずっと面倒を見たパターン

このアプローチでは、タスクの内容を詳細に説明し、Devinの作業をステップバイステップで監視しました

実施内容

  1. タスクの目的と要件を明確に伝える
  2. 参照すべきマイクロサービスの仕様書の場所と使い方を説明
  3. 期待する成果物のフォーマットを明示
  4. 途中経過を確認しながら必要に応じて軌道修正

結果

  • やり取りの回数は多くなり、自分の時間も使ったが、期待通りの作業を完了できた
    • 自分で実装を確認するよりは早いが、この進め方ならDevin以外の選択肢でも良さそう

2. サマリーを作成して丸投げしたパターン

1回目のやり取りから得た知見を元に、タスク内容をサマリー化し簡潔な指示で依頼しました

実施内容

  1. 前回指示した内容をベースにサマリーを作成
  2. ステップなどは設定せず、1で作成した内容を1度に依頼する

結果

  • AlterTableクエリのみ作成され、テーブルスキーマの修正が含まれていなかった
  • 成果物が不完全だったため追加対応が必要になった

3. コンテキストをDevinに作らせて依頼したパターン

2回目の反省を踏まえ、Devinに対して「コンテキストを作成してから実行する」という方針で依頼しました

実施内容

  1. 1回目の成功パターンのやり取りを参考に、「このようなコンテキストを自分で作ってから実行してください」と指示
  2. Devin自身にタスク実行のための詳細な指示を考えさせる

結果

  • 必要な成果物は揃っており、対応内容も期待通り
  • フォーマットを指示していたが整っておらず、後処理が必要だった

各アプローチの比較と考察

その後も何度か実行してみましたが、作業コストや成果物の品質からDevinにコンテキストを作ってもらい展開していく流れが良さそうでした
Devinが作成するコンテキストには、その時に実施した対応内容なども記載されており大きく方針を外すことはなかったからです
しかし、その分コンテキストが長くなってしまったためフォーマットなど結果には影響がない細かい部分はなかなか安定しませんでした。下記はDevinからのお返事の一部です

precommitを活用し、AIではなく仕組みで成果物を安定させる

フォーマットについては細かい部分の一例であり、毎回結果を確認して指摘を行えばいいのですが、繰り返し行うとレビューが大変になってしまうので、Devinに全てを任せるのではなく仕組みとして担保する方針に切り替えました

今回のフォーマットであればSQLフォーマッターをprecommitフックに設定しました。これにより、Devinが生成したSQLコードを自動的に整形し、一貫したフォーマットで出力できるようになりました

AIに「正確なフォーマット」を求め続けるより、出力後に技術的な仕組みで自動的に整えるほうが効率的です。また、この方法であれば今後フォーマット要件が変わった場合でも、AIへの指示変更ではなく仕組みの修正だけで対応可能になります

将来的には、テーブル定義のバリデーションやドキュメント自動生成なども同様の考え方で実装していくことで、AIエージェントの強みと技術的な仕組みの強みを組み合わせた効率的な開発環境を整えることができそうです

まとめ

軽微な修正作業こそ、自動化のメリットが大きい領域ですが、「AIの監督役に人間がなる」という罠に陥らないよう注意が必要です。AIエージェントを活用する真の目的は、開発者が創造的なタスクに集中できるようにすることだからです

precommitフックのような技術的な仕組みを整えることで、AIエージェントの自走性と成果物の品質を両立できそうだと感じました。重要なのは「AIに全てを任せる」のではなく、「確実に担保したい部分は必ず同じ結果が返ってくる仕組み」を構築することです

次のステップとしては、これらの知見をチーム全体で共有し、「AIが自然に仕事をこなせる環境」を作ることで、開発者が真に価値のある業務に集中できる文化を醸成していきたいと思います

株式会社エスマット

Discussion