農場主の日常

なんちゃってエンジニアの日常をつらづらと

過去の記事:August 2010

| Next»

サイトのベンチマーキング

 大量のデータをアップロードして、気になるのは表示速度と処理にかかる重さ。
 Webサイトの表示に5秒の時間がかかると、訪問者はもうそのサイトは閉じて開かないというデータがあるようだ。

 さて、表示のベンチマークを取ってみると、どうも駅のリスト表示に時間がかかるようだ。あと、宿の表示もかなり時間がかかるようになってしまっている。

 少しWebを検索。どうも、良く検索するデータにPRIMARY KEYなどのインデックスをつけると検索が速くなるようだ。そういえば、データベース作ったときに、特にPRIMARY KEYなんかを設定していなかったなと。
 データベースの構築をしなおして、PRIMARY KEYの設定を追加。結果、8%ほどの速度アップになった。
 強烈とはいえないけれど、全体で少しこういうのを見直した方が良いな。



でかいデータのアップロード

 さて、宿検索サイト「駅から3分」が形になったので、サーバへのアップロード。
 データベースのデータのアップロードは、phpMyadminの機能を使う。でも、そのままの形でアップロードしたら、データがでかすぎるからかどうにもこうにも途中で止まってしまう。
 アップロードは、基本的にgzip形式を使った方が良いようだ。圧縮して送るわけだから容量も減るし。内容はテキストだから、圧縮すればだいぶん縮むし。

 さて、楽天のデータが更新できたので、その他の旅行会社のデータも更新。と思ったら、JTBのCSVのフォーマットが変わった。馬鹿なんじゃないだろうか。日本旅行は4月から更新してないし、改行コードがデータに入ってるし。

 ちまたの宿検索サイトのデータがじゃらんや楽天ばかりなのはそういう理由があるわけで。まあ、旅行会社としてもできれば自社から直接予約して欲しいから、力の入れ具合は違ってくるわな。


宿予約サイトの総仕上げ

 さて、現在作成中の宿予約サイトの作業。
 楽天トラベルの全データをぶっこ抜いてみた。宿数22000件ほど。あとは表示形式の整形とサーバへのアップをどうするか。これが一番でかいデータベースではあるけれど、他の旅行会社のデータや表示用のPHPファイル、駅のデータなど、全データをアップロードするのは結構大変。
 まあ、使うデータだけ厳選すれば良いんだけれどね。

 あと大手はじゃらんか。このデータも楽天とおんなじように抜くことはできそうだけれど、どうしようかな。
 宿の予約の時に一緒にあると良い物って何かな?コンビニの近さ、風呂、ネット環境は実装。レンタカー、天気、ガイドブックあたりはどうだろう。駅からなら時刻表のリンクもか。

 そんな感じで、使う画像の加工やらを終えて、ローカル環境ではそこそこ見栄えの良いサイトが完成。あとはアップロードをどうするかだな。

ループの改良と正規化

 さて、楽天トラベルのデータをデータベースに保存したとして、次は他の会社のデータと整合を取ってIDなり何なりをつけなければ使えない。

 データを提供している旅行会社には、日本旅行,JTB,るるぶトラベルなんかがあるのだけれど、提供された情報は会社によって違う。たとえば同じ宿と認識するのに、宿の名前は使えない。どうやって同じと認識するか?

 使えるのは、一般的な情報で宿固有の情報。住所、電話番号、座標あたりだろう。その辺を使ってデータを処理するコードを書く。

 コードはPHPで。サーバでそんなことやったら負荷が上がったり不安定になりそうなので、PCで。ローカル環境でPHPの動く環境を構築してあればずいぶんらくだ。
 コードで、いつもはデータの個数をカウント後にfor~next文でまわす方式を取るのだけれど、今回はforeach文を使ってみた。速度やメモリの面で有利らしいのだけれど、どうなんだろう。

楽天トラベルのデータのデータベース化

 帰ってやりたいことはたくさんあるけど、いざPCに向かうと出来なくなるのはなぜ?なにか、やる気を奪う妖怪的なものとか。だからといってダラダラすると、後悔感がすごい。

 さて、宿の検索サイトの作業を。
 例えば、楽天の全商品のデータベースはHDDの容量があればできる。でもそこから待ち時間のストレスなく検索して表示するのは大変。また、検索条件を楽天に送って、返って来た結果を表示するなら、容量もデータベースも最小で良い。でも、通信の回数や制限に気をつけないと警告が来る。

 そういうわけで、phpでスクリプトを作って、楽天トラベルAPIでデータを検索→検索結果をPCのデータベースに保存という作業で全データをぶっこぬいた。作ったサイトはアクセスも少ないから、そのつどAPIを使えば委員だけれど、なんせ1万ページを超えるページ数なので、同時にアクセスされる可能性は高い。そんなわけで、全データ保存形式にした。
 アクセスには待ち時間を設けているので、数分の時間はかかったけれど、データベースの量もまあOKな量。
 
 あとはこいつをサーバのデータベースにアップロードしてやればOK。

 しかし、長年使っているからという理由でベースは相変わらずNucleusだけど、WPに移行することを考えた方がいいかもな。流用できるものが段違い。作業を減らせる。

