モバイルアプリへのhot code pushにより、Webの当たり前がアプリの当たり前に

Pocket

モバイルアプリのようなスタンドアローンアプリとWebアプリの違いは、ソフトウェアの更新のタイミングを、ユーザーの自由にできるか否かという部分がとても大きい。例えばアップデートによって一部データが不正に書き換えられてしまうバグがあったとして、開発者としては緊急アップデートを出したいとしても、ユーザーが更新してくれなければ更新されないままになってしまう。

AppStoreの設定で自動更新されるようになったとはいえ

Androidアプリでは特に審査がないためすぐに修正版を配布することができるが、iOSアプリは新しいバージョンを出すために数日間の審査期間を要してしまう。Webアプリではバグ発覚から修正適用まで、(適切な自動デプロイプロセスが整備されていれば)ほぼ作業に要する時間のみで完了するのに対して、この差は大きい。

このためAppStoreの設定で新しいバージョンのアプリが並んだ際に自動更新されるような設定ができるようになったとはいえ、肝心の修正版をAppStoreに並べるまでに、時間を要してしまうのだった。

そんな中、MeteorというWebアプリ向けのPaaSでAndroid/iOS向けのアプリの開発機能がサポートされ、更にhot code pushという機能がサポートされるようになった(参考:Meteorがモバイルアプリでホットコードプッシュを実現)。これは新しいバージョンのコードがある場合に、アプリから新しいバージョンのコードをサーバより取得し、次にアプリが起動されたときに新しいコードが実行される仕組みである。この仕組みのため、審査プロセスなしにiOSアプリを更新することが可能になる。

しかし審査なしに新しいコードを配布できる仕組みなんかをAppleが本当に認めるのか?という疑問が当然出るわけで、その点についてはApple allows hot code push in mobile appsというMeteorブログの記事によるとiOS Developer Programの規約レベルで許可されているみたい。Section 3.3.2によると、

3.3.2 An Application may not download or install executable code. Interpreted code may only be used in an Application if all scripts, code and interpreters are packaged in the Application and not downloaded. The only exception to the foregoing is scripts and code downloaded and run by Apple’s built-in WebKit framework, provided that such scripts and code do not change the primary purpose of the Application by providing features or functionality that are inconsistent with the intended and advertised purpose of the Application as submitted to the App Store.

というように、WebKit framework上で動くアプリで、かつアプリの主要機能の変更を伴わない更新であれば例外的に許可する旨が記載されている。

Meteorはそもそもクライアントとサーバの区別なくコーディングができることを目指している革新的なPaaSであり、かつそれがAndroidやiOS向けのアプリといったスタンドアローンアプリまでもをサポートするようになったことから、Webもアプリも全てひっくるめて一つの考え方で開発ができるような世界が近づいている。更にWebの世界では当たり前のhot code pushが少しずつながらアプリの世界で実現されることで、Webとアプリの考え方が完全に統合されるような世界も近い、なんて気がしている。