
前回の「スマホの開発が超絶楽に! weinreでスマートフォンをPCでリモートデバッグ!」は大変好評なようでうれしい限りです。自分もこれを知ったときはかなり興奮したのを覚えているので、同じ気持になってもらえたら幸いです。
さて、今回はデバッグツール的なつながりでCharlesというプロキシツールの話をしたいと思います。
プロキシサーバーとは、e-Wordsでは「単にプロキシと言う場合は、WWW閲覧のためにHTTPによる接続を中継するHTTPプロキシを指す場合が多い。
」という説明がされています。
つまりどういうことかと言うと、外部と通信する際に、通信そのものを代理でやり取りしてくれるソフトウェア(サーバ)ということができると思います。
今回もまた、文章では伝わりづらいので実際にその作業をしているデモ動画を作成しました。
※注意:デモでは本来なら手を入れることができないサイトに対しても使える=本番環境でも問題ない、ということを説明するためにYahoo! Japanのサイトでテストしています。なので、実際には修正を行おうとしているサイトと、修正すべきファイルは手元にあるはずなので適宜それらと置き換えて読み進めてください。
いかがでしたでしょうか。Charlesを使うことで非常に手軽に本番環境でのテストが行えることが分かってもらえたのではないでしょうか。
ただ注意としては、(当然ですが)実際に本番環境をいじっているわけではないのでCharlesを落としてしまえば本当の本番環境に戻ります。なので、最終的にはこうして修正・チェックしたファイルを本番へ上げる必要があります。
ただCharlesを使うことによって、「テストで大丈夫だったものを本番に上げたらおかしくなった」ということを極力減らすことができる、ということです。(なんせ、本番環境でうまく行っていたのだから、それをアップしたら当然テストしたものと同じ結果になる、という理屈)
では、動画でやっていたことをピックアップしながらなにをしていたのかの詳細をしていきたいと思います。
まず、Charlesのサイトからアプリをダウンロードします。(Windows版、Mac版ともにあります)
サイトトップ右側にある「Download a free trial Version **」からダウンロードページへ進みます。
するとページ中程にWindows 32bit版、64bit版、Mac OS X版、Linux / UNIX版のリンクがあるので、そこから該当のファイルをダウンロードし、インストールします。

インストール後、起動したらメニューバーから「Proxy > Mac OS X Proxy(とMozilla Firefox Proxy)」のチェックを入れます。(Macの場合)
Firefoxに限っては、専用のCharlesアドオンをインストールしないとダメなようです。ただ、インストールは簡単で、「Mozilla Firefox Proxy」のチェックを入れるとインストールするかどうかを聞かれるので、そのまま「はい」を選択してインストールすればOKです。
続いて、メニューバーの「Tools > Map Local」を選び、マッピングの設定を行います。

