MacのCPUアーキテクチャがARM/Apple Siliconに変更されることは、そう単純な話ではない。長期的には、これまで分散せざるをえなかったコプロセッサやセキュリティチップの統合など自社開発CPUの搭載によるさまざまなメリット -- おもにAppleにとってのメリットだが -- を期待できるにせよ、短期的にはネイティブアプリの不足という懸案が生まれる。

Rosettaの投入や手厚いデベロッパー支援は実施されるものの、現時点でApple Siliconのパフォーマンスへの不安がないわけではない。この点、PowerPCからIntelへの移行時は楽観的でいられたが(移行の背景にはPowerPCの開発が後追い気味なことにAppleが業を煮やした部分があった)、今回はそうではない。足元では、パフォーマンスだけを見ればx86_64のほうが有利なくらいだろう。

しかし、ARM/Apple Siliconには「量」という期待値がある。iOSと同じCPUアーキテクチャを採用することは、アプリ開発の多くの部分で共用化がさらに進むという意味であり、量的にはMacを大きく超えるプラットフォームに成長したiOSのメリットを享受できる可能性が高い。まったくの無変更でMac対応できるわけではないため、開発者次第の部分はあるが、土壌が整備されるということは確実にプラス要素だ。

  • Intelアーキテクチャでは複数のチップで実現されていた機能が、Apple Siliconではワンチップ化される

アプリの周辺に目を向けると、また新しい可能性が見えてくる。WWDCの基調講演では触れられていなかったが、かねてからAppleのアプリストアに用意されている仕掛け、「Bitcode」だ。

Bitcodeとは、Xcodeで利用されているコンパイラ基盤「LLVM」の中間言語。仮想マシンを動作ターゲットとした一種の中間コードであり、必要に応じて対象CPUアーキテクチャのネイティブコード(機械語)に変換される仕組みだ。AppleはXcode 7/iOS 9以降、この機能をデフォルトで有効にしており、App Storeへの提出(App Store Connectへのアプリのアップロード)はBitcodeで行われるようになっている。

通常はLLVMにより最適化/ネイティブコードへの変換が行われるが、App Storeにその機能が用意されていることがポイントだ。現在のApp Storeには「App Thinning」という機構があり、ダウンロードリクエストを行った端末のスペックに応じてバイナリコードや画像サイズを最適化することで、性能向上やアプリ容量のコンパクト化を図れる。Bitcodeもこの機構に組み込まれており、iOS/tvOSアプリをより速く、より小さく保つために貢献しているのだ。

  • アプリの構成要素を端末に応じて再構成(App Slicing)することが「App Thinning」の考え方だ(スライドはWWDC 2015のもの)

このBitcode、これまでMacは生成してアップロードするという作り手側での関与に留まっていたが、ARM/Apple Silicon移行後はBitcodeでの配布が大いにありうると考えている。理由は3つある。

1つは、さらなる「App Storeシフト」のため。これまでAppleは、おもにセキュリティ上の目的によりアプリの配布をApp Storeで行うようMacユーザを誘導してきたが、Bitcodeはその切り札となりうるからだ。開発者が生成したバイナリをそのままエンドユーザに実行させるのではなく、App Thinningの一環としてApp Store上でBitcodeからバイナリを生成するようになれば、セキュリティレベルは多少なりともアップするに違いない。

最適化も理由になるはず。モデルごとにディスプレイ解像度やCPUアーキテクチャ(armv7、arm64、arm64eなど)が異なるiOS/iPad OSアプリと比べると、64bit移行後のMacはモデルごとの最適化にそれほどシビアではないが、Apple Silicon採用後はiPhone/iPadに近い形(ダウンロードするときBitcodeから変換)になるかもしれない。すでに多くのiOSアプリやすべてのtvOSアプリはそのように配布されているのだから、Macだけ例外が続くと考えるほうが不自然だろう。

そしてもう1つは、「ユニバーサルアプリ」。これまでは、iPhoneとiPadの両方で動作するアプリを指す用語として使われてきたが、今後は同じARMアーキテクチャとなるMacも対象に加えられる可能性が出てきた。センサーやカメラなどアクセスできるデバイスが違う、画面レイアウトが大きく異なる、といった吸収の難しい差異があることは確かだが、WWDC基調講演のスライドを見ると、次の「macOS Big Sur」ではUIKitを拡張する形でmacOSとiPhone/iPadが互換性を持つレイヤーが実装されることがわかる。

こう書くと、すぐにでもBitcodeを活用したMac対応ユニバーサルアプリが登場すると早合点されそうだが、そうではない。macOSの場合、Bitcode非対応のサードパーティー製ライブラリを使う機会が多く、そのようなライブラリの大半はiOS/iPad OSをサポートしない。Mac対応ユニバーサルアプリが実現されるにしても、アプリのジャンルは限られる -- iPadでもMacでも無理なく実現できる機能のアプリ -- のではないか。いきなりMacが"iPadの上位版"扱いされることはなく、独自のポジションを維持すると見るが、どうだろう?

  • Big Surでは、UIKitを拡張する形でmacOSとiPhone/iPadが互換性を持つレイヤーが実装される

  • iPhone/iPadでもMacでも動作するアプリは「ユニバーサルアプリ」と呼ばれるか?