googlebot-mobileのUAとDOCTYPEとインデックスの関係についての実験とその結果

TokuLog 改め だまってコードを書けよハゲ – HTTP::MobileAgent で Nokia6820 がモバイルと判定されない件 を読んで、去年 google sitemaps のモバイル版をいじったりしつつ実験したときの経過を googlebot-mobile研究用ページ に書いていていつかまとめようと思いつつ放置していたのを思い出したので、そのままですがとりあえずこっちにコピーしておきます。

長いですが まとめ の通りです。
Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html) をモバイルと判定されるように対処されていますが、NokiaでくるやつはXHTML用なのでmobileと判定してあげるだけではだめですよー、というのが以下に書いてあるはず。

やっぱり読むといろいろ欠けてるところがあるので補足。

携帯から http://google.co.jp/ にアクセスすると3キャリアすべて http://google.co.jp/imode にリダイレクトされます。そしてこのURLの携帯検索ではCHTMLインデックスが使われています。AUの公式の携帯検索もCHTMLインデックスから検索しているようです。

一時期よく http://google.co.jp/xhtml で携帯検索ができますよ、とブログ等で書かれていましたが、このURLの携帯検索ではXHTMLインデックスが使われるため、DOCTYPEがCHTMLになっている日本の携帯向けコンテンツはヒットしないのでご注意ください。また、このURLを直接入力しない限りユーザはXHTMLインデックスで検索することはないので、日本の携帯ユーザを対象にするならばXHTMLインデックスを気にする必要はありません。

Experiments on lazy googlebot-mobile

上記の事を調べるために以下の実験用ページをセットアップする。

DOCTYPEの記述が重要かどうか

mogueでの結果からDOCTYPEが不適切な場合、インデックスされないことがわかっている。(WAP2.0と書いていたらインデックスされなかった。現在はDOCTYPEなしサイトマップありでCHTMLページとしてインデックスされるようになった)
携帯サイトとしてインデックスされるのにDOCTYPEが担う役割を調べる。

  • DOCTYPEがなくても携帯サイトとして認識されているものも多数あるがDOCTYPEがあれば携帯サイトとして認識されるかを調べる。
    google.com/imode では

    <!DOCTYPE HTML PUBLIC “-//W3C//DTD Compact HTML 1.0 Draft //EN”>

    と宣言されている。同様に google.com/xhtml では

    <!DOCTYPE html PUBLIC “-//WAPFORUM//DTD XHTML Mobile 1.0//EN” “http://www.wapforum.org/DTD/xhtml-mobile10.dtd”>

    と宣言されている。
    これに倣ってDOCTYPEをCHTMLにしたものXHTMLにしたものを用意する(on ku0522nositemaps.homelinux.net)。これが携帯サイトとしてインデックスされるかどうかを調べる。

  • DOCTYPEが不適切だとインデックスされないかを再確認するため、サイトマップを設定し、わざと一致しないDOCTYPEを設定する。
    ku0522xhtml.mine.nuにDOCTYPEをCHTMLにしたものを置く。
    ku0522chtml.dyndns.orgにDOCTYPEをXHTMLにしたものを置く。
    そして結果を見る。

UserAgentとマークアップ言語の対応

携帯バージョン用のUAを持っているgooglebotには

  • Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
  • DoCoMo/1.0/N505i/c20/TB/W20H10 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)

との二つがある。
これがそれぞれCHTMLのコンテンツとXHTMLのコンテンツを調べるためにきているのかどうかを調べる。

  • XHTML sitemap だけを与えたサイト ku0522xhtml.mine.nu と
    CHTML sitemap だけを与えたサイト ku0522chtml.dyndns.org とを用意して、
    それぞれにどんなgooglebotをやってくるかを観察する。
  • NokiaがXHTML用、DoCoMoがCHTML用だと仮定してDOCTYPEの出しわけを行う。
    出しわけしない場合は一方でしかインデックスされないが(mogueで検証済み)出しわけをすると両方でインデックスされるかも知れない。(on 3zai.costcentre.net)

モバイルサイトマップの有効性検証

サイトマップを設定した
ku0522xhtml.mine.nu, ku0522chtml.dyndns.org と、
サイトマップを設定していない ku0522nositemaps.homelinux.net を比較し、サイトマップが有効かどうかを検証する。
ku0522nositemaps.homelinux.net, costcentre.netはPC版のindexにも入っておらず、クロールされていない可能性が高いので
サイトの登録
を行った。

ドメイン DOCTYPE charset chtml sitemap xhtml sitemap
3zai.costcentre.net - sjis O O
costcentre.net Compact HTML 1.0 Draft sjis
ku0522chtml.dyndns.org Compact HTML 1.0 Draft sjis O
ku0522xhtml.mine.nu XHTML Mobile 1.0 sjis O
ku0522nositemaps.homelinux.net - sjis

