2009年09月20日

関連キーワードを表示するようにしました

 「アイフル 倒産」で盛り上がった今週末。これまでにも「春日電機 倒産」がアクセスを集めたりしていましたが、こうなってくると次の倒産が気になります。そこで、これまでに「倒産」とともにどんな企業が検索されていたかがわかるようにしてみました(別に倒産だけに限った話ではありませんが)。

 仕様としては、スペースで区切られていない一つのキーワードで検索されたときに、そのキーワードを含む検索キーワードを表示するようにしてみました(表示は過去の検索回数が多い順に最大10件まで)。

 これまでもはてなや Yahoo! の API を利用して関連キーワードの表示を行ってきましたが、それらとはまたひと味違ったキーワードが表示されますので、試してみてください。

 で、当サイトで「倒産」とともに検索されている企業ですが、「ダヴィンチホールディングス」「青山メインランド」など不動産業が多いようです。どうなるのでしょう…。

posted by まいける at 23:20 | Comment(0) | TrackBack(0) | 機能追加

2008年12月08日

docomoの仕様に頭を抱える

 おかげさまで PC 版と同じくらいのアクセスをいただいている Trend Antenna のモバイル版ですが、悩ましかったのはアクセス解析。携帯の場合、JavaScript が使えないので、PC 版で使っている Google Analytics は使えません。いくつか公開されているモバイル用のアクセス解析スクリプトを眺めてみましたが、しっくりきません。仕方がないので、自分で作ることにしたのですが、これが意外に面倒だったのです。

 一番悩ましかったのは、docomo の仕様。携帯の場合、cookie も使えないことが多いので、同一ユーザーからのアクセスであることを識別するには、セッションを URL に埋め込むか、端末識別番号を取得することになります。セッションを URL に埋め込む方法は、セキュリティ的にどうかと思ったので、端末識別番号を利用する方法を採用することにしました。
 幸い、端末識別番号の取得自体は、PEAR の Net_UserAgent_Mobile を使えば、

require_once 'Net/UserAgent/Mobile.php';

$agent = &Net_UserAgent_Mobile::factory();
$uid = $agent->getUID();
で取得できるのですが、docomo の場合、URL に guid=ON を埋め込んでおかないと端末識別番号(docomo の場合はiモードID)が取得できません。おまけに、mod_rewrite で URL の書き換えは NG。つまり、
RewriteRule ^m/archive/(.+).html$ m/index.php?guid=ON&keyword=$1 [L]
では、取得できないのです。このため、モバイル版では、URL の書き換えをせずに、引数をつけたそのままの形で記述しています(これに伴う問題が別のところで発生したのですが、それはまた別の機会に)。このほかに、フォームで投げるときにも注意すべき点があるのですが、このあたりの詳細については、Tech [Friday] プロモバイルエンジニアブログさんの記事によくまとまっています。

 docomo は、リファラは返さないし、アクセスのたびごとに IPアドレスは変わるしで、アクセス解析を行ううえでは、非常に困った仕様です。iモード開始時にはインターネットへの接続を想定していなかったのでしょうし、セッションが終わるまで一つの端末がIPアドレスを固定で持ってしまうとネットワークを有効活用できないという事情はあるのだと思うのですが、モバイルサイトを作るうえで、docomo なかりせば、と思うことが多いのも事実です(外部スタイルシートも使えないですしね)。

posted by まいける at 23:10 | Comment(0) | TrackBack(0) | 機能追加

2008年11月20日

モバイル版始めました

 ふと思い立って、モバイル版を作ってみました。携帯電話からTrend Antennaにアクセスしていただくと表示されると思います。

 モバイル版ということで、表示内容は絞ってありますが、PC版にはない動画検索の機能を追加しました。移動中の時間つぶしに使っていただければ幸いです。

posted by まいける at 23:24 | Comment(0) | TrackBack(0) | 機能追加

2008年11月03日

関連商品情報を変更しました

 キーワード検索した際にサイドに表示される関連商品情報を変更しました。これまで Amazon と楽天を併用していましたが、楽天のみに変更するとともに、評価の件数と平均点を表示するようにしました。アフィリエイトの点で Amazon のクリックの有効期間が1日と短いのに対して、楽天が1か月あるというのが変更の大きな理由ではあるのですが、API の使い勝手が楽天のほうがよいというのも変更の理由です(Amazon は、商品写真がきれいというメリットがあるので、個別商品の紹介では引き続き使用しています)。

 Amazon の API(AWS)は、きっちり作り込めばできることは多いのですが、出力される内容が細分化されているため、若干敷居が高い気がします(ドキュメントも英語ですしね)。それに比べると、楽天はカスタマイズの点では不十分なところもありますが、扱いやすいと思います。

 使い方としては、リクエスト用のURLを

$developerId  = '(ディベロッパーID)';
$affiliateId  = '(アフィリエイトID)';
$operation    = 'ItemSearch';
$keyword      = rawurlencode('(検索したいキーワード)');
$version      = '2008-09-01';
$hits         = 10;
$page         = 1;
$sort         = rawurlencode('-reviewCount');
$availability = 1;
$field        = 0;
$imageFlag    = 1;
$request_url = "http://api.rakuten.co.jp/rws/1.12/rest?developerId={$developerId}&affiliateId={$affiliateId}&operation={$operation}&keyword={$keyword}&version={$version}&hits={$hits}&page={$page}&sort={$sort}&availability={$availability}&field={$field}&imageFlag={$imageFlag}";
みたいな感じで作ったら、
$xml = file_get_contents($request_url);
require_once 'XML/Unserializer.php';

$options = array(
    "parseAttributes" => true
);
$unserializer =& new XML_Unserializer( $options );
$unserializer->unserialize( $xml, FALSE );
$res = $unserializer->getUnserializedData();
のようにすれば、結果を配列に入れることができます。あとは、ドキュメントと結果の配列を見比べながら、必要なデータを抽出すればOKです(例ではキーワードに関連する、画像があり、入手可能な商品を評価数の多い方から10件取得しています)。

posted by まいける at 11:58 | Comment(0) | TrackBack(0) | 機能追加

2008年10月31日

イメージ検索を追加しました

 ずいぶん久しぶりの投稿になってしまいました(気になるキーワードのほうはけっこう頻繁に更新してますので、興味のある方はぜひ)。

 で、本題ですが、Trend Antenna に関連イメージを表示するようにしました。これは、Google AJAX Search APIを利用して作成したもので、関連する画像を検索して表示しています。画像が表示されることで、画面が少しにぎやかになったと思います。

 具体的な実装方法ですが、私の場合は、JavaScript を利用しない方法でこの API を利用しています。詳しくは、ディベロッパーズガイドクラスリファレンスの該当箇所を読んでもらいたいのですが、PHP の場合は、

$json = file_get_contents($googleSearchURL);
$resAry = json_decode($json, TRUE);
で、取得した JSON オブジェクトを配列に入れることができますので、後は煮るなり焼くなり(笑)。

posted by まいける at 18:28 | Comment(0) | TrackBack(0) | 機能追加