Open Hiroshiba opened 3 months ago
とりあえず現状のエンジン周りのシーケンス図をまとめてみました。
sequenceDiagram
actor User
participant Renderer
participant Electron
participant Engine
participant VVPP
User ->> Electron: 起動
opt VVPP追加
Electron ->> +User: 意思確認
User -->> -Electron: OK
Electron ->> +VVPP: インストール
VVPP -->> -Electron: 完了
end
Electron -) Engine: 起動
Electron ->> Renderer: 起動
Renderer ->> +Electron: エンジン情報取得
Electron -->> -Renderer: 返却
Renderer ->> +Engine: キャラ情報取得
Engine -->> -Renderer: 返却
Renderer ->> User: 表示
sequenceDiagram
actor User
participant Renderer
participant Electron
participant Engine
participant VVPP
User ->> Renderer: 終了
Renderer ->> Electron: 終了
Electron ->> +Engine: 終了
Engine -->> -Electron: 完了
opt 予約されたVVPP削除
Electron ->> +VVPP: アンインストール
VVPP -->> -Electron: 完了
end
opt 予約されたVVPP上書き
Electron ->> +VVPP: リネーム(アップデート)
VVPP -->> -Electron: 完了
end
Electron ->> +Renderer: 終了
Renderer -->> -Electron: 完了
Electron ->> User: 完了
sequenceDiagram
actor User
participant Renderer
participant Electron
participant VVPP
User ->> Renderer: VVPP選択
Renderer ->> +User: 意思確認
User -->> -Renderer: OK
Renderer ->> +Electron: VVPP追加
Electron ->> +VVPP: インストール
VVPP -->> -Electron: 完了
Electron -->> -Renderer: 完了
Renderer ->> User: 再読み込みを促す
sequenceDiagram
actor User
participant Electron
participant VVPP
User ->> Electron: VVPP追加
Electron ->> +User: 意思確認
User -->> -Electron: OK
Electron ->> +VVPP: インストール
VVPP -->> -Electron: 完了
Electron ->> User: 再読み込みを促す
sequenceDiagram
actor User
participant Renderer
participant Electron
participant VVPP
User ->> Renderer: VVPP選択
Renderer ->> +Electron: VVPP削除
Electron -) VVPP: アンインストール予約
Electron ->> -Renderer: 完了
Renderer ->> User: 再読み込みを促す
sequenceDiagram
actor User
participant Renderer
participant Electron
participant Engine
participant VVPP
User ->> Renderer: 再読み込み
Renderer ->> Electron: 再読み込み
Electron ->> +Engine: 終了
Engine -->> -Electron: 完了
opt 予約されたVVPP削除
Electron ->> +VVPP: アンインストール
VVPP -->> -Electron: 完了
end
opt 予約されたVVPP上書き
Electron ->> +VVPP: リネーム(アップデート)
VVPP -->> -Electron: 完了
end
Electron -) Engine: 起動
Electron ->> Renderer: 再起動
Renderer ->> +Electron: エンジン情報取得
Electron -->> -Renderer: 返却
Renderer ->> +Engine: キャラ情報取得
Engine -->> -Renderer: 返却
Renderer ->> User: 表示
内容
VOICEVOXはUI(レンダラープロセス)起動直後に1回だけエンジンからキャラクターなどの情報を取得しています。 起動シーケンスが分かりやすいメリットはありますが、最近になってきて融通が効きにくいデメリットが目立ち始めました。
今のところ、この制約をすぐに取っ払わないといけないわけではないのですが、将来的に必ず障害になるので今のうちから徐々に方針を模索したいです。
課題点はこの3つに集約されると思います。
Pros 良くなる点
機能追加が簡単になる。
Cons 悪くなる点
どの処理がどの処理と結びついているのかが明確ではないので、まずはひたすら調査が必要になる。
実現方法
とにかく調査して現状を洗い出しまくる。 その後設計を考えて、問題がないか確認する。(見つかった問題は列挙しておく。) 問題なさそうな設計を思いついたら終わり。
VOICEVOXのバージョン
0.20.0
その他
とりあえずエディタとエンジンの分離に関しては、このissueのことを考えなくていいはず。 レンダラープロセスの起動前にエンジンのインストールやアップデートを行えばいいので。
関係ありそうなissueリスト