アプリはどう更新されるのか? App Store 配信、段階的リリース、強制アップデート

読了 5分

スマートフォンのアプリアイコンに赤い丸が付いていたり、アプリを開いた途端「アップデートが必要です」という画面に出会ったりしたことがあるはずです。ある日は気づかないうちに新しいバージョンに入れ替わっており、ある日はユーザーが自分でダウンロードしないと再びアプリを使えなくなっています。

この記事では、アプリのアップデートがどんな道をたどってユーザーに届くのか、そして開発元はその流れをどこまで制御できるのかを、コードなしで整理します。アプリとウェブの大きな違いが気になる方は、アプリ対ウェブ ── ネイティブ・ハイブリッド・App Store 審査 を先に読んでおくと文脈がつながりやすいです。

新バージョンが届くまでの道 #

アプリが作られてユーザーに届くまでの道は、おおむね同じです。会社が新しいバージョンをビルドして App Store にアップロードし、App Store が審査をし、審査を通ったバージョンをユーザーがダウンロードする、という流れです。

審査は単なる形式チェックではありません。約束した権限以外を勝手に使っていないか、決済は決められた決済システムを通っているか、広告やガイドラインに合わないコンテンツが含まれていないか、を見ます。結果は通常 1 日から数日で返ってきて、却下されれば会社は修正して再提出することになります。この一段階があるために、アプリはウェブサイトのように即座に新バージョンを出すことができず、事故が起きてもパッチがユーザーに届くまでに数日かかることがあります。

自動アップデートが動く仕組み #

ほとんどのユーザーはアプリを手動で更新しません。iOS も Android もデフォルトで自動アップデートがオンになっていて、Wi-Fi に接続中・充電中・使われていない時間帯を選んで新しいバージョンを裏でダウンロードしておきます。だから次にアプリを開くと、いつの間にか画面構成が少し変わっていることがあります。

自動アップデートをオフにしているか、データ節約設定をオンにしているユーザーには赤い丸だけが表示され、実際のアップデートはユーザーがタップするまで先送りされます。会社の側から見ると「新しいバージョンを配信した」とはいえ、全員が同時に新バージョンに乗り換えるわけではないという事実が重要になります。1 年前のバージョンをそのまま使っているユーザーがいることもあり、ある時点で会社が調べてみると、5・6 種類のバージョンが同時に動いていることが普通です。

段階的リリース ── 1% から少しずつ広げる #

新バージョンに大きな変更があるとき、会社はたいてい一度に全員へ配ったりはしません。一部のユーザーにだけ先に配る段階的リリース(rollout)を使います。最初は全ユーザーの 1% にだけ新バージョンが見えるようにし、クラッシュ率・エラー報告・評価が安定して入ってきたら 5%・10%・50%・100% という具合に比率をゆっくり上げていきます。

この構造は事故を小さく閉じ込めるための仕組みです。万一新バージョンに大きなバグがあっても、5% で止めておけば 95% のユーザーは影響を受けずに前のバージョンをそのまま使い続けているわけです。会社は段階的リリースを一時停止することも、さらに踏み込んで新バージョンの配信を止め、以前のバージョンを再びデフォルトに戻すこともできます。

強制アップデートはどう可能なのか #

ときどきアプリを開くと「このバージョンはサポート終了です。アップデートしてください」という画面の向こう側で、何の機能も使えないように塞がれていることがあります。よく強制アップデートと呼ばれる挙動です。

OS のレベルで、特定のアプリの使用を強制的に止める権限はありません。だから強制アップデートは、実はアプリ内にあらかじめ組み込まれた手続きの結果です。アプリは起動するたびに自社のサーバーに「いま許容される最低バージョンは何か」を問い合わせ、ユーザーの現在のバージョンがその最低バージョンよりも低い場合、メイン画面の上に「アップデートが必要です」という案内を出して機能を塞ぎます。セキュリティ事故・データ構造の変更・決済 API の廃止のように、旧バージョンを使い続けさせると危険、あるいはそのままでは壊れてしまう状況で、この仕組みが動員されます。

サーバー側の最低バージョン値を変えるだけで全ユーザーに即座に適用されるので、App Store 審査の日程とは独立に動く速い制御手段でもあります。

ウェブはリロード、アプリはもう一段 #

ウェブサイトは会社がサーバーコードを書き換えた瞬間から、次のリロード以降すべてのユーザーが新しいバージョンを見ることになります。だから事故が起きても分単位で元に戻せます。アプリはそう簡単には切り替わりません。ビルド → 審査 → 段階的リリース → ユーザーの自動アップデート、と複数の段階が間に挟まり、その段階ごとに検査と制御が働きます。ゆっくりな分だけ安定した道ですが、事故が起きたときに会社が切れるカードはウェブよりも狭くなります。

次にアプリで「アップデートが必要です」という画面に出会ったら、その一行の裏でビルド・審査・最低バージョンチェックがずらりと並んで到着していることを思い浮かべるとよいでしょう。リロード 1 回では終わらない分、アプリのアップデート案内は一度押しておくほうが安全です。

X