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 License
  • sdk/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 も同様に商品化

関連ドキュメント


This site uses Just the Docs, a documentation theme for Jekyll.