このカレンダーは「Adobe AIR Advent Calendar 2013」の10日目の記事です。
すでに10日目過ぎているっていうツッコミはナシで。
まぁ、カレンダーが虫食いみたいな感じになるのもあれなので、勝手ながら小ネタ投稿します。若干9日目の記事と似た感じですが。まぁ連携も可能かと思います。
今回は結論から言うと、ログを表示するコンポーネント作りましょうっていうだけです。
前置き
作り終わって公開する際、リリースビルドってやりますよね。
で、たまに、リリースビルドでしか遭遇しないバグってあるじゃないですか。
原因を調べようとするじゃないですか。
でも、リリースビルドすると、traceって無効化されるじゃないですか。
Scoutで見ても、トレース文、やっぱ出てこないじゃないですか。
Androidだと、LogCatとかで見ても、だめじゃないですか。
まぁこうなると恐らく「Monster Debugger」とか選択肢に上がると思うんです。
便利ですよね。だいぶ昔に使ったくらいですが。今見たら結構進化してる模様で。
http://demonsterdebugger.com
でも、それはあくまで「PCの前に座っていて、且つアプリを立ち上げている」前提じゃないですか。
あと、会社のインフラ部に制限されて、そういうのインストールできなかったら終わりじゃないですか。
モバイルアプリだと、デバッガと接続できない場所にいる可能性あるじゃないですか。
お昼の休憩時間、外で飯食い終わってのティータイムでなんとなくアプリを確認していたら、「バグ出たー」って時にトレース文見れないじゃないですか。
そうすると、アプリの中にトレース文が見れるコンポーネント的なもの仕込むしかないじゃないですか。
そういうお話です。
前置きが長くなりましたが。
んじゃ、どういうふうに自分はやっているかっていうお話なのですが、もったいぶった割に全然大したことではなく・・・。
自分は、かの有名なモニタリング用コンポーネントであるStatsを継承したものを作って、Statsをクリックしたらログ画面がでるようにしています。(Statsに関しては亜種とか出てるみたいなので、ここではリンクを掲載しません。)
ちょっと見づらいですが、Statsの横にある白い部分がログ表示部分です。Statsを押すことで表示/非表示を切り替えます。
もちろんStatsである必要はないのですが、「どうせ使ってる(常時出ている)」「ミニマムで邪魔になりにくい」「必要以上にコンテンツ以外の操作ボタン増やしたくない」っていうところで、Statsを選んだ感じです。
デスクトップアプリならまだよいかもしれませんが、モバイルだと操作性も画面の大きさもかなり限られるので、上記の条件は大事です。
こういうのを付けておくと、他のいろんな人がデバッグしてくれる時分かりやすいですよね。高度なデバッガを使って「これデバッグするときは、これをまずインストールして、設定はこうやって、操作はこうして、こういう順番で・・・」よりも、「なんかバグ見つけたら、ココみてくれる?」ってポチってやるだけでOK。知識のない人にも優しい。もちろん、それだけでは足りないこともあるでしょうから、場合によりけりですが。
まぁ、問題はログの文章コピペ出来ないので、その情報を直接伝えるとかするしかないところですかね。そういう意味では、Monster Debuggerとかと同時に使用するのもありかもしれませんね。或いはクリップボードにコピーするボタンを置くとか。
人によって「俺Statsじゃねーしwwwwwwwww」みたいな人もいると思いますが、そこは人それぞれということで。画面にコンポーネントをいくつも付け足すんじゃなくて既存のものに別機能を付け足すとよいのでは、というお話でした。
自分はStatsを拡張していますが、いろんなデバッグ用ツールをラッピングしてまとめてしまうコンポーネントを作成しても良いかもですね、と書きながら思いました。
使い方
なお、Statsを拡張したクラスに関しては、ここに乗せるほど特に難しい事をやってる訳ではないので利用法だけ書くと、
addChild(CustomStats.getInstance());
でStatsを表示。new Stats()みたいにユーザー側でインスタンス化しないのは理由があって。
CustomStats.trace(String);
で、どこからでもログの記述ができるようにしているからです。
あと、CustomStats.clear();で表示をクリアーする感じですかね。
そんな感じで、なんか今更感がするエントリーで申し訳ないですが、リリースビルドのバグに困っている人は是非お試しくださいませ。