Oisixモバイルセクション マネージャーのohzonoです。
昨年はIDEのショートカットキーの記事を書きましたが、今回はiOS開発におけるデバッグ環境をより快適にするツールやテクニックをご紹介します。
すでにご存じの方も多いかもしれませんが、ご参考になれば幸いです。
Console.appを使ったログ確認
XcodeのDebug Consoleは表示領域が限られており、ログ確認のたびに表示サイズを調整するのは手間でした。そこで、Macに標準搭載されているConsole.appを活用することで、ログの確認が格段に快適になりました。
さらに、Firebase Analyticsを導入しているアプリでは、検索欄に GoogleTagManager
を入力すると関連するログが大画面で確認でき、実装確認がスムーズに進みます。
ログ実装にはos.Logger
を使用しています。詳細はAppleのドキュメントをご参照ください。
Logger | Apple Developer Documentation
Xcodeのデバッグ機能群
Xcodeには、ブレークポイントで処理を一時停止(ブレーク)させると、変数やオブジェクトの中身を確認したり、コードの実行経路を追跡するデバッグ機能が備わっています。
ここでは、私がよく使う2つの機能を紹介します。
LLDB:
Debug Console上でlldb
コマンドを活用すると、変数やオブジェクトがどのような値を持っているかを確認できます。値の書き換えも可能ですが、私自身はまだ活用したことがありません。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ファイルの中身です。
また、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のアプリエンジニアとして働く面白さ