APIバージョニング戦略と後方互換性管理を専門とするスキル。 📚 リソース参照: このスキルには以下のリソースが含まれています。 必要に応じて該当するリソースを参照してください: - `.claude/skills/api-versioning/resources/versioning-strategies.md`: バージョニング方式の比較と選択基準 - `.claude/skills/api-versioning/resources/breaking-changes.md`: 破壊的変更の定義と影響範囲管理 - `.claude/skills/api-versioning/resources/deprecation-process.md`: 段階的廃止プロセスとHTTPヘッダー活用 - `.claude/skills/api-versioning/templates/migration-guide-template.md`: バージョン間移行ガイドテンプレート - `.claude/skills/api-versioning/templates/deprecation-notice-template.md`: 非推奨化通知テンプレート - `.claude/skills/api-versioning/scripts/check-breaking-changes.js`: 破壊的変更検出スクリプト - `.claude/skills/api-versioning/scripts/generate-migration-guide.sh`: 移行ガイド自動生成スクリプト 核心知識: - バージョニング方式の選択(URL Path / Header / Query) - 破壊的変更の管理と移行戦略 - 非推奨化(Deprecation)プロセス - バージョン間の差分文書化 使用タイミング: - APIバージョニング戦略を決定する時 - 破壊的変更を導入する時 - エンドポイントを非推奨化する時 - バージョン間の移行ガイドを作成する時
APIバージョニング戦略の設計と後方互換性管理に関する専門知識を提供します。
```bash
cat .claude/skills/api-versioning/resources/versioning-strategies.md
cat .claude/skills/api-versioning/resources/deprecation-process.md
cat .claude/skills/api-versioning/resources/breaking-changes.md
cat .claude/skills/api-versioning/templates/migration-guide-template.md
cat .claude/skills/api-versioning/templates/deprecation-notice-template.md
```
---
| 方式 | 例 | メリット | デメリット |
| ---------------- | --------------------------------------------- | -------------------- | -------------- |
| **URL Path** | `/api/v1/users` | 明確、キャッシュ容易 | URLが長くなる |
| **Header** | `Accept: application/vnd.api+json; version=1` | URLがシンプル | 発見しにくい |
| **Query** | `/api/users?version=1` | シンプル | キャッシュ問題 |
| **Content-Type** | `Content-Type: application/vnd.api.v1+json` | 標準的 | 複雑 |
| 条件 | 推奨方式 |
| ---------------- | -------- |
| RESTful純粋主義 | Header |
| 開発者体験重視 | URL Path |
| レガシー互換性 | Query |
| 新規プロジェクト | URL Path |
| 外部公開API | URL Path |
| 内部API | Header |
```
/api/v1/users ← 現行バージョン
/api/v2/users ← 新バージョン
```
**理由**:
---
```
MAJOR.MINOR.PATCH
例: 1.2.3
```
| 種類 | 変更時 | URL反映 |
| ----- | ------------------ | ------------------ |
| MAJOR | 破壊的変更 | ✅ 反映(v1 → v2) |
| MINOR | 後方互換の機能追加 | ❌ 非反映 |
| PATCH | バグ修正 | ❌ 非反映 |
```
/api/v1/... ← メジャーバージョンのみ
/api/v1.2/... ← 避ける(複雑化)
```
```
クライアントリクエスト → バージョン解決
├─ /api/v1/users → API v1.x.x の最新を使用
├─ /api/v2/users → API v2.x.x の最新を使用
└─ /api/users → デフォルトバージョン(v1)を使用
```
---
| 変更種類 | 破壊的? | 説明 |
| ------------------------ | -------- | ------------------------ |
| エンドポイント削除 | ✅ Yes | 既存クライアントが壊れる |
| フィールド削除 | ✅ Yes | 既存クライアントが壊れる |
| フィールド名変更 | ✅ Yes | 既存クライアントが壊れる |
| 必須フィールド追加 | ✅ Yes | 既存リクエストが無効に |
| 型変更 | ✅ Yes | パース失敗の可能性 |
| ステータスコード変更 | ✅ Yes | エラーハンドリング破損 |
| 認証方式変更 | ✅ Yes | 認証失敗 |
| オプションフィールド追加 | ❌ No | 後方互換 |
| 新エンドポイント追加 | ❌ No | 後方互換 |
| レスポンスフィールド追加 | ❌ No | 後方互換(通常) |
| 変更種類 | 注意点 |
| ------------------------ | -------------------------------- |
| オプションフィールド追加 | デフォルト値を設定 |
| 新エンドポイント追加 | 既存に影響なし |
| レスポンスフィールド追加 | クライアントは無視すべき |
| 列挙値の追加 | クライアントは未知値を処理すべき |
---
```
1. 告知期間(2-4週間)
├─ ドキュメント更新
├─ Sunset ヘッダー追加
└─ 移行ガイド公開
2. 警告期間(4-8週間)
├─ Deprecation ヘッダー追加
├─ ログ監視(使用状況)
└─ 個別通知
3. 移行サポート期間(4-12週間)
├─ 新旧両方を並行稼働
├─ 移行サポート提供
└─ 使用量モニタリング
4. 廃止実行
├─ エンドポイント無効化
├─ 410 Gone レスポンス
└─ 代替エンドポイント案内
```
```http
Deprecation: true
Deprecation: @1735689600 # Unix timestamp
Sunset: Sat, 01 Mar 2025 00:00:00 GMT
Link: </api/v2/users>; rel="successor-version"
```
```yaml
paths:
/api/v1/users:
get:
deprecated: true
summary: "[非推奨] ユーザー一覧取得"
description: |
⚠️ このエンドポイントは2025年3月1日に廃止されます。
代替: GET /api/v2/users
x-sunset-date: "2025-03-01"
```
---
```
期間1: v1のみ
期間2: v1(主)+ v2(ベータ)
期間3: v1(非推奨)+ v2(主)
期間4: v2のみ
```
```typescript
// ルーティング例(Next.js)
// app/api/v1/users/route.ts
// app/api/v2/users/route.ts
// バージョン共通ロジック
// lib/api/users/v1.ts
// lib/api/users/v2.ts
```
```typescript
// v1 → v2 変換
function transformV1ToV2(v1Data: V1User): V2User {
return {
id: v1Data.id,
fullName: `${v1Data.firstName} ${v1Data.lastName}`, // フィールド統合
email: v1Data.email,
role: mapRoleV1ToV2(v1Data.role), // 値マッピング
createdAt: v1Data.created_at, // 命名規則変更
};
}
```
---
```markdown
- `first_name` + `last_name` → `full_name` に統合
- `"admin"` → `"administrator"`
詳細は [Migration Guide v1 → v2](./migration-v1-v2.md) を参照
```
---
---
---
| バージョン | 日付 | 変更内容 |
| ---------- | ---------- | ------------ |
| 1.0.0 | 2025-11-27 | 初版リリース |
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/claudeskillsapi-versioningskillmd/raw