古くならないアーキテクチャ図:生きたドキュメントのためのワークフロー

最新の状態を保つアーキテクチャ図のための、アーキテクチャドキュメントのベストプラクティス。唯一の情報源、明確なオーナー、更新トリガー、チェックリストを紹介します。

2026/10/16

古くならないアーキテクチャ図:生きたドキュメントのためのワークフロー

どのエンジニアリング組織にも必ず一枚あります。何年も前の数週間だけ正しかった、Wiki 上のアーキテクチャ図です。新しく入ったメンバーはそれを読み込み、その後で同僚から「箱の半分は名前が変わっているし、真ん中のキューは去年の春に置き換えた」と教わります。アーキテクチャドキュメントのベストプラクティスの多くは「何を描くか」に焦点を当てています。この記事では、もっと難しい部分を扱います。最初のドラフトの後も図を正しく保つこと、そして図を使い捨ての成果物ではなく「生きたドキュメント」として扱うワークフローです。

アーキテクチャドキュメントが古くなる理由

図が古くなるのは、人が怠けているからではありません。図を取り巻くプロセスが、古くなることを当たり前にしているからです。

  • 使い捨ての成果物になっている。 図は設計レビュー、移行プロジェクトのキックオフ、監査のために描かれます。その会議が終われば、誰もそれを再び開く理由がありません。
  • スクリーンショットがあちこちに貼られる。 元のファイルは誰かのノート PC にあり、PNG が Wiki、オンボーディング資料、3 つのスライド、README に貼られます。コピーは 5 つになり、どれも編集できません。
  • オーナーがいない。 「プラットフォームチーム」はオーナーではありません。具体的な担当者がいなければ、誰もが「誰かが更新するだろう」と考えます。
  • 更新のきっかけがない。 コードの変更はプルリクエスト、レビュー、CI を通ります。図が変わるのは誰かが思い出したときだけで、それがシステムが変わった瞬間であることはまれです。
  • 情報を詰め込みすぎている。 すべての Pod、すべてのキュー、すべての IAM ロール、すべてのユーザージャーニーを載せた図は、完成した日に古くなります。どこかで何かが変われば、それだけで図が間違いになるからです。

これらはどれも、まずツールの問題ではありません。より良い描画ツールを使っても、オーナー不在は解決しません。ただし、ツールは正しいワークフローを安くも高くもします。

生きた図のためのアーキテクチャドキュメントのベストプラクティス

私たちが推奨するワークフローを紹介します。あえて主張をはっきりさせています。

1. 図ごとに唯一の情報源を持つ

それぞれの図は、編集可能な場所にちょうど一つだけ存在します。それ以外はすべて、その場所を指すリンクか埋め込みです。どこかに貼るために PNG をエクスポートしようとしているなら、リンクで足りないか考えてください。たいていは足ります。

2. コピーせずリンクする

Wiki、ドキュメントサイト、README は、図の画像を載せるのではなく、生きた図を参照するべきです。ライブで埋め込まれた図は元が変われば変わりますが、貼り付けたスクリーンショットは次の変更以降ずっと間違ったままです。監査担当者向けの PDF など、静的な画像がどうしても必要な場合は、日付付きのエクスポートとして扱い、日常的に参照されるドキュメントには置かないようにします。

3. オーナーを決める

すべての図にオーナーを置きます。個人、または窓口となる担当者が決まっているチームです。オーナーがすべての変更を描くわけではありませんが、図が間違っていることに気づき、質問を受けるのはオーナーです。オーナー名は図そのものと、図のインデックスの両方に書きます。

4. 既存のイベントに更新トリガーを結びつける

