0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

設定はどこへ消えた? ベンダードキュメント変更検知の自動化

0
Last updated at Posted at 2026-03-24

本記事はcogley.jpの完全版の要約版です。アーキテクチャ図やBrowser Renderingの詳細などは完全版をご覧ください。

スペンサー・ジョンソンの『チーズはどこへ消えた?』は、周囲の変化にどう適応するかという話でした。クラウドセキュリティコンプライアンスの世界では、チーズ(設定画面)が常に動いています。Microsoftがメニュー名を変えた。Googleがトグルを別の管理パネルに移動した。丁寧に書いた実装ガイドが、もう存在しない画面を指している。

この問題を解決するため、ベンダードキュメントを毎週自動クロールし、自社ガイドとの差分を検出するパイプラインを構築しました。

3段階フィルタのパイプライン

コストと誤検知を最小化するため、3つのゲートで段階的にフィルタリングします。

ゲート1:RSSチェック(無料、ミリ秒)
ベンダーがページを更新したかどうかをRSSの更新日時で確認。変更がなければスキップ。大半の週はここで終了します。

ゲート2:コンテンツハッシュ(低コスト、秒単位)
RSS更新があった場合、ページをクロールしてSHA-256ハッシュを比較。前回と同じならスキップ。RSSの日付だけ変わって内容が同じケースを除外します。

ゲート3:AIドリフト分析(APIコスト、秒単位)
内容が実際に変わった場合のみ、Claudeに送ってセマンティック比較を実行。単純なテキスト差分ではなく、以下のカテゴリを検出します:

  • UIパス変更:「設定 > セキュリティ」が「保護 > 認証」に
  • 機能廃止:参照している機能が存在しなくなった
  • 手順順序の変更:設定ステップの順序が変わった
  • 新しい前提条件:以前は不要だった手順が必要に
  • 設定の移動:トグルが別の管理パネルへ移動

軽微な文言変更やフォーマットの違いは意図的に無視します。

コンパニオンWorkerアーキテクチャ

メインアプリ(SvelteKit)はWorkflowクラスやscheduledハンドラをサポートしないため、クローラーは別Workerとして動作し、同じD1データベースを共有します。Cloudflare Workflowsにより、途中で失敗しても最後の完了ステップから再開可能です。

検出実績

実際に検出したドリフト:

  • Microsoftがユーザー単位のMFAを廃止し、条件付きアクセスポリシーに移行
  • Entra管理センターのUIパスの再編成
  • レガシー認証ブロックの猶予期間の削除

いずれもクライアント対応中に混乱を招く前に、ベンダー変更から1週間以内に検出できました。

コスト

コンポーネント 週間コスト
RSSチェック(ゲート1) 無料
Browser Renderingクロール 約$0.30
Claude AI分析(ゲート3) 約$0.15
Worker計算 + D1ストレージ 無料枠
合計(約120ソース) 約$0.50

まとめ

ベンダードキュメントのドリフトは、コンプライアンスガイドを維持するチームにとって実運用上のリスクです。段階的にフィルタリングするパイプラインを組めば、コストも誤検知も低く抑えられます。週1回の実行、わずかなコスト、実際のドリフト検出。コンサルタントの工数を削減する仕組みとして、十分に機能しています。


この記事は cogley.jp に掲載されたものです。

Rick Cogley(コグレー・リック)株式会社イソリアのCEO兼創業者。東京で日英バイリンガルITアウトソーシングとインフラサービスを提供中。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?