SyncTrans 1.0.0 は8月中旬に出荷されました。最終タグ(ビルド 13、8月19日)には、ダウンロードボタンが提供するビルドの上に最後の変更が1つだけ含まれていますが、これは機能というより事務的な調整です。審査での要求に応じ、Mac App Store ビルドではストア自体が提供するアプリ内アップデートを表示しないようにしました。それ以降、これより新しいものは出荷されていません。特定のビルドが何を行うかを知りたい場合は、リリースノートが今も唯一の確かな情報源です。
しかし、リポジトリが止まっていたわけではありません。タグ付けの翌週には、2つの作業の流れが開発ブランチにマージされました。この記事ではそれらを率直に説明します。そのため、まずお断りから始めます:以下に書かれている内容はすべて開発中であり、未リリースで、いかなる日付も約束されていません。これを書いているのは、更新履歴のような沈黙が「活動停止」と読まれてしまうのを避けるためです。
ハイブリッドエンジン:1つのプランではなく3つのスロット
1.0.0 では、エンジンモードはオンデバイス、マネージドクラウド、またはカスタムサービスのいずれか1つを選ぶ形であり、その選択が認識・翻訳・音声のすべてに一括で適用されます。これは最初のリリースとしては適切な形でしたが、実際にいただく要望に対しては大まかすぎました——クラウド翻訳の品質を求めつつ認識はオンデバイスで行いたい方や、ローカル翻訳に高品位なホスト音声を使いたい方などです。
開発中の作業では、単一プランを3つの独立したスロット——認識、翻訳、音声——に置き換え、それぞれ許可されたソースから設定できるようにします。この設計はコードを書く前に紙の上で検証されました。最初のドラフトはレビューでブロッカーを指摘されて却下され、レビュアーの合意が得られるまで改訂が重ねられました。そのプロセスを生き残ったルールは、1.0.0 の粗削りだった部分を物語っています:
- サイレントフォールバックの禁止。セッションの途中でスロットが失敗した場合、タイムライン上でそのターンが明確に失敗として表示され、原因となったスロット名が示されます。別のソースに勝手に切り替わるのではなく、セッションは次の文を待ちます。失敗が繰り返された場合はバナーでスロットの変更が提案されますが、切り替えは常にユーザーの明示的な選択です。
- セッション開始時にプランを固定。会話の途中で設定を変更しても、実行中のセッションには反映されません。次回の開始時に適用されます。これにより、中途半端に適用された状態のバグが一掃されます。
- 1回の呼び出しに対する二重請求の防止。クラウドスロットが関係する場合、各論理操作にサーバー側で重複排除を行う安定した冪等性キーが付与されるため、再試行されたリクエストは初回試行の記録から返され、二重に課金されることはありません。
- 言語はプランではなく組み合わせに対して検証。セッションで提供できる言語ペアは、選択された3つのソースがそれぞれ実行可能な機能の積集合として計算され、セッション開始前に検証されます。そのため、3段階のうち2段階しかサポートしていない言語を混合設定で約束することはありません。
これらはいずれも、出荷済みの仕様を変更するものではありません。1.0.0 の3つのエンジンモードはそのまま維持され、混合構成は置き換えではなく追加機能となります。
ローカルモードの強化
2つ目の作業の流れは、より小規模で戦術的なものです。オンデバイス体験を目的とした3つの修正であり、強化ブランチ上でまとめて開発されました。
モデルのダウンロードは、最初からやり直すのではなく中断した箇所から再開できるようになり、失敗したダウンロードは消滅するのではなくモデルカード上に失敗理由が表示されます。キャンセル処理も同様に改善されました——ダウンロードの停止は処理中のすべてのリクエストに届き、キャンセルされたダウンロードはエラーに見えるのではなく「キャンセル済み」と明記されます。3つ目の修正は UI の正直さに関するものです。macOS のシステム音声が実際に使われる場面(GGUF モデルセットには音声パッケージが含まれないため、システム音声が使用されます)を事前に明示し、システム音声が話せない言語(具体例としてはインドネシア語)は、それらを中心にした設定を構築する前にその旨が表示されます。
これらはいずれも、一度遭遇すると毎回気になってしまう類の問題です。すでにブランチ間でマージされていますが、まだどのリリースにも含まれていません。
意図的に言及していないこと
これらにはバージョン番号も日付も付いていません。どちらもまだ存在しないからです。特にハイブリッドエンジンは、費用とプライバシーを同時に扱うアプリの根幹に関わる大きな変更であり、スケジュールではなく、独自の基準を満たした時点で出荷されます。いずれかが出荷された際には、バージョン番号付きで新着情報に掲載されます——ビルドに含まれる内容の確かな情報源は、このブログではなくそのページです。
これらの方向性のいずれかに関心をお持ちの場合——あるいは別の方向性をご希望の場合——フィードバックボードへの投稿が、どれを最優先で仕上げるかに直接反映されます。