開発はトータルで見ると、実際にコードを書いている時間よりもテストやデバッグにあたっている時間のが多いように感じます。ことテストにおいてユニットテストや結合テスト、負荷テストなど様々なソリューションが出ていますが、全てのパターンが網羅できる訳ではありません。
やはり不具合は常につきもので、大事なのは問題が起こった時にその詳細を把握して修正できる手段が整っているかどうかでしょう。そこで今回は各種デバッガーを取り揃えてみました。
大事な要素
集中させる
デバッグに必要な情報が分散されてしまうと、その関連性が見えなくなったり、時系列がずれたために全く役に立たない可能性があります。そのためログなどは極力一カ所で管理し、閲覧も串刺しにできるようになっているのが良いでしょう。
エラーは通知系が良い
例えばエラー情報をBTSやプロジェクト管理の自動登録するような仕組みがあるのですが、個人的な経験では気がつくまで見られない(放置される)ように思います。そうならないためにはメールやチャットへの通知など、リアルタイムに問題が起きていることを可視化するのが良いようです。
アプリとWebで欲しい情報が全く違う
スマートフォンアプリとWebではデバッグに必要な情報が全く違います。特に再現性においてはアプリは難しい場合が多いようです。そのため、クラッシュログであったり、操作ログなどを収集できるように作り込んでおく必要があるでしょう。
Webの場合は再現性は高いですが、JavaScript周りのエラーはアプリと同じようにデータをうまく収集していく必要があります。
Android周りは環境依存度が高い
iPhoneは世界中で同じ端末で動作しているので、原因も特定しやすいですが、Androidはデバイスの種類が多彩であり、搭載されている機能もそれぞれ異なるのが問題です。同じ端末が用意できないケースも多いでしょう。
そのため、クラウドで仮想端末を貸し出すというサービスもあります。再現性は高いようなので、Androidのデバッグはそういったサービスを使っていくのが良いようです。