実験経過

2006-10-30

という設定で仕込みを行った。(18:00ごろ)
そうするとMozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
というのがサイトマップファイルの回収に来る。(サイトマップの登録後10分程度の時間できてた)

2006-11-02

ふつうのgooglebotがサイトマップファイルやrobot.txtを取りに来てるけど
googlebot-mobileはまだこない。

2006-11-06

googleでURLを登録したのにいまだこのページがインデックスされないので、
VOXの自分のページからリンク張った。
googlebotは1日1回のペースでサイトマップにアクセスしているがgooglebot-mobileはまだ来ていない。

2006-11-08

googlebot-mobile がきていた。きていたのはCHTMLモバイルサイトマップを登録していた ku0522chtml.dyndns.org のみ。
66.249.66.69 - - [08/Nov/2006:06:01:35 +0900] "GET /nodoctype.html HTTP/1.1" 200 458 "-" "DoCoMo/1.0/N505i/c20/TB/W20H10 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"
クロールしているのはCHTMLサイトマップに記述しておいた3ページ。
携帯の検索インデックスにはまだ反映されていなかった。

CHTMLサイトマップで指定したページを起点にして、ほかのページもたどるのかどうか調べるため、ページを追加した。

2006-11-12

このku0522nositemaps.homelinux.netドメインのページがインデックスに反映されて、ふつうのgoogle検索でヒットするようになった。ふつうのgoogle検索であれば、ページのDOCTYPEがCHTMLだろうがXHTMLだろうがヒットするようになった。

2006-11-14

xhtmlのサイトマップだけを登録していた ku0522xhtml.mine.nu に
66.249.66.97 - - [14/Nov/2006:13:24:25 +0900] "GET /nodoctype.html HTTP/1.1" 200 393 "-" "Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"
がきていた。やはりxhtmlサイトはnokiaが見に来るのかもしれない。

11/8にクロールされたCHTMLも未だインデックスには反映されない。

2006-11-17

ku0522xhtml.mine.nu には今日もnokiaがきていた。
66.249.65.167 - - [17/Nov/2006:03:30:23 +0900] "GET / HTTP/1.1" 200 504 "-" "Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"

インデックスにはまだ登録されない。

2006-11-22

ku0522chtml.dyndns.orgにDoCoMoのgooglebot-mobileが来た。ランクの低いページは隔週でクロールすることになっているのだろうか。11-08にindex.htmlからリンクをはっておいたfollowme.htmlというページもクロールされていたので、サイトマップに記述したページを起点にしたクロールもしているようだ。(ファイル名を間違って作っていたため404になっていたけど、リンクをたどってはくれている)
66.249.66.79 - - [22/Nov/2006:08:57:50 +0900] "GET /followme.html HTTP/1.1" 404 298 "-" "DoCoMo/1.0/N505i/c20/TB/W20H10 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"

今回CHTMLサイトマップを設定したサイトにまたもDoCoMoがきたことで、CHTML-DoCoMoでXHTML-Nokiaという役割分担になっているのはほぼ確実だと思われる。

このページ、googlebot-mobileで検索すると、上から4つめになっててびっくり。その割にアクセスがないのでgooglebot-mobileなんぞ誰も気にしていないのだと思われる。(アクセスがあるとログの解析が面倒になるのでないほうがいい)

2006-11-28

ついに検索でヒットするようになりました! ku0522chtml.dyndns.org/nodoctype.htmlhttp://ku0522xhtml.mine.nu/がヒットするようになりました。それぞれについて細かく見てみます。

ku0522chtml.dyndns.org
このサイトには4つのページがあり、そのうち3つのページをchtmlサイトマップで知らせていました。結果は以下のとおり。

ページ mrestrict=chtml検索結果 DOCTYPE CHTMLサイトマップ
index.html ヒットしない HTML PUBLIC “-//W3C//DTD Compact HTML 1.0 Draft //EN 記載
xhtml.html ヒットしない
html PUBLIC “-//WAPFORUM//DTD XHTML Mobile 1.0//EN”
“http://www.wapforum.org/DTD/xhtml-mobile10.dtd”
記載
nodoctype.html ヒットする なし 記載
followme.html ヒットしない HTML PUBLIC “-//W3C//DTD Compact HTML 1.0 Draft //EN なし

DOCTYPEを記述していないnodoctype.htmlのみインデックスされていることから、DOCTYPEがHTML PUBLIC “-//W3C//DTD Compact HTML 1.0 Draft //ENではCHTMLとして扱われないことが伺われる。
サイトマップには記述せず、記述しているページからリンクを張ったfollowme.htmlはDOCTYPEを記述していたため、サイトマップに記述していないがリンクされているページがインデックスされるかどうかは不明になってしまった。これに関してはDOCTYPEを記述しないfollowmenodoc.htmlを新たに作りテストする。

