Ruby
JavaScript
Rails
HTML5
CSS3

Railsでアンケートの再発明みたいなレーティングアプリ

スクリーンショット 2017-11-15 15.06.17.png

冒頭

オリジナルアプリをherokuではじめて公開したので、備忘録やメモ、頭の整理も兼ねて投稿。Ruby on Railsで作った、レーティングアプリケーションです。

あるものに対する、人の”考え”や”直感”を知ろうと思ったら、今はアンケートぐらいしか方法がないわけですが、その辺を何とか変えたいと考えて作りました。(全部説明すると長くなるので、別途ブログとかにまとめようと思います)

アンケートといっても結局人気投票だったりするわけですし、他にも証明しにくい”風潮”や”雰囲気”などに何か根拠を示せれば良いんじゃないかとか、色々と考えています。

Liibra ~Simply & Satisfactory Rating Application~
http://liibra.herokuapp.com/

スクリーンショット 2017-11-12 18.04.24.png

概要

イメージとしては、映画「ソーシャルネットワーク」でザッカーバーグ氏が大学でいたずらで作っていた『Hot or Not(女の子格付けサイト)』が近いです。

スクリーンショット 2017-11-12 16.56.25.png

レーティングしたい集団(プロトタイプでは、「都道府県」と「歴代アメリカ大統領」のジャンルを用意)から、ランダムで2つの対象(県・大統領)が表示されます。テーマに沿って、その2つのどちらが良いかをユーザーに選んでもらいます。それを繰り返す。これだけです。

対象にはそれぞれレーティングのための点数が付けられていて、選び方によって点数を再計算します。

また、各ジャンル内でユーザーが好きにテーマを作ることができます。 例えば「住みたい都道府県は?」とか「お気に入りの大統領を教えて!」のような感じです。

大勢の人の意見を取り入れることができれば、今までアンケートやイメージで何となく語っていたものを、数値化してあげることで、Liibraの結果を参考にして意思決定に使うことも考えられます。(ランキングをcsvでダウンロードすることも可能です)

技術的背景

Liibraの技術で、重要な点は3つです。

①スクレイピング
「都道府県」や「歴代アメリカ大統領」などのジャンルを作る際、スクレイピングを用いています。nokogiriやMechanizeを使って引っ張ってきました。
Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

②レーティング計算式
得点をどのように計算するかはLiibraのキモです。チェスの大会やMLBの殿堂入り選手を評価する計算アルゴリズムを参考にし、評価インフレにも対応しています。
Elo Rating
https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%AD%E3%83%AC%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0

③DB設計
普通のことですが得点の変更やランキングへの反映など、頻繁にDBにアクセスするため、テーブル設計には気を使いました。レーティング対象と得点を別テーブルで作成し、場面によって必要なものだけを呼び出すようにしています。
railsで多対多のアソシエーションの作り方と、出来ること

今後の展望

①スマホアプリの開発
レーティングを行う回数を増やしたいので、スマホアプリ開発は必須かと

②R言語による統計解析
Rは絶賛勉強中なんですが、せっかくデータを扱うんですから、何らかの統計処理を行おうかと考えています。
RとRubyによるデータ解析入門

③ソーシャル機能の強化
ユーザのフォローとかいいね機能を追加して、ユーザーのアクティビティを増やしたい。

最後に

サービスを作るに当たり、他の方のQiita投稿をたくさん参考にさせて頂きました。感謝いたします。
また、サービスを使ってみて、おかしいところや改善点などがあれば、ぜひツッコミをお待ちしています。