2025年5月20日(火)、「Repete Plus」をアップデートしました。(version 10.2.1)
Repete Plusは、語学学習を支援するオーディオプレイヤーです。
無音部分を自動認識し、語学教材をフレーズごとに間隔をあけて再生できます。
フレーズごとに再生・再生不要を設定、ペアを作成して再生、再生速度変更、録音機能、テキストメモ機能など多彩な機能で語学学習を助けます。
使い方を紹介しているサポートサイトはこちら
Repete Plus – nackpan Blog
また、「Repete」も同時に、Applenに審査に提出したのですが、こちらは、App Storeに表示されるアプリの機能紹介用の動画プレビューについて、
アプリの画面キャプチャのみで動画を作り直してください(必要に応じてナレーションや説明テキストのオーバーレイを加えるのはOKです)。
という理由で却下になりました。実際のところは、画面キャプチャのみで動画を作っているのですが、上端のsafe areaの黒帯が、フレームと誤認されたのかもしれません。
ひとまず、動画プレビューをApp Storeから取り下げ、再審査をお願いしました。
変更点
- 起動処理を最適化し、起動時にフリーズが発生することがある問題を解消しました
- 「履歴」タブで、同一アイテムが重複して表示される不具合を解消しました
- 「フォルダ」タブで、最新の区切り情報が反映されないことがある不具合を修正しました
- 「履歴」タブで、podcastアイテムが表示されない不具合を解消しました
- Repete Plusにて、ペア相手のファイルが存在しない場合、ペア情報を自動的に解除するようにしました
開発者後記
起動処理の最適化とフリーズ問題
「アプリ起動時にフリーズすることがある」と、福助ふくこさんからの報告をいただきました。
XcodeやSwiftのアップデートにより、特にUI操作は必ずメインスレッド(@MainActor)でというルールが厳格化されました。
以前の実装では、重い処理(たとえば、オーディオファイルの無音検出や波形解析)をバックグラウンドで動かしていました。ただ、UIViewControllerに、処理を追加する形になっており、複雑で見通しが悪い形になっていました。
その部分を、Xcode 16系となり、Swift 6に準じてコード修正する過程で、重い処理をメインスレッドで動かしてしまい、起動時に固まる現象を発生させていました。
これを解消するため、
- 音声分析や波形取得など重い処理はすべて、明確にバックグラウンド実行
- UI更新はMainActorで確実に行う
- 分析や初期化の進行状況をイベントで細かくUIに通知
といった設計に全面的に見直しました。
あらためて、処理の流れと意味を丁寧に追う必要があり、かなり時間がかかってしまいました。
この設計の見直しで、見通しがすっきりしました。
「履歴」タブの重複表示バグ
「履歴」タブで同一アイテムが複数表示されてしまう現象を修正しました。
Realm DBで履歴を管理していますが、同じ曲が2回以上記録されてしまうことがある不具合が存在していたので、過去データのクリーンアップを行いました。
「フォルダ」タブでの区切り情報の反映
こちらの問題も、「履歴」タブで重複表示が起こったのと同じ原因で発生していました。
Realm DBでデータを管理していますが、同じ曲が2回以上記録されてしまう不具合が存在しており、そのうちの一つが表示される際、最新状況を反映したデータでない場合があり、表示がおかしくなるケースがありました。そこで、過去データのクリーンアップを行いました。
Podcastアイテムの履歴表示
「履歴」タブにPodcastアイテムが、表示されていませんでした。
今回のアップデートで修正しました。
MPMediaQueryでsongsを指定していたのを、修正しました。
ペアファイルの自動解除
オーディオファイル分析の処理をリファクタリングするにあたって、関連箇所のリファクタリングも行いました。
データベースのオブジェクトをアプリ内でずっと保持していましたが、管理の複雑さを解消するため、必要なときだけ変換する仕組みに変更しました。
その後のアプリ使用中に、ペア機能がうまく機能していないのに気づきました。
端末内ファイルをペアに指定したあと、再選択するとURLの取得に失敗し、選択がキャンセルされる事態になっていました。
原因を調べました。
選曲後のペアファイル種別を指定する際、状況によってMediaLibraryタイプとStorageタイプを適切に指定しなければなりません。
ところが、すべて、MediaLibraryタイプと指定するの単純ミスをおかしていました。
そのため、端末内ファイルをペアに指定すると、動作がおかしくなる状態になっていました。
この不具合に気づいて、血の気が引きました。
バージョン10以降、この状態になっていたのかと思い、愕然としました。
ところが、過去バージョンでも検証したところ、以前の設計が偶然バグを防いでおり、大きなトラブルにはなっていなかったと分かり、正直ほっとしました。
ただ、ペアの片方のファイルを「ファイル」アプリなどで削除して、ファイルが見つからないばあい、残った側が再生できなくなる問題は存在していました。
そこで、ペア相手が見つからない場合は自動でペア解除して単独再生できるようにしました。
これらの修正を終えて、5月16日にApplenにアップデートバージョンを提出しました。
Appleの審査待ちとなりました。
が、その後、「自動再生」機能と、「再開位置調整」機能に問題があることが判明し、審査から取り下げ。
新たに発覚した問題を修正して、5月19日に提出しました。
そして、2025年5月20日にようやくRepete Plus 10.2.1をリリースすることができました。
遅くなって申し訳ありません。
新バージョンでは、起動時にスムーズに操作できるようになりました。
そのほか、さまざまなバグを解消しました。
よろしくお願いします!