ku0522xhtml.mine.nu

このサイトには3つのページがあり、すべてのページをxhtmlサイトマップで知らせてありました。結果は以下のとおり。

ページ mrestrict=xhtml検索結果 DOCTYPE XHTMLサイトマップ
index.html
ヒットする
(ただし文字化けしている)
html PUBLIC “-//WAPFORUM//DTD XHTML Mobile 1.0//EN”
“http://www.wapforum.org/DTD/xhtml-mobile10.dtd”
記載
chtml.html ヒットしない HTML PUBLIC “-//W3C//DTD Compact HTML 1.0 Draft //EN 記載
nodoctype.html ヒットしない なし 記載

検索にヒットするようになったものの、文字化けしているのはindex.htmlのHTML内で文字コードの指定をしていなかったためだと思われます。

この結果からわかるのは

  • サイトマップを設定していてもDOCTYPEが不適切だとインデックスされない(サイトマップで指定したページが無条件でインデックスされるわけではない)
  • XHTMLに関しては文字コードを適切に設定する必要がありそう
  • CHTMLならDOCTYPEなしが無難
  • XHTMLならDOCTYPEの宣言が必要

といったところでしょうか。

今日はさらにもうひとつニュース。
サイトマップを送っていないku0522nositemaps.homelinux.netに
219.192.4.59 - - [27/Nov/2006:11:35:48 +0900] "GET / HTTP/1.1" 200 8308 "-" "DoCoMo/1.0/N505i/c20/TB/W20H10 (compatible; Googlebot-Mobile/2.1)"
が回ってきていました。
ほかのサイトのログを見てみたところ googlebot-mobile DOCOMO は、PCサイトとしてインデックスされていればたまに(週に1回程度?)回ってくるようです。
そのときDOCTYPEのないページを返している&サイズが一定以下(googlebot-mobileが来ていてDOCTYPEのないページでも、インデックスされていないものが存在するためDOCTYPE以外にも内容で判断していると思われる)であれば、googlebot-mobileを意識していなくてもインデックスされていそうです。

ku0522xhtml.mine.nuにも
66.249.66.79 - - [28/Nov/2006:08:17:27 +0900] "GET /robots.txt HTTP/1.1" 404 292 "-" "Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"
がきていました。

DOCTYPEを設定、サイトマップなしの costcentre.net と、
DOCTYPEを出し分けてxhtml, chtml両方でインデックスさせようとした 3zai.costcentre.net のことをすっかり忘れていました…

costcentre.net はそもそもgooglebot-mobileがきていませんでした。これはDOCTYPEを設定していなかった ku0522nositemaps.homelinux.net と違い、適切でないDOCTYPEが設定されていたため googlebot-mobile DoCoMo が回る必要がないと判断されている結果かもしれません。DOCTYPEなしに変更してみます。
3zai.costcentre.net は、サイトマップを設定していることもあってDoCoMo, Nokia ともにきていました。DoCoMoの場合はDOCTYPEとしてCHTMLを、Nokiaの場合はXHTMLを返していました。DoCoMoでインデックスされないのは上述の結果から納得できますが、XHTMLでもインデックスされていませんでした。
インデックスされるようにするべく、CHTMLからはDOCTYPEを除去、XHTMLではインデックスされていたku0522xhtml.mine.nuと比較してDOCTYPEとHTMLタグの間に改行がない、という些細な違いがあったので改行を入れてみました。

2006-11-29

3zai.costcentre.netがCHTML, XHTMLで検索してヒットするようになっていました。
昨日存在を思い出して微妙にHTMLを変えてからはロボットが巡回してきていないので、変更前のHTMLの内容でインデックスされているはずです。

  • CHTML, XHTMLサイトマップを設定
  • DOCTYPEはDoCoMo/Nokiaに応じてCHTML, XHTMLで出しわけ

DOCTYPEについては、昨日DoCoMoの場合には出力しないように変更したが、この変更後にはgooglebot-mobileは(googlebotも)来ていないのでインデックスされた時点ではCHTMLが出力されていたことになる。DOCTYPEをCHTMLに設定していたけどインデックスされたというこの結果はそのほかのサイトでDOCTYPEをCHTMLにしているとCHTMLサイトとしてインデックスされなかったのと相反する。

XHTMLとしてもインデックスされていることから、出しわけをすれば両方でインデックスされるようにすることは可能なようだ。

インデックスされたこととは関係ないが、昨日の変更は以下のとおり。変更前のものがコミットされていなかったのでメモとして残しておく。


