iOSのUIデバッグを効率的に行うことができるツールに、Spark InspectorとRevealがあります。
大体できることは同じなのですが、どっちが使えるか検討材料をまとめてみました。
両方とも30日間の無料トライアルが可能になっています。
ざっくり比較表
ざっくり比較を表にしてみました。
Revealの方が後発で、価格が高いです。
機能的にはSpark Inspectorの方が充実しています。
UIや安定性はRevealの方が良いと感じました。
比較ポイント | Spark Inspector | Reveal |
---|---|---|
比較時のバージョン | 1.2.2 | 1.0.3 |
1.0リリース時期 | 2013/5 | 2013/10 |
価格 | $39.99 | $89 (Personal) |
システムビューの再現率 | △ | ○ |
ビューの書き変え | ○ | ◎ |
レイヤーの書き変え | ○ | ◎ |
2D/3D表示 | ○ | ○ ※左右のみ |
Zoom To Fit | ○ | ○ |
ダイナミックロード(Xcode plugin) | ○ | - |
cocoapods | ○ | ○ |
自動更新 | ○ | - |
フォーカス | ○ | ○ |
キーボードショートカット | △ | ○ |
Bounds clipping切替 | ○ | - |
システムビュー表示ON/OFF | ○ | - |
3D時のZ軸間隔調整 | ○ ※スライダー | ○ ※メニュー |
Notification | ○ | - |
外部ディスプレイ | ○ | - |
UIの比較
並べてみるとわかるように、3ペインの画面構成はほぼ同じです。
左にビューのツリー構造、真ん中に画面イメージ、右側に選択したビューの詳細情報が表示されるようになっています。
Spark Inspector
Reveal
ダイナミックロードについて
Spark Inspectorには、明示的にライブラリをリンクせずに、起動時にSparkを有効にする機能(ダイナミックロード)があります。
Revealには今のところこの機能はないので、Podfileに設定を書く必要があります。
ダイナミックロードはちょっと試す場合にはとても便利ですが、実際の開発を想定するとあまり必要ないかもしれません。
なぜかというと、Xcodeから通常実行した場合はSparkで見ることはできないからです。Sparkで見るためには常にInspect with Spark(プラグイン)経由で実行する必要があるので、通常実行していて後でやっぱりインスペクトしたい、という時に使えないのです。
なので結局cocoapodsで入れてしまうのではないかと思いました。
pod 'SparkInspector'
pod 'Reveal-iOS-SDK'
Notificationについて
こちらもSpark Inspector限定の機能ですが、NSNotificationをウォッチすることができるようになっています。今のところ使うシチュエーションがないのでちゃんと見てませんが、NSNotificationを多様している人には便利だと思います。
シミュレータ画面の更新について
Spark Inspectorは自動更新オプションがあり、定期的に画面を最新に更新してくれます。これはかなり良いです。
Revealは自動更新は対応していませんが、Ctrl+Rで更新できるので然程不便には感じませんでした。
ビュー/レイヤー編集
右ペインでビューとレイヤーの編集ができるようになっています。
編集できる項目は同じではなく、Revealの方が多くなっています。
細かくチェックはしてないので、Spark Inspectorでしか編集できない項目があるのかどうかは不明です。
ビューのプロパティ変更しようと思ったら項目がない、ということがあるので実際に触って確認すると良いです。
例えばUIButtonを選択した状態のキャプチャが以下になります。
SparkはUIViewのプロパティしか触れませんが、RevealではUIButtonのプロパティが触れます。
Spark Inspectorの編集可能プロパティ
Revealの編集可能プロパティ
使用感の比較
機能が限定されているからというのもあると思いますが、1週間くらい使った感じだとRevealの方が安定していました。Sparkは度々クラッシュすることがありましたが、Revealは一度もクラッシュしませんでした。
UIは好みもありますが、Revealの方が細かい作りが丁寧に仕上がっていると感じました。(Sparkが使いにくいということはないです)
まとめ
3Dの時の角度記憶やZ軸間隔を記憶して欲しいとか、シミュレータ再起動しても選択していたビューがリセットされないようにして欲しい、とかいろいろ要望はあります。
両者ともまだ新しいツールなので今後の進化に期待しています。
個人的には大分Revealに傾いている感じですが、まだトライアル期間が残っているのでもう少し検討してみたいと思います。