<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Travellers Tales</title>
<link>http://travel-lab.info/tech/pblog/index.php</link>
<pubDate>Sat, 29 Sep 2007 00:25:23 +0900</pubDate>
<description>
Travellers Tales - RSS 2.0 (Really Simple Syndication).
</description>
<item>
<title>iPhone 用 Google Reader、Google Calendar の設定を見る</title>
<link>http://travel-lab.info/tech/pblog/article.php?id=150</link>
<guid>http://travel-lab.info/tech/pblog/article.php?id=150</guid>
<pubDate>Sat, 29 Sep 2007 00:25:23 +0900</pubDate>
<description>F.Ko-Ji さん経由で、iPhone 用の Google Search、Google Reader、Google Calendar が公開されたのを知りました。
興味があったので、Google が iPhone に対してどのような設定を...</description>
<content:encoded>
<![CDATA[<p><a href="http://blog.fkoji.com/2007/09250823.html" title="Google各アプリケーションのiPhone向けインタフェースを確認する方法 - F.Ko-Jiの「一秒後は未来」">F.Ko-Ji さん</a>経由で、iPhone 用の <a href="http://www.google.com/" title="Google 検索">Google Search</a>、<a href="http://www.google.com/reader/view/" title="Google リーダー">Google Reader</a>、<a href="http://www.google.com/calendar/render" title="Google カレンダー">Google Calendar</a> が公開されたのを知りました。</p>
<p>興味があったので、Google が iPhone に対してどのような設定をしているのが、見てみることにしました。
<!-- more --></p>
<h4>まずは Safari for iPhone のユーザエージェントを偽装する</h4>
<p>Google では Safari for iPhone のユーザエージェントを見て、専用のページを表示させているようです。</p>
<p>普通のウェブブラウザからアクセスしても、iPhone 用のインターフェイスを表示させることはできません。</p>
<h5>Safari for iPhone のユーザエージェント</h5>
<p><a href="http://developer.apple.com/iphone/designingcontent.html" title="Apple Developer Connection - iPhone for Web Developers - Optimizing Web Applications and Content for iPhone
http://developer.apple.com/iphone/designingcontent.html（英語）">Apple の iPhone 開発ドキュメント</a>（<a href="http://developer.apple.com/jp/iphone/designingcontent.html" title="Apple Developer Connection - iPhone for Web Developers - iPhone向けWebアプリケーションとコンテンツの最適化">日本語訳</a>）によると、Safari for iPhone のユーザエージェントは以下の通りです。</p>
<pre><code>Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko)
Version/3.0 Mobile/1A543a Safari/419.3
</code></pre>
<p>このユーザエジェントを名乗ってやればいいわけです。</p>
<p>Google では厳密にこの文字列と一致することをチェックしているわけではなく、実際には以下のようなものでも大丈夫です。</p>
<pre><code>Mozilla/5.0 (iPhone; U; Fake; ja-JP)
</code></pre>
<p><code>Mozilla/5.0 (iPhone; U;</code> くらいまで合っていれば、後半は適当でも iPhone 用のページにリダイレクトされるようです。</p>
<h5>Safari for iPod touch のユーザエージェント</h5>
<p>iPod touch のユーザエージェントは、ちょっと iPhone とは違って以下のようになるようです。（<a href="http://groups.google.com/group/iphonewebdev/browse_thread/thread/cd7163a1aad3b9a5" title="Anyone know the iPod touch user agent? - iPhoneWebDev | Google グループ">Anyone know the iPod touch user agent?</a> より）</p>
<pre><code>Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A100a Safari/419.3 
</code></pre>
<p>しかし、今のところ、<code>Mozilla/5.0 (iPod; U;</code> というユーザエージェントでは、iPhone 専用のページにはならず、通常のモバイル機器用のページが表示されています。</p>
<p>User Agent を偽装するにはいくつか方法があると思いますが、以下では Firefox を使った方法と、コマンドラインで curl を使う方法を紹介しておきます。</p>
<h5>Firefox でユーザエージェントを偽装</h5>
<p>Firefox では <a href="http://chrispederick.com/work/user-agent-switcher/" title="User Agent Switcher - chrispederick.com">User Agent Switcher</a> を用いると、任意のユーザーエジェントを名乗ることができます。</p>
<div class="exref">
<ul>
<li><a href="http://chrispederick.com/work/user-agent-switcher/" title="User Agent Switcher - chrispederick.com">User Agent Switcher（作者ページ）</a></li>
<li><a href="https://addons.mozilla.org/ja/firefox/addon/59">User Agent Switcher :: Firefox Add-ons</a></li>
</ul>
</div>
<p><a href="http://chrispederick.com/work/user-agent-switcher/" title="User Agent Switcher - chrispederick.com">User Agent Switcher</a> の使い方がわからない人は、<a href="http://mizuao.typepad.jp/blog/2007/09/firefoxuseragen_b57d.html" title="水の様に蒼く: FirefoxでUserAgentの変更方法">水の様に蒼く</a>さんで、iPhone の場合の例を、スクリーンショット付きで具体的に紹介しているので、参考にしてみて下さい。</p>
<div class="exref">
<ul>
<li><a href="http://mizuao.typepad.jp/blog/2007/09/firefoxuseragen_b57d.html">水の様に蒼く: FirefoxでUserAgentの変更方法</a></li>
</ul>
</div>
<h5>curl コマンドでユーザエージェントを偽装</h5>
<p>Mac OS X の Terminal.app を立ち上げ、コマンドラインから処理する方法もあります。</p>
<p><a href="http://www.macgeekery.com/hacks/pretending_to_be_an_iphone">Pretending to be an iPhone | Mac Geekery</a> を参考にしましたが、Google ではユーザエジェントを見てリダイレクトを行うので、このままでは失敗してしまいます。そこでリダイレクトのページを取ってくるように L オプションを付ける必要があります。また、ユーザーエジェントも適当に省略しています。</p>
<p>以下の例では、http://www.google.com の iPhone 向けページをデスクトップニtmp.html として保存しています。</p>
<pre><code>curl -L -A "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en)" http://www.google.com &gt; Desktop/tmp.html
</code></pre>
<p>curl の詳しい使い方は、<a href="http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/curl.1.html" title="Mac OS X Manual Page For curl(1)">man curl</a> を見て下さい。</p>
<h4>Google の iPhone 向けサイトとモバイル機器向けサイトの違い</h4>
<p>こうして取ってきた iPhone 用のページを見ると、基本的には携帯電話などのモバイルデバイス用のページを、さらに iPhone 向けにカスタマイズしたものを利用しているようです。</p>
<p>以下、iPhone に対応した 3つのサービスのページをそれぞれ見ていってみます。</p>
<ul>
<li><a href="#Google_Search_iPhone">Google 検索での違い</a></li>
<li><a href="#Google_Rederh_iPhone">Google リーダーでの違い</a></li>
<li><a href="#Google_Calendar_iPhone">Google カレンダーでの違い</a></li>
</ul>
<p>大雑把に言うと、モバイルデバイス用のページに加えて、viewport の設定、iPhone の UI にマッチした CSS、場合よっては JacaScript によるコントロール、を加えたものになっていました。</p>
<h5 id="Google_Search_iPhone">Google 検索 - <code>http://www.google.com/m</code></h5>
<p><a href="http://www.google.com/m">http://www.google.com/m</a>、もしくは <a href="http://www.google.co.jp/m">http://www.google.co.jp/m</a> という URL にリダイレクトされます。</p>
<ul>
<li><a href="http://www.google.com/m?hl=ja">http://www.google.com/m</a></li>
</ul>
<p>普通にこの URL にアクセスすると、「表示モード：モバイル」となり、携帯電話用の小さい Google 検索画面が表示されます。（これ以下のスクリーンショットは、大体 iPhone の画面の大きさにくらいに Firefox のウインドウサイズをして、撮影したものです。）</p>
<p><img src="http://travel-lab.info/tech/pblog/resources/_Users_hiro_Library_Application-Support_ecto_attachments_Google_Search_mobile-1.png" height="360" width="266" alt=" Users Hiro Library Application-Support Ecto Attachments Google Search Mobile-1" /></p>
<p>iPhone でアクセスした場合は、「表示モード：PC」の方がまず表示され、viewport で拡大縮小不可の等倍表示に設定され、表示幅をスタイルシートで 312px に制限したページになっています。</p>
<p>viewport の大きさを設定してせずにスタイルシートで幅を調節しているのが、後で紹介する Google リーダー、Google カレンダーの場合と違うところです。そのように設定する合理的な理由はよくわかりません。</p>
<pre><code>&lt;meta name="viewport" content="minimum-scale=1.0,maximum-scale=1.0"/&gt;
</code></pre>
<p>スタイルシート：</p>
<pre><code>.c2 {margin-left:auto;margin-right:auto;width:312px;}
</code></pre>
<p><img src="http://travel-lab.info/tech/pblog/resources/Google_Search_iPhone.png" height="360" width="266" alt="Google Search for iPhone" /></p>
<h5 id="Google_Rederh_iPhone">Google リーダー - <code>http://www.google.com/reader/m/view/</code></h5>
<p>モバイル用 Google リーダーにアクセスしたときは、Safari for iPhone かそうでないかで、同じ URL でも表示が異なります。</p>
<ul>
<li><a href="http://www.google.com/reader/m/view/" title="モバイル用 Google リーダー">http://www.google.com/reader/m/view/</a></li>
</ul>
<p>違いはやはり、iPhone 用には viewport の設定していること、</p>
<pre><code>&lt;meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /&gt;
</code></pre>
<p>※ なお、viewport の設定の区切りでセミコロンを使うのは望ましくありません。詳しくは「<a href="http://travel-lab.info/tech/pblog/article.php?id=154" title=" - Travellers Tales : iPod touch/iPhone の viewport 属性の区切りはセミコロンではなくカンマ">viewport 属性の区切りはセミコロンではなくカンマ</a>」を参照。</p>
<p>および、大きめのフォントにし、かつ項目の間隔を空けて、指でのタップ操作をしやすくしていることでしょう。</p>
<p><img src="http://travel-lab.info/tech/pblog/resources/Google_Reader_iPhone.png" height="360" width="266" alt="Google Reader for iPhone" />
<img src="http://travel-lab.info/tech/pblog/resources/Google_Reader_mobile.png" height="360" width="266" alt="Google Reader for mobile" /></p>
<p>左：iPhone 用 Google リーダー　｜　右：その他モバイル機器用 Google リーダー</p>
<h5 id="Google_Calendar_iPhone">Google カレンダー - <code>http://www.google.com/calendar/m</code></h5>
<p>モバイル用 Google カレンダーも、Safari for iPhone かそうでないかで、同じ URL でも表示が少し変わります。</p>
<ul>
<li><a href="http://www.google.com/calendar/m" title="モバイル用 Google カレンダー">http://www.google.com/calendar/m</a></li>
</ul>
<p>viewport の設定はここでも存在します。</p>
<pre><code>&lt;meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/&gt;
</code></pre>
<p>見た目は、「前へ」「次へ」のボタンが iPhone の UI 風になっているくらいで、大きくは違わないように見えます。</p>
<p>見えないところでは、普通のモバイル機器用の Google カレンダーは JavaScript を使っていないのに対し、iPhone 用の Google カレンダーはイベント（予定）に onｃlick 属性が設定されています。</p>
<p><img src="http://travel-lab.info/tech/pblog/resources/Google_Calendar_iPhone.png" height="360" width="266" alt="Google Calendar for iPhone" />
<img src="http://travel-lab.info/tech/pblog/resources/Google_Calendar_mobile.png" height="360" width="266" alt="Google Calendar for mobile" /></p>
<p>左：iPhone 用 Google カレンダー　｜　右：その他モバイル機器用 Google カレンダー</p>
<h4>まとめ？</h4>
<p>iPhone 専用インターフェイスを設ける場合は、</p>
<pre><code>&lt;meta name="viewport" content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/&gt;
</code></pre>
<p>にして、文字をあらかじめ大きめに、タップもしやすいようにリンクやボタンはゆとりを持った設定にすればいいことが、見て取れます。他にも見落としていることがあるかもしれませんが、ざっとこんな感じでしょう。</p>
<p>もちろんこれは iPhone 専用インターフェイスの場合の設定で、インターフェイスを分けずに同じウェブページをパソコン用のウェブブラウザと iPhone の両方に見せる場合の設定は全然異なってきますね。そのあたりのことは、またの機会に考えてまとめてみたいと思います。</p>
]]>
</content:encoded>
</item>
</channel>
</rss>