--- /home/kuma/.backup/vim/index.php3.bak       Mon Oct 30 18:36:42 2006
+++ index.php3  Tue Nov 28 17:20:27 2006
@@ -1,8 +1,9 @@
 <?php
        if ( preg_match( '/DoCoMo/', $_SERVER["HTTP_USER_AGENT"] ) ) {
-               print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD Compact HTML 1.0 Draft //EN">';
+               #print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD Compact HTML 1.0 Draft //EN">';
        } elseif ( preg_match( '/Nokia/', $_SERVER["HTTP_USER_AGENT"] ) ) {
                print '<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">';
+               print "\n";
        }
 ?><html>

 <meta http-equiv="content-type" content="text/html; charset=SHIFT_JIS" />
			

2006-11-30

今日見るとDOCTYPEをCHTMLに設定してある http://ku0522chtml.dyndns.org/index.html がインデックスされていました。ku0522chtml.dyndns.orgには28日以降gooblebot-mobileは来ていない。

DOCTYPEがないものと、あるものとでインデックスされる順番が違うのかもしれないが、index/htmlと同じようにDOCTYPEを設定していたfollowme.htmlは現時点でインデックスされていない。ただし、followme.htmlはCHTMLサイトマップに記載していないので、サイトマップにあるものと、そこからクロールしたものとで処理に際がある可能性もある。

とりあえず、昨日の時点で矛盾しているように思えた、DOCTYPEがCHTMLだとインデックスされないが、されているページもある、というのはインデックスのタイミングでそう見えていただけのようだ。

2006-12-06

3zai.costcentre.net と ku0522chtml.dyndns.org に googlebot-mobile DoCoMo がきてそれぞれ1ページ、4ページ(DOCTYPEがxhtmlのページはクロールされなかった)クロールしていました。

ドコモのページにimode用XHTMLページのDOCTYPEは<!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.1) 1.0//EN" "i-xhtml_4ja_10.dtd">にしてねと書いてあったのでこれにしたimode.htmlというファイルを ku0522chtml.dyndns.org と ku0522xhtml.mine.nu に用意してインデックスされるかを調べることにしました。
両方のドメインとも、それぞれのサイトマップに追加しました。

2006-12-07

2006-11-28の結果からサイズが大きいとインデックスされないようなので、1,5,10,20,40kのファイルをku0522chtml.dyndns.orgに用意、CHTMLサイトマップに追加して様子を見る。

2007-01-15

年末年始をはさんであいだが空いたあいだにインデックスが更新されていました。
更新されたのは12/28の昼間のようです。前回も11/28に更新がかかっているので毎月28日に更新されるのでしょうか。2月が28日しかないことを考慮した上での月末ということなのかもしれません。
インデックスに追加されていたのは ku0522chtml.dyndns.org で
size1k.html, size5k.html, size10k.html, imode.html の4ページ、
ku0522xhtml.mine.nu で imode.html の1ページです。

この結果から

  • 10kのページはインデックスされるが少なくとも20kを越すとインデックスされない
  • DOCTYPEを <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.1) 1.0//EN" "i-xhtml_4ja_10.dtd"> にしているとchtmlでもxhtmlでもインデックスされる

ことがわかりました。

まとめ(2007-01-15)

細かい疑問は残るが、大枠のところで何をすればいいかはわかったかんじ。

  • 毎月28日の昼ごろにインデックスが更新されるらしい
  • ページサイズは10k程度にする。それを超えるとインデックされなくなる
  • モバイルサイトマップを登録しなくてもインデックスされる
  • CHTMLインデックスは DoCoMo googlebot-mobile, XHTMLインデックスは Nokia googlebot-mobile という役割分担がある
  • 通常のgooglebotはモバイルのインデックスには直接関与しない(googlebot-mobileがクロールするべきページを指示している可能性はある)
  • DOCTYPEはchtml, xhtmlの両方のインデックスでインデックスされるため<!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.1) 1.0//EN" "i-xhtml_4ja_10.dtd">にするのがよい。CHTMLでインデックスさせるにはDOCTYPEをCHTMLにするか設定しないのがよい。XHTMLではインデックスされるにはDOCTYPEが必要。DOCTYPEでXHTMLと明示的に記述していないとインデックスされない
  • CHTMLインデックスとXHTMLインデックスは切り離されている。DOCTYPEを出し分ければ(もしくは<!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.1) 1.0//EN" "i-xhtml_4ja_10.dtd">)にすればひとつのページをCHTML, XHTML両方でヒットさせることが可能

関係ないこと

携帯電話からふつうに検索してヒットした結果を見に行った場合、ページはgoogleがてきとうに携帯で見やすいように変換して端末に送ってくれる。このとき表示されるページはgoogleのキャッシュにあるものが利用されるわけではなく、リアルタイムにサーバからとってきたものを加工したものが表示される。
サーバからファイルをフェッチするときのUAは

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)

になっている。


About this entry