マッピングについては、まずリダイレクトしたいURLを指定し、そのURLへアクセスした場合にどのファイルを参照させるかを指定します。(つまり、参照先のURLを無理やりローカル(手元)にあるファイルにリダイレクトする=Map Local)
ここまで設定したところで、設定したサイトを見てみると、上で設定したファイルの変更がそのまま反映することが確認できると思います。
いかがでしょうか。それほど導入がむずかしくないことが分かるかと思います。
一点注意としては、Trial版は30分経つとCharlesが自動で終了する、という点です。(ただ、もう一度普通に起動し直せば、設定した内容は保存されているので使い続けることはできます)
今回のケースはHTMLでデモをしましたが、もちろんCSSやJSを同じようにローカルファイルを参照させることもできます。(逆に、ある程度の規模の案件だとHTMLはPHPなりのプログラムで書き出している、ということも少なくないと思います。その場合は今回の手法では修正がむずかしいかもしれません)
ちなみに、画像ファイルの場合はとあるディレクトリ以下をすべてローカルのファイルを参照するようにしたい、なんていう要望があるかもしれません。その場合は、URLの指定の箇所で「http://hoge.com/img/*」のようにアスタリスクを入れることで、その下のディレクトリにアクセスがあった場合は、ローカルの指定したディレクトリにリダイレクト、という設定もできるようになっています。
このCharels、知ったときはかなり感動しました。たとえば、アカウントがなくて本番にアクセスできない環境(ファイルを納品だけしている場合など)のときに、でもなんとか原因を調べてくれ、なんていう要望をもらったときでもなんとかできてしまったりします。
もちろん通常の開発時でもとても役に立つので、一度試してみてはいかがでしょうか。
weinreとは、サイトでは次のように書かれています。weinre is Web Inspector Remote.
。
この単語の頭2文字ずつをつなげて「we in re」ということのようです。読みは「ワイナリー」とか「ワイナー」みたいな。
つまり、リモートでデバッグができる、ということです。百聞は一見にしかず、ということで、実際に使ってみたものの動画キャプチャをアップしているので、下の動画を見てみてください。きっとその機能に驚くはずです。(ちょっと画面が小さいので、720pにしてフルスクリーンで見るといいかも)
Githubで公開されているphonegap / weinre - Githubからダウンロードできます。
zipで公開されている2ファイルのうち、今回は「weinre-jar-1.5.0.zip」を使いました。Mac版はアプリになっていて使いやすいのですが、ただ設定をいじるのが大変だったので、jarファイルを直接実行するのがいいでしょう。デモもそれを想定してターミナルから実行しています。
さて、今回のデモでやっているように、weinreをターミナルから実行してみます。(社内のサーバに設置しておくときにもやりやすいかと思います)
まず、Githubから落としてきたファイルを解凍します。生成されるファイルは2つで、使う方はweinre.jarのほうです。場所はどこでもいいので、あとあと使いやすい場所に保存しておくといいでしょう。
次に、ターミナルを起動します。通常は、アプリケーション > ユーティリティのフォルダの中にアプリケーションがあります。
起動したら、上記で保存したファイルの場所まで移動してください。(操作がよくわからない人は、cd (cdの後ろに半角スペース)と入力後、保存したフォルダをFinderで表示し、そのフォルダをターミナル上にドラッグ&ドロップし、Enterキーを押すと移動できます)
続いて、java -jar weinre.jar --httpPort 8080と入力し、Enterキーを押します。エラーが特になければ、実行成功です。
起動が無事完了したら、あとはブラウザで実行すればOKです。Google Chromeを立ち上げ、http://localhost:8080/にアクセスしてください。
デモで見た画面が表示されればOKです。ページが表示されたら、ページ中程にあるbookmarklet url in a preと書かれた箇所にあるJavaScriptのソースをコピー*1します。
コピーしたら、一番上にあるリンク http://localhost:8080/client/#anonymous をクリックしてデバッグページを表示させます。
続いて、iPhoneエミュレータか、別のGoogle Chromeのウィンドウでリモートデバッグしたいページを開き、*1でコピーしたJavaScriptをロケーションバーに貼りつけて実行*2してください。
デバッグページの画面にデバッグしたいページのURLが表示されれば接続完了です。あとは、Google Chromeで普段行なっているのと同じようにデバッグすることができます。
実はファイルを落としてきてやる方法以外に、weinreのAPIがすでに用意されていて、そちらを使うことで手前で準備しなくてもリモートデバッグを体験することができます。
http://debug.phonegap.com/client/#hogeにアクセスし、*2で実行したJavaScriptの、読み込むJS部分をhttp://debug.phonegap.com/target/target-script-min.js#hogeに変更すればOK。
ちなみに、#hogeとなっている箇所(ローカルで実行しているもの、APIどちらも)はIDになっていて、それを任意の文字列に変更し、JSを読み込ませるブックマークレットの部分のIDも同じものにすることで、ひとつのサーバで複数のページのデバッグができるようになります。(※http://localhost:8080/client/#debugtest のように)
APIを利用する場合は、実機でも確認することができるのでさらにそのすごさを実感することができると思います。(ネットワークの設定などをいじれば、同じネットワーク内のものであればローカルで準備したものでも実機での検証ができますが、ちょっと話がそれるので割愛)
今回の記事を書くにあたって、「スマートフォンブラウザのWebInspectorをリモートで実現するweinreが凄い」の記事を参考にさせてもらいました。

