各言語ペアは、翻訳を実行する前にソースとターゲットのモデルがデバイス上にある必要があります。模型は一度ダウンロードされ、アプリの再起動をまたいで存続し、そのペアのすべての翻訳に再利用されます。モデルダウンロードページは、サポートされている 19 言語すべてとそのダウンロード状態を一覧表示し、それぞれをダウンロードまたは削除できるようにします。
なぜ専用のページがあるのか
ML Kit は自動的にモデルをダウンロードしません — 各言語ペアは、そのソースとターゲットの明示的なダウンロードを必要とします。モデルダウンロードページはこの状態を表示し、プラットフォームストレージの奥深くに潜らずにユーザーが管理できるようにします。
ほとんどのユーザーにとって、ワークフローは見えません:ソースとターゲットの言語を選択すると、アプリは最初に翻訳するときに両方のモデルを必要に応じてダウンロードし、モデルは将来のその後の実行のためにデバイス上に残ります。専用のページは、オフラインでの旅行のために事前にダウンロードしたい、不要になった言語を削除したい、何がストレージを消費しているを確認したいユーザー向けです。
言語ごとのモデル状態
- 未ダウンロード。 ダウンロードボタンが表示されます。タップでダウンロードを開始します。
- ダウンロード中。 不確定なスピナーが表示されます。ML Kit は進捗コールバックを公開せず、完了のみを公開します。スピナーは「ダウンロード済み」または「失敗」に解決します。
- ダウンロード済み。 削除ボタン付きのバッジが表示されます。タップでモデルを削除し、ストレージを回収します。
- 失敗。 再試行ボタンがダウンロードの代わりになります。一般的な原因:ネットワークなし、モバイル通信がブロックされている、ディスク容量不足。根本原因を解決してから再試行してください。
シーケンシャルダウンロードキュー
短時間に連続する複数のダウンロードリクエストはキューに入れられ、並列化されません。ネイティブ iOS プラグインは同時 manageModel 呼び出しをきれいに処理しません:2 番目のリクエストは1 番目リクエストをキャンセルします。アプリは単一のチェーンされた Future を通じてダウンロードをシリアライズするため、同時リクエストは次々に解決します。UI は不確定状態でアクティブなダウンロードのみを表示します。キューに入れられたリクエストは自分の番を待ちます。
ダウンロードタイムアウトとポーリング
ダウンロードコールバックを逃した場合(iOS で低ネットワーク条件で observed)、ダウンロード Future がハングする可能性があります。アプリは 30 秒のタイムアウトでこれを防ぎます。タイムアウトが発火した場合、アプリは isModelDownloaded 経由でディスクを直接ポーリングし、モデルが実際に着地したかどうかを確認してから、成功または失敗を報告します。
ストレージコスト
各 ML Kit モデルはディスク上で約 10〜50 MB です。19 言語すべてをダウンロードすると、約 300〜600 MB を消費します。ソースとターゲットのモデルは別々です。1 つのモデルは、ユーザーが選択した役割に応じてソースまたはターゲットのいずれかとして機能できます。
モデルを削除するとストレージを回收できます。自動クリーンアップはありません。アプリをアンインストールすると、プラットフォームアンインストールの一部としてダウンロード済みのすべてのモデルが削除されます。