OpenAIExpo2026/02/27 19:15

Ship smaller OTA updates: bundle diffing comes to EAS Update in SDK 55

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

EAS Update(SDK 55)でバンドル差分配信を導入 — OTA更新を小さく

Key Points

  • ダウンロード最大75%削減
  • bsdiffで差分パッチ配信
  • SDK55でベータ・オプトイン

Summary

SDK 55 で EAS Update にバンドル差分配信(bundle diffing)がベータ導入されました。デバイスはフルバンドルではなく bsdiff によるバイナリパッチを受け取り、ダウンロード容量を約75%削減できます(例: 3MB → 約0.75MB)。差分配信はベータかつオプトインです。

Key Points

  • 有効化方法: アプリが SDK 55 以上であることを確認し、アプリ設定に {"expo":{"updates":{"enableBsdiffPatchSupport":true}}} を追加する。
  • 検証方法:
    • Expo サイトの Update Details ページで差分が配信されているか確認。
    • アプリ内で Updates.readLogEntriesAsync() を呼び出し、"patch successfully applied" 等のログを探す。
  • 動作原理: EAS Update は bsdiff でパッチを生成し、パッチが有意に小さく、効率的に生成できる場合のみ配信する。条件に合わなければフルバンドルを返す。
  • 制限事項(実務で注意する点):
    • 組み込み(embedded)バンドルはパッチのベースにならない。
    • デバイスは既に公開済みのアップデートを実行している必要がある(初回はフルバンドルを受け取る場合あり)。
    • パッチはチャンネル上で最新から二番目の更新に対して事前計算され、それ以外の組み合わせはオンデマンドで生成されるため、公開直後は数分の遅延でフルバンドルが配信されることがある。
  • 推奨事項:
    • 小さなバグ修正やコピー変更など頻繁に配信する更新では有効性が高い。
    • 問題があれば Discord またはウェブ経由でフィードバックを送る。

Practical impact

開発チームはオプトイン設定を行い、差分の配信ログを確認するだけで帯域とユーザーのダウンロード時間を大幅に削減できます。パッチ生成の遅延や非適用ケースに留意して運用してください。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

より小さなOTAアップデートを配信:SDK 55のEAS Updateにbundle diffingが登場

EAS UpdateがSDK 55でバンドル差分(bundle diffing)をサポートするようになりました。デバイスはフルバンドルを毎回ダウンロードする代わりに、変更分のみを含む小さなパッチを取得できるため、ダウンロードサイズが最大で約75%削減されます。

概要

これまで、EAS Updateでアップデートを公開するとユーザーは新しいフルバンドルをダウンロードしていました。多くのリリース(バグ修正、文言変更、軽微なUIの調整など)は実際に変更されるコードがごく一部であるにもかかわらず、数メガバイト単位の転送が発生していました。SDK 55から、EAS Updateはバンドル差分をサポートします。フルバンドルの代わりに、デバイスは既にある更新と新しい更新の差分を表す小さなバイナリパッチを受け取り、ローカルで適用します。

当社のテストでは、パッチはフルバンドルと比べてダウンロードサイズを約75%削減しました。具体例として、通常3MBのアップデートが約0.75MBまで小さくなる可能性があります。ユーザーはより速く更新を受け取り、ネットワーク帯域の消費も削減されます。

バンドル差分はベータかつオプトインです。以下で動作の仕組みと有効化方法を説明します。

bundle diffingとは?

bundle diffingでは、expo-updatesクライアントがデバイス上に既にある内容を基準に新しい更新との差分(diff)を要求し、そのパッチをローカルで適用します。Hermes bytecodeおよびJavaScriptのダウンロード時間が、AndroidおよびiOSの両方で約75%短縮されると見込まれています。

バンドル差分の動作原理

EAS Updateはbsdiffアルゴリズムを使ってパッチを生成します。デバイスが更新を要求したとき、EAS Updateは以下の条件を満たす場合にのみパッチを配信します:

  • パッチがフルバンドルに比べて実質的に小さいこと。そうでない場合はデバイスはフルバンドルを受け取ります。
  • 効率良く計算できること。パッチ生成がリソース集約的すぎる場合はフォールバックしてフルバンドルを配信します。

パッチ生成や適用が明らかにメリットにならない場合は、従来通りフルバンドルを配信します。

アプリでの有効化方法

  • 前提条件:アプリはExpo SDK 55以降を使用している必要があります。

  • 次に、アプリ設定で有効にします:

    { "expo" : { "updates" : { "enableBsdiffPatchSupport" : true } } }

有効化確認方法

  • Expoウェブサイト:Update Detailsページでバンドル差分が配信されているか確認できます。公開したUpdate Groupを開き、確認したいプラットフォームを選択してください。
  • アプリ内ログ:Updates.readLogEntriesAsync()を呼び出し、パッチが適用されたことを示すログエントリ(例: “patch successfully applied”)を探してください。

問題が発生した場合は、Discordまたはウェブサイトを通じてご連絡ください。

バンドル差分の制限事項

バンドル差分はSDK 55でベータ段階です。現時点の制限事項は以下の通りです:

  • Embedded bundlesは対象外です。埋め込みバンドルはパッチのベースとして使われません。
  • デバイスは既に公開された更新を実行中である必要があります。パッチを受け取るには、デバイスが公開済みの更新を既に実行している必要があります。
  • すべての更新ペアに対して即座にパッチが保証されるわけではありません。更新が公開されると、EAS Updateはチャンネル上の「2番目に新しい更新」に対してのみ事前にパッチを計算します。デバイスが別の公開済み更新を実行中に新しい更新を要求した場合、そのデバイスは最初はフルバンドルを受け取ります。その特定のベース更新に対するパッチはオンデマンドで生成され、以降の同様のリクエストに対して配信されます。
  • パッチは公開後すぐに生成されるわけではありません。公開からパッチ準備完了まで数分かかることがあり、その間はデバイスがフルバンドルを受け取る可能性があります。

フィードバック

バンドル差分は、ユーザーの帯域コストを下げ、更新配信の効率化を図るために開発しました。将来的には埋め込みバンドルに対する差分適用のサポートも検討しています。バンドル差分の利用感やご要望があれば、Discordまたはウェブサイト経由でぜひお知らせください。