今回はちょっと趣旨を変更して、便利そうな Web アプリを紹介したいと思います。
その名も、"NAVERフォトエディター"。
実際に使ってみた感想は、「かなり使いやすい」でした。
レイヤー数に制限はあるものの、写真を編集する、という目的では十分だと思いす。
ちなみに "無料、登録なしで使える" のでとりあえずやってみることができるのでオススメです。
オンラインツールであるため、ブラウザさえあれば写真の編集ができるというのも強みかと。
クライアントで更新をしていく、というような案件の場合で、Photoshop などのツールはないよ、っていう場合なんかに教えてあげると、写真掲載のときなど少しでも見栄えをよくした上で公開できるので重宝するのではないでしょうか。n
本家 Photoshop のオンライン版 もありますが、こちらはどちらかというと自動補正ツール、というイメージが強いですね。あまり自分で細かくいじれない感じ。
直感的には、NAVER フォトエディターのほうが使いやすいと感じました。
![]()
Safari や Google Chrome などの、webkit 系ブラウザに搭載されているwebインスペクタ。
Firefox のエクステンションである Firebug に比べると、やや使いづらいイメージがあります。(なんというか、直感的に使えない感じで。慣れの問題だとは思いますが)n
さてこの webインスペクタ、Firebug みたいに閲覧中の CSS が追加できなくて不便だなーと思っていたんですが、どうやら CSS を追加することはできるようです。n
やり方は、ちょっと分かりづらいんですが、まずはinspect(
)ボタンで CSS を変更したい要素を選択します。(このボタンが搭載されているのは Safari4, Google Chrome2 以上のようです。それ以外の ver では、調べたい要素上で右クリックして出てくるメニューの "要素の検証" を選ぶことですぐに調べたい要素がクローズアップされるようです)n
選択すると右側に適用されているスタイルの一覧が表示されます。スタイル一覧の中で、class セレクタや ID セレクタで指定されているスタイルのオン・オフができます。
このプロパティの部分をダブルクリックすると編集状態になります。ここで値を変更すると内容が書き変わるわけですね。ただ、これではすでに指定されているものを変更するだけにしかなりません。
しかし、そこは "1 行の CSS エディタだ"、と思って見ると分かりますが、セミコロン;の後に続けて他のプロパティを指定しter キーを押すと、そこで記述した内容が追加されるのです。
色々調べても、新規で追加する方法が見つからなくて諦めていたのですが、これでずいぶんと Safari などでのチェックが楽になりました。n
Firebug のように、完全に新規で追加できるわけではないものの、大体の場合において class セレクタか ID セレクタから継承を受けているので指定に困ることは少ないと思います。n
今回は便利な JavaScript ライブラリの紹介です。その名も「 curvyCorners 」n
このライブラリ、IE6 なんかでも動作するので、簡単な角丸ボックスを実装したい場合は便利です。JS がオフの場合でも、角丸にならないだけでレイアウトが崩れないのもいい感じです。n
指定方法も簡単で、ボーダーや背景色・画像は普通通り CSS で指定し、角丸にしたい要素を JavaScript で指定するだけで動作します。n
導入は簡単です。 curvyCorners からダウンロードできるファイルを解凍すると出てくるcurvycorners.js を読み込み、以下のように指定するだけです。n
イベント登録用の関数も定義されているので、addEventでクロスブラウザにイベントの登録ができるようになっています。n
また、指定する要素には CSS セレクタのように指定します。(ただし、+ や などの複雑なセレクタには対応していないようです)
子孫セレクタは対応しているようで、#test pのような指定にも対応していますが、一階層までの対応のようで、#test div pなどは対応していないようです。n
複数の要素に対して設定したい場合は、カンマ区切りで指定することで指定できるようです。(ex. #test1, #test2)n
ずいぶん前からあるみたいですが、画像内の不要なメタデータ(制作したツール名とか、そんなのらしい)を削除して、ファイルサイズを軽量化してくれる Web ツールの紹介です。サイトの名前は「smush.it」
ちょっと大きなサイトを構築しているときなどは画像ひとつひとつのファイルサイズが気になってくるのではないかと思います。
このサイトでは、画像をアップロードするか、すでにサーバにアップしてある画像の URL を指定するか、もしくはブックマークレットを使って、閲覧中のサイトの全画像ファイルを一括して軽量化してくれる、というものです。
軽量化された画像ファイルは、zip 形式に圧縮されてダウンロードが可能です。
いちおう Firefox のアドオンもあるみたいですが、使い方が違うのかブランクページが開いてちゃんと動作してくれませんでした・・(;´Д`)
バナー制作で、ファイル容量が決まっているときなどにも重宝しそうですね。
最近知った「Googleアラート」。
自分の興味のあるキーワードを設定しておくだけで、それに関連する記事をピックアップしてメールに届けてくれる機能です。n
キーワードには「CSS」や「html」、「javascript」などと記載して使っています。
届いたメールのサンプルはこんな感じ↓n
設定には、キーワード以外に配信頻度が設定でき、「1日1回、その都度、1週間に1回」が選べます。
また、収集元をニュースやウェブ、グループとカテゴリを選択。(総合もある)
収集元で配信された記事から、設定したキーワードに関連する記事を届けてくれる、というものです。n
RSSより設定が簡単で、なにより自分が購読していないRSSなどの情報を届けてくれるため、RSSと合わせて使うとより情報収集力がアップすること間違いなしです!n