Mac Catalyst対応アプリの開発にチャレンジ! でもアップルの申請でつまずいています…

ここ最近、自宅にいる時間が多いこともあり、以前から気になっていた”Mac Catalyst“アプリの開発をしてみようと思い、実際に開発を進めてみました。でも、開発の過程でいろいろとハードルがあったので、自分自身の体験から、皆さんにも役に立ちそうなTipsをご紹介します。”Mac Catalyst”って新しい領域とは言え、もともとmacOSアプリに関する開発のノウハウがネット上でほとんど共有できていなくて、ようやく見つけた情報も新鮮度がなさすぎて役に立たなかった内容がとても多かったです。アップルを含め、この辺りの状況を改善していかないと、折角の”Mac Catalyst”が、市場で盛り上がっていかないのでは?と心配なところです。

そんな思いもあり、今回は、ネット上の古い情報では役に立たなかったところにフォーカスして、何点かTipsを紹介してみることにします。

 

< 開発環境とは別のマックで動作確認をしたい >

“iPhone”、”iPad”、”Apple TV”版のアプリだったら、”TestFlight“という方法で、アプリを正式リリースする前に多くの人たちのデバイスで動作テストを行ってもらうことができます。でも、”macOS” (Mac Catalystを含む)アプリ開発では、そういったソリューションがないので、個人の開発者の場合は、自分が所有している別のマックで動作確認をするしかありません。でも、せめて”Xcode”とは切り離して、単独で動くアプリの状態で動作確認をしたいものです。

 

ネット検索すると、いろいろと面倒な準備を紹介していますが、一番新しい”Xcode” (11.4.1)では、簡単な手順でアプリをアーカイブするだけです。

“Organizer”画面でアーカイブしたアプリを”Distribute App”する際、通常の”App Store Connect”ではなく、”Developer ID”を選択して、ユーザに直接配布するアプリを作成する手順を実行します。

この手順に沿ってアプリを作成すると、”App Notarization“という証明書をアップル側で自動的にアプリに添付してくれます。作成された証明書は、手順の途中でエクスポートして、手元に保存しておくことができますので、証明書を保管しておくようにしましょう。

証明書の作成が完了するとメールが届く仕組みになっています。

ステータスが”Processing”になります。

証明書の作成が完了した旨のメールが届きました。

ステータスが”Ready to distribute”に変わリます。

証明書の作成が完了したアプリは、”Organizer”画面上の”Export App”ボタンをクリックしてエクスポートします。

証明書付きのアプリは、開発環境とは別のマックで自由に動作確認を行う事ができます。ここまでやっておけば、基本問題ないはず!でしたが…

 

< アップルの審査過程でまさかのリジェクト! >

自分の手元とは言え、しっかり動作確認を終えたので、アップルの審査してもらうためにアーカイブをアップロード。

翌日、”Guideline 2.1 – Performance”という理由で申請したアプリが想定外にリジェクトされてしまいました。細かいところは割愛しますが、要はアプリを実行中にクラッシュしたので、審査されたアプリはリジェクト!といった感じ。クラッシュした場合は、クラッシュログが添付されてきます。

でもね、ご丁寧にクラッシュログを送ってもらっても、中身があまりにもマニアックで理解できません。

 

そういう時は、アップルに審査した際にアップロードしたアプリのパッケージ内にある”.dSYM”ファイルと送ってもらったクラッシュログを使って、”Xcode”に格納されている”symbolicatecrash”というツールを使って、クラッシュログを分かりやすい表記に書き直してくれるそうです。最初から人間が読んで分かるログにしてくれれば良いのに?と思いませんか?

下図はiOSアプリのパッケージ内の様子です。こんな感じで、”.dSYM”ファイルが保存されているのですが、macOSアプリ (“Mac Catalyst”アプリ)の場合は、アプリ用の”.dSYM”ファイルが収録されていないんです。これじゃあ、”symbolicatecrash”が使えないじゃん!!

だれか助けて!!

ちなみに、POOHの方では、複数のマック環境で動作確認を行ったわけですが、ご覧の通り、クラッシュログは全く発生していません。アップルサイドでしかクラッシュしないので、有効なデバッグ方法がないんですよねえ。

ということで、唯一の手段は送ってもらったクラッシュログを確認しつつ、アプリを修正するしかありません。

でも、自分が作ったアプリ名はクラッシュログに殆ど登場せず、”Crashed”箇所の周囲には自作アプリが全く見当たりません。送ってもらったログに共通するのは、アップルの”Core Location”という位置情報サービスを担う機能がクラッシュを引き起こす原因になっている模様。なので、”Core Location”回りで疑わしい部分を2回ほど修正してアップルの審査に回してみたのですが、何度トライしてもアップルサイドではクラッシュするようです。これってどういうことなの?

 

というわけで、現状はこの辺りで足踏み状態です。

でも、これで TALKを終えると尻切れトンボっぽくなってしまうので、iOSアプリで”symbolicatecrash”を利用する場合を例に紹介しておきます。

“macOS”環境で”ターミナル”アプリを起動し、以下のコマンドを続けて投入しておきます。

export PATH="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources:$PATH"

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

“.dSYM”ファイルと送ってもらったクラッシュログを同じフォルダに保存した後、以下のコマンドを投入すれば、”symbolicatecrash”が実行できるそうです。

symbolicatecrash -v work/送ってもらったクラッシュログ名.log

※ “.dSYM”ファイルが同じフォルダ内にある場合は、コマンドラインに”.dSYM”ファイル名を入力する必要はないそうです。

 

最後にアップルさんに言いたいことがあります。

確かに、”Mac Catalyst”はマックの救世主として素晴らしい仕組みだと思います。”iPad OS”アプリを作れば”macOS”アプリもリリースできるので、開発者にとっても嬉しい限りです。でも、”Mac Catalyst”アプリを”macOS”環境下で開発、動作確認を行う下地が未完成で何とも心許ない状況です。まさに数十年前の状況を思い出してしまうほど、まったく進化していませんね。それと、開発者サイドではちゃんと動作確認を終えたアプリでも、アップル側のアプリ審査でクラッシュしてしまうんだと、正直、開発者は手の出しようがありません。加えて、クラッシュログを普通の開発者でも読めるようにしてくれないと、クラッシュがどのような原因で発生していようと、アプリを改良することすらできません。”Mac Catalyst”自体、生まれたばかりの技術なわけだから、もっと開発に優しい下地作りをきっちり進めてくれないと、Mac Catalyst”が良い方向に進化していかないのでは?と感じでいます。

 

ホームページ  THE POOH FILES”にも是非お立ち寄り下さい。

Adobe Stock“でベストショットな写真素材を販売中です。是非ご覧下さい。

tomohiko

長年に渡りMacintosh向けの自作アプリを作り続けているPOOHです。最近はiPhone,iPad向けアプリ開発にも挑戦中。グルメ、旅行、露天風呂、写真、サイクリング、映画、STAR TREKが大好き。レトロでSFなおもちゃを大量にコレクション。プレーリードッグと同居中。

おすすめ

コメントを残す