「コードがドキュメント」という言葉は美しく聞こえますが、現実は6ヶ月後に自分が書いた API すら理解できなくなることです。良い技術ドキュメントは単なる補足説明ではなく、オープンソースプロジェクトの採用可否、API の正しい利用、新エンジニアの2週間でのオンボーディングを左右します。本記事では技術ドキュメントの分類から実践的な維持管理の仕組みまでを体系的に解説します。
1. 技術ドキュメントの4種類
Diátaxis フレームワークは技術ドキュメントを4つの象限に分類します:
| 種類 | 目的 | 典型例 |
|---|---|---|
| チュートリアル | 初心者を最初の成功体験へ導く | 「5分でスタート」 |
| ハウツーガイド | 特定の問題を解決する手順説明 | 「環境変数の設定方法」 |
| リファレンス | システムの完全な技術仕様を正確に記述 | API エンドポイントドキュメント |
| 説明(Explanation) | 設計思想と概念の背景を解説 | アーキテクチャ決定記録(ADR) |
2. README:プロジェクトの第一印象
合格する README に必要な要素:
- 一言説明:これは何か、どんな問題を解決するか
- クイックスタート:3ステップ以内で動作確認できること
- 使用例:最も典型的なユースケース、コード付き
- 設定説明:環境変数、設定ファイル形式
- コントリビューションガイド:バグ報告・PR の送り方
- ライセンス:MIT、Apache 2.0 など
Markdown のリアルタイムプレビュー:README 執筆時にMarkdown エディタでリアルタイムプレビューを確認し、見出しレベル・表・コードブロックの表示を確認してから GitHub に貼り付けましょう。
3. Markdown 技術ドキュメント規約
見出しレベルのルール
#(H1):1ドキュメントに1つ、通常はドキュメントタイトル##(H2):主要セクション###(H3):サブセクション、H3より深くしない- レベルをスキップしない:H2 から H4 に直接飛ばさない
コードブロックのベストプラクティス
シンタックスハイライトのために必ず言語を指定してください。表は API パラメータリストなど複数属性の比較データに適しています。
4. API ドキュメント:開発者体験の核心
必要な API ドキュメント要素:
- エンドポイント説明:HTTP メソッド + パス + 用途
- リクエストパラメータ:名前・型・必須/任意・デフォルト値・例
- リクエスト例:完全な HTTP リクエスト(実際の値で)
- レスポンス形式:成功・失敗のレスポンス構造、全 HTTP ステータスコード
- エラーコード:全カスタムエラーコードと意味・トラブルシューティング
API レスポンス例のフォーマット:API ドキュメント執筆時にJSON フォーマッターで圧縮された JSON を読みやすいインデント形式に整理し、そのままドキュメントの例として貼り付けましょう。
OpenAPI / Swagger 仕様
RESTful API には OpenAPI 3.0 仕様を採用することを推奨します。Swagger UI のインタラクティブドキュメントを自動生成でき、ユーザーがブラウザ上で直接 API をテストできます。
5. Docs as Code:ドキュメントをコードのように管理する
- コードと同じ PR にドキュメントを含める:API の変更には必ずドキュメント更新を含める
- リンク有効性チェック:CI/CD でドキュメント中のデッドリンクを自動スキャン
- 例示コードのテスト:チュートリアルのコードスニペットを CI の一部として実行
ドキュメントのバージョン差分比較:更新後にテキスト差分ツールで新旧バージョンの差分をすばやく確認できます。PR 説明への変更サマリー添付や翻訳版の一貫性確認に最適です。
6. ドキュメントを最新に保つ工学的仕組み
- ドキュメントオーナー:重要なドキュメントごとに維持担当者を指定、四半期ごとにレビュー
- 例示コードの自動テスト:チュートリアルのコードを CI に組み込み
- Changelog の習慣:すべてのリリースで CHANGELOG.md を維持
- 「ドキュメント未完」マーカー:未完成の部分を TODO でマーク
まとめ
- 技術ドキュメントは4種類:チュートリアル・ハウツーガイド・リファレンス・説明 — リファレンスだけでは不十分
- README は3ステップ以内で動作確認できるように、実際の値を使った例が必須
- API ドキュメントの必須要素:エンドポイント説明・全パラメータ・リクエスト例・レスポンス形式・エラーコード
- Docs as Code:コードと同じ PR・同じレビュー・同じ CI がドキュメントを生きた状態に保つ根本的な仕組み