ガイド
プラグイン配布
配布物は単独プラグインとして完結する(このリポジトリやNode環境は不要)。
配布物の構成
<plugin_id>/ (plugin.config.json の id 名でpython/plugins/へdeployされる)
metadata.txt QGISプラグインのIDカード
__init__.py エントリポイント(classFactory)
main_plugin.py ダイアログ/view/channelの器
bridge.py 製品コード: WebChannel API
logic.py 製品コード: 純粋ロジック
ui/ 製品コード: フロントエンド(パッケージ内に同梱済み)
deploy -Install(npm run deploy:install)で生成されるフォルダが ほぼ配布形態。ui/はパッケージ内にあるためjunction deployでも同梱されるmetadata.txtのname=はQGIS上の表示名。plugin.config.jsonのidがdeploy先ディレクトリ名(=QGISのプラグインID)になるWEBENGINE_LIVE_DIR/WEBENGINE_DEV_SRC未設定では 同梱bridgeと同梱ui/で普通に動作する(env-gated機構は全て無効化される)
配布時に除去するもの
| 対象 | 理由 |
|---|---|
live_driver.py |
pyeval/eval = 任意コード実行。同梱すると環境変数を立てた誰でもQGIS内でコード実行可能になる |
main_plugin.py のDEV_SRCローダ部(load_dev_bridge_class等) |
外部パスからコードをimportする機構。無害だが配布物に残すべきではない |
除去しても環境変数を立てられても ImportError がキャッチされるだけで
正常動作する設計だが、任意コード実行の扉を物理的に残さないため除去を推奨。
例外:
qgis_live_driverは「リモート制御するための製品」 そのものであり、このページの「開発品からdev機構を除く」ルールは 自作プラグイン側に適用するもの。Driverはセッショントークン認証・ localhost限定・ユーザ限定ACLで保護された状態で配布物として成立する (Driver詳細)。