半年前に自分で作ったAPIを呼ぼうとして、ドキュメントもなく、エンドポイントの命名は場当たりで、エラーは謎の文字列——APIの最初の犠牲者は、たいてい未来の自分です。外部公開すれば、その体験がそのまま利用者全員に配られます。
良いAPIの条件は、天才的な設計ではありません。予測できること——つまり利用者を驚かせないことです。この記事ではGoogleが自社のAPI群のために公開している設計文書(AIP)を一次資料に、個人開発の規模で効く「驚かせない」ための約束事を4つに絞って解説します。
APIの価値は呼び出し側の学習コストの低さで決まる。一貫性は美学ではなく、ドキュメントと問い合わせを減らす実利。
API設計の参考書として最も実務的なのが、Googleが公開しているAIPです。自己定義は“a design document providing high-level, concise documentation for API development”——API開発のための簡潔な設計文書群。膨大な自社APIの一貫性を保つための社内標準を、そのまま外部に公開したものです。
理由は単純で、APIの利用コストの大半は学習コストだからです。1つのAPIで覚えた規則が他のAPIでも通用すれば、利用者は推測で正解できます。逆に命名やエラー形式がAPIごとに違えば、その差分のぶんだけドキュメントと問い合わせが増える。個人開発でも構図は同じで、利用者第1号は半年後の自分です。
| やりたいこと | ❌ 動詞だらけの設計 | ✅ リソース指向 |
|---|---|---|
| 注文の一覧 | GET /getOrders | GET /orders |
| 注文の取得 | GET /getOrderById?id=1 | GET /orders/1 |
| 注文の作成 | POST /createOrder | POST /orders |
| 注文の更新 | POST /updateOrder | PATCH /orders/1 |
AIP stands for API Improvement Proposal, which is a design document providing high-level, concise documentation for API development.出典Google「AIP-1: AIP Purpose and Guidelines」 一次情報を確認2026-08-14 この内容の有効期限2027-02-14
利用者はハッピーパスよりエラーとの付き合いでAPIの質を判定する。エラーの2層構造と一覧の上限は、最初の実装に含める。
API設計の品質が最も露呈するのは、正常系ではなくエラーの返し方です。呼び出し側はエラーを見て分岐を書くため、エラーの形が不安定なAPIは自動化に組み込めません。
// ❌ これでは呼び出し側は文字列マッチで分岐するしかない
{ "error": "なんかおかしいです" }
// ✅ codeで機械が分岐し、messageで人間が理解する
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "email の形式が正しくありません"
}
}
コードは一度公開したら変えない安定した語彙にし、メッセージは自由に改善する——この分離が2層構造の狙いです。なお内部のスタックトレースやSQL断片をレスポンスに含めるのはセキュリティ上の情報漏えいなので、本番では返しません。
「全件返す一覧API」は、データが増えた日に時限爆弾になります。一覧系には1ページの件数上限と、次ページの取得手段を最初から入れます。limitに上限を設けるのは、呼び出しミスや悪意ある大量取得からDBを守るレート制限と同種の防御でもあります(API連携の記事の上限の話の、提供者側の視点です)。
フィールド追加は安全、削除・改名・型変更は破壊。破壊するときだけバージョンを上げ、旧版に猶予を与える。この2行が互換性運用のすべて。
API設計の事故で最も恨まれるのが、既存の呼び出しを黙って壊す変更です。自分しか使っていないつもりのAPIでも、自動化ワークフローや別プロジェクトの自分が呼んでいることは珍しくありません。
| 変更 | 互換性 | やってよい条件 |
|---|---|---|
| レスポンスにフィールドを足す | 壊さない | いつでも可(呼び出し側は未知フィールド無視が原則) |
| 新しいエンドポイントを足す | 壊さない | いつでも可 |
| フィールドの削除・改名 | 壊す | バージョンを分けて。旧版に移行期間を置く |
| 型・意味の変更 | 壊す | 同上。「同じ名前で意味が変わる」が最悪 |
| 必須パラメータの追加 | 壊す | 省略時デフォルトを与えれば互換にできる |
凝ったバージョン戦略は不要です。URLに/v1/を入れておき、破壊的変更が必要になったら/v2/を並行稼働させ、旧版は告知して一定期間後に閉じる——これだけです。大事なのは仕組みより「壊すときは必ず新しい番号で」という約束を自分に課すこと。約束が守られているAPIは、外部公開したときそのまま商品品質になります。
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る