Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

engine_manifest.json パスの厳密さと影響範囲 #1259

Open
2 tasks done
tarepan opened this issue May 18, 2024 · 4 comments · May be fixed by #1390
Open
2 tasks done

engine_manifest.json パスの厳密さと影響範囲 #1259

tarepan opened this issue May 18, 2024 · 4 comments · May be fixed by #1390
Assignees
Labels
機能向上 状態:実装 実装をおこなっている状態

Comments

@tarepan
Copy link
Contributor

tarepan commented May 18, 2024

質問の内容

概要: engine_manifest.json のパスはどのレベルで変更困難か、その影響範囲はどこか、が知りたいです

engine_manifest.json はエンジンの静的情報をもつファイルであり、様々な形で利用されている。
現状でそのパスはエンジンルート直下となっている。

VOICEVOX/voicevox_engine レポジトリの検索機能を用いたところ、engine_manifest.json パスは少なくともマルチエンジン利用側で <engine_root>/engine_manifest.json に決め打ちされていることがわかった。すなわち VVAPI か VVPP 仕様の一部になっているようであった。これは engine_manifest.json パスの変更は難しいことを示唆する。

このように engine_manifest.json パスは慎重な管理が必要なようにみえるが、その仕様・影響範囲が文章化されていない。
ゆえにコード上にハードコードすべき値を引数化している(ようにみえる)箇所があるなど、仕様の曖昧さが様々な問題の遠因となっている。

このような背景から以下の質問があります:

  • engine_manifest.json のパスは VOICEVOX/voicevox_engine 外のどこから利用されているか(=影響範囲はどこか)
  • engine_manifest.json のパスはどのレベルで変更困難か(回答例: 今後ずっと固定)

VOICEVOXのバージョン

0.19.0

@tarepan tarepan added the 要議論 実行する前に議論が必要そうなもの label May 18, 2024
@Hiroshiba
Copy link
Member

影響範囲に関して、
VOICEVOX orgとしては既存エディタが依存しています。そのエンジンが何かを起動前に知ることができます。
VOICEVOX org以外の影響範囲としては、可能性としてはパッケージ版エンジンを利用する全サードパーティが依存している可能性があります。

パスを変える困難さですが、
ビルド後のengine_manifest.jsonは必ずrootにないとダメだと思います。変えるならメジャーバージョンアップのタイミングかなと思いますが、変える必要はないようにも感じます。
ビルド前、つまりソースコードのengine_manifest.jsonは別にrootになくても良いと思います。ビルド時にパスを移動さえすれば良いかもです。ちょっと検討が足りてないかもです。

engine_manifest.jsonの仕様がどこにも描かれていないのはなかなかに問題ですね・・・。
(課題感があるということの共有まで 🙇 @y-chan @takana-v

@tarepan
Copy link
Contributor Author

tarepan commented May 22, 2024

VOICEVOX orgとしては既存エディタが依存 ... パッケージ版エンジンを利用する全サードパーティが依存している可能性

👍️
理解しました。
マルチエンジンでも重要な役割を果たしているということですね。


ビルド後のengine_manifest.jsonは必ずrootにないとダメ

👍️
理解しました。この明確化は非常に有意義だと感じています。

rootにないとダメ ... 変える必要はない

👍️
同意です。

ビルド前、つまりソースコードのengine_manifest.jsonは別にrootになくても良い

理論的には正しそうです。
VOICEVOX/voicevox_engine に関しては、fork したマルチエンジンがバグらないよう root 直下に engine_manifest.json を固定するのが実務的に良いと考えます。
ゆえに「ビルドされたエンジンのルートにあれば良いよ、うちは最初からルートに置いておくよ」が良いと考えます。


engine_manifest.jsonの仕様がどこにも描かれていない

上記でパスがルート固定と明確化され、またマルチエンジンユーザーが参照しうることも明確化されました。
これはつまり、VOICEVOX API 仕様(それとも VVPP 仕様?)の一部として「engine_manifest.json をエンジンのルート直下に置く」が事実上あるのと同義と考えます。
この仕様はエンジン連携の基礎中の基礎となるため、早期の明文化が求められると考えます。

暫定的に書くとしたら VOICEVOX ENGINE の README.md マルチエンジン節かと思います。
この節に書くのはどうでしょうか?

@Hiroshiba
Copy link
Member

この仕様はエンジン連携の基礎中の基礎となるため、早期の明文化が求められると考えます。
暫定的に書くとしたら VOICEVOX ENGINE の README.md マルチエンジン節かと思います。

現状最適な場所に感じました!!

全体設計.mdみたいなのを作ってそこに集約、とかもありな気もしますが、うーん。
ドキュメントは何をどこに書くのが良い設計なのかわからずいつまでも整理できないかもですね・・・。

@tarepan tarepan added 状態:実装者募集 実装者を募集している状態 and removed 要議論 実行する前に議論が必要そうなもの 状態:設計 設計をおこなっている状態 labels May 27, 2024
@tarepan tarepan added 状態:実装 実装をおこなっている状態 and removed 状態:実装者募集 実装者を募集している状態 labels Jun 3, 2024
@tarepan tarepan self-assigned this Jun 3, 2024
@tarepan
Copy link
Contributor Author

tarepan commented Jun 3, 2024

着手しました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
機能向上 状態:実装 実装をおこなっている状態
Projects
None yet
2 participants