その他

【Devin】ファイル解析を依頼してみる!

その他
この記事は約6分で読めます。

はじめに

みなさんこんにちは。インプルの岩崎です。

本日は久しぶりにDevinの記事です。複数ファイル解析をDevinができるのか、という内容の記事になります。

AIでコード解析をしたい

社内でAI普及を進めていますが、最近ではいろいろな依頼が来るようになりました。

いままでは製造工程としてのAI(DevinやCursor)などをよく質問されていましたが、最近は設計工程でも活用できないかと質問を貰います。確かに、製造工程のAIってだいぶ普及しているなぁと思いつつ、設計工程で役立つAIってなんだろうと考えさせられました・・・。(これはまた別のお話)

その中で、コードの解析をAIでしたいという声もありました。バックエンドのプログラムは、様々なファイルが関わり合ってできていることが多いので、それをAIに解析したいというものでした。
特に、昔に書かれたコードのアップデート作業や、リニューアル作業などでは、まずはコードの解析をしてどのようなものが書かれているのかを読み取る必要があります。そこで、AIを導入することで、そのスピードを加速させていきたいというものでした。

Devinは製造だけのAIではない!

そこでひらめいたのがDevinくんです。

AIでやらせたい、とのことでしたが、LLMやCursor・Copilotを使っていちいち回していくのは効率的ではないなと思い・・・。そこで、Devinを思い出しました。

Devinは、言語を超えた移行作業や、Devin wikiという機能で、リポジトリー内のコードを解析する機能があります。これだけ読める力があるのであれば、複数ファイルに跨った解析もできるのではないかと感じました。

Devinの概要についてまとめた記事はこちらにありますから、よろしければご覧ください。

解析をしてもらおう

そこで今回は、Devinにコード解析をしてもらおうと思います。

といっても、ただ解析するだけではDevin wikiをみておしまいでいいと思います。今回は、求めるアウトプットをmdファイル形式で書き出してもらう、ということをしてみたいと思います。必要な情報だけ解析をして教えてもらう、ということですね!

解析の準備

まずは解析するファイルがないことには、解析できません。
そこで、GPTに適当なファイルを作ってもらいました。今回は、PHPファイルで、それぞれのファイルが関連を持っているファイルにしてみました。その方が解析しがいがありますよね笑

ファイルテーマ:「売上データを取得してPOSシステムに同期する」

  1. index.php — エントリーポイント(リクエスト受付)
  2. controller.php — コントローラ(リクエストを処理に振り分ける)
  3. sales_model.php — モデル(DBからデータ取得)
  4. db.php — 共通DB接続処理
  5. pos_api.php — 外部API連携処理

これのらファイルをリポジトリーに投げて、Devinに解析してもらいましょう。

プロンプト

それでは早速解析してもらいます。以下のプロンプトを使用して、今回は解析を依頼しました。

おはようございます。Devin。今日の業務はコード解析です。 
GitHubリポジトリに含まれるPHPファイルを解析してください。


# 出力要件
- 出力形式は Markdown
- リポジトリ直下に `docs/analysis/` フォルダを作成し、そこにファイルを保存すること
- 以下の2種類のレポートを生成すること
  1. `overview.md`  
     - リポジトリ全体の概要  
     - エピック単位での機能区分(どのファイルがどのエピックに属するか)  
     - 呼び出し関係マップ(できれば図解、難しければテキスト)  
     - 外部連携(POSなど)の一覧  
  2. ファイルごとの詳細(例: `index.md`, `controller.md` …)  
     - 提供するAPI関数の一覧  
     - 入力・出力の仕様  
     - 処理概要(ステップごと)  
     - 外部システムとの連携がある場合は明示  
     - 改善ポイント(リファクタリング観点)  


# 追加要件
- 処理の依存関係(「このファイルが動いたら次にどのファイルが呼ばれるか」)を明示
- 共通ライブラリや外部APIの依存は横断的にまとめる
- 「今回のプロジェクトで実装する際の注意点」があれば補足
- 改善の優先度(高/中/低)を付与しても良い

「overview.md + 各ファイルのmd」+「呼び出し関係ツリー」をメインに出力してもらいます。この中でも、特に次の三つが肝になりそうなアウトプットです。

呼び出し関係マップ(このシステムの中で一番わかりにくい部分)
外部連携まとめ(POS APIがキーポイント)
改善優先度リスト(今後のアップデートに直結する)

解析してもらう

それでは先ほどのプロンプトを投げていきます。

プロンプトを渡すと、早速解析することを伝えてきてくれました。この時点ですでにファイルがどんなものか、簡単に理解して対象ファイルをあげていますね。はやい・・・。まだ1分くらいです。

その後、Plan Overviewを上げてきてくれました。
このDevinでは、実行前にプランを上げるようknowledgeを組んでいますので、このように表示されます。プランも問題なく、信頼度も高、非常に良さそうです!

そして10分ほどすると、解析が終わってPRも作ってきてくれました。早速中身をみてみましょう!

実行結果を見てみる

解析された結果を抜粋します。
まずは overview.md です。こちらはシステムを全体的に把握する資料になっています。下記の画像のように出力され、多くの項目をまとめてくれました。

  • システムの目的(内部DBと外部POSのデータ同期)
  • 技術スタック(PHP / MySQL / REST API など)
  • エピックごとの機能区分(HTTPインターフェース、ビジネスロジック、データアクセス、外部連携、DB管理)
  • 呼び出し関係マップ(ASCII図でファイル間の関係を表現)
  • 外部連携の一覧(DB、POS API、HTTPクライアント)
  • 横断的な依存関係(PDO、cURL、ハードコード設定など)
  • 注意点(セキュリティ・パフォーマンス・運用・拡張の観点で改善案)

続けて index.md です。こちらはindex.phpの解析レポートになっており、個別ファイルの挙動や改善点を深掘りする資料になっています。これは5つ全て紹介すると長くなってしまいますので、こちらだけ紹介します。

  • ファイルの役割(HTTPエントリーポイント、リクエストを受け付けてJSONレスポンスを返す)
  • 入出力仕様(クエリパラメータの定義、リクエスト/レスポンス例、エラーレスポンス例)
  • 処理ステップ(依存関係読み込み、パラメータ取得、ビジネスロジック呼び出し、レスポンス生成)をコード断片付きで解説
  • 外部連携(直接はなし、controller.php経由でDB・POSへ)
  • 改善点(入力検証、エラーハンドリング、HTTPメソッド制限、CORS対応、ログ、レスポンス圧縮など)を優先度別に提案
  • 依存関係や失敗時の影響も整理

このように、どちらのファイルもかなり精度高く出力してくれました。 課題などは特になさそうでしたが、さらによくするためには、異常系やセキュリティ前提条件などが加わると、いいなと感じる結果でした。

さいごに

ご覧いただきありがとうございました。

今回検証にかけたファイルや、出力されたマークダウン形式などは、GitHubからも確認できますから、ぜひご覧ください!

GitHub - iwasakiterukazuimpl/devin_search
Contribute to iwasakiterukazuimpl/devin_search development by creating an account on GitHub.

ご覧いただき、ありがとうございました。