iPhone, Android で WebView を用い、HTML5 + CSS3 + Javascript でアプリを開発するケースは、PhoneGap (Cordova) が登場して以来増えつつあるのではないでしょうか。
HTML 開発には Firebug や Web Inspector といったデバッグツールはもはや必須ですよね。
そこで今回は WebView 中の HTML のデバッグ方法をまとめてみました。
1. Android 全般・iOS4 (実機・シミュレータ)・iOS5 (実機)
weinre (ワイナリー)というツールが利用できます。
weinre はウェブサーバとして動作し、そのサーバが提供するスクリプト・ページにアクセスすることで、ブラウザ上でデバッグが行えます。
(なお、この方法は後述する iOS5, 6 においても利用可能です)
・インストール・サーバの起動
weinre は Javascript で記述されており、動作させるには node.js が必要になります。
node.js のインストール方法はいくつかありますが、ここでは nvm を用いてインストールする方法をご紹介します。
nvm (=Node Version Manager) は異なるバージョンの node のインストール・環境切り替えを行うツールで、Ruby における rvm に相当します。
$ git clone git://github.com/creationix/nvm.git ~/nvm
$ . ~/nvm/nvm.sh
$ nvm install 0.8.11
$ nvm alias default 0.8.11
node のインストールが完了したら、weinre をインストールします。
$ npm install weinre
続いて weinre のサーバを起動させます。
デフォルトでは 8080 ポートで待ち受けします。
$ weinre --boundHost -all-
・使用方法
weinre サーバが起動したので、いよいよデバッグを開始しましょう。
まずはデバッグを行いたい HTML の head タグの中に下記を記述します。(IP アドレスは上記サーバを起動させたマシンのものに置き換えて下さい)
<script src="http://192.168.1.99:8080/target/target-script-min.js#identification"></script>
続いて、デバッグツールを動作させる PC で、下記アドレスに WebKit ベースのブラウザでアクセスします。(IP アドレスは上記サーバを起動させたマシンのものに置き換えて下さい)
http://192.168.1.99:8080/client/#identification
その後、アプリを起動し、上記 script タグを埋め込んだページを開くと、先ほどのブラウザにてデバッグが行えるようになります。
また、weinre はマルチユーザに対応しており、上記 URI の #identification の部分を変更すると別のセッションになります。
・所感
weinre は機種を問わず同一の UI で利用できる点が良いですね。
サーバを一個立ちあげておけば複数人で利用できるのも便利です。
難点としては動作速度が少々遅いことがあげられます。
2. iOS5 (シミュレータ)
WebKit の Web Inspector が利用できます。
・使用方法
AppDelegate に下記コードを追加します。
[NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)];
その後、アプリを起動し、Chromium のバージョン 12 で下記アドレスにアクセスします。
http://localhost:9999/
シミュレータ上からデバッグを行いたいページに移動後、上記ページを更新し、対象の HTML 名のリンクをクリックすればデバッグが行えます。
・所感
iOS5 のシミュレータ専用であり、ブラウザのバージョン(正確にはブラウザが実装している WebSocket のプロトコルのバージョン)も限られる為、汎用性は低いですが、その分高速で Web Inspector ならではの恩恵が受けられます。
利用出来る状況ならば積極的に利用したいですね。
3. iOS6 (実機・シミュレータ)
Safari の Web Inspector が利用できます。
・使用方法
実機・シミュレータにて設定→ Safari →詳細→ Web インスペクタをオンにします。
続いてアプリを起動し、デバッグを行いたいページに移動します。
その後 Safari のメニュー→開発に、シミュレータなら iPhone Simulator、実機なら端末名が表示され、マウスホバーするとページの一覧が表示されますので、対象のページをクリックすれば Web Inspector が起動します。
・所感
XCode 4.5 以上で Safari 6 が必要になりますが、シミュレータ・実機共に高速で Javascript のステップ実行なども行え、とても便利です。
こちらも利用出来る状況ならば積極的に利用したいですね。
以上、駆け足ではありましたが WebView 中の HTML をデバッグする方法まとめでした。