🎼

macOS アプリの Analytics/Crash 解析用に App Center を使い始めた

2020/12/07に公開

そう、はじまりは Fabric が Firebase に吸収されたところからなのです…。

macOS に正式対応してない Firebase SDK

Fabric/Crashlytics を使っていた人はもうすでにご対応済みかとは思いますけど、https://fabric.io/ で提供されていた諸々の解析機能はすべて廃止になって Firebase への移行をしなくてはなりませんでした。

iOS アプリは問題なく移行できるんですけど、問題は macOS アプリ。Firebase SDK は macOS には正式対応してないのです。Firebase/Crashlytics は使えるけど、Firebase/Analytics は未対応という状況なので、自分のアプリが現状どのくらい使ってもらえてるのか全然わからない。

https://github.com/firebase/firebase-ios-sdk#community-supported-efforts

Keep in mind that macOS, tvOS, watchOS and Catalyst are not officially supported by Firebase, and this repository is actively developed primarily for iOS.

11月に移行してからしばらく Analytics データナシで運用してたんだけど、なんか寂しい… クラッシュログを見ても、どのくらいの温度感でクラッシュを感じればいいのかわかりにくい…。 ちくしょう…。 買収さえなければ…。

App Center を知る

どうやったら Firebase/Analytics 使えるのかなーと、Firebase の issue とかを眺めていたら「Microsoft の App Center 使うといいよ」っていうコメントを見かける。

https://github.com/firebase/firebase-ios-sdk/issues/1732#issuecomment-625548375

なるほど、全然知らんかったけど、App Center だと Analytics とクラッシュ解析できそう。CI とか動かさなければ無料枠でも問題なさそう、ということでさっそく試してみることに。

https://appcenter.ms/

Analytics 動かすまでは簡単

ドキュメントの通り進めれば簡単。管理画面上にアプリの名前を登録すると、そのまま Getting started として導入方法がでてくるのでそのままコピペしてくだけ。SDK のインストールと、AppDelegate にちょろっとコード貼るだけ。

そして感動の、アクティブユーザー [1] の瞬間。

DAY, WAU, MAU やデバイス、バージョン、言語毎のユーザー数も見れるんでなかなかいいっす。

Symbol を自動アップロードするためのドキュメントがない?

クラッシュの解析には .dSYM ファイルが必要であって、これを App Center のサーバーにアップロードしないといけない。しかしこれ、手動でやる方法は書いてあるのだけど、自動化する場合の手順が書いてない。手動でなんてやりたくないよね。

https://docs.microsoft.com/en-us/appcenter/diagnostics/ios-symbolication

アップロードはなんだかんだ appcenter コマンドを使うのが楽。npm でインストールして login しておく。login コマンドを打つと、ブラウザが開いてトークンのコピペを求められるので貼っ付ければ OK。たいしたことではない。

$ npm install -g appcenter-cli
$ $ appcenter login
Opening your browser...
? Access code from browser:  
Logged in as takayama

あとは、Build Phases に Run Script を追加して upload-symbols を実行するように仕込むだけ。引き数として --app {owner_name}/{app_name} としておかないとエラーがでたので追加しておきましょう。

if [ "Release" = "${CONFIGURATION}" ]
then
  appcenter crashes upload-symbols --app takayama/Moca-Mac --symbol ${DWARF_DSYM_FOLDER_PATH}
fi

これで Archive を実行すると、Diagnosis > Symbols にファイルが上がってるのが見えるはず。

クラッシュログはどんな感じか

まだテスト用のクラッシュしか発生させてないのでクラッシュログの見やすさとかはようわからんです。パッと見た感じは、Firebase/Crashlytics と比べて特に遜色はなさそう。↓ は、 Objective-C で @[][1] というコードを実行した時のクラッシュログです。

これはデバッグビルドなので Symbol の解析はできてなさそうですが。まあ別に… 普通?動いてるスレッドも一通り見れるし。個別環境毎のログも見れるし。良いかと。

まとめ

というわけで、App Center で Analytics と Crash を使うまでの流れでした。特別な何かもハマリポイントも全然ないので簡単に導入できるかと思います。

Discussion