Ohara Lab

DeviceClass と関連パッケージの導入

index に戻る

現行方式:DeviceClass を起点に導入する

スサノオの利用に、システム全体をまとめてインストールする作業は必要ない。機器ごとに公開される DeviceClass パッケージが導入の基本単位となる。利用したい機器のパッケージを pip install すると、そのパッケージが宣言する Python 依存関係は pip によって解決される。通信 Frame を先に個別インストールする手順は、通常の利用者には不要である。

python -m pip install <device-package>

<device-package> は実際の PyPI 配布名に置き換える。Python の import 名、PyPI 配布名、起動コマンド名は必ずしも一致しない。公開状況と正確な名前は DeviceClass 一覧 および各パッケージの README / PyPI を参照する。公開されていない機器については、アクセス権や別途配布が必要になる。

パッケージの役割

区分 役割 利用者が通常行うこと
DeviceClass 機器固有の制御、状態取得、操作 使用する機器のパッケージをインストール
通信 Frame DeviceClass をネットワーク越しに公開・呼び出すための共通機能 DeviceClass の依存関係として導入されるものは個別操作不要
DeviceProxy / Client 通信先の DeviceClass を Python オブジェクトに近い形で操作 機器パッケージの説明に従って利用
共通機能 ロギング、プロセス実行、管理など 機器パッケージの依存関係と用途に従う

通信 Frame には ese774-frame(REST / FastAPI)、grpc-frame(gRPC)、tango-frame(TANGO)がある。共通機能には xlogger-py、device_proxy_factory などがある。これらは全機器に一律に必要なインストール対象ではない。 必要な依存関係は DeviceClass 側のパッケージ定義によって決まる。

使い方は二通り

ローカル利用:インストールした DeviceClass を通常の Python クラスとして import し、直接利用する。デバイスサーバーも通信 Frame の起動も必要ない。

ネットワーク利用:機器側 PC で DeviceClass に同梱されたデバイスサーバー起動スクリプトを使い、クライアント側から対応する通信方式で接続する。機器固有の処理は DeviceClass にあり、サーバーの共通機能は通信 Frame が担う。サーバーごとに機器制御処理を再実装する方式ではない。

ローカル:   利用プログラム ── DeviceClass ── 機器
ネットワーク:
  利用プログラム ── Client / Proxy ── 通信 ── Frame / Server ── DeviceClass ── 機器

具体的な通信例は ese774 Quick Start、API 公開方法は 動的ディスパッチ を参照する。

DeviceClass に同梱するファイルの配置

DeviceClass パッケージごとにサンプルやサーバー起動スクリプトを探す負担を減らすため、次のコマンド形式を使用する。module_name は説明用のプレースホルダーであり、実際のコマンド名は各パッケージの案内に従う。

module_name install sample
module_name install server_ese774
module_name install server_grpc
module_name install server_tango
module_name install windows

sample はサンプルプログラム、server_ese774 / server_grpc / server_tango はそれぞれの方式のデバイスサーバー起動スクリプトをカレントディレクトリにコピーする。通信 Frame 本体を新規にインストールする意味ではない。利用者は配置されたスクリプトと設定を確認し、必要に応じて編集してサーバーを起動する。

windows は、対応する DeviceClass が Windows サービスとしてデバイスサーバーを運用するための導入操作である。Windows サービス登録と設定 GUI は整備対象であり、サービス名、実行環境、起動スクリプト、設定ファイル、待受アドレス・ポートなど、登録に必要な値を指定する。Windows サービス対応も各 DeviceClass パッケージが提供するかどうかで決まる。

対応範囲:sample、server_ese774、server_grpc、server_tango、windows のうち、どれを提供するかは各 DeviceClass パッケージが決める。通信 Frame 自体が公開されていても、対象 DeviceClass に対応するサーバー起動スクリプトが同梱されていなければ、その通信方式は使用できない。統一コマンドをまだ備えていないパッケージもあるため、各パッケージのドキュメントで提供ファイルを確認する。

開発者向け:通信 Frame を単独で扱う場合

独自の DeviceClass やデバイスサーバーを開発するときは、通信 Frame を直接インストールして試すこともできる。これは利用者向けの必須手順ではない。

python -m pip install ese774-frame
python -m pip install grpc-frame

対応する Frame の詳細は各プロジェクトのドキュメントを参照する。パッケージ間の依存関係を DeviceClass 側で宣言し、利用者に手動の順次導入を要求しないことが配布上の基本方針である。

旧方式(保存資料)

以前は x_logger、ese774_frame、grpc_frame のソースディレクトリを個別に取得し、pip install . で順次導入する手順を説明していた。これは PyPI 配布と DeviceClass 起点の依存関係解決が整う以前の手順であり、現在の標準導入手順ではない。旧記事の原文は 旧版:基本構成の Install に保存している。


作者:Kengo NAKADA