-
Notifications
You must be signed in to change notification settings - Fork 305
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
[project-library-manage] インストール済みライブラリ(ローカルにのみ存在するライブラリ)についても音声ライブラリ管理画面に表示する #1568
base: project-library-manage
Are you sure you want to change the base?
[project-library-manage] インストール済みライブラリ(ローカルにのみ存在するライブラリ)についても音声ライブラリ管理画面に表示する #1568
Conversation
const installedLibraries = ref<Record<EngineId, BrandedInstalledLibrary[]>>({}); | ||
|
||
const isLatest = (engineId: EngineId, library: BrandedDownloadableLibrary) => { | ||
const isLatest = (engineId: EngineId, library: BrandedLibrary) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ローカルにのみ存在するライブラリについては、アップデートそのものを確認できないものの「最新版です」という表記にしかできないんですが、ユーザーが個人的にインストールした音声ライブラリであることを区別するようにちょっと別の処理・表現を考えたいです。(私にはいい案が思いつきませんでした...)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
なんかそういう種類のものを特別なライブラリだと分かるように定義してあげて、そのラベルを書いとくとかどうでしょう?
例えば「カスタムライブラリ」とか。
以下こまごまとした経緯です(なんかちょっと論点がずれてるかも 🙇 )
ローカルにのみ存在するライブラリ
タイトルにも含まれていますが、この呼び方はちょっと誤解がありそうだなと思いました。
おそらくインストール済みのライブラリのうち、downlaodableLibraries(エンジンのdownlaodableLibraries
で得られるライブラリ)ではないもののことですよね。
それらもエンジンを経由しなければ普通にダウンロードは可能だと思うので、別にローカルにのみ存在してるわけじゃないよな~と。
でも良い呼び方を思いつかないんですよね。。
「公式ライブラリ」と「ユーザーライブラリ」かなと思ったんですが、エンジンから案内されていないだけで、特別に限定配布した公式ライブラリみたいなのもありえそうなので。。
もし説明するなら「エンジンから案内されていないライブラリ」とかですかね。
もし名称をつける場合はChatGPT君に聞いた感じ、カスタムライブラリとかがいいかも。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
まー色々考えてカスタムライブラリ
が適切なのかなーと...!
その代わりtooltipとかで説明の部分をしっかり案内してあげるのが良さげですかね...!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
現状のコードだと、説明されていないコンテキストがいろいろ含まれたコードになっていそうに感じました。
3ヶ月後にはもうわかんなくなりそうな気がします 😇
違和感がある点を列挙した後、リファクタリングの方針を提案してみました 🙇
1つ目がBrand
で、これが「エンジン側ではないエディタ側の型」を意味してるのが珍しい気がします。(一般的だったらすみません)
この前提に気づけないとコードがだいぶ読みづらく感じちゃうので、エンジン側の方をプレフィックスEngine
をつけてインポートして、エディタ側の方をEditor
とつけるか、逆に無印にするかすれば読みやすくできるかもです。
2つ目がDownloadable
とInstalled
の型の差で、どっちが何のプロパティを持っているのか把握していないと正しくコードが書けなくなっていそうに感じました。
↓にも関係しますが、そもそも引数の型がDownloadableLibrary | InstalledLibrary
といろんなパターンを想定しないといけないコードは、どこか設計が変かもです。
例えばisUninstallable
関数はInstalledLibrary
以外来ないはず。
3つ目が、そもそもエディター側でライブラリは状態によって3種類あるけれども、それらが明示的に書かれてないかもです。
多分この3種類がありますよね。
- ダウンロードリストにあり、インストールされていないライブラリ
- ダウンロードリストにあり、インストールされているライブラリ
- ダウンロードリストにないけどインストールされているライブラリ
islatestは2にしか定義することができない、1にはisUninstallableを定義できないと思います。
4つ目がallLibraries
で、重複禁止として作られていますが、普通のリストなので勘違いするかもしれません。
これらを踏まえて一旦リファクタリングを入れた方が良さそうに感じました。
方針としてはこんなのとかどうでしょう。
- エンジン由来のライブラリの型はプレフィックスに
Engine
をつける - Brandという言葉を除く
- isLatestとisUninstallableを関数ではなくプロパティとして持たせる
- エディタ側のLibraryはtypeプロパティを持たせて、3種類のライブラリのどれなのか、なんのプロパティを持てるのか型で縛る
{type: "downloadable"} & {type: "installed", isLatest: boolean, isUninstallable: boolean} & {type: "customInstalled", isUninstallable: boolean}
みたいな感じ・・・?
allLibraries
はarrayではなくrecordにする
ただ提案しといてなんですが、ちょっと実際にリファクタリングしてみないと本当にこれでいいのか若干自信がないです。。
確かに、かなり変かもです。ここらへん特によく考えずにコードを引き継いじゃった節があります。
最初は
そうですね、これが2種類の型に圧縮されているのは設計としてよくなさそうです。
これは確かに改善したほうが良さそうです。
私も考えてみましたが、そんな感じでいいんじゃないのかなーと思います...! |
内容
題のとおりです。
ユーザー製音声ライブラリなどの、公式から公開されていない音声ライブラリがインストールされていた場合に、表示できるようにします。
関連 Issue
VOICEVOX/voicevox_project#21
スクリーンショット・動画など
ここでは「ついなちゃんプロジェクトボイドラ一期生音声ライブラリ」と「らごぱすたん音声ライブラリ」がローカルにのみ存在するライブラリとして扱われています。
その他
スクリーンショットの事項を確認するためには SHAREVOX Engine 0.3.0-preview.4が必要です。