Hugging Faceは2026年6月23日、ブラウザ上で複数のウェブサイトをまたいで大容量ファイルを共有できるようにする新しいAPI提案「Cross-Origin Storage(COS)」を検証したブログ記事を公開しました。著者はGoogle ChromeのDeveloper Relations EngineerであるThomas Steiner氏です。同社が開発するブラウザ向けAI推論ライブラリ「Transformers.js」に実験的に組み込み、AIモデルファイルの重複ダウンロード問題がどこまで解消できるかを検証しています。COSはまだどのブラウザにもネイティブ実装されていない提案段階のAPIで、記事では拡張機能によるポリフィルを使って動作を確認しています。
ポイント
- Cross-Origin Storage(COS)は、ファイルをURLではなくハッシュ値で識別・管理することで、異なるオリジン(サイト)間でのファイル共有を可能にする提案APIです。
- WICG(github.com/WICG/cross-origin-storage)で提案されており、現時点でどのブラウザにもネイティブ実装されていません。
- Hugging Faceは、パッケージ「@huggingface/transformers」v4.2.0のプルリクエスト#1549で、env.experimental_useCrossOriginStorage = true というフラグ一つでCOSバックエンドを有効化できる実験的対応を追加しました。
- デモではXenova/whisper-tiny.enなどのモデルや、4,733kB(約4.7MB)のWasm実行時ファイル「ort-wasm-simd-threaded.asyncify.wasm」を使い、サイトをまたいだキャッシュ共有の効果を確認しています。
- 記事の検証では、同じモデルを別サイトで読み込んだ際に177MB分の重複ストレージが発生した例が示されており、COS導入後は2回目以降の読み込みが大幅に高速化されると報告されています。
背景と詳細
現在のブラウザキャッシュはオリジン(サイトのドメイン)ごとに隔離される設計になっています。これはセキュリティ上重要な仕組みですが、AIモデルのように数百MB〜数GBに及ぶファイルを扱う場合、同じファイルをサイトごとに何度もダウンロード・保存することになり、ユーザーの通信量やストレージ、待ち時間の無駄につながります。記事ではXenova/whisper-large-v3のような大規模モデルを例に、この重複が実際の利用体験に与える影響を指摘しています。
COS APIは、ファイルの識別にURLではなく暗号学的ハッシュ値を使うことで、この問題に対応しようとする提案です。書き込み時にハッシュ値が一致しない場合は保存に失敗する仕組みになっており、ファイルの改ざんを検知できる点も特徴です。アクセス範囲は origins: ’*’ を指定して全サイトに公開する、特定のオリジンリストに限定する、あるいは何も指定せず同一サイトのみに留める、という3段階で制御できます。
Hugging Faceは、ブラウザ上でAIモデルを動かすJavaScriptライブラリ「Transformers.js」(パッケージ名@huggingface/transformers、v4.2.0、プルリクエスト#1549)にCOSへの実験的対応を追加しました。開発者はenv.experimental_useCrossOriginStorage = trueという一行を追加するだけで、モデル本体に加えてONNX Runtime Web用のWasm実行時ファイルもCOS経由でキャッシュできるようになります。ただしCOSはまだどのブラウザにもネイティブ実装されていないため、記事内のデモはChrome拡張機能によるポリフィルを使って動作を確認したものです。
なぜ重要か
生成AIブームによって、ブラウザだけで動く音声認識や自然言語処理のデモ・ツールが増えていますが、モデルファイルのダウンロードに時間がかかる点は日本のユーザーにとっても体感しやすい課題です。COSが実現すれば、複数の日本語AIツールを使う場合でも初回だけ待てば以降は高速に動作する可能性があり、通信環境が不安定な環境でも使い勝手が改善しうる提案です。またハッシュ値ベースの整合性検証は、ダウンロードしたモデルが改ざんされていないことを技術的に担保する仕組みとしても注目に値します。開発者にとっても、既存コードにフラグ一つ追加するだけで対応できる手軽さは、今後同様の提案が実装される際の参考になりそうです。
今後の見通し
COS APIは現時点でWICGにおける提案段階であり、ブラウザへのネイティブ実装時期は明らかにされていません。Hugging Face側はTransformers.jsでの実験的対応を先行して用意していますが、実際に一般ユーザーが恩恵を受けるには、Chromeなど主要ブラウザでの採用可否や仕様の確定を待つ必要がありそうです。