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

整理: _speaker_info()MetasStore へ移植 #1261

Merged
merged 23 commits into from
Jun 23, 2024

Conversation

tarepan
Copy link
Contributor

@tarepan tarepan commented May 18, 2024

内容

概要: _speaker_info()MetasStore へ移植してリファクタリング

_speaker_info() は話者情報取得の様々な処理をおこなっている。
これは現在 router 下で定義されているが、本来は router でなくドメインで処理されるべきである。実際、_speaker_info() には移植の FIXME がすでに付与されている。
話者関連ドメインは Metas に集約されており、ここが移植先としてふさわしい。

このような背景から、_speaker_info()MetasStore へ移植してリファクタリングすることを提案します。

Review 向け情報

root_dir 廃止と仕様変更

本 PR での router root_dir 引数廃止は事実上仕様変更ではない。以下詳細。

MetasStore() は初期化時に root_dir / "speaker_info" を話者ディレクトリとして引数で受け取っている。
一方、移植前の段階では router が引数として root_dir を受け取り、これを _speaker_info() 定義内から参照して root_dir / "speaker_info" パスを生成していた。
形式的には MetasStoreroot_dir と router 引数の root_dir を個別に設定できる。しかし実際は MetasStore() も router も generate_app() 内でのみ利用されており、同じ root_dir を利用している。すなわち root_dir は事実上共通である。

本PR では _speaker_infoMetasStore 内に移植する際、_speaker_info() 内の router root_dir 参照を廃止して MetasStore init 側の root_dir 値を使っている。
これは形式的には仕様変更だが、上記の通り、実質的には仕様変更ではない。ゆえに router 引数廃止は無問題である。

関連 Issue

@tarepan tarepan requested a review from a team as a code owner May 18, 2024 06:39
@tarepan tarepan requested review from Hiroshiba and removed request for a team May 18, 2024 06:39
Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ちょっと相談です!

今までMetasというのが特にドキュメントなどで範囲指定されておらず、キャラの名前とかスタイル名とか程度の文字情報だけ持ってた形でした。
このPRでアイコン等のリソース情報も抱える形になるのですが、その方針が良いか若干迷ってます!

・・・とはいえ名前くらいかもです。Metaというと文字列やobjectという印象があるくらいなので。
イメージとしては真のCharacterInfoになる感じでしょうか。
あるいはCharacterResource・・・?かCharacterMetaResource・・・?

(イメージ湧いてないだけでどれが良さそうか自分でもわかってない感じです)

voicevox_engine/metas/MetasStore.py Outdated Show resolved Hide resolved
@tarepan
Copy link
Contributor Author

tarepan commented May 29, 2024

このPRでアイコン等のリソース情報も抱える形になるのですが、その方針が良いか

1つのクラスが概略情報と詳細情報(SpeakerSpeakerInfo)を提供するのは自然な形に感じます。

ご指摘の通り、Metas というフワフワ概念名が違和感の原因と感じます。
Metas という語は歴史的経緯 + コア API 名に由来するものなので、ENGINE 内から消えても違和感ありません。
MetasStore の実体は「キャラクター情報の保持と提供」を役割とするマネージャークラスであるため、CharacterManager がより適切な名称と考えます。
そして CharacterManager にリネームされれば本 PR の .speaker_info() 移植は自然に見えます。
(リネームする場合、リネームは後継 PR が適切そうです)


@Hiroshiba
全指摘箇所の反映・テストパスを確認しました。Re-review よろしくお願いします。

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!!

おそらく @sabonerune さんのリソースURLのPRはこちらの変更に追従しないとかもです。
たぶんMetasStore(あとあとはCharacterManager?)にresource_managerを渡す感じになるのかなと!

@Hiroshiba
Copy link
Member

うっ・・・ すみません。。_speaker_infoにコンフリクトが発生して、正しく解消できる自信ないです・・・
すみません、おまかせできると・・・ 🙇

@tarepan
Copy link
Contributor Author

tarepan commented Jun 18, 2024

#1318 は変更範囲がデカそうなので、あちらを先に merge するのが丸そうです。
#1318 merge 確認後にコンフリクト解消してメンションします。

@tarepan
Copy link
Contributor Author

tarepan commented Jun 23, 2024

@Hiroshiba
コンフリクト解消しました。マージ可能です。

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!!

いくつかこちらで変えさせていただきます!

voicevox_engine/metas/MetasStore.py Outdated Show resolved Hide resolved
voicevox_engine/metas/MetasStore.py Outdated Show resolved Hide resolved
voicevox_engine/metas/MetasStore.py Outdated Show resolved Hide resolved
@Hiroshiba Hiroshiba merged commit 066dcf0 into VOICEVOX:master Jun 23, 2024
4 checks passed
@tarepan tarepan deleted the refactor/metas_spk branch June 23, 2024 12:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants