iOS アプリのための Crashlytics

– Crashlytics 登録からクラッシュログ確認までの 29 ステップ –

アプリはクラッシュしない。それがベストです。しかし現実は様々な理由からクラッシュは発生してしまいます。勘違い、想定外、iOSのバグ、ケアレスミス、エトセトラ、エトセトラ。睡眠時間を削って、休日をつぶして、テストにテストを重ねても、クラッシュの発生はゼロになったと胸を張って言うことはできません。限りなくゼロに近づいているとしか言えないのです。それがプログラマの悲しい現実です。

クラッシュが発生した場合にプログラマにできること。それはクラッシュの原因を素早く特定し、問題をフィックスすること。そのためにはユーザが遭遇したクラッシュの状況を少しでも把握することができる糸口を手に入れることが重要です。その糸口となるのがクラッシュログ。アプリがクラッシュするとクラッシュログが生成されるので、これをなんとか手に入れたい。しかし残念なことに Apple が提供しているサービスではすべてのクラッシュログがプログラマの手に渡ることはありません。

そこで登場するのが Crashlytics。このサービスを使えば失われたクラッシュログがプログラマの手に届きます。(届くはずです ^^;)このサービスは無料で利用できるので、まずは導入して試してみるのが手っ取り早い方法です。ダメならやめればいいのだから。

Crashlytics を利用して、見つかったクラッシュの原因をつぶしていき、少しでも安定したアプリにしていきましょう。

