10月、Pure Music Player チームはライブラリ同期、新形態デバイスへの適応、サービス接続体験、および基盤ストレージの信頼性向上において数多くの進展を遂げました。今月の主なアップデート内容は以下のとおりです。
🔄 Subsonic 差分同期:通信量を節約し、数秒で更新
リモートライブラリの同期体験をより効率的かつスムーズにするため、Subsonic 音源の同期メカニズムを全面的にアップグレードしました:
- 差分取得メカニズム:従来の全件再スキャンから差分同期へと移行し、リモート側で変更のあった楽曲のみを取得することで、通信量を大幅に削減し所要時間を短縮しました。
- いつでもキャンセル可能&進捗の一元化:同期はいつでも手動でキャンセル可能になりました。音源センターと音源リストの行で同一の進捗状況がリアルタイムに表示されます。
- カバーアートと歌詞の自動補完:同期完了後、不足しているアルバムジャケットや歌詞をバックグラウンドで自動取得して補完します。歌詞はローカルに保存され、オフラインでも閲覧可能です。
- 同名エンティティの分離保存:異なる音楽ソースに存在する同名のアルバムやアーティストを個別に管理・保存し、上書きによる混同を防ぎます。
- 明確なステータスと多言語対応:楽曲情報画面でメタデータの出所が Subsonic であることを明記。同期完了後にライブラリが自動更新され、未同期、同期中、補完中、失敗の各状態について9言語でわかりやすい案内を提供します。
📱 折りたたみ iPhone 再生画面:5形態に適応するキャンバス
新たなデバイス形態の登場を見据え、折りたたみ iPhone および2画面折りたたみ端末向けの新しい再生インターフェースを構築しました:
- 5形態のスマートレイアウト:画面の折り曲げ状態に応じて、テント、縦向き、横向き、展開、ブック型の5つのレイアウトを自動的に選択します。
- 折り目と遮蔽領域の回避:配置アルゴリズムが物理的な折り目やシステムの遮蔽領域を正確に認識。展開状態では左側にカバーアートと操作パネル、右側に歌詞や再生キューを表示し、ブック型スタイルでは歌詞を下半分の領域に見やすく配置します。
- 安心のフォールバック機能:2段階の切り替えスイッチを用意。従来の再生画面へワンタップで戻せるほか、展開時の2カラムレイアウトのみを無効にして、iPad の横向き表示を従来のスタック配置に戻すことも可能です。
- システムのセーフエリアに追従:従来の画面サイズやデバイス判定による処理を整理し、システムから提供されるセーフエリアに追従する設計に改めました。現在、実機での検証を継続しており、一部のアニメーションやアクセシビリティの細部を仕上げています。
🔗 PureStream 設定画面の簡素化:パスワード不要の直接連携と直感的な構成
PureStream サーバーとの接続設定フローを再設計しました:
- 直感的な2つのモード選択:未設定時はまず簡潔な説明を表示し、その後に2つのモードカード(PureStream サブスクリプションが必要であることを明記した「連携カード」と、自構築 PureStream またはサードパーティ製 Subsonic サーバーに対応する「直接接続カード」)を提示します。
- パスワードレスの直接認可:連携完了後、プレイヤーはデバイス認証を通じてホームサーバーから一時的なアカウント情報を直接取得するため、ユーザー名やパスワードの入力が不要になりました。
- 見通しの良い階層構造:読み取り専用のサーバーアドレス表示や、診断画面内のホスト名・物理パスを整理。設定済み画面では「概要 → 接続/同期 → 進捗 → メインアクション → 音質 → 診断」の順に並び、音質設定はデフォルトで折りたたまれます。
⏱ 混雑時にも慌てない通信処理:スマートリトライと穏やかなバックオフ
ネットワークの揺らぎやサーバーの混雑時にも、より堅牢な動作を実現しました:
- 推奨待機時間に基づくリトライ:サーバーから「しばらく待ってから再試行してください」と返された場合、従来の固定5秒・6回失敗ではなく、サーバーが推奨する待機時間に従って再試行します。
- レート制限時の即時通知:アクセス頻度制限に達した際は、無音で待機し続けることなく、ユーザーにしばらく時間をおいて再試行するよう直ちに案内します。
- エラー種別の適切な判別:一般的なネットワークエラーには上限付きの段階的バックオフを適用し、権限未有効化、世帯不一致、古い認可などの明確なエラーの場合は即座にリトライを停止します。各リクエストには固有の識別子が付与され、サーバー側での追跡が容易になりました。
📚 大規模ライブラリモード(Large Library Mode)設定画面の刷新:シンプルで一目瞭然
数万曲以上の大規模ライブラリ管理に向けて、設定インターフェースを刷新しました:
- 呼称の統一:「大規模ライブラリモード / Large Library Mode」に呼称を統一し、「高速リストインデックス」や「ハイパフォーマンスモード」といった混在表現を整理しました。
- 重複情報の排除:同一の技術的事実の重複表示をなくし、ライブラリ規模、構築進捗、会員特典をそれぞれ独立した領域に整理して、カードの多重階層化を解消しました。
- レスポンシブな適応レイアウト:プログレスバーを全幅に拡張し、小型画面での表示崩れを防ぐとともに、大画面での無駄な余白を削減しました。
- 正確なステータス文言:一時停止、失敗、修復、準備完了の各状態に個別のテキストを用意。インデックス消去時の確認ダイアログもスイッチの状態に応じて切り替わり、説明と実際の挙動の不一致を防ぎます。
🛠 ストレージ基盤の信頼性向上
今月、基盤となるストレージに関して2件の信頼性修正を実施しました:
- 旧バージョンライブラリの安全な検出:旧バージョンのライブラリが新バージョンで認識できない場合、起動時に安全で軽量な移行を自動試行します。成功すれば通常どおりローカルフォルダーを追加でき、万一失敗した場合でも元のライブラリをそのまま保持してデータを保護します。
- 大規模ライブラリの差分インデックスにおける曲漏れ防止:これまでインデックス構築後に追加された新曲が漏れてしまうケースがありましたが、インデックスを保存時に同期更新し、起動時にも整合性をチェックするよう改善しました。不整合を検知した場合は自動的に通常リストへフォールバックしてインデックスを再構築し、新しくインポートした楽曲がアルバムやアーティスト画面に確実に表示されるようにしました。
📌 既知の課題と今後の予定
現在のバージョンでは、以下の課題について引き続き改善を進めています:
- 折りたたみ iPhone における一部のアニメーション、ポップアップの配置回避、スクリーンリーダーの読み上げ順序の調整を進めています。「視覚効果を減らす」設定への対応も今後のアップデートで追加予定です。
- ネットワーク再試行に関する画面表示の改善:「接続を確認」を連続でタップした際に重複リクエストが発生する問題への対処や、リトライまでのカウントダウン表示の追加を予定しています。
- ごく初期のバージョンのライブラリでは手動復旧が必要となる場合がありますが、大半の旧ライブラリは起動時の自動移行に対応しています。
今後は、折りたたみデバイスへの最適化とアクセシビリティ対応の仕上げを行い、再試行通知やカウントダウン表示を実装するとともに、旧バージョンライブラリの自動移行対象をさらに拡大してまいります。
