FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

SwiftでNCMBへのアクセスをデバッグする際にはnetfoxを使おう

f:id:mbaasdevrel:20180806093819p:plain

iOS SDKを使っていて、そのアクセス内容をデバッグしたいと思うことがあると思います。幾つかのデバッグツールがあるのですが、netfoxが最もお勧めなようです。

HTTPSの壁

HTTPサイトであればプロキシで十分です。しかしHTTPSの場合は容易ではありません。多くのソフトウェアにおいて、専用の証明書をインストールして信頼することでHTTPSの通信内容を閲覧できるようにします。

Charlesではデバッグできない

ネットワークデバッギングアプリとしてはCharlesが最も有名かと思います。CharlesはiOSシミュレータにも対応しています。iOS Safariなどであれば、HTTPSでの通信内容は閲覧できます。しかしNCMBのiOS SDKにおける通信内容は確認できませんでした。SSLのハンドシェイクの時点でエラーになってしまいます。

f:id:mbaasdevrel:20180913164706p:plain

netfoxを使う

そこで使ってみたのがnetfoxです。これはSwiftで書かれており、iOSアプリに組み込んで使います。

CocoaPodsでのインストール

まずCocoaPodsでインストールします。本来は use_frameworks! を使うのですが、NCMBでコメントアウト必須なので変更しています。

# use_frameworks!

# Pods for ncmbPhoto
pod 'NCMB', :git => 'https://github.com/NIFCloud-mbaas/ncmb_ios.git'
pod 'netfox'

そして pod install します。

$ pod install

読み込む

フレームワークを使っていないので読み込み方は次のようになります。

import netfox

そしてセッションを開始します。

func application(_ application: UIApplication, 
  didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    NFX.sharedInstance().start()
    :
}

これで準備完了です。

アプリをテストする

テストする場合には通常通りにアプリを操作し、デバッグしたいタイミングでシェイクジェスチャーを行います。シミュレータであれば コマンド + コントロール + Zキーです。そうするとデバッグ用のモーダルが表示されます。最初はネットワークアクセスの履歴です。

f:id:mbaasdevrel:20180913164652p:plain

さらにリクエスト。

f:id:mbaasdevrel:20180913164738p:plain

そしてレスポンス。

f:id:mbaasdevrel:20180913164748p:plain

まとめ

netfoxはリアルタイムで通信内容が見られないという問題はありますが、NCMBの通信内容を確認する際には十分な使い勝手でした。ファイルアップロードしたりすると、その内容が大きすぎて見られないという問題があります。とは言え、JSONベースでどういったリクエストをして、どういったレスポンスが返ってくるかといったチェックであればnetfoxが便利でしょう。ぜひ活用してください!

kasketis/netfox: A lightweight, one line setup, iOS / OSX network debugging library! 🦊

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。