« Submissionポート(587番)を開放するレンタルサーバ事業者が続々登場 | トップページ | 間違いメール? ワンギリ型メール? »

2005/03/21

Googleサジェスト--Safariで文字化け

Googleサジェスト(ベータ版)を使ってみました。キーワードを入力していくと、そのキーワードに関連したキーワードの組み合わせの候補一覧10件とその検索結果数が表示されるという画期的システムです。Windows版IE6.0、Firefiox1.0では問題なく動作しました。しかし、Mac版IE5.2.3では何も表示されず、Safariでは日本語が文字化けしました。Macでも、Netscape7.1やFirefox0.10.1では正常に表示されました。Safariの文字化けというのは、

のような感じです。

なぜ、文字化けするのか原因が知りたくて、GoogleサジェストのHTMLソースを表示させ、外部ファイル(JSファイル)のパスを確認し、JSファイルをダウンロードしました。

JSファイルを見てみると、かなり多いボリュームで書かれており、また関数名などは、何をやっているのかが想像つきにくいような名称(ほとんどが、「Cb」「qc」「vb」など短い関数名。また大文字と小文字で関数名が異なる場合があり、余計に分かりにい。)になっています。

もちろん、これはGoogleの真似されたくないという意思表示であり、また、それは利用規約(英語)にも現れています。以下、引用。

2. Proper Use. The content and software on this Site is the property of Google and/or its suppliers and is protected by U.S. and international intellectual property laws. Accordingly, you agree that you will not copy, reproduce, alter, modify, create derivative works, or publicly display any content (except for your own personal, non-commercial use) from the Site. You also agree that you will not use any robot, spider, other automated device, or manual process to monitor or copy any content from the Site. Furthermore, the Site is provided to you for your own personal use, and it may not be used for any commercial purposes. For example, you may not do any of the following: use the Site to sell a product or service; use the Site to increase traffic to your Web site for commercial reasons, such as advertising sales; take the results from the Site and reformat and display them, or mirror any portion of the Site on your Web site; or "meta-search" the Site. If you wish to use any portion of the Site for commercial purposes, please contact us for more information. Any use of the Site that infringes upon Google's intellectual property rights or that is for commercial purposes will be investigated and Google shall have the right to take appropriate civil and criminal legal action.

したがって、JSファイルの中身の大まか処理の流れは分かりましたしたが、その詳細はここでは説明できません。ただ、文字化けの原因は、Googleにあるのではなく、Safari使用時に利用される「XMLHTTP」に原因があることが分かりました。

GoogleのJSファイルとは関係なく、XMLHTTPを使った簡単なプログラムでもSafariは日本語が文字化けします。正しくresponseTextを取得できないようです。本来UTF-8で返されているデータなのに、ISO-8859-1として取得しています。そのために文字化けが発生しています。ブラウザでの文字コードであれば、ブラウザメニューのエンコードを適切なものに人間が手動で変えてあげればいいですが、こういうXMLHTTPなどのプログラムで文字コードの認識が間違っている場合はどのように対処したらいいのでしょうね?

WEBプログラマーとしては非常に関心のある問題です。詳細なアルゴリズムの説明はここではできないのですが、キーワード候補となる10の一覧を配列形式を含むテキストデータで取得されるようになっています。その際には「Content-Type: text/html; charset=utf-8」とちゃんとHTTPリスポンスヘッダーは出ているのですが、SafariのXMLHTTPではこのリスポンスヘッダーは無視されているのでしょうね。

Googleで調べてみると、

● ヘチマ_BLOG : Safari の XMLHttpRequest
http://hetima.com/pblog/article.php?id=69

に解法のヒントとなるようなことが書かれているようですが、私の知識では分かりませんでした。

英語版がリリースされた時の記事:
● [Internet Watch]検索語の候補をリアルタイム表示する「Google Suggest」ベータ公開
http://internet.watch.impress.co.jp/cda/news/2004/12/13/5761.html

対応するWebブラウザはInternet Explorer 6.0以上、Netscape 7.1以上、Mozilla 1.4以上、Firefox 0.8以上、Opera 7.54以上、Safari 1.2.2以上で、いずれの場合もJavaScriptとCookieを有効にする必要がある。
と書かれており、Safariも対応となっています。英語しかキーワードに入力しないのなら確かにSfariでも文字化けしないでしょうからね。

また、Googleサジェストの「よくある質問」のページには、

Google サジェストを使用できるブラウザを教えてください。
サポートされるブラウザは、Internet Explorer 6.0 以降でJavaScript とクッキーも有効になっている必要があります。

とありますし、WindowsでFirefoxやOperaでも動きますし、MacでもFirefoxやNetscapeでも動くわけですから、問題ないと言えば問題ないのかもしれません。でも、もし可能ならGoogleの方で、Safariのバグをフォローするような次期バージョンを発表してもらえればうれしいですね。

とにもかくにもすばらしいプログラムであり、Google開発チームの技術の高さを感じます。また、キーワードを入力するごとに、そのキーワードの組み合わせ候補をバックグラウンドで自動検索しているわけですから、Googleのサーバには相当な負荷がかかっているような気がします。それを処理できるGoogleもすごいです。

|

« Submissionポート(587番)を開放するレンタルサーバ事業者が続々登場 | トップページ | 間違いメール? ワンギリ型メール? »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: Googleサジェスト--Safariで文字化け:

« Submissionポート(587番)を開放するレンタルサーバ事業者が続々登場 | トップページ | 間違いメール? ワンギリ型メール? »