クイズの説明
Step 5で学んだ内容の理解度をチェックします。
- 全8問
- 合格ライン: 80%(7問正解)
- 不合格の場合は復習してから再挑戦してください
問題
Q1. URIバージョニングの例として正しいのはどれですか?
- A)
GET /api/users/123+X-API-Version: 2 - B)
GET /api/v2/users/123 - C)
GET /api/users/123?version=2 - D)
GET /api/users/123+Accept: application/vnd.example.v2+json
答えを見る
正解: B
- A: ヘッダーバージョニング(カスタムヘッダーでバージョンを指定)
- B: URIバージョニング(URLパスにバージョンを含める)
- C: クエリパラメータバージョニング
- D: ヘッダーバージョニング(Accept ヘッダーでバージョンを指定)
URIバージョニングは最も分かりやすく、GitHub, Stripe, Twitter等の主要APIで採用されています。
Q2. 以下のうち「後方互換」な変更はどれですか?
- A) 既存フィールドの削除
- B) 新しいオプショナルフィールドの追加
- C) フィールドの型をintegerからstringに変更
- D) 必須パラメータの追加
答えを見る
正解: B
後方互換な変更:
- 新しいフィールドの追加(既存クライアントは無視する)
- 新しいオプショナルパラメータの追加
- 新しいエンドポイントの追加
破壊的変更:
- フィールドの削除、名前変更、型変更
- 必須パラメータの追加
Q3. Expand/Contractパターンの3つのフェーズの正しい順序はどれですか?
- A) Contract → Expand → Migrate
- B) Migrate → Expand → Contract
- C) Expand → Migrate → Contract
- D) Expand → Contract → Migrate
答えを見る
正解: C
- Expand(拡張): 新しいフィールドを追加、古いフィールドも残す
- Migrate(移行): クライアントに新フィールドへの移行を促す
- Contract(縮小): 十分な移行期間後、古いフィールドを削除
この段階的なプロセスにより、破壊的変更を安全に行うことができます。
Q4. API廃止時に使用するHTTPステータスコードとして最も適切なのはどれですか?
- A) 404 Not Found
- B) 410 Gone
- C) 503 Service Unavailable
- D) 301 Moved Permanently
答えを見る
正解: B
- 404 Not Found: リソースが見つからない(存在したことがあるかは不明)
- 410 Gone: リソースが永久に利用不可(以前は存在していた)
- 503 Service Unavailable: 一時的なサービス停止
- 301 Moved Permanently: 恒久的なリダイレクト
API廃止時は 410 Gone を返し、移行先の情報をレスポンスボディに含めるのが適切です。
Q5. BFF(Backend for Frontend)の主な目的はどれですか?
- A) データベースのパフォーマンスを向上させる
- B) クライアントの種類ごとに最適化されたAPIを提供する
- C) サーバーのセキュリティを強化する
- D) APIのバージョン管理を自動化する
答えを見る
正解: B
BFFは、Webアプリ、モバイルアプリ、IoTデバイスなど、異なるクライアントの要件に合わせて最適化されたAPIを提供するパターンです。例えば、モバイルアプリ向けBFFは帯域を節約するために最小限のデータだけを返し、Web向けBFFは豊富なデータを1回のリクエストで返します。
Q6. API Gatewayの役割として正しくないものはどれですか?
- A) リクエストの認証・認可
- B) レート制限
- C) ビジネスロジックの実装
- D) リクエストのルーティング
答えを見る
正解: C
API Gatewayは横断的関心事(認証、レート制限、ログ、ルーティング)を担当しますが、ビジネスロジックは含めません。ビジネスロジックはバックエンドサービスやBFFに実装します。
API Gatewayにビジネスロジックを入れると、ゲートウェイが肥大化し、変更のボトルネックになります。
Q7. Sunsetヘッダー(RFC 8594)の目的はどれですか?
- A) APIの認証情報を伝える
- B) APIが廃止される日付をクライアントに通知する
- C) APIのバージョン番号を伝える
- D) APIのレート制限情報を伝える
答えを見る
正解: B
Sunset ヘッダーは RFC 8594 で定義されており、APIが利用不可になる日付をクライアントに通知するために使用します。
例: Sunset: Sat, 31 Dec 2025 23:59:59 GMT
クライアントはこのヘッダーを検出して、移行の準備を開始できます。
Q8. Tolerant Readerパターンの原則はどれですか?
- A) サーバーが厳密なバリデーションを行う
- B) クライアントが未知のフィールドを無視し、必要なフィールドだけ参照する
- C) クライアントがサーバーのエラーを許容する
- D) サーバーが不正なリクエストも処理する
答えを見る
正解: B
Tolerant Reader パターンでは、クライアントは必要なフィールドだけを参照し、レスポンスに含まれる未知のフィールドは無視します。これにより、サーバー側でフィールドを追加しても既存クライアントが壊れることがありません。
Robustness Principleの「送信するものには厳密に、受信するものには寛容に」に通じる考え方です。
結果
7問以上正解の場合
合格です。おめでとうございます。
Step 5「APIバージョニングと進化戦略」を完了しました。 次は Step 6「最終試験:API設計チャレンジ」に進みましょう。
6問以下の場合
もう少し復習しましょう。
| 問題 | 復習セクション |
|---|---|
| Q1 | step5_1 バージョニング戦略の比較 |
| Q2, Q3, Q8 | step5_2 後方互換性の維持 |
| Q4, Q7 | step5_3 API廃止とマイグレーション戦略 |
| Q5, Q6 | step5_4 API Gateway とBFF |
推定所要時間: 30分