エンジニアのはしがき

プログラミングの日々の知見を書き連ねているブログです

InstrumentsでiOSアプリのモニタリングをする

f:id:tansantktk:20210123185206p:plain

こんばんは! 前回のSwiftのメモリリークをやらかした話に関連して、負荷のチェックについても調べたので残しておきたいと思います。

↓以前メモリリークでやらした話はこちら

tm-progapp.hatenablog.com

Instrumentsとは

iOSアプリ実機のメモリやCPU等の状況をモニタリング、記録できる便利ツールです。 Chromeでは「開発者ツール」でメモリの使用状況を計測できますが、それのiOS版に近いツールです。 アプリ実行中の負荷計測やメモリの状態をリアルタイムで確認できます。

Instrumentsの嬉しいところは実機の状態をモニタリングできるところです。 なかなか検出の難しいメモリリークの原因を確認する為にも活用できます。

以前にメモリリークをやらかしてしまいまして、その調査の際にガッツリ使わせて頂きました。

動作環境

  • macOS Big Sur 11.1
  • Xcode 12.3

使い方

アプリをデバッグ実行した状態にする

まずはXcodeでプロジェクトを開き、デバッグを実行します。 デバッグ環境は実機、Simulatorどちらでも構いません。 今回はSimulatorでiPadをデバッグ実行した状態にします。

Instrumentsを起動する

デバッグ実行した状態のまま、 「Xcode」→「Open Developer Tool」→「Instruments」を選択。

f:id:tansantktk:20210123173300p:plain

計測するパラメータを選択します。 後から追加・修正はできますので、今回はひとまず「Leaks」を選択して「Choose」をクリックし、Instrumentsを起動します。 Leaksはメモリリークが起こったかどうかを測定してくれます。

f:id:tansantktk:20210123173409p:plain

計測対象を指定する

Instrumentsのウィンドウが立ち上がりますので、左上の端末名が表示されている部分をクリックし、デバッグ中のアプリを指定します。 CameraTestというのが今回用意しているサンプルアプリの名前になります。

f:id:tansantktk:20210123180613p:plain

アプリを指定したら、計測開始のアイコンをクリックして計測を始めます。

f:id:tansantktk:20210123180925p:plain

計測する

f:id:tansantktk:20210123182102p:plain

計測開始後、計測結果がタイムライン上に表示されていきます。

なお、実機でデバッグしながら計測するとそれなりに負荷がかかるようで、若干実機側でラグが発生することがありましたので、そのことも考慮して検証した方がいいと思います。

記録結果はファイル保存も可能です。

Allocations

Allocations行ではメモリ割り当ての状況をグラフィカルに表示してくれます。 行をクリックするとスクリーンショットのようにメモリ割り当ての詳細を数値で確認できます。

メモリが明らかに増え続けている場合はソースに何らかの問題があるか疑ってみて良いかと思います。

Leaks

Leaks行の緑色のチェックマークはメモリリークは発生していないことを示しています。 メモリリークが起きた場合は赤いバツマークが表示されます。

計測項目を追加する

f:id:tansantktk:20210123182811p:plain

Instrumentsのウィンドウの右上の+アイコンをクリックすると、項目一覧が表示されますので追加したいものを選択しましょう。

あとがき

もし、アプリが意図せず落ちたりするような不具合があった場合は、このInstrumentsの表示を見ながらデバッグしてみるのも1つの手です。

パフォーマンス周りの問題は、普通にコーディングしてデバッグしていても気づきにくい部分ですが、定期的な確認は必要ですね。