CR-FASTAPI-012: SDK 自動生成導線の構築 - 完了レポート
実装日時
2024年12月4日
概要
目的
FastAPI 移行(CR-FASTAPI-001〜010A)により /api/v1/* が NexusCore の唯一の Public API となったため、OpenAPI 仕様書を元に Python / TypeScript 向け SDK を自動生成できる導線を追加しました。
ゴール
- SDK 自動生成スクリプトの作成(
tools/generate_sdk.py) - Makefile / CLI 導線の追加(
make sdk,make sdk-python,make sdk-ts) docs/api/README.mdに SDK 生成手順を追加.cursorrulesに SDK 破壊検証ルールを追加- 完了レポート作成
原則
- OpenAPI generator の基本出力のままで可(カスタマイズは後続 CR で扱う)
- SDK 生成スクリプトの破壊的変更は禁止
- FastAPI API の変更時は、SDK が正しく生成できることを確認すること
実装ステップ
Step 1: Spec の作成
実施内容:
docs/spec/CR-FASTAPI-012_SDK_Auto_Generation.mdを作成- CR-NEXUS-SPEC-STANDARDIZATION のルールに従い、実装前に Spec を作成
結果:
- ✅ Spec を作成しました
Step 2: SDK ディレクトリの作成
実施内容:
sdk/python/ディレクトリを作成sdk/typescript/ディレクトリを作成sdk/.gitkeepを作成
結果:
- ✅ SDK ディレクトリを作成しました
Step 3: SDK 自動生成スクリプトの作成
新規作成ファイル: tools/generate_sdk.py
実装内容:
- OpenAPI 仕様書の取得(URL またはファイルから)
- openapi-generator-cli の検出(npx または Java 版)
- Python SDK の生成(
sdk/python/に出力) - TypeScript SDK の生成(
sdk/typescript/に出力) - 生成結果の検証(主要ファイルの存在確認)
主な機能:
--python: Python SDK のみ生成--typescript: TypeScript SDK のみ生成--all: すべての SDK を生成(デフォルト)--openapi-url: OpenAPI JSON の URL を指定--openapi-file: OpenAPI JSON ファイルのパスを指定
結果:
- ✅ SDK 自動生成スクリプトを作成しました
Step 4: Makefile コマンドの追加
変更ファイル: Makefile
追加内容:
make sdk: すべての SDK を生成make sdk-python: Python SDK のみ生成make sdk-ts: TypeScript SDK のみ生成
結果:
- ✅ Makefile に SDK 生成コマンドを追加しました
Step 5: ドキュメント更新
変更ファイル: docs/api/README.md
追加内容:
- CR-FASTAPI-012 の完了を追記
- SDK 自動生成セクションを追加
- 前提条件
- Python SDK の生成方法
- TypeScript SDK の生成方法
- すべての SDK を生成
- 生成物の活用例(Python / TypeScript)
結果:
- ✅
docs/api/README.mdを更新しました
Step 6: .cursorrules の更新
変更ファイル: .cursorrules
追加内容:
- SDK Auto-Generation Rules (SDK 自動生成ルール) セクションを追加
- SDK 自動生成導線の維持
- SDK 生成の必須要件
- SDK 生成の検証
結果:
- ✅
.cursorrulesを更新しました
Step 7: .gitignore の更新
変更ファイル: .gitignore
追加内容:
sdk/python/を除外sdk/typescript/を除外sdk/.gitkeepは除外しない
結果:
- ✅
.gitignoreを更新しました
変更ファイル一覧
新規作成ファイル
docs/spec/CR-FASTAPI-012_SDK_Auto_Generation.md- Spectools/generate_sdk.py- SDK 自動生成スクリプトsdk/.gitkeep- SDK ディレクトリの保持ファイルdocs/api/CR-FASTAPI-012_完了報告.md- 本完了レポート
変更ファイル
Makefile- SDK 生成コマンドを追加docs/api/README.md- SDK 生成手順を追加.cursorrules- SDK Auto-Generation Rules を追加.gitignore- SDK 生成物を除外
新規作成ディレクトリ
sdk/python/- Python SDK の出力先sdk/typescript/- TypeScript SDK の出力先
動作確認結果
静的解析結果
- リンターエラー: なし
- 型チェック: 問題なし
スクリプトの動作確認
確認コマンド:
python tools/generate_sdk.py --help
確認結果:
- ✅ スクリプトが正常に動作することを確認
- ✅ ヘルプメッセージが正しく表示されることを確認
注意: 実際の SDK 生成には、FastAPI アプリが起動している必要があります。
Makefile コマンドの確認
確認コマンド:
make help
確認結果:
- ✅
make sdk,make sdk-python,make sdk-tsがヘルプに表示されることを確認
ドキュメントの確認
確認項目:
- ✅
docs/api/README.mdに SDK 生成手順が追加されているか - ✅
.cursorrulesに SDK Auto-Generation Rules が追加されているか - ✅
.gitignoreに SDK 生成物が除外されているか
確認結果:
- ✅ すべての項目が確認できました
設計上の改善点
アーキテクチャの改善
- SDK 自動生成導線の構築
- OpenAPI 仕様書を元に SDK を自動生成できる仕組みを構築
- Makefile コマンドで簡単に SDK を生成できるように
- 検証機能の内蔵
- 生成された SDK の主要ファイルの存在確認を自動化
- 生成結果の検証をスクリプトに内蔵
将来の拡張性への配慮
- SDK カスタマイズ
- 現在は OpenAPI generator の基本出力を使用
- 将来的にはカスタマイズオプションを追加可能
- CI/CD 統合
- SDK 生成スクリプトは CI/CD に統合可能な設計
- 後続 CR で CI/CD の自動配布機能を追加予定
- PyPI/npm 公開
- 生成された SDK を PyPI/npm に公開する機能は後続 CR で実装予定
コード品質の向上
- 明確なエラーハンドリング
- openapi-generator-cli が利用できない場合の明確なエラーメッセージ
- OpenAPI 仕様書の取得失敗時の適切なエラーハンドリング
- 柔軟な設定
- OpenAPI URL またはファイルパスを指定可能
- Python / TypeScript を個別に生成可能
既知の制約・注意事項
既存コードとの互換性
- ✅ 既存のコードに影響なし
- ✅ SDK 生成スクリプトは独立したツール
制限事項やトレードオフ
- openapi-generator-cli の依存
- SDK 生成には openapi-generator-cli が必要
- npm 経由または Java 版をインストールする必要がある
- FastAPI アプリの起動が必要
- SDK 生成時は FastAPI アプリが起動している必要がある
- または OpenAPI JSON ファイルを直接指定可能
- SDK のカスタマイズ
- 現在は OpenAPI generator の基本出力を使用
- カスタマイズは後続 CR で実装予定
移行時の注意点
- SDK を再生成する場合は、既存の SDK ディレクトリを削除してから実行してください
- FastAPI API の仕様が変更された場合は、SDK を再生成する必要があります
次のステップ
推奨されるフォローアップアクション
- SDK の実際の生成と検証
- FastAPI アプリを起動して SDK を実際に生成
- 生成された SDK が正しく動作することを確認
- CI/CD 統合
- SDK 生成を CI/CD パイプラインに統合
- API 仕様変更時に自動的に SDK を再生成
- PyPI/npm 公開
- 生成された SDK を PyPI/npm に公開する機能を実装
- バージョン管理とリリースプロセスの確立
- SDK カスタマイズ
- OpenAPI generator の設定をカスタマイズ
- プロジェクト固有の設定を追加
関連ドキュメント
- CR-FASTAPI-012 Spec - 本 CR の Spec
- FastAPI Migration Status - FastAPI 移行状況
- API README - FastAPI Migration Prompts & Documentation(SDK 生成手順を追加)
- FastAPI App Source - OpenAPI 仕様提供元
- SDK Generation Script - SDK 自動生成スクリプト
まとめ
CR-FASTAPI-012 の実装により、SDK 自動生成導線の構築を完了しました。OpenAPI 仕様書を元に Python / TypeScript 向け SDK を自動生成できるスクリプト(tools/generate_sdk.py)を作成し、Makefile コマンド(make sdk, make sdk-python, make sdk-ts)を追加しました。また、docs/api/README.md に SDK 生成手順を追加し、.cursorrules に SDK Auto-Generation Rules を追加しました。
すべての変更が完了し、SDK 自動生成導線が構築されました。