Help us understand the problem. What is going on with this article?

iOSのお手軽な通信デバッグライブラリnetfoxを使って見る

More than 3 years have passed since last update.

image

少し前のiOS Dev Weeklyで紹介されていたnetfoxというiOS軽量ネットワークデバッグライブラリが少し気になっていたのでイジってみました

https://github.com/kasketis/netfox

iOS開発における定番のネットワークキャプチャリングツール

Charles

https://www.charlesproxy.com/

  • Mac本体をプロキシサーバとして経由してキャプチャする
  • 設定が手間(iPhoneのプロキシの設定を戻すのを忘れるってあるある?)
  • コードを書く必要はない
  • よって他社サービスの通信もキャプチャできる

WireShark

https://www.wireshark.org/

  • RemoteVirtualInterface(RVI)を用いてキャプチャする
  • 設定が手間
  • コードを書く必要はない
  • よって他社サービスの通信もキャプチャできる

PonyDebugger

https://github.com/square/PonyDebugger

  • ローカルにゲートウェイとなるwebサーバをたててそこでキャプチャする
  • 設定が多少手間
  • 表示がChromeDevToolなのでそれに慣れてる人には見やすい
  • コードに書く必要あり
  • よって他社サービスの通信はキャプチャできない

上記3つの比較で気になるところ、また他のキャプチャリングツールで「これ忘れちゃダメでしょ」というのがあればコメントいただけると幸いです

netfoxとは

さきほどのCharlesなどと比較すると、以下のような特徴が挙げられると思います

  • アプリケーション内でnetfox専用のモーダルを表示して、そこでキャプチャリングの情報を確認する
  • よって設定は楽(なにかを経由してとかではないので)
  • コードに書く必要あり
  • よって他社サービスの通信はキャプチャできない

ということなので用途としては限られているかもしれませんが、「実機で(特に屋外で)動作検証・ドッグフーディングを行っているとき」に、

  • アプリケーション側の表示が正しくないので、レスポンスをみてみて問題を切り分ける
  • レスポンスタイムが気になったので、実際にかかっている時間をみてみる

などがあるかなと個人的には考えています。
(ログを転送する機能も提供されているのですが、手段としてはメールのみになります)

インストール(CocoaPods)

pod 'netfox'

pod install

Carthageでのインストール方法はここでは省略します)

使い方

AppDelegate.swift
import netfox

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

  NFX.sharedInstance().start()

}

これだけでOKです。あとはアプリケーションを起動して「シェイク」ジェスチャをすると、以下のようなビューが表示されます

写真 2015-12-22 22 21 39.png

他にも、

写真 2015-12-22 22 22 04.png

写真 2015-12-22 22 22 15.png

など、README.mdoverviewをみたほうがわかりやすいかもしれませんが、

  • 通信リスト
  • 通信詳細(Info, Request, Response
  • 設定
  • アプリ自体の情報
  • 通信の総スタッツ

といった内容を確認することができます

シェイクなんて使いたくない

「シェイクジェスチャでデバッグビューが表示されるってなんかイケてないなぁ」という人もいるかと思います。
そこは一応カスタマイズできて、

NFX.sharedInstance().start()
NFX.sharedInstance().setGesture(.custom)

としておいて、あとは任意のタイミングで以下の処理を実行すると、デバッグビューが表示されます

NFX.sharedInstance().show()

ただしデバッグビューからの戻り方がわからず(なにか使い方勘違いしているのかも?)、質問しているところです

まだつくられて日の浅いライブラリなので今後どのようになっていくかは気になるところですが、

https://github.com/kasketis/netfox/issues/28

のissueで次バージョンの要望など受け付けているようです。気になった方は是非!

参考

http://qiita.com/usagimaru/items/d340e87da98e62f99b60
http://wonderpla.net/blog/engineer/Wireshark_iPhone/
http://qiita.com/susieyy/items/5419068c52f4f4e21b8b

最後に

よいクリスマスを :santa:

ushisantoasobu
iOS, Android, jsなどのフロントまわりが好きです。サーバサイドも少し書きます。インフラは弱い。フットサル好きです。
mixi
全ての人に心地よいつながりを
http://mixi.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away