Oisix ra daichi Creator's Blog(オイシックス・ラ・大地クリエイターズブログ)

オイシックス・ラ・大地株式会社のエンジニア・デザイナーが執筆している公式ブログです。

iOSアプリ開発でデバッグを快適にする方法

Oisixモバイルセクション マネージャーのohzonoです。
昨年はIDEのショートカットキーの記事を書きましたが、今回はiOS開発におけるデバッグ環境をより快適にするツールやテクニックをご紹介します。 すでにご存じの方も多いかもしれませんが、ご参考になれば幸いです。

creators.oisixradaichi.co.jp

Console.appを使ったログ確認

XcodeのDebug Consoleは表示領域が限られており、ログ確認のたびに表示サイズを調整するのは手間でした。そこで、Macに標準搭載されているConsole.appを活用することで、ログの確認が格段に快適になりました。

さらに、Firebase Analyticsを導入しているアプリでは、検索欄に GoogleTagManager を入力すると関連するログが大画面で確認でき、実装確認がスムーズに進みます。

ログ実装にはos.Loggerを使用しています。詳細はAppleのドキュメントをご参照ください。

Logger | Apple Developer Documentation

Xcodeのデバッグ機能群

Xcodeには、ブレークポイントで処理を一時停止(ブレーク)させると、変数やオブジェクトの中身を確認したり、コードの実行経路を追跡するデバッグ機能が備わっています。

ここでは、私がよく使う2つの機能を紹介します。

  1. LLDB
    Debug Console上でlldbコマンドを活用すると、変数やオブジェクトがどのような値を持っているかを確認できます。値の書き換えも可能ですが、私自身はまだ活用したことがありません。

  2. Debug Navigator
    Xcode左側にあるDebug Navigatorを用いると、ブレークポイントに至るまでのプロセス経路を可視化できます。再現可能な事象があれば、該当行にブレークポイントを設置することで処理フローを把握し、バグの所在を明確にできます。

詳細は公式ドキュメントをご参照ください。
Stepping through code and inspecting variables to isolate bugs | Apple Developer Documentation

プッシュ通知のデバッグ

シミュレーターでプッシュ通知をテストしたい場合、*.apns拡張子のJSONファイルを用意し、次のコマンドを実行することで、Simulator.app上でプッシュ通知を再現できます。

xcrun simctl push <device> com.example.my-app ExamplePush.apns

Xcode 11.4 Release Notes | Apple Developer Documentation

以下は、実際にコマンドを利用してプッシュ通知を表示したシミュレーターの様子と、その時利用したapnsファイルの中身です。 プッシュ通知を表示したシミュレーターと、その時利用したapnsファイルの中身

また、CloudKitを用いたPush通知のテスト方法もあることをこの記事の執筆中に知りました。これを用いれば実機での確認も可能なようです(未検証)。
Testing notifications using the Push Notification Console | Apple Developer Documentation

Debug View Hierarchyによるレイアウト構造の確認

はじめて扱うUIや、対象UIを表示する箇所は分かっていても関連するファイル名が分からない場合、Debug View Hierarchyが有効です。これにより、表示中のUI階層構造を視覚的に確認でき、必要な箇所へ効率よく絞り込みが行えます。

Diagnosing issues in the appearance of a running app | Apple Developer Documentation

その他のTips

ブレークポイントの削除は、マウスドラッグでしかできないと思い込んでいましたが、ショートカットキー「Cmd + ¥」で追加・削除が可能です。Android開発経験が主だった私にとっては、クリックで消えないブレークポイントに戸惑ったこともあり、ショートカットの存在はとてもありがたい発見でした。

おわりに

いかがだったでしょうか。私はiOS開発に関わり始めて2年目になりますが、まだまだ知らないことが多いです。 他にもオススメがあれば、教えて頂けるととても嬉しいです。

弊社のSlackには #watch-ios-news というチャンネルがあり、Appleが発表するニュースや学んだことを日々共有しています。

弊社では日々学び、成長し、そしてチャレンジし続けるiOSエンジニアを募集しております。

ご興味をお持ちいただけた方は、ぜひ ohzonoのX からDM頂くか、以下の募集要項にある応募ボタンから進み、お声がけください。カジュアル面談をご案内いたします。

もっとモバイルセクションについて知りたい方はぜひこちらもどうぞ。

■毎週30万人がお買い物するアプリをどう進化させるか?── Oisixのアプリエンジニアとして働く面白さ

https://recruit.oisixradaichi.co.jp/ordig/5199/

Oisix ra daichi Creator's Blogはオイシックス・ラ・大地株式会社のエンジニア・デザイナーが執筆している公式ブログです。

オイシックス・ラ・大地株式会社では一緒に働く仲間を募集しています