GET BACK TO MY SITE AGAIN
毎日ユーザーから上がってくる様々な感想を読んで楽しんでいた筆者ですが,一つ気がかりなことがありました。ひと通りサイト内のコンテンツを堪能したユーザーは,そのまま二度と見に来なくなってしまうのではないか,と不安を覚えたのです。そこで新規ユーザーだけでなく,一定数のリピータを獲得しておく必要があると考え,どうすればよいのかを検討し始めました。
しばらくして,今のRetroTubeのシステムでは,毎週バッチ処理を稼働させて検索結果を更新していたことを思い出しました。この“更新”は使えそうです。ちまたのサイトでは,よくトップページに「新着情報」を表示させています。RetroTubeも同様にして,トップページに新着動画の情報を載せることができないかを検討してみました。
プログラムの処理としては,前回検索処理を実行した結果と,今回実行した結果を比較して,その差分を新着情報として一覧表示させればうまくいきそうです。
一括検索処理のあとで,前回との比較処理を行うプログラムを作成し,差分をcsvファイルで出力させることで簡単に対応できました(リスト1)。ついでに新着情報について,RSSで配信するようにファイルを出力させます。
#####################################
#【RetroTube】新着情報出力プログラム
#####################################
require "kconv"
require "fastercsv"
#前回検索時の結果を退避(newdataフォルダからolddataフォルダへ)
File.rename("newdata/compare.csv","olddata/compare.old.csv")
File.rename("newdata/rss.rdf","olddata/rss.old.rdf")
#前回検索結果と今回検索結果を比較し,
#差分を新着情報として出力(邦楽)
compareout = open("newdata/compare.csv",'w')
$olddata = Array.new
FasterCSV.foreach("olddata/music.old.csv") { |line|
$olddata.push(line)
}
FasterCSV.foreach("newdata/music.csv") { |line|
$hitsw = 0
$olddata.each { |oldline|
if oldline[1] == line[1] &&
oldline[2] == line[2]
$hitsw = 1
break
end
}
if $hitsw == 0
compareout.puts line[0] + ',' + line[1] + ',' +
line[2] + ',' + line[3] + ',' +
line[4] + ',' + line[5] + ',music'
end
}
|
リスト1●新着動画を表示するようにした |
トップページを表示するときに,先ほどのcsvファイルを読み込んで新着情報を表示させるように修正します。トップページは最終的に図2のようになりました。「懐かし動画」なのに「新着動画」と呼ぶのは少し奇妙な感じがしますが,これで毎週,どんな動画が新たに検索結果に追加されたのかが一目でわかります。