#アナタノミカタ 

iPhone/iPadアプリは本当にそのままApple Silicon Mac上で動くのか?
AI.

先日のアップルのWWDCのキーノートでは、後半のかなり長い時間を使ってMacが採用することになったアップル独自のCPU「Apple Silicon」に関する発表があった。その中では、ちょっと意外なことも語られた。Apple Siliconを搭載したMac上では、iPhone用やiPad用のアプリが「まったく変更を加えることなくネイティブに」動作するというのだ。そこでは詳しい話はいっさいなく、「Monument Valley 2」というゲームなど、2、3本のアプリがMac上で動く様子がデモされた。この話は、時間にして全部で40秒ほど。そのときは、なんだか狐につままれたような気がした人も多かったのではないだろうか。

本当にiPhone/iPad用のアプリがMac上でそのまま動くのだろうか。確かに今後のMacは、iPhoneやiPadと同じARM系のCPUを採用するようになるのだから、基本的なコードがネイティブで動くのはわかる。また、すでにMac Catalystを使えば、iOSやiPadOSのAPIが、部分的にせよ、macOS上で利用可能になっているのも確かだ。しかし、当然ながらすべてが共通というわけではない。それに、そもそもiPhone/iPadアプリは、専用のApp Storeからダウンロードしてインストールするしかない。Macからはアクセスすらできないようになっている。なんとかアプリのバイナリを持ってくることができたとしても、ライセンスの問題もありそうだ。このように疑問は噴出する。

結論から先に言えば、答えはほぼイエスだ。ここで「ほぼ」を付けるのは、どうしても制限と選択があるから。制限とは、動くアプリは、そのままでまったく問題なく動くが、完全には動かないアプリもあるということ。そして選択とは、アプリのデベロッパーがそれを望まない場合、macOS上では使えないようにすることもできるからだ。どういうことなのか、少し詳しく見ていこう。

Mac上でiPhone/iPadアプリが動く仕組み

キーノートの後のWWDCのセッションの1つに「iPad and iPhone apps on Apple Silicon Macs」というものある。17分程度の短いセッションだが、求める答えはズバリこの中にありそうだ。

このビデオでは、まず現状のmacOS Catalinaのアプリケーションアーキテクチャを確認している。大別すると、現状のMacでは4種類のアプリケーションフレームワークが動いているとしている。つまり、通常のMac用アプリのためのAppKit、元はiPad用のものをMac Catalystを使ってMacに移植したアプリのためのUIKit、ウェブアプリのためのWebKit、そしてゲーム用のMetalというわけだ。

引用:Apple

Apple Siliconを搭載したMacのmacOS Big Surでは、そこにもう1つのフレームワークが加わるのではなく、iPhoneやiPadのアプリをそのまま動かせるように、macOS上のUIKit部分を拡張するかたちを取るようだ。

引用:Apple

確かに、macOS上の実行環境がiOSやiPadOSに近づけば、そしてアプリから見て実質的に同等なものになれば、何も変更していないモバイルアプリがMac上でも動作することになる。それでも、macOSのアプリ実行環境にはiOSやiPadOSとは異なる部分も多い。顕著な例は、指によって直接画面をタッチする操作と、マウスやトラックパッドを使ってカーソルを動かしてクリックする操作の違いがある。また、macOSの画面には必ずメニューバーがあって、アプリの終了など、基本的な操作を担当しているが、iOSやiPadOSにはMacのメニューバーに相当するものはない。逆にiPhone/iPadのホームボタンに相当するものはMacにはない。

そうした基本的な操作環境がうまくコンバートされなければ、アプリは恐ろしく使いにくいものとなったり、操作不能になったりしてしまう。そこでBig Surでは、モバイルアプリがMac上で動くために必要なリソースやインターフェースは、自動的に追加されたり、変換されたりするようだ。例えば、すでに述べたメニューバーの利用、環境設定パネルの表示、Dockへのアクセス、ファイルを開く/保存ダイアログの利用、スクロールバーの表示と操作といったものだ。iOSやiPadOS上での標準的なマルチタッチ操作も、可能な限りmacOSのマウスやトラックパッド操作に置き換えられる。