ケータイサイト作成の前に

 地図と連動したホテルの予約検索サイトを構築している。
 これの公開にあたって、携帯向けのサイトを作るというのも考えようかと思ってBookOffへ。
 土地柄、あんまりそういう本はなくて何件か周ったけれどそこで見つけたもの。


少し前に出た本だけあって、ちょっと現在の携帯電話の仕様とは違っているようだ。SoftBankは3Gのみに移行したから、今後は新しいバージョンの携帯のみと考えればいいのだろうけど、スマートフォン全盛になったらまたかわるし。

 新しく作った駅から3分の宿検索は、携帯サイトのが向いてるかも。携帯からGPS情報をもらって、近い宿を検索したり。しかしGPSも、各社仕様が少しづつ違う。真面目に作ると大変そう。おいおいだな。


楽天トラベルの情報を調査

 うだるような暑さというがクーラーなしでもかろうじてたえられるような休日のあさ。へやにいるのに汗が尋常じゃない。休みを漫喫?寝てすごしたらだめになるけど、動けない。まずはシャワー浴びるか。
 最近厚い本が増えて積まれ状態だったので、本棚整理。あわせて雑誌やチラシを縛って、部屋の掃除したらぐったり。あとは雑多なものの整理やら。
 しかし、美しく収納されていて、ものが増えても入れるスペースがあって、すべてのものが取り出しやすく・片付けがしやすい状態ってありえるのだろうか。
 
 さて、ちょっとマッシュアップサイト向けの調査をしていて、楽天トラベルの予約可能な宿数を知って愕然。JTBや日本旅行の数倍ある。マージン安いんかな。こいつ中心にサイト作った方が良い気がしてきた。
 そうなると、楽天のサーバに通信でデータを取る必要がある。公開中のサイトの裏でやると負荷がかかるのでローカルに保存するとして、どうスクリプト書けば良いんだろ。でも、じゃらんも同じようにできそうだ。とりあえずブクオフ巡りしてみるか。
 
 ただ楽天は作っても利益低いんだよな。ポイントで売り上げの1%。8000円の宿なら80ポイント。換金コースはそれの75%だ。
 そんな感じで、スクリプトとデータを見直して、表示も更新。検索は日本旅行とるるぶとJTBから。
 駅から3分

Googleへのインデックス増加

 さて、公開してから2週間ほど経つこのサイト、Googleへ60件ほどインデックスされたようだ。
【駅から3分】ネットで予約!駅から最短徒歩3分のホテルや宿の検索サイト

 とはいえ、検索から来る人はほとんどいない現状。そもそも、ページ数が10000以上あって、60件しかインデックスされていないってどうなんだろう。
 まあ、更新がそこそこないサイトや新しいサイトはインデックスされづらいというし、おいおいかな。
 そんな感じで、複数の旅行会社のデータを追加できたので、ホテルごとに一括してみる。各社、ホテル名も微妙に異なるところがあるので、いろいろと正規化の方法を考えたり。

 あともう1つのネタ。サイトを携帯対応にするのはどうするか。悩みどころ。

アフィリエイトでめざせ!月収100万円―あびるやすみつ

 お盆明け、どうも仕事が押していたようでちょっといそがしめ。
 そんな中、ブックオフによれたのでWeb関係の本を1冊購入。

 いわゆる、カリスマアフィリエイターの書かれた本。この本の中でも書いているけれど、基本的に収入中心の話ではなく、自分が興味があって中身のあるWebサイトを作ってそこから収入につなげる話を書いている。

 特にこの人、自分で必要だなと思うサイトを作ってそれを収入に結び付けていったという実績もあるので面白い。

サイトにJTBの緯度経度情報を読み込み

 さて、続いてマッシュアップサイトをいじる。
 現在日本旅行の情報を表示できたとはいえ、他にも何社か表示して比較できるようにしてみたい。というわけで、JTBの情報を表示。

 しかしここで問題が。地図にアイコンを表示する場合、緯度経度情報が必要なのだけれど、どうもJTBは60進数を使っているようだ。GoogleMapsは10進数の情報を使うので、変換してやらねばいけない。
 緯度経度情報は、東京だったり世界だったり、10進数だったり60進数だったりとめんどくさいや。PHPなので、共通のライブラリファイルみたいにしてやれば良いんだろうけど、設計書のようなもの書きながらやってるわけじゃないので、思いついてもやろうと思わないな。

 こういう考え方が良くないか。

| Next»

↑ PAGE TOP