ブログ一覧に戻る
AI設計書ドキュメントSVGClaude Code

設計書に SVG を埋め込んで AI と理解を共有する — 文字だけでは伝わらないアーキテクチャ

はじめに

メンテナンスモード設計を AI とペアで詰めている最中、3 シナリオ (通常稼働 / アプリ層 READ-ONLY / エッジ層 FULL_STOP) の挙動が議論を周回しました。コードと文章で説明し直すたびに「で、ここの状態はどちらでしょう?」「読み取り失敗時は通すのか、止めるのか?」が再浮上します。

困って SVG を描いて埋め込んだら、その後の議論が一気にスムーズになりました。「文字で説明する」と「絵を見せる」の差 が、AI 協業文脈ではこれまで以上に大きい、と気づいた経験を共有します。

何が起きていたか

メンテナンスモードの設計ドキュメントは文字で書かれていました:

  • エッジ層 (Cloudflare Worker) の役割
  • アプリ層 (NestJS Global Middleware) の役割
  • エッジ層とアプリ層の使い分け (表 1 つ)

これだけでも論理的には伝わるはずなのですが、実際の会話を振り返ると次のようになります。

  • 「inMaintenance=false の時、Worker は何をするのでしょう?」(→ pass-through)
  • 「逆でしょうか?」「いえ、逆ではありません」
  • 「READ-ONLY モードの時、GET はアプリ層で止まるのか、通るのか?」
  • 「allowedPaths は KV のどこにあるのでしょう?」

部分理解の積み上げが噛み合わない という症状でした。AI 側 (Claude) は適切に答えているのですが、こちらが質問の文脈をうまく作れず、毎回違う方向から尋ね直してしまっていました。

SVG を入れたら何が変わったか

3 シナリオ対比の SVG を 1 枚作って設計書に埋め込みました:

[ 通常稼働 ]      [ アプリ層 READ-ONLY ]  [ エッジ層 FULL_STOP ]
  User                User                User
   ↓                   ↓                   ↓
  CF DNS              CF DNS              CF DNS
   ↓                   ↓                   ↓
  CF Worker           CF Worker           CF Worker
  ✓ pass              ✓ pass              ✗ block (KV: inMaintenance=true)
   ↓                   ↓                   ↓
  GCLB                GCLB                503 HTML
   ↓                   ↓
  NestJS Guard        NestJS Guard
  ✓ pass              ✗ block (DB flag)
   ↓                   ↓
  Controller          503 JSON
   ↓
  200 OK

各列が 1 シナリオで、上から下に処理経路が降りていく構造です。色分け (緑 = pass-through、赤 = block) で「どこで止まるか」が一目で分かります。

埋め込んだ直後の会話は次のようなものでした。

  • 「アプリ層 READ-ONLY では Worker は素通りなのですね」
  • 「state.inMaintenance はエッジ層だけが見て、アプリ層は別の DB flag を見るのですね」
  • 「allowedPaths はエッジ層の概念で、アプリ層は読み取り安全とマークしたエンドポイントで個別判定するのですね」

それまで 3 ターンかかっていた確認が 1 ターンで済む ようになりました。

なぜ AI に対して SVG が効くか

これは AI のコンテキスト処理特性に関係しています。

文章ベースの設計書の限界

AI は文章を順次的に読みます。複数のシナリオが文章で長く説明されている場合、

  • 「シナリオ A はこう動きます。ただし B のときは違って…」
  • 「上記のうち X の場合は別経路で…」

の枝分かれを 読み手が脳内で図にまとめ直す 必要があります。AI もこの再構成を裏でやっていますが、再構成のたびに少しずつ意味がずれていく (= 部分理解が積み上がる) 現象が起きます。

SVG / ダイアグラム の効能

SVG が埋め込まれていると、AI は 同じ視覚情報 を見ることができます。Claude のような multimodal AI は SVG (実体は構造化テキスト) を直接読めるので、

  • 「左列が通常稼働、中列がアプリ層 READ-ONLY、右列がエッジ層 FULL_STOP」
  • 「緑矢印は pass-through、赤矢印は block」

という 構造ラベル が共有された状態で会話できます。これは人間同士でホワイトボードに描きながら話すのと近い体験です。

SVG を埋め込む具体的なテクニック

niyase の設計書では以下を実践しています:

1. シナリオ対比は必ず横並び

n シナリオを比べる場合、列を横に並べて 同じ高さで対応点を読み比べられる ようにします。縦並びだと「あの矢印」「この矢印」が指せなくなります。

2. 色は意味で固定

  • 緑 = pass-through (機能している方向)
  • 赤 = block (停止方向)
  • 紫 = bypass (特別な経路、ADMIN)
  • 橙 = 緊急時経路

色を意味と結びつけると、AI も人間も 「この色 = この概念」 と参照できるようになります。

3. 数値や文字列は最小限

SVG は文字を含められるので欲張りがちですが、「読んでもらう情報」と「見てもらう構造」は分けます。詳細は近接する文章で書き、SVG は構造だけ示します。

4. ファイルパスを明記して再利用

![メンテナンスモード 3 シナリオの判定フロー](./_assets/maintenance-flow.svg)

_assets/ 配下に置いて、設計書からの相対パスで参照します。AI が「この SVG の何行目を見て」と指せるようにします。

「設計書 = AI と人間の共有メンタルモデル」

設計書 (design doc) の伝統的な役割は 「未来の自分 + チーム」に向けて記録する ことでした。が、AI 協業時代では役割が拡張されます:

audience役割
未来の自分思考の足場、立ち戻る場所
チームメンバー引き継ぎ、レビュー
AI 協業相手 (Claude 等)共有メンタルモデル、誤解防止

3 番目の audience が増えたとき、「文章で順次的に読まれる」想定 → 「構造として一目で把握される」想定 に書き方を寄せていく必要があります。SVG はそのための有力なツールです。

派生: 同思想のツール

私たちは SVG 以外にも、AI に「見せる」ための資産を整備しています:

  • ブランドプレビュー (HTML) — Light/Dark トグル付きのカラー / タイポ / ロゴ プレビュー (ブラウザで開く)
  • インフラ全体俯瞰図 (SVG) — システム構成を一望できる図
  • 緊急アクセス経路の図 (SVG) — 緊急時の 3 層フォールバックを示す図

これらはすべて 「文章だと伝わりにくい構造」を視覚化 したものです。AI と人間の双方が同じ画面を見て話せる状態を作ると、議論が圧倒的にスムーズになります。

まとめ

観点文章だけの設計書SVG 埋め込み設計書
AI に伝わる速度順次読解 + 脳内再構成構造として一目で把握
部分理解の積み上げ起きやすい起きにくい
「逆か?」の発生頻度
議論の往復多い少ない
引き継ぎコスト文章 → 図に書き起こす必要そのまま使える

「文章で順次的に読まれる前提」で書かれていた設計書を、「AI と人間が並んでホワイトボードを見る前提」 に書き換える、というのが今回の発見でした。

SVG を 1 枚増やすコストは数十分ですが、その後の議論コストを大幅に下げてくれます。AI 協業を本気でやるなら、設計書には積極的に絵を入れていきましょう。