さらに、マルチタスクに対応したiPadOSアプリなら、macOS上でも自由にウィンドウのリサイズが可能となる。フルスクリーンでの動作も可能だ。またマルチウィンドウに対応したアプリなら、Mac上でも複数のウィンドウを開いて動作できる。macOS上のファイルにもアクセスできるようになり、macOSによる「共有」機能も利用可能となる。細かいところでは、macOSのダークモードにも追従する。

このような自動的な環境への対応がどんな感じになるのかを知るために、一例として現状のMac Catalystのアプリを見てみよう。iOSやiPadOSにもあって、現在のmacOSにもある「ボイスメモ」は、Mac Catalystアプリの代表的なもの。iPadOSの「設定」には「ボイスメモ設定」がある。そこに配置されているのは「削除したものを消去」するまでの日数、「オーディオの品質」、そして「位置情報を録音名に使用」するかどうかのスイッチだ。

それに対してmacOS上の「ボイスメモ」では、「ボイスメモ」メニューの「環境設定…」を選ぶことで、「ボイスメモ環境設定」のウィンドウが開く。そして、その中に並ぶ設定項目は、文言も含めて、iPad用アプリとまったく同じなのだ。

これはあくまでも、現在のMac Catalystアプリのユーザーインターフェースの自動変換の例だが、このようなインターフェースに関しては、Big Sur上のiOS/iPhoneアプリも、Mac Catalystアプリも、だいたい同じ環境になると考えていいだろう。

Apple Silicon Mac上で動かないiPhone/iPadアプリ

一般的なアプリの多くがAPIの利用を含めて自動的に変換されるとしても、どうしても変換しきれない機能もある。そうしたモバイルデバイス特有の機能に大きく依存しているようなアプリは、Mac上でそのままうまく動かすことはできないだろう。少なくとも、iPhoneやiPadとまったく同じような機能を発揮することは期待できない。

そのようなアプリの代表的なものとしては、iPhone/iPadが備えている多様なセンサー類を使ったものが挙げられる。加速度、ジャイロスコープ、磁気、気圧、といったセンサーや、深度センサー付きのカメラ、GPSといったものはMacにはない。そうしたものに依存するアプリは、そのままの機能をMacで発揮するにはどうしても無理がある。

ただし、例えばGPSのハードウェアはMacにはないが、その代わりになる機能はある。位置情報を提供するCoreLocationフレームワークだ。iOSやiPadOSのアプリでも、GPSのハードウェアに直接アクセスしているものは、まずない。通常はmacOSともほぼ共通のAPIであるCoreLocationを利用して位置情報を検出している。そうしたアプリが必要とする位置情報は多くの場合、Mac上でもCoreLocationによって供給され、支障なく動作するものも少なくないだろう。

またMacにはない背面カメラに関しても、最初から背面カメラの存在を前提として動作するiPhone/iPadアプリを、そのままMac上で動かすのは確かに厳しい。しかし、アプリが非常にマナーよく作られていれば、MacにUSB接続された外部カメラなどを利用することも可能になる。AVFoundationフレームワークのAVCaptureDeviceDiscoverySession機能を利用して、デバイスに接続されたカメラを確認してから利用するようなアプリなら、柔軟に対応できる可能性が高い。

Macという新たなプラットフォームを得たことで、今後iPhone/iPadアプリのデベロッパーの意識改革が進み、デバイスへの依存性の低いアプリが増える可能性にも期待できるだろう。

iPhone/iPadアプリはどうやってMacにインストールする?

Mac上で動作するiPhone/iPadアプリがあっても、それらを実際にどうやってMacにインストールするのか。というのも、キーノートではまったく触れられず、大きな疑問が残る部分だった。これについては、実は何も心配はいらない。Apple Siliconを搭載するMac上で動作するiPhone/iPadアプリは、ほぼ自動的にMac App Storeに表示されるからだ。Macユーザーは、通常のMac用アプリとまったく同じようにダウンロードしてインストールできるようになる。

