Ruby on Railsでサービスを作ってみたpart4
さて今回も引き続きRuby on Railsでサービスを作ってみたメモを書いていく。前のpartはこちらからどうぞ。(part1、part2、part3)今回で画面の機能、開発周りとしては最後にしたい。
アンケート結果
画面キャプチャ
ヘッダー周り
上部に回答人数や、質問数を一応表示させている。アンケート情報については単にタイトルしか無いのでそれを出しているだけ。回答が増えていくのを時系列に折れ線グラフ化しても面白かったかも知れない。時間軸を指定して、その時点での投票ランキング等も遡れて見れるというのも良いだろう。
回答結果
質問のタイプによって右側の結果表示が異なる。単数選択の場合は円グラフ、複数選択の場合は棒グラフ、フリーフォーマットの場合は単なるリスト、日程調整なら横の積み上げ棒グラフ+表とした。
どうでも良いが、やろうと思えば「ボケて」みたいなことも出来るのではと思った。適当な画像を入れて質問にボケを入れる。選択しは☆の数とする感じだ。ということでボケての殿堂入りからネタを拝借して作ってみた。
うーん。やっぱり画像の下にボケが無いとわかりづらくてダメだった。
レスポンシブ
もちろんスマフォでも見やすくするために画面サイズによって横並びではなく縦にスタックされるようにしている。
実装について
そんなに真新しいことはなく、今まで紹介してきた感じで作成している。画像はsmall_lightのサイズ指定、テンプレートはenumによるpartial化。書いていて今思ったがここでgonのwatchを使えば開いておくだけでリアルタイムにグラフを更新することが出来そうだ。まあ、そんなに勢い良く更新される想定でもないのであまり意味がある機能かは分からないが。
Highchartsも普通に使っているだけなので、特に面白いことも無い。強いて言えば回答結果は同じanswersテーブルに格納しているので、データはJSONをカラムに入れる形を取っている。JSONをカラムに入れると、様々なデータを保持することが出来便利なのだが、DBで検索が出来なくなる等の弊害もある。今回は使わなかったがモデルのカラムにJSONが入っているパターンのvalidateを使っても良かったかもしれない。ただ、JSONの中にはシステムで作っているのと、ちょっとデータパターンが色々違うのであまりやるメリットがあるかどうかは疑問。
まとめ
Railsにはbefore_action、Strong Parameters、ルーティング、ルーティングのパスによる指定等DRYの原則を順守したり、変更時に変更箇所を最小限にすることや、変更するにしても場所をわかりやすく出来るようになっている。もちろんこの当たりは知っていないと出来ないことだったりするので、この辺の情報をきちんと把握することがRails開発での生産性に大きく影響するのだろう。Ruby開発という意味ではもちろん有用なgemを知っていることも大きく影響するのは間違いないが。
次回について
さて、画面、機能周りが終わったので次は開発環境周りの事を書いていこうと思う。