記憶に頼らないでください。すでに発生しているイベントに図の更新を結びつけます。

  • プルリクエスト。 PR テンプレートに「アーキテクチャへの影響」のチェックボックスを追加します。
  • ADR。 承認されたアーキテクチャ決定記録(ADR)は、変更対象の図にリンクし、承認の一部として図を更新します。
  • インシデントのポストモーテム。 図が間違っていた、あるいは依存関係が欠けていたことがインシデントで判明したら、その修正をアクションアイテムにします。
  • 四半期レビュー。 オーナーが図ごとに数分かけて現実と一致しているか確認し、「最終レビュー日」を更新します。

PR テンプレートの例です。

## Architecture impact
- [ ] This change does not affect any architecture diagram
- [ ] I updated the affected diagram(s) and linked them below
- [ ] This needs an ADR (link):

5. 適切な詳細レベルを選ぶ

巨大な一枚絵ではなく、レベルに分けます。C4 model は共通の語彙を提供してくれます。System Context ビュー(人とシステム)、Container ビュー(アプリケーションとデータストア)、そして一つの container の内部を示す Component ビューです。上位レベルはめったに変わらず、正確に保つコストも低めです。下位レベルは頻繁に変わるので、必要とされる部分だけを描き、それより下はコードを情報源にします。

役に立つ目安があります。スプリントのたびに変わる図は、おそらく一段深く描きすぎています。

6. 日付とバージョンを見えるようにする

すべての図の隅に、オーナーと「最終レビュー日」を入れます。読む人はひと目で信頼度を判断できます。先月レビューされた図と 2 年前にレビューされた図では、信頼してよい度合いが違います。日付がないと、どの図も同じくらい正式に見えてしまい、古い日付を示すよりも悪い結果になります。

7. 図のインデックスを持つ

重要な図をすべて一つのページにまとめます。

図 レベル オーナー 最終レビュー 関連 ADR
Payments: context C4 context Payments リード 2026-09-14 ADR-012
Payments: containers C4 container Payments チーム 2026-09-14 ADR-019

インデックスがあれば抜け漏れ(オーナー不在、古い日付)が見えるようになり、四半期レビューの出発点にもなります。

8. 図と ADR を組み合わせる

図はアーキテクチャが 何であるか を示します。なぜ そうなっているかは示せません。そのギャップを埋めるのがアーキテクチャ決定記録です。Michael Nygard の オリジナルの ADR フォーマット は、実際に書いてもらえるほど短く、タイトル、ステータス、コンテキスト、決定、結果で構成されます。図から ADR へ、ADR から図へ、双方向にリンクします。

# ADR-019: Move payment events to a dedicated queue

## Status
Accepted

## Context
Payment events share a queue with notifications.

## Decision
Give payment events their own queue.

## Consequences
One more queue to operate. Diagram "Payments: containers" updated.

半年後に誰かが「なぜこうなっているの?」と聞いても、答えはワンクリック先にあります。

Archboard で生きたドキュメントのワークフローを回す

Archboard はクラウドでホストされるアーキテクチャワークスペースで、上記のワークフローの大部分は既存の機能に対応しています。何をカバーしていて、どこに独自のプロセスが必要かをまとめます。

  • 唯一の情報源。 各図はワークスペース内の一つのドキュメントで、自動保存とリビジョンスナップショットがあります。Free は直近 5 件のリビジョンを保持し、Pro は 1 年分のリビジョン履歴を保持します。Enterprise には上限がありません。
  • コピーせずリンクする。 すべてのプランに公開共有リンクがあります(Free ではブランド表示付き)。Pro と Enterprise では iframe で図をドキュメントサイトに埋め込めるので、古くなっていくスクリーンショットではなく現在のバージョンが表示されます。
  • リポジトリでの履歴管理。 図を構造化 JSON としてエクスポートし、コードや ADR の隣にコミットします。アプリ内のリビジョンに加えて、Git の履歴と図の変更に対するレビューの手順が得られます。エクスポートは手動なので、PR の習慣に組み込んでください。
  • キャンバス上のメモ。 Markdown ノードはキャンバス上に置けるので、オーナー、最終レビュー日、ADR へのリンク、短い凡例を別ドキュメントではなく図の中に置けます。
  • 適切な詳細レベル。 C4 Model パックには Person、Software System、Container、Component、Database のノードと boundary があります。ノードはポートを持つファーストクラスのノードで、ポート同士をつないで接続します。context ビューと container ビューは別々の図にしておきましょう。

一つのシステムでの具体的なセットアップ例です。

  1. 「Payments: Context」と「Payments: Containers」の 2 つの図を作成します。
  2. 左上にオーナー、最終レビュー日、関連 ADR へのリンクを書いた Markdown ノードを追加します。
  3. Pro では、サービスのドキュメントページに container ビューを埋め込みます。Free では共有リンクを使います。
  4. PR でアーキテクチャが変わるときは、図を更新し(または、その PR で作業しているコーディングエージェントに Archboard の MCP サーバー経由で更新を任せ)、JSON をエクスポートして、同じ PR で docs/architecture/ にコミットします。
  5. 両方の図をインデックスページに追加します。

機能の全体像は製品概要、C4 固有の設定は C4 のユースケース、各プランの内容は料金をご覧ください。Free では、それぞれ 15 ダイアグラムノードと 150 件のメモ・テキスト・ステッカー・マインドマップのトピックを置ける 3 つのダイアグラムを使って、1 つのシステムのコンテキストビューを試せます。プラットフォーム全体をドキュメント化するときは、Pro で図とノードが無制限になります。

ワークフロー図。プルリクエスト、ADR、ポストモーテム、四半期レビューをきっかけにオーナーが図を更新します。図は JSON としてリポジトリにエクスポートされ、同じ PR でレビューされ、ドキュメントページに埋め込まれ、図のインデックスに登録されます。

11 個のコンポーネント · 9 個の接続

Archboard で開く
ダイアグラムの内容
  • Update triggers
  • PR changes the architecture
  • New ADR accepted
  • Incident postmortem
  • Quarterly review
  • Owner updates the diagram
  • Export JSON → docs/architecture/
  • Reviewed in the same PR
  • Docs page embeds the live diagram
  • Diagram index: owner + date
  • Revision history kept
  • commit
  • same PR
  • share link / embed
  • listed in
  • autosave
生きたドキュメントのサイクル:既存のイベントが更新のきっかけになり、オーナーが 1 つの図を更新すると、ドキュメント、リポジトリ、インデックスが同期されます。

生きたドキュメントのチェックリスト

  • すべての図に編集可能な情報源がちょうど一つある
  • ドキュメントは生きた図を埋め込むかリンクしており、スクリーンショットを貼っていない
  • すべての図に名前の決まったオーナーがいて、図の上に表示されている
  • PR テンプレートに「アーキテクチャへの影響」のチェックボックスがある
  • 承認された ADR が、変更対象の図にリンクしている
  • ポストモーテムで「図はまだ正しいか?」を確認している
  • オーナーが四半期ごとに図をレビューし、日付を更新している
  • 図が巨大な一枚絵ではなく、C4 のレベルごとに分かれている
  • 図のインデックスに、レベル、オーナー、最終レビュー日、ADR が載っている
  • 図の情報源(たとえば JSON エクスポート)がコードの隣にコミットされている

よくある質問

一つのシステムにいくつ図を用意すべきですか? まずは context ビューと container ビューから始めてください。component ビューは、よく質問される部分にだけ追加します。少数の正確な図は、多数の古い図に勝ります。

図はリポジトリに置くべきですか、それともツールに置くべきですか? 編集は一か所で行い、履歴はチームがすでに変更をレビューしている場所に残しましょう。Archboard なら、キャンバスで編集し、JSON エクスポートを Git にコミットします。

無料で始める — 1 シート、クレジットカード不要

関連記事

← ブログに戻る

1分でキャンバスを開く

Google または GitHub でサインイン。1シートは無料で、チームが加わったらアップグレード。