DIVX テックブログ

catch-img

Claude Codeで脆弱性診断前の「リクエスト一覧作成」を自動化した話

目次[非表示]

  1. 1.はじめに
  2. 2.現状の課題:診断前の「リクエスト一覧作成」という泥臭い業務
  3. 3.なぜ自動化したかったか
  4. 4.やったこと(検証内容)
    1. 4.1.アプローチ1:Claude Code(ソースコード解析)
      1. 4.1.1.導入とセキュリティについて
      2. 4.1.2.検証手順
      3. 4.1.3.工夫点:失敗からの改善
      4. 4.1.4.実際の出力イメージ
    2. 4.2.アプローチ2:ChatGPT Atlas(ブラウザ操作)
      1. 4.2.1.結果:なぜうまくいかなかったか
  5. 5.検証結果と効果
    1. 5.1.Claude Codeの成果
    2. 5.2.ChatGPT Atlasの評価
    3. 5.3.AI活用で浮いた時間の価値
  6. 6.気づき
  7. 7.まとめ

はじめに

エンジニアの皆さん、こんにちは。DIVXの矢田です。

私たちDIVXは、「『AIを使わない』は評価しない」と公言するほど、全社を挙げて生成AIの業務活用を推進しています。新しいツールが登場すれば即座に現場で検証し、泥臭い課題もAIで解決していくのが私たちのカルチャーです。

今回は、Webアプリケーションの脆弱性診断や見積もり業務につきものの「リクエスト一覧作成」という非常に手間のかかる作業を、Claude Codeを使って自動化し、作業時間を劇的に短縮した事例をご紹介します。

比較対象としてChatGPT Atlasでの検証結果も併せて記載しますので、業務効率化の参考にしていただければ幸いです。

現状の課題:診断前の「リクエスト一覧作成」という泥臭い業務

Webアプリの脆弱性診断やその見積もりを行う際、まず最初に行うのが「対象アプリの全体像の把握」です。具体的には、「このアプリにはどのような画面があり、いくつのHTTPリクエストが存在するか」を洗い出す作業です。

これまでは、以下のような手順で進めるのが一般的でした。

  1. ブラウザで対象アプリを開く。
  2. DevTools(開発者ツール)のNetworkタブを開く。
  3. 画面上のボタンをポチポチと押し、機能操作を行う。
  4. 発生した通信を一つずつ確認し、スプレッドシートに手動で転記する。

これは非常に泥臭く、属人化しやすい作業です。ボタンの押し忘れがあればリクエストが漏れますし、転記ミスも起こります。

今回、この工程を「Claude Code(ソースコード解析)」と「ChatGPT Atlas(ブラウザ操作)」の2つのアプローチで自動化できるか検証しました。結論から言うと、Claude Codeを使うことで作業時間を従来の1/5に短縮することに成功しました。

なぜ自動化したかったか

なぜこの作業を自動化したかったのか、背景には以下の課題がありました。

  • API仕様書がない案件が多い:
    • ドキュメントが最新化されておらず、結局ブラウザ操作による全体把握が必要になるケースが大半です。
  • 手動作業の辛さとコスト:
    • 1リクエストの確認・転記に約1分かかるとします。
    • 小〜中規模アプリで300リクエストある場合、単純計算で約5時間の単純作業が発生します。
  • 品質のバラつき:
    • 「ボタンの押し忘れ」や「条件分岐の奥にある機能」の抜け漏れが発生しやすいです。

営業・見積もりフェーズでは、「全体像(リクエストの網羅性)を素早く把握すること」が求められます。そこでAIの出番となりました。

やったこと(検証内容)

今回、以下の2つのアプローチを試しました。

アプローチ1:Claude Code(ソースコード解析)

Anthropic社が提供する、ターミナルから直接AIを操作できる「Claude Code」を使用し、ローカルにあるリポジトリ(ソースコード)を直接解析させました。

