By | 2014年9月3日

バグってんだけど…これちょっとおかしい…デザインくずれてんだけど…
といわれてスクショだけ送られてきたことが一度はあるかと思います。
(まぁどういう状況なのか見た目から推測できるので無いよりもマシだけども…)

さて、スクショだけを送られてきてバグってるといわれた時に何が困るでしょうか。

それは情報が足りずにデバッグを始める前に情報集めをしないといけないことです。
当然ユーザーのための画面にエンジニアが必要な情報が出ていることはまずないでしょう。

個人的にはこの情報を集めるのがクソめんどくさい!!!!!1

送ってきたユーザーはだれ?
デザインが崩れているデータはどれ?
自社で API も開発してる場合は原因はサーバーサイド?それともクライアントサイド?

スクショを撮った時に表示されてる UIViewController からなら上記のような疑問を解決するのは容易なのに…と思いながら、それらを特定するための情報を集めるところからはじまります。

リクエスト先の API が自社の場合だと Access Tokenと Request Parameter が分かれば、
実際にリクエストを送り原因がサーバーサイドなのかクライアントサイドなのかを特定することができて便利ですね。
(Access Token を出力する場合はセキュリティ上、注意が必要なので自己責任でやってください)

また UIWebView を使用している Application だと特定の WebStorage や Cookie が見れたらデバッグが捗るかもしれません。

デバッグに必要な情報は画面(UIViewController)毎に異なります。

前置きが長くなりましたが、デバッグに必要な情報を揃えてるプロセスがそもそも無駄だなと常々思っていました。

それを解決する方法を思いついたのでライブラリにして公開しました。

dealforest/DFTDebugScreenshot

方法はシンプルでデバッグ情報がほしい UIViewController に - (id)dft_debugObjectForDebugScreenshot
を定義し、デバッグに必要なオブジェクトを返すようにしておけばスクショを撮った際に、そのオブジェクトの description した結果が画像として出力されます。

demo

CocoaPods にも公開しているのですぐに使えます。

長くなってきたので、ライブラリの詳細については別エントリーにしようと思います。

yidev 第16回勉強会 で発表する予定なので、この辺りのことをまとめて話せればと思ってます。
もし他で話す機会があれば話そうかなと思います。

ではでは。

おまけ

Homebrew や PromiseKit で有名な Max Howell(@mxcl) 氏に公開してすぐにスターをつけてくれたのでやる気に満ち溢れています。

Posted in ios | Tagged