6-4 ドキュメント管理
Documentation Management
1. ドキュメントの重要性
1.1 なぜドキュメントが必要か
「コードがドキュメントだ」という主張もあるが、 コードだけではシステムの全体像や意思決定の経緯は伝わらない。 ドキュメントは、チーム間のコミュニケーション、 後任者への引き継ぎ、監査対応など、多くの場面で必要となる。
| 目的 | 効果 |
|---|---|
| 知識の共有 | チーム間、後任者への引き継ぎ |
| 属人化の防止 | 特定の人に依存しない体制 |
| 意思決定の記録 | なぜそうなったかの経緯 |
| 保守の効率化 | システム理解の時間短縮 |
| コンプライアンス | 監査対応、証跡 |
1.2 ドキュメントの種類
システム開発では、フェーズごとに様々なドキュメントが作成される。 すべてを詳細に作成する必要はないが、 プロジェクトの特性に応じて必要なものを選択し、 適切な粒度で作成・維持することが重要である。
| カテゴリ | ドキュメント例 |
|---|---|
| 要件 | 要件定義書、ユースケース |
| 設計 | 基本設計書、詳細設計書、API仕様 |
| テスト | テスト計画書、テストケース |
| 運用 | 運用手順書、障害対応マニュアル |
| ユーザー向け | マニュアル、FAQ、リリースノート |
2. ドキュメント管理のベストプラクティス
2.1 管理の原則
ドキュメント管理で最も重要なのは「見つけられること」と「最新であること」である。 どれだけ良いドキュメントを作成しても、 必要な時に見つけられなければ意味がない。 また、古い情報は誤った判断を招く危険性がある。
| 原則 | 説明 |
|---|---|
| 一元管理 | ドキュメントの保管場所を統一 |
| バージョン管理 | 変更履歴を追跡可能に |
| アクセス制御 | 必要な人が必要なときにアクセス |
| 定期的な見直し | 陳腐化を防止 |
| 検索可能性 | 必要な情報を素早く見つけられる |
2.2 管理ツール
ドキュメント管理ツールは、組織の規模や文化に合わせて選択する。 重要なのはツールそのものではなく、 チーム全員がそのツールを使う習慣を定着させることである。
| ツール | 特徴 |
|---|---|
| Confluence | Atlassian製、Jira連携 |
| Notion | 柔軟な構造、データベース機能 |
| Git + Markdown | コードと同じ管理、Docs as Code |
| SharePoint | Microsoft製、Office統合 |
更新されないドキュメントは害になる。 誤った情報は、ないよりも悪い。 ドキュメントの更新をプロセスに組み込み、 変更時には必ずドキュメントも更新する習慣をつけることが重要である。
3. Docs as Code
3.1 Docs as Codeとは
Docs as Codeは、ドキュメントをソースコードと同様に管理する考え方である。 Gitでバージョン管理し、CI/CDでビルド・公開する。 コードの変更とドキュメントの変更を同じプルリクエストに含めることで、 ドキュメントの陳腐化を防ぐことができる。
| メリット | 説明 |
|---|---|
| 変更追跡 | 誰がいつ何を変えたかが明確 |
| レビュー | プルリクエストでレビュー可能 |
| 自動化 | ビルド、テスト、公開の自動化 |
| コードとの同期 | 同じリポジトリで管理 |
3.2 ツールチェーン
Docs as Codeを実現するためのツールは多数存在する。 Markdownで記述し、静的サイトジェネレーターでHTMLに変換、 CIパイプラインで自動デプロイという流れが一般的である。
| ツール | 用途 |
|---|---|
| Markdown | 軽量マークアップ言語 |
| MkDocs / Docusaurus | 静的サイトジェネレーター |
| OpenAPI / Swagger | API仕様書の自動生成 |
| PlantUML / Mermaid | 図の自動生成 |
README駆動開発
新しい機能やプロジェクトを始める前にREADMEを書く。 ドキュメントを書くことで、設計を整理し、 ユーザー視点で考えることができる。 実装前にドキュメントを書くことで、 設計の問題点を早期に発見できる。
4. アーキテクチャ決定記録(ADR)
4.1 ADRとは
ADR(Architecture Decision Record)は、 重要な設計・技術判断を記録する軽量なドキュメント形式である。 なぜその決定をしたのかの経緯を残すことで、 後から振り返った時に「なぜこうなっているのか」を理解できる。
| セクション | 内容 |
|---|---|
| タイトル | 決定内容を端的に表現 |
| ステータス | 提案中/承認/廃止 |
| コンテキスト | 決定が必要になった背景 |
| 決定 | 何を決定したか |
| 結果 | 影響、トレードオフ |
ADRは、プロジェクトのdocsディレクトリに連番で保存する。 例えば「ADR-001: PostgreSQLをデータベースとして採用」のように、 番号とタイトルでファイル名を付ける。 一度承認されたADRは変更せず、新しい決定が必要な場合は 新しいADRを作成して古いものを廃止する。
運用と保守の基本を学習しました。 次は「第7章 アジャイル開発」で、アジャイルの実践について学習しよう。
[1] Nygard, M. ADR GitHub Template.
[2] Write the Docs Community.