以下に Crashlytics 登録からクラッシュログ確認までのプロセスを説明してあります。2014年1月17日における手順を説明していますので、最新の状況と異なることもあります。29 ステップもありますが、Xcode の使用方法をご存知の方であれば実際の作業にかかる時間はそんなに長くありません。それと作業を実際に行う前に全ステップを一読されることをお勧めします。

  1. http://try.crashlytics.com をブラウザで表示後、メールアドレスを入力し、Try Crashlytics ボタンをクリックします。
  2. crashlytics01

  3. General Info で Name に自分の名前、Company に自分の会社名を入力し、Put me on top! ボタンをクリックします。
  4. crashlytics02

  5. 1. で入力したメールアドレス宛に Crashlytics から You’re on the list to get Crashlytics というサブジェクトのメールが届きます。
  6. crashlytics03

  7. 届いたメールの Wait! Give me priority access! ボタンをクリックしても、You’re on The List と表示されるウェブページが表示されるだけなので、Crashlytics からレスポンスが返ってくるまで、しばらく待っていましょう。
  8. (私の場合)約9時間後に、Crashlytics private access (need reply) というサブジェクトのメールが届きました。
  9. 続いて、Invitation to Join Crashlytics というサブジェクトのメールも届くので、このメールの Sign in ボタンをクリックします。
  10. Crashlytics のウェブページが 1. で入力されたメールアドレスとともに表示されるので、自分の名前と Crashlytics にログインする時に使用したいパスワードを入力し、Create Account をボタンをクリックします。(Crashlytics – Welcome to the Club というサブジェクトのメールが届きます)
  11. crashlytics04

  12. ウェブページが更新され、会社名の入力を促されるので、会社名を入力し、Done ボタンをクリックします。
  13. crashlytics05

  14. 次に、使用したい IDE を選択するページが表示されるので、Xcode をクリックします。
  15. crashlytics06

  16. Mac 用アプリをダウンロードする必要があるので、I agree to the Terms of Service にチェックをつけ、Download ボタンをクリックします。
  17. crashlytics07
    crashlytics08

  18. ダウンロードしたファイル Crashlytics-latest.zip を展開し、Crashlytics アプリをアプリケーションフォルダに移動しておきます。
  19. Crashlytics アプリを起動します。起動後、メニューバーに Crashlytics アイコンが表示されます。
  20. crashlytics09

  21. メニューバーの Crashlytics アイコンをクリックすると、クラッシュログを収集したいアプリの Xcode プロジェクトを指定する画面が表示されるので、ここで Crashlytics に登録したいプロジェクトを選択し、Next ボタンをクリックします。今回は My1stCrashlytics という Crashlytics 確認のためのプロジェクトを作成し、これを選択しました。このプロジェクトは Xcode テンプレートにある Single View Application を選択して作成しています。
  22. crashlytics10
    crashlytics11

  23. 画面が変わり、指定した Xcode プロジェクトの Run Script Build Phase に指定したコマンドを設定するように促されるので、設定を行います。
  24. crashlytics12
    crashlytics13

  25. 設定を終えたら、command-B でプロジェクトをビルドしてください。
  26. ビルドが終わると Crashlytics アプリの画面が変わり、今度は Crashlytics.framework を Xcode プロジェクトに追加するように促されます。画面の赤いツールボックス画像をドラッグし、Xcode プロジェクトの Frameworks へドロップします。
  27. crashlytics14

  28. Crashlytics.framework を追加し終えたら、Crashlytics アプリの画面の Next ボタンをクリックします。
  29. crashlytics15

  30. 次に Crashlytics SDK の初期化コードの記述を行います。Crashlytics アプリの画面にある指示通りに、UIApplicationDelegate の -application:didFinishLaunchingWithOptions: メソッド内にコードを1行挿入し、続いて #import <Crashlytics/Crashlytics.h> も挿入します。
  31. crashlytics16

  32. ソースコードの編集が終わったら、command-R でアプリをビルドし、実行します。(今回は iOS シミュレータ上で実行します)
  33. 今回指定した Xcode プロジェクトにはクラッシュする部分はないので、Crashlytics アプリの画面に Congrats! There are no open issues. と表示されます。
  34. crashlytics17

  35. ここまでくると、My1stCrashlytics was just successfully added というサブジェクトのメールが届きます。もちろんサブジェクトの最初はあなたが指定したプロジェクトのアプリ名になります。
  36. Crashlytics はアプリがクラッシュしたときに有用なサービスですので、アプリがクラッシュしないと意味がありません。アプリをクラッシュさせるには?心配いりません。Crashlytics アプリの画面に Want to force a crash? と表示されていますよね。これをクリックします。
  37. すると、簡単にクラッシュさせる方法が説明されている Web ページがブラウザで表示されるので、そこに記述されている方法を用いて My1stCrashlytics をクラッシュさせることができます。ではやってみましょう。
  38. Xcode に戻って、コードを1行ソースに追加します。追加するコードは、[[Crashlytics sharedInstance] crash]; で、これを画面上の Crash ボタンをタップした時にクラッシュするように仕込んでみます。#import <Crashlytics/Crashlytics.h> を追加するのを忘れないように。
  39. crashlytics18

  40. command-R で実行します。(先ほどと同様 iOS シミュレータ上で実行します)
  41. 実行し、Crash ボタンをタップするとアプリはクラッシュするのですが、Xcode のデバッガが動いているのでクラッシュしたところで実行が止まってしまいます。一旦 Xcode の Stop ボタンをクリックして実行を中止しましょう。
  42. crashlytics19

  43. 今度は My1stCrashlytics アプリを Xcode からではなく iOS シミュレータ上のアイコンをクリックして起動し、Crash ボタンをタップしアプリをクラッシュさせます。
  44. これで、ブラウザから https://www.crashlytics.com/login にログインすると、クラッシュの状況を確認することができます。
  45. crashlytics20
    crashlytics21

  46. また New Issue Discovered in My1stCrashlytics 1.0 というサブジェクトのメールも届くので、メールのチェックをしていればアプリがクラッシュしたかどうかがわかります。数百人のユーザしか持たないアプリでもクラッシュが頻発する下手なアプリをリリースしてしまうと、受信するメール数がとても多くなることが予想されるので、心配な人は Crashlytics 専用のメールアカウントを用意した方が良いかもしれません。(メールを受け取らない設定があるかもしれませんが、まだそこまでは確認していません)

とりあえずここまでで、Crashlytics に登録、アプリにコードを埋め込み、クラッシュレポートの確認までができたと思います。

うまくいきました?
うまくいったのなら、おめでとう。そしておつかれさま。


Leave a Reply