VOICEVOX / voicevox_engine

無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXの音声合成エンジン
https://voicevox.hiroshiba.jp/
Other
1.29k stars 195 forks source link

refactor: `voicevox_engine` ディレクトリへ `features` ディレクトリを追加 #1279

Open tarepan opened 4 months ago

tarepan commented 4 months ago

内容

概要: voicevox_engine ディレクトリへ features ディレクトリを追加するリファクタリングを提案します

voicevox_engine 下に置かれているモジュール群は以下の 2 種類の役割に大別できる:

サーバー関連モジュールは app ディレクトリ下に集約されているが、各 feature モジュールは voicevox_engine ディレクトリ下に直接配置されている。

voicevox_engine/ を初めて覗く開発者の多くは「API がどう提供されているか」か「feature はどう実装されているか」のいずれかが知りたいと整理するならば、voicevox_engine の直下には appfeatures が並んでいるのが望ましい。

このような背景から、voicevox_engine ディレクトリへ features ディレクトリを追加するリファクタリングを提案します。

次のディレクトリ構造が好ましいと考えています:

Cons 悪くなる点

無し

実現方法

VOICEVOXのバージョン

0.19.0

Hiroshiba commented 4 months ago

なるほどです!

featuresに分離しても違和感はそのまま残ってる気がしました。 雰囲気はutilityに全部突っ込む感じに近そう。

あと app と features という並びだと、始めてリポジトリ見た人はどっちに何の機能が入ってるか想像できないかもです。 (FastAPIを知ってるとサーバー周りが app 側に入っているのだとわかる)

とはいえ、現状のファイル構成が最高ではないとは思います。 一旦どこに配置するか全部考えてみるのはどうでしょうか。 engine_manifestsettingmetasmodel辺りがfeaturesだと違和感あるかもです。

もし何か将来的なことも考えてでしたらそちらもお聞きしたいです・・・!

P.S. ちゃんと考えれてないですが、appをserverかapiにし、"機能"っぽいのをvoicevox_engineディレクトリ直下に配置して、あとその他を何かのディレクトリにまとめていくと良いのかもと思いました。 例えばユーザー辞書に興味がある人はディレクトリを掘らずに user_dict にたどり着けるかなぁと。