デベロッパーが新たなアプリをiOS(iPadOS)のApp Storeに掲載する際、デフォルトではMac App Storeにも掲載されるようになる。ただし、上で述べたような理由でMac上では十分な機能を発揮できないアプリや、同じデベロッパーがすでにMac用のアプリを別にMac App Storeに掲載しているような場合には、そのアプリをMac App Storeでは公開しないように設定できる。それも、チェックを1つ外すだけだ。

有料アプリについては、もちろんユーザーはMac App Store上で購入手続きを済ませてからダウンロードしてインストールするようになる。また、インストールしたアプリのApp内課金も可能なので、デベロッパーはiPhoneやiPadとまったく同様に、Macユーザーからも収益を得ることができる。

アプリをMacにインストールする際には、特定のモバイルデバイスに特化したようなリソースは、自動的に排除され、Macに最適なリソースのみを含むようになる。このようなApp Thinningのメカニズムも、これまでと同じように動作する。Macが非常に強力なiPad類似の新たなデバイスとして加わるだけだ。

macOSにインストールしたアプリのアイコンは、通常どおりmacOSの「アプリケーション」フォルダーに入る。ただし、これを別の場所に移動しても動作する。例えばデスクトップに移動して配置することも可能だ。現状のCatalinaでは、アプリのアイコンをアプリケーションフォルダーから別の場所にドラッグするとエイリアスが作成されるが、Big Surでは「移動」となるようだ。また、新しいApp Bundleフォーマットの採用によって、ユーザーがアプリの名前を変更することも可能になるという。このあたりは、iOSやiPadOSでは得られなかった新たな動作環境だ。こうしたユーザーに大きな自由度を与える動作環境は、macOS Sierraで導入されたApp Translocationを利用することで可能となっている。

Macにアプリを提供する3つの方法

こうして、Apple Silicon搭載MacでiPhone/iPadアプリが利用可能になることで、言うまでもなくMacのアプリケーション環境は、これまで類を見ないほど充実することになる。そして、デベロッパーとしてMacにネイティブなアプリを提供する経路も、大きく3種類が利用できることになる。

1つは、これまでのMacアプリと同様の、macOSのオーソドックスなアプリで、もちろんMacならではの機能や操作性がフルに活用できる。それから、これまでにも利用可能だったMac Catalystを利用して、iPadからMacに移植したアプリがある。この記事では述べなかったが、Mac Catalystは、Big Surで大幅にアップデートされ、より強力なものとなる。

いずれにせよ、Macならではの機能をできるだけ利用できるようにiPadアプリをカスタマイズしたければ、Mac Catalystの利用が効果的だ。そして3つ目は、iPhone/iPadアプリを、そのまま提供すること。もちろん、その場合にはMac上での動作を事前に十分テストして、不自然なことにならないか確認することは必要だ。しかし、デバイスに大きく依存したアプリでなければ、コードもほとんど修正する必要はないだろう。

以前は、iPhone/iPadとMacは、2つの似て非なる世界だった。同じアプリを両方の世界に提供する場合、基本的には両者をまったく別のアプリとして開発する必要があった。それがMac Catalystの登場で、iPad用を簡単にMacに移植できるようになり、さらにApple Silicon Macの登場で、1種類のソースコードからビルドしたアプリを、そのまま両方の世界に供給できるようになる。デベロッパーにとっては、マーケットが大きく拡がるチャンスであることは間違いない。

ユーザーとしては、今後登場するApple Silicon搭載Macを準備して、ただ待っているだけでいい。そうすれば、iPhone/iPadの世界から、魅力的なアプリがどんどんMacに流入してくる。面白すぎて笑いが止まらない状況が、もうすぐそこに迫っている。Macユーザーとしては、まったくいい時代になったものだ。

引用先はこちら:iPhone/iPadアプリは本当にそのままApple Silicon Mac上で動くのか?

#アナタノミカタ