本日、葱ベストエロゲ2013を公開したので、どのような仕掛けで集計していたのかを公開してみる。
概要図
解説
1)ゲームリスト
表示や集計の元となるデータは、ErogameScapeから取得しています。このパートは、erogmap時代のものをそのまま今も動かし続けていて、日次で自動処理しています。
ErogameScapeではgamelistとbrandlistは別々のテーブルになっていますが、後処理の容易さと性能を考えて、正規化を外して1テーブルにしています。
2)葱板からのデータ取得
普段からrep2を使っているので、そのデータフォルダに格納されるdatファイルをそのまま使う、という方法をとっています。
3)投票結果DBの作成
ここが肝になるわけですが、ここは管理者用にオンライン画面から投票結果をメンテできるようなプログラムを仕込んでいます。
datファイルから投票データを読んで、機械処理にてどのゲームに何のポイントが設定されるかを初期提案するような仕掛けを作っています。勿論、表記揺れ等で2割くらいはうまく解析出来ないので、目視で確認して、手作業で修正等を実施する必要があります。どこまで作り込んで、どこから手作業にするか、というところのバランスを取るのが難しいところです。
4)コメントデータの反映
コメントデータを投票結果DBに反映するのは、3とは別のプログラムで実施しています。3と統合することは不可能では無いのですが、重くなるので敢えて別にしています。
また、こっちはほぼほぼ自動で処理出来るので、オンラインでのメンテ画面を用意してはいません。
5)手動メンテ
コメントが2レスに渡って自動ではデータが作り込めなかったり、想定外のデータが出来たり、というケースもあるので最後はデータベースを直接修正する、という作業が発生します。
そこでphpMyAdminを使って直接修正しています。
集計結果表示 bestgame2013.php
投票結果がDBにきちんと格納されれば、あとは集計して表示するのみ。これが外から見える唯一のプログラムになります。
まとめ
こうやって書き出してみると、結構複雑に見えるかもしれませんが、一つ一つの処理を見ればそんなに難しいことはしていなかったりします。
おいおい実例として出していこうかと思いますのでよろしくお願いします。