Part 5: AI × 開発 実践
Chapter 31: AI を使ったドキュメント作成
README、API ドキュメント、設計書の生成
ドキュメントは書かれないか、書かれても陳腐化する——開発現場でよく起きる問題です。AI を使えば、コードから自動的にドキュメントを生成し、最新の状態に保つことが格段に楽になります。この章では AI を活用したドキュメント作成の実践手法を学びます。
31.1 README の生成
プロジェクト概要から README を生成する
以下のプロジェクトの README.md を生成してほしい。
【プロジェクト情報】
- 名前: TaskFlow API
- 概要: チーム向けタスク管理 REST API
- 技術スタック: Node.js, TypeScript, Express, PostgreSQL, Prisma
- 認証: JWT
- テスト: Jest
【対象読者】
- プロジェクトに新たに参加する開発者
- API を使う外部の開発者
【含めてほしいセクション】
1. プロジェクト概要
2. 必要な環境
3. セットアップ手順
4. 開発サーバーの起動方法
5. テストの実行方法
6. API の概要 (詳細は別ドキュメントに誘導)
7. 環境変数の説明
8. コントリビュートガイドコードから README を生成する
既存コードを渡して README を生成することもできます。
以下のプロジェクト構造とメインファイルを読んで、README.md を生成してほしい。
特にセットアップ手順は正確に書いてほしい。
【ディレクトリ構造】
├── src/
│ ├── controllers/
│ ├── services/
│ ├── models/
│ └── index.ts
├── prisma/
│ └── schema.prisma
├── package.json
└── .env.example
【package.json の scripts】
[package.json の内容を貼り付ける]
【.env.example の内容】
[.env.example の内容を貼り付ける]README の品質チェック
以下の README を評価してほしい。
新しくプロジェクトに参加した開発者が、README だけを読んでローカル環境を立ち上げられるかという観点で確認してほしい。
不明瞭な点や欠けている情報があれば指摘してほしい。
[README の内容を貼り付ける]31.2 API ドキュメント
OpenAPI 仕様書の生成
コントローラーコードから OpenAPI (Swagger) 仕様書を生成できます。
以下の Express コントローラーを読んで、OpenAPI 3.0 形式の仕様書 (YAML) を生成してほしい。
各エンドポイントについて以下を含めること:
- パス・HTTPメソッド
- リクエストの説明
- パラメータ (path params, query params, request body)
- レスポンス (成功・エラーのスキーマ)
- 認証が必要かどうか
[コントローラーのコードを貼り付ける]生成例:
openapi: 3.0.0
info:
title: TaskFlow API
version: 1.0.0
paths:
/api/tasks:
get:
summary: タスク一覧の取得
security:
- bearerAuth: []
parameters:
- name: status
in: query
schema:
type: string
enum: [pending, in_progress, done]
- name: assigneeId
in: query
schema:
type: string
responses:
'200':
description: タスク一覧
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Task'
'401':
description: 未認証JSDoc コメントの生成
以下の TypeScript ファイルの各関数に JSDoc コメントを追加してほしい。
@param, @returns, @throws を含め、日本語で書くこと。
[TypeScript ファイルの内容を貼り付ける]例:
/**
* ユーザーを ID で取得する
* @param userId - 取得するユーザーの ID
* @returns 見つかったユーザーオブジェクト
* @throws {UserNotFoundError} 指定した ID のユーザーが存在しない場合
* @throws {DatabaseError} DB 接続に失敗した場合
*/
async function getUserById(userId: string): Promise<User> {
// ...
}API の変更点をドキュメント化する
以下の git diff を見て、API の変更点をまとめたドキュメントを書いてほしい。
破壊的変更 (Breaking Changes) と追加・修正の変更を分けて書くこと。
API を使う外部の開発者向けに書く。
[git diff の内容を貼り付ける]31.3 設計書・仕様書
アーキテクチャ概要の生成
以下のプロジェクト構造を読んで、アーキテクチャ概要ドキュメントを生成してほしい。
Mermaid 図を使ってコンポーネント間の関係を図示してほしい。
以下を説明すること:
1. システム全体の構成
2. 各レイヤーの役割
3. データの流れ
4. 外部システムとの連携
[ディレクトリ構造と主要ファイルの内容を貼り付ける]生成されるアーキテクチャ図の例:
データベース設計書の生成
以下の Prisma スキーマを読んで、データベース設計書を生成してほしい。
以下を含めること:
1. テーブル一覧と各テーブルの役割
2. 各カラムの説明
3. テーブル間のリレーション (Mermaid のER図で表現)
4. インデックスとその理由
[schema.prisma の内容を貼り付ける]ユーザーストーリーから仕様書を生成する
以下のユーザーストーリーから、開発チーム向けの詳細仕様書を作成してほしい。
【ユーザーストーリー】
「タスクの担当者として、期限が近いタスクをプッシュ通知で受け取りたい。
そうすることで、重要なタスクを忘れずに対応できる。」
以下のセクションを含めること:
1. 機能概要
2. 画面仕様 (どの画面にどんな要素が必要か)
3. API 仕様 (必要なエンドポイントとデータ形式)
4. 通知のトリガー条件
5. エラー処理
6. 受け入れ条件 (テストケースになる形で書く)31.4 変更履歴・リリースノート
git log からリリースノートを生成する
# 前回リリースからの変更ログを取得
git log v1.2.0..HEAD --oneline > changes.txt以下の git コミットログをもとに、リリースノートを生成してほしい。
【対象バージョン】v1.3.0
【ターゲット読者】
- エンドユーザー向け (技術的でない言葉で)
- 開発者向け (詳細な変更内容)
両方のバージョンを生成してほしい。
変更は「新機能」「改善」「バグ修正」「破壊的変更」に分類してほしい。
--- コミットログ ---
feat: add email notification for task deadline
fix: prevent duplicate order creation on retry
perf: optimize product list query with index
refactor: extract payment logic to separate service
feat: add bulk task assignment feature
fix: correct timezone handling in report generation
chore: update dependencies
--- コミットログ終了 ---エンドユーザー向けリリースノートの例:
## TaskFlow v1.3.0 リリースノート
### 新機能
- **タスク期限通知**: タスクの期限が近づくと、登録したメールアドレスに通知が届くようになりました
- **一括担当者割り当て**: 複数のタスクをまとめて担当者に割り当てられるようになりました
### 改善
- 商品一覧の表示が高速になりました
### バグ修正
- 注文確認ボタンを連打すると重複注文が発生する問題を修正しました
- タイムゾーンによってレポートの日付がずれる問題を修正しましたCHANGELOG.md の管理
以下の形式で CHANGELOG.md を更新してほしい。
Conventional Commits の規約に従ったフォーマットで書く。
現在の CHANGELOG:
[現在の CHANGELOG.md の内容を貼り付ける]
新しいリリース (v1.3.0) の変更:
[コミットログを貼り付ける]31.5 社内ナレッジベースの構築
作業ログからナレッジを抽出する
以下の作業ログから、将来の開発者が役立てられるナレッジを抽出してほしい。
特に「ハマったこと」「非自明な設定」「なぜそうしたか」を重点的に抽出してほしい。
Markdown 形式でまとめてほしい。
[Slack のやり取りや PR のコメントを貼り付ける]障害報告書の生成
以下の障害情報をもとに、障害報告書 (ポストモーテム) を生成してほしい。
【障害情報】
- 発生日時: 2024-01-15 14:30 〜 15:45
- 影響範囲: 全ユーザーが注文できない状態
- 原因: DB のコネクションプールが枯渇
- 対応: アプリを再起動し、コネクション数の設定を変更
以下のセクションを含めること:
1. 障害概要
2. 影響
3. タイムライン
4. 根本原因
5. 対応内容
6. 再発防止策ナレッジベースの構造設計
ADR (アーキテクチャ決定記録) の作成
設計判断を文書化する ADR を AI に生成させることができます。
以下のアーキテクチャの決定について、ADR (Architecture Decision Record) を書いてほしい。
【決定内容】
セッション管理に JWT ではなく、Redis を使ったサーバーサイドセッションを採用する。
【背景】
- セキュリティ要件が厳しく、即座にセッションを無効化できる必要がある
- JWT は有効期限が来るまで無効化できない
ADR のフォーマット:
- ステータス (採用済み / 提案中 / 廃止)
- コンテキスト
- 決定内容
- 採用した理由
- 却下した選択肢
- 結果 (トレードオフ)ドキュメント品質を保つコツ
ドキュメントの定期的な見直し
以下のドキュメントが現在のコードと一致しているか確認してほしい。
食い違いがある箇所を特定し、更新案を提示してほしい。
【現在のドキュメント】
[ドキュメントの内容を貼り付ける]
【現在のコード】
[コードを貼り付ける]曖昧な表現のチェック
以下のドキュメントを読んで、意味が曖昧な箇所や理解しづらい箇所を指摘してほしい。
新しく入ったエンジニアが読むという想定で確認してほしい。
[ドキュメントを貼り付ける]まとめ
AI を使ったドキュメント作成のポイントをまとめます。
| ドキュメント種別 | AI 活用のアプローチ |
|---|---|
| README | プロジェクト情報とコードを渡して生成する |
| API ドキュメント | コントローラーコードから OpenAPI 仕様を生成する |
| 設計書 | コード構造を渡してアーキテクチャ図付きで生成する |
| リリースノート | git log を渡して自動生成する |
| ADR | 設計の意思決定を構造化して記録する |
| ナレッジベース | 作業ログや議論から有益な情報を抽出する |
AI を使うことで、「ドキュメントを書く時間がない」という問題が解消されます。コードと同じく、ドキュメントも AI と一緒に書くことで、品質と速度を両立させましょう。