説明書を読まなくても使い方がわかるのが、iPhoneの魅力であり強みです。しかし、知っているつもりでも正しく理解していないことがあるはず。このコーナーでは、そんな「いまさら聞けないiPhoneのなぜ」をわかりやすく解説します。今回は、『次のシステムはアプリの起動が速くなるってホント?』という質問に答えます。

***

6月に開催された開発者会議「WWDC 2017」の情報によると、そうなる可能性が高そうです。システムの改良により、iOS 10時点と比較してアプリの起動がある程度高速化される見込みです。

一般的にアプリを開発するときには、ライブラリの機能を利用します。ライブラリには汎用的なプログラム部品(関数)が多数収録されているので、ライブラリをうまく使いこなすことでアプリ開発を大幅に効率化できます。さらに、アプリから必要に応じてライブラリを参照するしくみにすれば(共有ライブラリの利用/ダイナミックリンク)、ライブラリのプログラム部品を取り出して組み込む方式(スタティックリンク)に比べアプリをコンパクトに保てます。

iOS/macOSでは、共有ライブラリ上のプログラムを利用するとき「ダイナミックローダ」(dyld)という機能を利用します。dyldおよび共有ライブラリは不特定のアプリに利用されるため、繰り返し利用されるプログラムの読み込み速度を高めるべくメモリ上に一時保存しています(共有キャッシュ)。

WWDC 2017では、ダイナミックリンクのしくみを最適化した新しいダイナミックローダ(dyld v3)が発表されました。当初はmacOSのシステムアプリのみが対象ですが、2017年中にAppleのOSプラットフォームすべてが対応し、将来的には現在のダイナミックローダ(dyld v2)を置き換えるとのことですから、iOS 11のシステムアプリはもちろん、いずれはサードパーティー製アプリも対象になると考えてよさそうです。

サードパーティー製アプリについては、インストール処理の過程で共有キャッシュを整理することでdyld v3のしくみに対応します。アプリを更新するときにも自動処理されますから、エンドユーザはダイナミックローダや共有キャッシュの存在を意識する必要がありません。

ダイナミックローダの刷新により、iOS 11からアプリの起動が高速化されます