概要
API仕様書は、システム間のインターフェース契約を明文化したドキュメントです。目的は「期待のすり合わせ」と「変更のコスト低減」。OpenAPI や gRPC/Proto、GraphQL SDL など形式は様々ですが、読める・試せる・検証できるが鍵です。
可読性
人→人機械可読
人→機械検証可能
仕様→テスト基本
- スコープ:対象ドメイン、非対象、前提条件
- 認証・認可:API Key / OAuth2 / JWT / mTLS、権限境界
- エンドポイント設計:パス命名、HTTPメソッド、バージョニング(例:
/v1/) - 要求/応答:JSONスキーマ、必須/任意、フィールド意味
- エラー設計:エラーコード体系、
traceId、再試行方針 - レート制限・制限事項・非機能(SLA, 可用性, 監査ログ)
基礎
| 項目 | ポイント |
|---|---|
| バージョン戦略 | 互換性(破壊/非破壊)、Deprecationヘッダー、EoL告知 |
| 型と整合性 | 日付(ISO 8601)、金額(文字列or数値+通貨)、並び順/ページング |
| 国際化 | Accept-Language、タイムゾーン、通貨・桁区切り |
| セキュリティ | 最小権限、入力検証、署名、Webhook検証、CORS |
| 可観測性 | トレーシングID、X-Request-Id、メトリクス、監査ログ |
応用
- 非同期API(Webhooks / EventBridge / WebSocket)
- ファイルアップロード(署名URL、Chunk、ウイルススキャン)
- 並行制御(Idempotency-Key / ETag / If-Match)
- 検索APIの設計(フィルタ、ソート、インデックス前提の仕様)
- 生成AI/ML APIの仕様(ジョブ管理、バイアス注意、再現性)
発展
- Contract Testing(Pact等)とスキーマ駆動開発(SDD)
- リビングドキュメント(コードから自動生成+人の説明)
- Backstage 等の開発者ポータル連携
- ポリシー・バジェット(レイテンシ/エラーレートの門番)
最新情報
- FANBOXで『開発テスター募集』を公開しました 2025-08-10
- 技術ドキュメント『Cluster Creator Kit研究ラボ』を公開 2025-07-31
- アニメーションラボ トップページ公開 2025-07-20
書き方(チェックリスト)
- 読者を定義(誰が読む? 外部/内部、開発者/企画/運用)
- APIの目的→ユースケース→エンドポイントに落とす
- 例外系(タイムアウト、部分成功、重複、境界値)を先に言語化
- スキーマを一元管理(再利用、
$ref) - サンプルは成功/失敗の両方を掲載
- 変更履歴(Changelog)を時系列で明示
- 自動テスト・モック・サンドボックスと接続
例(OpenAPI最小雛形 & エンドポイント)
OpenAPI 3.0 最小雛形
openapi: 3.0.3
info:
title: Sample API
version: 1.0.0
servers:
- url: https://api.example.com/v1
paths:
/health:
get:
summary: Health check
responses:
'200':
description: OK
典型的なエラー応答
{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests.",
"traceId": "a1b2c3d4e5"
}
}
クイック・ジェネレーター
以下を埋めて「OpenAPIを生成」を押すと、YAML を生成してダウンロードできます。
生成結果(編集可)
# ここに生成されます
仕事の現場(運用のコツ)
- 仕様凍結のタイミング:スプリント境界で合意→タグ付け
- Breaking変更の告知:β→GA→Deprecated→EoL の段階管理
- サンドボックス:テスト鍵・レート別枠・監査ログ分離
- SLO/アラート:p95/p99、5xx率、SLI定義と可視化
- 契約テスト:Provider/Consumer 双方の自動化
Web開発
- CORS方針(
Access-Control-Allow-Origin、資格情報の扱い) - キャッシュ戦略(
ETag、Cache-Control、ステール可) - セキュアCookie / SameSite / CSRF 対策
- アクセシビリティ(エラーの文言・構造化応答)
アプリ開発(モバイル/デスクトップ)
- オフライン同期(キュー/リトライ/重複排除)
- SDK/ラッパーのバージョン互換と機能フラグ
- 診断ログ(PII最小化、プライバシー設計)
知っておくといい・知識/技能/用語
- Idempotency(同一リクエストの再実行で結果が不変)
- Pagination(カーソル方式推奨)
- Observability(ログ/メトリクス/トレースの三位一体)
- Contract Testing(消費者駆動)
- Schema Registry(共通定義の単一の情報源)
ダウンロード
※ ブラウザ内で生成し、その場でファイルをダウンロードします(サーバ保存なし)。
関連リンク
より具体的に(雛形の差し替えポイント)
- info.title / info.version:プロダクト名と出荷タグに合わせる
- servers:本番/ステージング/サンドボックスを分離
- components.securitySchemes:認証方式を1か所に集約
- 共通レスポンス:
components.responsesで再利用 - 共通スキーマ:
components.schemas.Error等を定義