
MojaveのMarzipan:開発者向けiOSアプリをmacOSに移植c

macOS Mojaveで、AppleはこれまでiOSでしか利用できなかった4つのアプリ、株価、ニュース、ホーム、ボイスメモを導入しました。プレゼンテーション中、これらのアプリがiOSアプリそのものであり、噂のMarzipanプロジェクトでMacに移植されたのではないかという憶測が飛び交いました。基調講演の最後に、クレイグ・フェデリギ氏は、現在彼らが取り組んでいる複数段階のプロジェクトを少しだけ紹介しました。プロジェクト名は伏せつつ、クレイグ氏はこのプロジェクトによってiOSアプリを最小限の労力でMacに移植できるようになり、Appleはニュース、株価、ボイスメモのアプリにこのプロジェクトを採用し、来年にはサードパーティの開発者にも利用できるようになると説明しました。私はこのプロジェクトを詳しく調べ、実際に存在するiOSアプリをMacに移植することがどれだけ最小限の労力で済むのか確かめてみることにしました。
名前
まず最初に、このプロジェクトは社内では実際に「Marzipan」と呼ばれている(あるいはかつて呼ばれていた)ことを確認できました。ただし、Apple社内でこの名前を公に言う人はいないでしょう。Mac上のこれらのiOSアプリは現在、システム上で「iOSMac」アプリとして認識されています。実に独創的です。
ユーザーエクスペリエンス
タッチ入力をベースとしたプラットフォームからマウスとキーボードをベースとしたプラットフォームへアプリを移行することは、ユーザビリティに多少の影響を及ぼします。少なくともプロジェクトの現状では、Appleはアプリの外観をあまり変更しないことを決定したようで、特にホームアプリはiOS版と非常に似た外観になっています。
タブベースのアプリは、iOSのタブバーが消え、Macのネイティブツールバーに置き換えられ、セグメント化されたコントロールが表示されます。共有シートも自動的に変換されます。共有シートを開くように指示すると、macOSで実行されているiOSアプリには、Mac標準の共有メニューが表示されます。
iOS 上でアクティブ化するために長押しまたは 3D タッチ ジェスチャを使用するユーザー インターフェイス要素は、それらのジェスチャがダブルクリックに置き換えられます。これはホーム アプリで確認できます。iOS では、グリッド上のデバイスの 1 つを 3D タッチまたは長押しして詳細ビューを開きますが、Mac ではダブルクリックして同じ効果を得ます。
macOS上のiOSアプリで使用できるMac風の要素としては、コンテキストメニュー、メニューバー、半透明のサイドバー(Newsアプリなど)、ウィンドウツールバー、Touch Barなどがあります。これらの要素は、Macで利用可能なUIKitのバージョンの新しいクラスを通じてiOSアプリに公開されています。
iOSアプリをMacで実行するには、現時点では違和感を感じる点がいくつかあります。まず、macOS上のUIKitアプリは複数のMacウィンドウを開くことができないため、マルチウィンドウアプリは現時点では実現できません。iOSアプリが新しいウィンドウを開こうとすると、Mac上でアクセス可能なメインの単一ウィンドウのコンテンツが置き換えられるだけです。
フォーム シートやアラートなど、その他の iOS UI 要素は Mac 上では奇妙に見えます。これらの要素により、標準の Mac アラート シートが開くこともありますが、常に開くとは限りません。
これはまだ最初のベータ版であり、上で述べた問題や欠落している機能はすべて解決される可能性があります。9月まで、そしてAppleがサードパーティの開発者が採用する準備が整ったと判断するまで、Mac 上の iOS アプリのエクスペリエンスは大幅に改善されると期待しています。
開発者エクスペリエンス
iOS アプリを Mac に移植するのにどれだけの労力がかからないかを確認するために、9to5Mac アプリと私自身の ChibiStudio アプリの 2 つの実験を試してみることにしました。
「9to5マジパン」
9to5Macアプリはベンジャミン・メイヨー氏が開発しているため、コードベースにはあまり詳しくなかったので、これは興味深いプロジェクトでした。彼からコードのアーカイブを送ってもらい、最初のステップとして、すべての依存関係(サードパーティ製のフレームワーク)を削除しました。iOSアプリをMacに移植する際に依存関係が残らないわけではありませんが、Appleがまだ公式SDKを配布していないため、ビルドプロセスをできるだけシンプルにしたいと考えていました。
アプリをMacで動作させるのに約1時間かかりました。そのほとんどは、依存関係の削除、Swift 4.2への変換、そしてハックなビルドプロセスによって発生した問題への対処に費やされました。完成したアプリはMacで非常にスムーズに動作し、iPadと同じように記事を閲覧して読むことができます。もう少し作業を進めれば、AppleのNewsアプリのように記事リスト用の半透明サイドバーなど、よりMacらしいアプリにできるかもしれません。
ちびスタジオ
私のアプリはCoreAnimationを多用しているので、Macでどのように動作するのか興味がありました。MacにもCoreAnimationはありますが、iOS版とは少し異なります。繰り返しになりますが、ほとんどの時間は依存関係の解決と、アプリを1つのターゲット(元のアプリは複数のフレームワークに分割されています)のみでビルドできるように「フラット化」することに費やされました。ChibiStudioにはiMessageアプリ(macOSではサポートされていません)も含まれているため、こちらは削除しました。
移植には約2時間かかりましたが、その結果には驚きました。ほとんどの時間は依存関係の削除とSwift 4.2へのコード変換に費やされました。完成したアプリはMac上で驚くほどスムーズに動作し、キャンバス上のアイテムのドラッグ&ドロップやアイテムの選択もスムーズに行えます。マウスポインターの精度が高いため、Macでは特に操作性が向上しています。
さらに一歩進んで、iOSのナビゲーションバーをアプリから削除し、そのコンポーネントをMacのツールバーのボタンに置き換えることにしました。また、よく使う操作のメニュー項目を追加したので、⌘Nを押すだけで新しいチビを作成できるようになりました。ライブラリからFinderにチビをドラッグする操作がうまくいかなかったのですが、これは私の実装の問題なのか、システムの制限なのかは分かりません。
その他のアプリ
他の開発者たちは既に、独自のアプリをMacに移植する実験を行っています。GeekbenchのJoshua May氏は、GeekbenchアプリとVoodooPadアプリをMacに移植しました。これまでの移植の中で最も印象的なのは、おそらくPeter Steinberger氏によるPDF Viewerアプリの移植でしょう。このアプリは100万行ものコードがあり、移植には半日かかったそうです。
@pdfviewerapp を Marzipan で実行できるようになりました 🤯
インラインビデオ、ページめくり、ポップオーバー、スクロール、テキスト選択、インラインフォーム、テキスト追加、カラーインスペクター、検索、ドキュメント編集など、ほぼすべてが動作します。半日かかりました。プロジェクトは1MLOCのObjC/C++です。
Appleに大感謝! pic.twitter.com/1ofpe5AqyM
— ピーター・スタインバーガー(@steipete)2018年6月11日
未来
iOSアプリがMacで動作するようになったのは、まだ始まったばかりですが、Appleは既に優れた戦略を打ち出しているように見えます。Slackのように現在クロスプラットフォームソリューションで動作しているMacアプリが、iOSアプリをMacに移植することを期待すべきでしょうか?短期的には難しいでしょう。私が最も期待しているのは、NetflixやYouTubeといったメディア消費アプリがMacに移植されることです。ブラウザで得られる体験よりも優れた体験を提供してくれると確信しています。
Macで使いたいiOSアプリはどれですか?コメント欄で教えてください!
Apple のニュースをもっと知りたい場合は、YouTube の 9to5Mac をご覧ください。
bandboth.com を Google ニュース フィードに追加します。
FTC: 収益を生み出す自動アフィリエイトリンクを使用しています。詳細はこちら。