# FastAPI実装のソースコード照合(2026-10-27) 追加提供された `server_fastapi` のPythonファイル5本を対象に確認した。`ese774_frame` 内部の動作を推測したものではない。照合したソースの写しはZIP内の `source_reference/server_fastapi/` に保存した。これは**確認用資料であり、ドキュメントのビルド時にインストール・配布される実装ではない**。 ## ソースコードから確認できる構成 - `server.py` はimport時に `FastApiServer` を生成する。`device_cls=DobotCtrl`、`router_cls=None`、`api_spec=None`、`object_name="dobot"` を指定し、`device_kwargs` は `Config` から取得する。`server.run()` は `if __name__ == "__main__"` の内側にある。 - `SyncDobotClient` と `AsyncDobotClient` は、それぞれ `SyncDeviceClient` と `AsyncDeviceClient` を継承する。いずれも `object_name="dobot"`、`api_spec=None` を基底クラスに渡す。 - `server_fastapi/__init__.py` は `DeviceProxy` を `DobotCtrl` と別名 `dobot` で登録し、デフォルトを非同期モードにする。登録処理はimport時に実行される。 - `make_pyi.py` は `DobotCtrl` を元に、`ese774_frame` のヘルパーを用いて `client_async.pyi`、`client_sync.pyi`、`__init__.pyi` を生成する。 ## 設定・利用上の制約 - 両クライアントは `config`、`server_ip`、`server_port` を受け付ける。`config` を指定すると、その `SERVER_IP` と `SERVER_PORT` が個別引数より優先される。両方省略すると `http://None:None` を組み立てるため、**コンストラクタだけでは接続可能な既定値にならない**。 - `SERVER_IP` はHTTPサーバーの待受アドレス、`DOBOT_IP` はロボットコントローラのアドレス。既定の `127.0.0.1` はループバックのみ。 - 提供された `server.py` は `Config.load_yaml()` を呼ばない。YAMLを利用する場合、同一プロセスでサーバー生成前に設定を読み込む必要がある。 - 認証、認可、TLS、リトライ、応答スキーマ、例外の変換は、今回のファイルだけでは断定できない。使用する `ese774_frame` のバージョンと実動作の検証が必要。 - `DeviceProxy` の非同期モードはクライアント呼び出しの形態であり、**ロボットの移動完了を保証しない**。 ## 検証範囲 AST構文、継承関係、コンストラクタ引数、登録パラメータはソースで確認した。一方、このZIPは実行可能な `src/dobot` 全体とフレームワーク実体を含まないため、Sphinxのimportを伴うautodoc、HTTP疎通、実機動作は**未検証**。