少し前のiOS Dev Weeklyで紹介されていたnetfox
というiOS軽量ネットワークデバッグライブラリが少し気になっていたのでイジってみました
iOS開発における定番のネットワークキャプチャリングツール
Charles
- Mac本体をプロキシサーバとして経由してキャプチャする
- 設定が手間(iPhoneのプロキシの設定を戻すのを忘れるってあるある?)
- コードを書く必要はない
- よって他社サービスの通信もキャプチャできる
WireShark
-
RemoteVirtualInterface(RVI)
を用いてキャプチャする - 設定が手間
- コードを書く必要はない
- よって他社サービスの通信もキャプチャできる
PonyDebugger
- ローカルにゲートウェイとなるwebサーバをたててそこでキャプチャする
- 設定が多少手間
- 表示が
Chrome
のDevTool
なのでそれに慣れてる人には見やすい - コードに書く必要あり
- よって他社サービスの通信はキャプチャできない
上記3つの比較で気になるところ、また他のキャプチャリングツールで「これ忘れちゃダメでしょ」というのがあればコメントいただけると幸いです
netfoxとは
さきほどのCharles
などと比較すると、以下のような特徴が挙げられると思います
- アプリケーション内でnetfox専用のモーダルを表示して、そこでキャプチャリングの情報を確認する
- よって設定は楽(なにかを経由してとかではないので)
- コードに書く必要あり
- よって他社サービスの通信はキャプチャできない
ということなので用途としては限られているかもしれませんが、「実機で(特に屋外で)動作検証・ドッグフーディングを行っているとき」に、
- アプリケーション側の表示が正しくないので、レスポンスをみてみて問題を切り分ける
- レスポンスタイムが気になったので、実際にかかっている時間をみてみる
などがあるかなと個人的には考えています。
(ログを転送する機能も提供されているのですが、手段としてはメールのみになります)
インストール(CocoaPods)
pod 'netfox'
で
pod install
(Carthage
でのインストール方法はここでは省略します)
使い方
import netfox
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
NFX.sharedInstance().start()
}
これだけでOKです。あとはアプリケーションを起動して「シェイク」ジェスチャをすると、以下のようなビューが表示されます
他にも、
など、README.md
のoverviewをみたほうがわかりやすいかもしれませんが、
- 通信リスト
- 通信詳細(
Info
,Request
,Response
) - 設定
- アプリ自体の情報
- 通信の総スタッツ
といった内容を確認することができます
シェイクなんて使いたくない
「シェイクジェスチャでデバッグビューが表示されるってなんかイケてないなぁ」という人もいるかと思います。
そこは一応カスタマイズできて、
NFX.sharedInstance().start()
NFX.sharedInstance().setGesture(.custom)
としておいて、あとは任意のタイミングで以下の処理を実行すると、デバッグビューが表示されます
NFX.sharedInstance().show()
ただしデバッグビューからの戻り方がわからず(なにか使い方勘違いしているのかも?)、質問しているところです
他
まだつくられて日の浅いライブラリなので今後どのようになっていくかは気になるところですが、
のissueで次バージョンの要望など受け付けているようです。気になった方は是非!
参考
http://qiita.com/usagimaru/items/d340e87da98e62f99b60
http://wonderpla.net/blog/engineer/Wireshark_iPhone/
http://qiita.com/susieyy/items/5419068c52f4f4e21b8b
最後に
よいクリスマスを