2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

XcodeのInstrumentsでHTTP通信をデバッグする方法

Posted at

はじめに

こんにちは。
今回は、Xcodeに同梱されているInstrumentsを使用してネットワークデバッグの方法、とくに開発時によくチェックするヘッダーやボディの確認手順を紹介します。

この記事を書こうと思ったきっかけは、Instrumentsでネットワークデバッグが可能なことを知っていましたが、具体的な使用方法、とくにヘッダーやボディの確認手順がすぐに分からなかったためです。1

この記事がInstrumentsでネットワークデバッグを行いたい方の参考になれば幸いです。

記事執筆時点で、この方法は物理デバイスのみで使用可能です。
シミュレーターでネットワークデバッグをしたい場合は、CharlesやProxymanなどのツールを試していただければと思います。(Instrumentsでもデバッグできればいいのですが…)

Instrumentsとは

Wikipediaによると、Instrumentsとは以下のように説明されています。

  • Appleによって開発されたアプリケーションパフォーマンスアナライザー

  • アプリ上で発生したイベント(CPUアクティビティやメモリ割り当てなど)をタイムラインで表示

  • 計測したイベントは保存でき、何度も再生(エミュレート)できる

手順

今回は、Apple公式が提供している以下のサンプルアプリを使用して、ネットワークデバッグを行います。

動作環境は以下のとおりです

  • macOS 15.1
  • Xcode 16.1

1. 対象のアプリをRun

前述の通り、以下のようにインストール先を物理デバイスにする必要があります。

2. Network Activity Reportを開く

  • XcodeのDebug Navigatorを開き、Networkをクリック

3. Profileを開始する

  1. 右上にあるProfile in Instrumentボタンをクリック

  2. ProfileまたはRestartをクリック

    • 現在のセッションでデバッグしたい場合はProfile
    • 新しいセッションでデバッグしたい場合はRestart
  3. 以下のような警告が表示された場合、Record Anywayをクリック

4. 計測を停止する

  • デバッグしたい通信を行った後、左上にある停止ボタン(■ボタン)をクリック

以下は停止後の画面です。

5 Detail Areaの内容を切り替える

  • Detail Areaの左下にある「Summary: Task Durations」を「List:HTTP Transactions」に変更する

以下のように、Detail Area(Xcode下部)にHTTPメソッドやステータスコード、通信先などが表示されます

もしDetail Areaが表示されない場合は、Xcode右上にあるDetail Areaの表示切り替えボタンをクリックしてください

6. 詳細の表示

  • 5で表示されたリストから詳細を確認したい通信をクリック

Detail Areaの右側にリクエストヘッダーやレスポンスヘッダーなどが表示されました!!

もしDetail Areaの右側に何も表示されない場合は、Detail Area右上にある表示切り替えボタンが青くなっているか確認してください

参考資料

  1. ネットワークデバッグを行うためのツールやライブラリはいくつかありますが、個人的にはツールでもライブラリでもできる限り公式が提供しているもので行い、基本的にサードパーティ製のものは必要最低限にしたいと思っています!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?