2006 年 7 月 19 日 16 時 34 分

mixi へのアクセス


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


mixi は Web 上のサービスであり、
アクセスする手段は HTTP 接続に限られる。
(まあ、非公開のものはほかにもあるかもしれないが)

プログラムから HTTP 接続するためには様々な方法があるが、
WSH などのスクリプト基盤から利用できるものは多くない。

1. Internet Explore (MSHTML) を操る
2. XMLHttpRequest (MSXML) を使う

1 は、Internet Explorer を直接操ってしまう方法である。

これは古い Windows でも利用できるのが強みだ。
また、MSHTML による HTML の解析基盤が利用できる。
平たく言うと、HTML に対して DOM が使えるってことだ。

ただ、ユーザの操作とまったく同じ環境となるので、
スクリプトによる広告等のポップアップや、
ブラウザ自身の警告系のダイアログも表示される。
まあ、mixi にはそのような要因はなさそうだが、
これは自動化にはあまり向いていない。

もう 1 つ問題がある。それは通信量だ。
画面を表示するためには、HTML だけではなく、
画像やスタイルシートのダウンロードなども発生するので、
サーバに余計な負荷をかけることになる。

2. は、ブラウザのスクリプト上で通信するための機能だ。

今は Ajax という言葉がだいぶ広まったので有名になった。
XMLHttpRequest は先進的なブラウザ上で利用できる
HTTP の非同期通信用の軽いラッパクラスだ。

これの Microsoft 版実装は、MSXML に含まれており、
ブラウザから独立して利用する事ができる。
また、MSXML はほとんどの環境で利用可能である。
(Internet Explorer 4 以上の環境なら入っている)

XMLHttpRequest を使って通信する場合、
ブラウザを操るのと異なり、HTTP をほぼ直接扱うので、
ブラウザが裏で行っている作業を、
プログラム側で行わなければならない。

また、MSXML なので XML 用の DOM は使えるのだが、
残念ながら mixi の出力するのは XHTML でない。
つまり、プログラムで HTML 文字列を解析することになるのだ。

さて、どちらも一長一短ある。どうしたものか。

通信の方法は前者の方が簡単そうだが、サーバに優しくない。
後者なら、ある程度 HTTP 用のコードが必要だが、
幸い、HTTP はそれほど複雑ではない。

DOM の有無というのは、一般的には大きな差なのだが、
mixi は人間が使うために作られたものだ。
そのため、各画面(レスポンス)は、
人間にとって見やすいようにレイアウトされている。

ということは、DOM を使おうが、HTML を直で見ようが、
結果的に内容を解析しなければならない面では同じ手間だ。

ということで、XMLHttpRequest を採用することにしよう。

やはりサーバに優しくないとね。
それに、解析に DOM が関わるとややこしくなりそうだ。

では、明日は XMLHttpRequest を使って mixi に接続しよう。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.