iOS 向けのアプリを開発している皆さんは、つい最近 Apple から次のような発表があったことをご存知かと思います。

64-bit and iOS 8 Requirements for New Apps

Starting February 1, 2015, new iOS apps uploaded to the App Store must include 64-bit support and be built with the iOS 8 SDK, included in Xcode 6 or later. To enable 64-bit in your project, we recommend using the default Xcode build setting of “Standard architectures” to build a single binary with both 32-bit and 64-bit code.

これはつまり、2015年の2月1日以降、App Store にアップロードされる新しい iOS アプリはすべて、64-bit サポートを含んだ状態で iOS 8 SDK によってビルドされなくてはならない、ということを述べています。

現状の Unity は既に iOS 8 をサポートしていますが、64-bit アプリのビルドはサポートしていません。Unity iOS 開発チームでは、この Apple の発表に対応するためのソリューションとして、IL2CPP と呼ばれる技術を導入することにしました。

IL2CPP とは

これは、ものすごく噛み砕いて言ってしまえば、Unity で使われている C# や JavaScript のスクリプトを C++ へ変換して動かしてしまおうという技術です。詳細についてはこちらのブログ記事(英語)Unite の講演動画(英語)などをご覧ください。

IL2CPP は Unity の WebGL サポートを実現するにあたって開発されたものですが、この技術によってもたらされるパフォーマンスの向上や移植性の高さというメリットは、WebGL に限らずあらゆるプラットフォームにおいて価値のあるものです。そして今回 iOS 64-bit サポートを実現するにあたっても、この技術が活用されることになりました。

スケジュール

IL2CPP は既に Unity 5 の WebGL デモをビルドするのに実働していますが、次にこれを iOS 上で動かすべく開発を推し進めています。

まず、IL2CPP を使った iOS 64-bit サポートのアルファ版が、今後数週間の内にクローズド・テストグループへ提供される予定です。そこで集中的なテストを行ったのち、Unity 5 プレオーダー対象の皆様にベータ版を提供する予定です。

このベータ版の提供時期がいつ頃になるのか、テストの進み具合にもよるため現時点では明言できませんが、来年1月中には行えるものと考えています。このベータ版では、多くの iOS プロジェクトがほとんど変更無しに動かせるレベルとなっていることを目指しています。

Unity 4.6 での対応

私達は多くの開発者が Unity 4 上で完成間近のプロジェクトを抱えていることを認識しています。そして、それらのプロジェクトに対してのソリューションが必要とされていることも強く認識しています。そこで、Unity 5 と同様の iOS 64-bit サポートを Unity 4.6 に対しても進めることにしました。

Unity 4.6 自体は既に Release Candidate が出ており、もうすぐ正式リリースとなる予定です。そののち Unity 4.6.x という形でアップデートを行っていくことになりますが、これのどこかのタイミングにおいて(できれば1月中に)iOS 64-bit サポートのベータ版を追加してリリースしたいと考えています。

Unity 4.6 よりも前のバージョン

残念ながら同様の iOS 64-bit サポートを Unity 4.6 よりも前のバージョン(Unity 4.5 など)において行う予定はありません。Unity 5 の新機能である IL2CPP をバージョンをさかのぼる形で移植するという作業は、バージョンが古くなればなるほど指数関数的に難しさを増していきます。iOS 64-bit サポートをできる限り速やかに実現するためにも、開発対象は 4.6 のみに絞り込むという判断を行いました。

これはつまり、まだリリースされていない開発中のアプリが存在しており、その開発が古いバージョンの Unity を使って進められている場合、そのアプリを App Store でリリースするには、Unity 4.6.x あるいは Unity 5 へのアップグレードが必要になるということです。

既にリリース済みのアプリについて

ところで、来年2月以降に新規にリリースするアプリではなく、既に App Store 上で公開されているアプリについてはどうなるのでしょうか? 私達が Apple 側から得た見解によれば、次のような運用になる模様です。

  • 既にリリースされているアプリは 64-bit サポートを行わなくとも App Store に残り続けます。
  • 既にリリースされているアプリをアップデートする際には、64-bit サポートは必須条件として求められません。Unity 4.x および Unity 5 のいずれのバージョンを使用してもアップデートできます。

ただし、来年2月以降の別のタイミングにおいて、これらのルールが更に厳しくなる可能性もありますので、その点には留意すべきかもしれません。