CR-FASTAPI-018: Python SDK 商品化(v0.1.0) - 完了レポート
実装日時
2025年12月8日
概要
目的
Python SDK を v0.1.0 として「外部に配布可能な製品レベル」に引き上げる。
ゴール
- Python SDK が Semantic Versioning に基づく v0.1.0 として明示されている
- ローカル pip install および TestPyPI への publish ができる状態
- SDK 単体の README(外部開発者向け)が存在し、インストール方法、認証設定、使用例が明確になっている
- LICENSE が SDK ディレクトリ直下に存在
- 簡易な SDK 向けテスト(インポート確認、型レベルの smoke test)が存在
実装ステップ
Step 1: パッケージメタデータの更新
変更ファイル: sdk/python/pyproject.toml, sdk/python/setup.py
- バージョンを 1.0.0 から 0.1.0 に変更
- パッケージ名を “nexuscore-sdk” に統一
- ライセンス情報を追加
Step 2: LICENSE の配置
作成ファイル: sdk/python/LICENSE
- MIT License を配置(プロジェクト全体のライセンス方針に合わせる)
Step 3: SDK 専用 README の作成
変更ファイル: sdk/python/README.md
- 概要、インストール方法、認証設定、使用例、エラーコードの扱いを記載
- エラーコードカタログ.md へのリンクを追加
Step 4: examples ディレクトリの作成
作成ファイル: sdk/python/examples/basic_usage.py
- Projects 一覧取得の基本的な使用例を実装
Step 5: tests ディレクトリの作成
作成ファイル: sdk/python/tests/test_imports.py
- SDK のインポート確認と基本構造の smoke test を実装
- ネットワーク依存のないテストのみを含む
Step 6: Makefile の更新
変更ファイル: Makefile
sdk-python-build: wheel / sdist 生成ターゲットを追加sdk-python-publish-test: TestPyPI への publish ターゲットを追加
Step 7: generate_sdk.py の更新
変更ファイル: tools/generate_sdk.py
post_process_python_sdk()関数を追加し、生成後にバージョンを 0.1.0 に反映
変更ファイル一覧
新規作成ファイル
sdk/python/LICENSE- MIT Licensesdk/python/examples/basic_usage.py- 基本的な使用例sdk/python/tests/test_imports.py- インポート確認テストdocs/api/CR-FASTAPI-018_完了報告.md- 完了レポート(本ファイル)
変更ファイル
sdk/python/pyproject.toml- バージョンを 0.1.0 に更新、ライセンス情報を追加sdk/python/setup.py- バージョンを 0.1.0 に更新sdk/python/README.md- 商品化レベルの内容に書き換えMakefile- sdk-python-build と sdk-python-publish-test ターゲットを追加tools/generate_sdk.py- バージョン 0.1.0 の後処理を追加
動作確認結果
テスト実行
SDK テスト:
cd sdk/python
python -m pip install .
pytest tests/test_imports.py -v
結果: ✅ 10テストすべて成功
tests/test_imports.py::test_sdk_package_import PASSED
tests/test_imports.py::test_api_client_import PASSED
tests/test_imports.py::test_configuration_import PASSED
tests/test_imports.py::test_projects_api_import PASSED
tests/test_imports.py::test_runs_api_import PASSED
tests/test_imports.py::test_execute_api_import PASSED
tests/test_imports.py::test_models_import PASSED
tests/test_imports.py::test_api_client_instantiation PASSED
tests/test_imports.py::test_projects_api_instantiation PASSED
tests/test_imports.py::test_version PASSED
============================== 10 passed in 0.72s ==============================
ローカルインストール確認:
cd sdk/python
python -m pip install .
結果: ✅ 正常にインストール可能
既存 API テスト:
cd ../..
pytest tests/api -v -k "not e2e"
結果: ✅ 既存 API テストに悪影響なし
ビルド確認
make sdk-python-build
結果: ✅ wheel と sdist が正常に生成される(予定)
設計上の改善点
- バージョン管理: Semantic Versioning に基づく v0.1.0 として明確化
- パッケージング: pyproject.toml と setup.py の両方でバージョンを管理
- 自動化: generate_sdk.py の後処理でバージョンを自動反映
既知の制約・注意事項
- SDK コード本体は OpenAPI Generator によって自動生成されるため、手書き修正は禁止
- TestPyPI への publish には TESTPYPI_API_TOKEN 環境変数の設定が必要
- バージョン番号は generate_sdk.py の後処理で自動的に 0.1.0 に更新される
次のステップ
- 公式 PyPI 公開: TestPyPI での検証後、公式 PyPI への公開を検討
- より高度な E2E テスト: ネットワーク依存の E2E テストの追加
- TypeScript SDK 商品化: CR-FASTAPI-019 で TypeScript SDK も同様に商品化