導入とセキュリティについて

  • 導入: Claude Codeを利用するためにはセットアップが必要です。詳細な手順は公式ドキュメント(https://code.claude.com/docs/ja/setup)をご参照ください。
  • セキュリティ: 企業で利用する上で最も重要なのがデータプライバシーです。Claude Codeを利用する上で、送信されたデータがモデルの学習に使用されない設定にしているため、顧客のソースコードを扱う業務でも安心して導入できました。

検証手順

  • 手法: VSCodeで対象リポジトリを開き、ターミナルから claude コマンドで起動。
  • プロンプト: 実際に以下の指示を投げました。

このリポジトリ内のソースコードにあるHTTPリクエストが一覧化されているCSVファイルを作って欲しいです。

HTTPリクエスト一覧では、以下の項目をCSVファイルのカラムにしてください。

- No(1から順番に割り振る)

- ドメイン(該当HTTPリクエストのドメイン)

- メソッド(該当HTTPリクエストのメソッド)

- リクエストURL(該当HTTPリクエストのドメイン抜きのURL)

- リクエスト種別(画面表示、情報取得、情報送信、リダイレクト、ファイル送受信等)

- 画面名(該当HTTPリクエストが送信されるに至るボタン等が存在する画面)

- 操作手順(該当HTTPリクエストが送信されるに至るまでのブラウザ上での操作手順を示す)

同じリクエストURLでもメソッド名が異なる場合は別リクエストとして扱ってください。

工夫点:失敗からの改善

実は最初、「リクエスト一覧を作って」とだけ指示したところ、不要なファイルが大量に出力されたり出力先が分割されたりしてしまい、二次利用しにくい状態になってしまいました。また、内容も求めているものとは乖離していました。

そこで、「CSVファイルで作って」「カラム定義(No, ドメイン...)をこれにして」と出力形式と構造を明確に指定することで、意図通りに出力をコントロールできました。

実際の出力イメージ

実際にClaude Codeが生成したCSVの一部がこちらです(機密情報はマスキングしています)。

No,ドメイン,メソッド,リクエストURL,リクエスト種別,画面名,操作手順

1,https://staging.service-name.com,GET,/,リダイレクト,トップページ,LPトップURLへリダイレクト

2,https://staging.service-name.com,POST,/login,情報送信,ログイン処理,IDとパスワードを入力してログインボタンを押下

3,https://staging.service-name.com,ANY,/mypage/home,画面表示,マイページホーム,ログイン後のホーム画面を表示

4,https://staging.service-name.com,ANY,/user/search,画面表示,ユーザー管理検索,検索条件を入力して検索ボタンを押下

5,https://staging.service-name.com,ANY,/user/exceloutput,ファイル送受信,ユーザー一覧Excel出力,ユーザー一覧をExcelファイルで出力

※メソッドが ANY となっている箇所がありますが、これはソースコード上のルーティング定義でメソッドが限定されていない( match 等で定義されている)箇所をClaude Codeが忠実に拾っているためです。ブラウザの通信ログではなく、コード自体を解析している証拠と言えます。

驚いたのは、ソースコード上のコメントや変数名から推測して、「画面名」のカラムまでかなり高い精度で埋めてくれたことです。これにより、人間が見ても直感的に分かりやすいリストが一発で完成しました。

アプローチ2:ChatGPT Atlas(ブラウザ操作)

次に、ChatGPT AtlasでAIにブラウザ操作を任せるアプローチも試しました。

  • 手法: ブラウザ上でAIに指示を出し、ブラウザ操作を行わせてリクエストを拾わせる。

  • プロンプト: Claudeと同様のカラム定義に加え、「今ログインしているアプリ内にある機能を操作して...」と指示。

結果:なぜうまくいかなかったか

リクエスト一覧は生成されましたが、実際のDevToolsのログと照らし合わせると、いくつかの致命的な問題が見つかりました。

  • ハルシネーション(幻覚):

    • 実際には存在しないAPIを「あるはずだ」と推測してリストに含めてしまうケースがありました。

    • GETメソッドの箇所をPOSTと誤判定するミスも散見されました。

  • 制御の難しさ:

    • 制御が難しく、外部リンクを踏んで外部サイトへ遷移し、迷子になる挙動が見られました。

検証結果と効果

2つのアプローチを比較した結果、「リクエスト一覧作成」においてはClaude Codeの圧勝でした。

Claude Codeの成果

  • 時間短縮:

    • 手動作業:約5時間(300リクエスト想定)

    • AI活用:約1時間弱(AIによる生成数分 + 人間による精査・修正)

    • 改善率:作業時間が約1/5に短縮

  • 品質:

    • 指定したカラム通りに綺麗に出力されました。ソースコード(ルーティング定義やAPI呼び出し箇所)を直接読んでいるため、「ボタンの押し忘れ」による抜け漏れが理論上発生しません。

ChatGPT Atlasの評価

  • 課題:

    • リンクの遷移先制御が難しく、正確な「網羅」には不向きでした。また、推測によるハルシネーションが含まれるため、結局人間が全件チェックする必要があり、工数削減効果が薄い結果となりました。

  • 結論:

    • 現状では、画面操作を伴う調査を「丸投げ」するのは難しいです。特定の画面の挙動確認など、あくまで人間が操作する際の補助的な立ち位置に留まります。

AI活用で浮いた時間の価値

単に作業が早くなっただけではありません。単純作業(転記)の時間がゼロになったことで、エンジニアは「洗い出したリクエストに対して、どのような脆弱性リスクが考えられるか」「どのリクエストを重点的に診断すべきか」という高度な思考に時間を割けるようになりました。これは大きな品質向上につながります。

気づき

今回の検証を通じて得られた重要な気づきです。

  • ソースコード vs ブラウザ操作

    • リクエスト一覧を作るという「網羅性が重要なタスク」においては、不安定なブラウザ操作をさせるよりも、Claude Codeにソースコードの構造を読ませる方が圧倒的に速く確実でした。

    • ただし、Claude Codeも万能ではありません。JavaScriptで動的にURLを組み立てている複雑な箇所などは拾いきれない場合があるため、過信は禁物です。

  • AIとの分担マインド

    • 「AIに100%完璧な成果物を作らせる」と考えると失敗します。 「AIに下書き(9割)を爆速で作らせ、人間が最後の精査(1割)をする」というフローに変えるだけで、心理的ハードルが下がり、トータルの生産性が跳ね上がりました。

  • 職能の境界線が溶ける

    • 今回はエンジニアが行いましたが、Gitの閲覧権限さえあれば、非エンジニア(営業担当やPM)でも「このシステムにはどんな機能やリクエストがあるか」を即座にリスト化できる可能性があります。

まとめ

「ブラウザをポチポチしてスプレッドシートに転記する」という泥臭い作業も、適切なAIツール(今回はClaude Code)を選ぶことで、劇的に効率化できることが証明できました。

私たちDIVXでは、華やかな生成AIを活用したシステム開発だけでなく、こうした「現場の泥臭い課題」こそ積極的にAIで解決していく姿勢を大切にしています。最新技術をいち早くキャッチアップし、実務に落とし込むスピード感こそが、私たちの強みです。

AIを活用した業務効率化やシステム開発、脆弱性診断に関するご相談はこちらからお気軽にお問い合わせください。

お気軽にご相談ください


ご不明な点はお気軽に
お問い合わせください

サービス資料や
お役立ち資料はこちら

DIVXブログ

テックブログ タグ一覧

人気記事ランキング

関連記事