2008年11月9日日曜日

マッシュアップサイト作成

まあこのサイトを見る人で知らない人はいないであろうが近年マッシュアップサイトというものが盛んに作られている。WebにおいてマッシュアップというのはグーグルやYahoo!などが提供しているWebAPIを組み合わせて何か新しいサービスを構築する事を言う。材料となるデータや地図を会社が提供してくれるので比較的簡単に高度なWebサイトを構築する事ができるのである。
それで何か作ってみようと思い立ち光速じゃらん というマッシュアップサイトを作成してみた。光速じゃらんはGoogle maps API とじゃらんWebサービスを利用しており、じゃらんnetのホテル情報をじゃらんWebサービスから取り出して、それをグーグルマップに重畳表示している。
このサイトを作るに置いて気付いた点、苦労した点などについて色々述べていこうと思う。恐らく今後このようなマッシュアップサイトを作る人にとって参考になるはずである。
まず言語の選択である。PHP,Perl,Python,Javaサーブレット+JSPなどなどサーバサイド技術は数多くあるが一体何が適しているのか、筆者はPerlは使った事がないのでよくわからないがPHP,Python,Javaサーブレット+JSPの中ではPHPが適しているということを今回実感した。サーバの問題と習得のしやすさの2点がその理由である 。

まずサーバの問題であるがJavaはリソースの消費が大きいためレンタルサーバでなかなか使えるところがない。だいたい月2000円は取られ少々懐が痛い。次にPythonはGoogle App Engineという2008年4月にスタートしたグーグルの新サービスを使えば無料でサーバーを貸してもらえる。そこではサーバーサイドとしてはPythonだけが使用できるのである。更にグーグルのインフラを用いるので頑健性がある、いざとなった時でも安全そうである。しかし唯一のWebAPIサービスへのアクセス手段となるurlfetchという関数が曲者である。これはWebサービスにアクセスして5秒応答が返ってこないと接続を自動で切ってしまうため少しWebサービス側の動作が遅いとすぐにタイムアウトして結局情報を得られなくなる事が多い。光速じゃらんを作成するにあたって、前に2つのサイトをGoogle App Engineで作ったのだが(楽天Webサービスを使った楽々ホテル検索じゃらんWebサービスを使った楽々ホテル検索)いずれも少し長めのクエリを投げればタイムアウトする事が多い、楽天のWebサービスは特に応答が遅すぎて使い物にならない、関係ないがクエリにより料金に矛盾などしょっちゅう生じている。楽天トラベルAPIを使ったサイトがほとんど出てこないのはこのような理由からであろうと悟った。まあWebサービスがJSONP形式に対応していればjavascriptだけでサーバを持たなくても良いのでurlfetchを使わなくてもWebサービスから情報を取得する事はできるのだが、現状のWebサービスでJSONPに対応しているところは少ない。Google App Engineのサーバが海外におそらくあるということも問題である。「光速じゃらん」とじゃらんWebサービスを使った「楽々ホテル検索」では同じクエリを投げても大抵国内のサーバを使用している光速じゃらんの方が圧倒的に速い。それもそのはずでユーザがブラウザからリクエストを投げる(国内)→グーグルのサーバがキャッチ(海外)→じゃらんにリクエストを飛ばす(国内)→グーグルがじゃらんからのリクエストを受け取る(海外)→結果をユーザのブラウザに返す

とアメリカと日本を2往復するのだから当然返って来るのが遅いわけである。よってGoogle App EngineでPythonを使用してマッシュアップサイトを作ると言うのはあまり得策ではないと言える。他のレンタルサーバはどうかというとJavaよりはましだがあまり対応してない模様である。

最後にPHPであるが、これはほとんどのレンタルサーバで対応しており最も素早くサービスをスタートできる。圧倒的に個人でマッシュアップサイトを作ろうとするとサーバではPHPが有利であると言える。

次に習得のしやすさであるが、言語的には最も記述が少なくて覚えやすいのがPythonであると思う。Javaは冗長で難しいし,PHPもPythonほど可読性は高くない。ところがPythonは世界的にはPHPより普及しているが日本ではほとんど普及していない、それゆえ良くわからない所を検索エンジンで調べてみてもなかなか解答までたどり着けない、逆にJavaやPHPなら、特にPHPならば書籍もWebでの情報も充実しておりマッシュアップがやりやすい。以前JavaでAjaxプログラムを組んだ事があるのだがJavaであってもまだまだ情報量が少ない感じであった。これらの事情を考えると最も習得しやすいのはPHPであろう。Pythonは今後が期待されるが今のところはまだ時期尚早といった感じである。勉強しておいて損はしないと思う。

これらの理由でPHPで安い国内サーバを借りてマッシュアップサイトを作っていくと言うのが現状の流れであると思う。

0 件のコメント: