Posted at

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: