ストーリー
L2月1で設計原則を学び、自信をつけたあなた。
ある日、チームリーダーの高橋アーキテクトに呼ばれた。
APIとは何か
API(Application Programming Interface)の本質
APIとは、ソフトウェア同士が通信するためのインターフェースです。日常に例えると、レストランのメニューのようなものです。
sequenceDiagram
participant C as お客さん(クライアント)
participant M as メニュー(API)
participant K as キッチン(サーバー)
C->>M: 「カレーください」
M->>K: 注文を伝える
K-->>M: 料理を返す
M-->>C: カレーが届く
- メニュー(API仕様): 何を注文できるか、どう注文するかを定義
- お客さん(クライアント): APIを利用する側
- キッチン(サーバー): リクエストを処理して結果を返す側
Web APIの種類
// 1. REST API - リソース指向
// GET /api/users/123
const user = await fetch('/api/users/123');
// 2. GraphQL - クエリ指向
// POST /graphql
const result = await fetch('/graphql', {
method: 'POST',
body: JSON.stringify({
query: `{ user(id: 123) { name, email } }`
})
});
// 3. gRPC - RPC指向(バイナリプロトコル)
// Protocol Buffers でスキーマ定義
// 4. WebSocket - 双方向通信
const ws = new WebSocket('ws://example.com/chat');
なぜAPI設計が重要なのか
APIは「契約」である
// この関数のシグネチャは「契約」
// 引数と戻り値の型が、呼び出し側との約束事
interface UserAPI {
// 「IDを渡せば、Userオブジェクトを返す」という契約
getUser(id: string): Promise<User>;
// 「Userデータを渡せば、作成されたUserを返す」という契約
createUser(data: CreateUserInput): Promise<User>;
}
良い契約の3条件
| 条件 | 説明 | 例 |
|---|---|---|
| 明確性 | 曖昧さがなく、誰が読んでも同じ解釈になる | GET /users/{id} は「IDでユーザーを取得」 |
| 安定性 | 一度公開したら簡単に変えない | バージョニング戦略で変更を管理 |
| 一貫性 | 全体を通して同じパターン・規則に従う | 命名規則、エラー形式の統一 |
L2月2の全体像
6つのステップ(合計20時間)
| Step | テーマ | 時間 | 主なスキル |
|---|---|---|---|
| 1 | API設計の世界へようこそ | 2h | REST基礎、ベストプラクティス |
| 2 | RESTful API設計の深淵 | 4h | リソース設計、認証、レート制限 |
| 3 | OpenAPIで契約を定義しよう | 3h | OpenAPI仕様、スキーマ、コード生成 |
| 4 | GraphQLの可能性を探ろう | 5h | Query, Mutation, スキーマ設計 |
| 5 | APIバージョニングと進化戦略 | 4h | バージョニング、後方互換性、Gateway |
| 6 | 最終試験 | 2h | 総合演習 + 卒業クイズ |
学習のコツ
L2レベルで意識すること
- 利用者視点で考える: APIの設計者は、常に利用者(開発者)の立場で使いやすさを考える
- 契約を明文化する: 口頭の約束ではなく、仕様書として残す(OpenAPI)
- 変更に強い設計: 将来の変更を見越して、拡張性のある設計を心がける
- 実例に学ぶ: GitHub API、Stripe API等、優れたAPIの設計パターンを観察する
高橋アーキテクトからのアドバイス
「APIは一度公開すると、簡単には変えられない。だからこそ、最初の設計が肝心だ。 “動けばいい”ではなく、“使いやすく、変化に強い”APIを目指してほしい」 — 高橋アーキテクト
まとめ
| ポイント | 内容 |
|---|---|
| APIの本質 | ソフトウェア同士の通信インターフェース |
| APIは契約 | 明確性・安定性・一貫性の3条件が重要 |
| L2月2の目標 | REST、GraphQL、OpenAPIを使いこなし、良い契約を設計できるようになる |
| 前提知識 | L2月1の設計原則(SOLID、DRY、KISS等) |
チェックリスト
- APIの基本概念を理解した
- Web APIの種類(REST, GraphQL, gRPC, WebSocket)を把握した
- 良い契約の3条件を理解した
- L2月2の全体像を把握した
次のステップへ
準備はできましたか?
次のセクションでは、最も広く使われているAPIスタイルである REST の基本原則を学びます。 リソース指向、HTTPメソッド、ステータスコード — これらの理解がAPI設計の土台になります。
API設計者への第一歩を踏み出しましょう。
推定読了時間: 15分