-
Notifications
You must be signed in to change notification settings - Fork 196
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
refactor: API と音声ライブラリを分離 #1249
Comments
実装方針について迷っています! というのも自分が設計の勉強をしたことがなく・・・。 メンテがしんどくならず、しかし機能実装は容易なラインを見極めたく、資料があれば・・・という感じです 🙇 |
妥当な疑問点だと感じます。
本問題そのものは「 |
ありがとうございます! レイヤーが分かれているとは感じます。 少なくとも、詰め替え前と詰替え後でデータ構造が異なる場合は、構造体を2個定義してでも詰め替えるべきだと感じました! |
👍️
ブログ等が今のところ挙がっておらず判断根拠が足りないので、「同一である間はひとまず使い回してもよい」「同一じゃなくなるタイミングが来たら構造体 2 つ化を強く推奨」をレビュアーの暫定理解として持つのはどうでしょうか? |
良さそうに感じました! こんな感じのふわっとした取り決めを、どこかのドキュメントにふわっとまとめていけると嬉しいかもですねぇ。 |
内容
概要: API と音声ライブラリを分離してリファクタリングしたい
現在の VOICEVOX ENGINE は VVAPI と音声ライブラリ(コア)を pydantic 経由で密結合させがちである。
その結果、内部のリファクタリングが不可能になったり、コアと独立した変更を ENGINE に加えられなくなったりしている(例: #1121 (comment) )。
これは
BaseModel
サブクラスを API 定義と内部型に二重利用していることが本質的な原因であり、このことは長く指摘されてきた(#262)。二重利用はクラス詰め替え等を省略できる短期的効果があったが、長期的デメリットが顕在化してきている。上記問題点はその一例であり、他にも pydantic のバージョン移行に伴う負債が発生している。クラス詰め替えはごくありふれた数行の処理であり、面倒なだけでメンテコストも実際のところはごく小さい。すなわち、二重利用はメリット < デメリットとなりつつある。
このような背景から、API と音声ライブラリの分離によるリファクタリングを提案します。
Pros 良くなる点
Cons 悪くなる点
実現方法
VOICEVOXのバージョン
0.19.0
その他
Go/NoGo 判断の一助として
supported_devices
を分離する draft PR を作成しました(#1250)。必要であればご活用ください。The text was updated successfully, but these errors were encountered: