title-logo

審判の雷 Lightning Picker

December 09, 2014

この記事は「よちよち.rb Advent Calendar 2014」9日目の記事です。

昨日の記事はトミーこと ta1kt0me さんによる「Rspec3のexpectとallowの違い」でした。Rspec3 の expectallow の違いを説明しながら、読むと「スタブ」と「モック」の違いを理解できる内容になっています。掲載してあるサンプルコードは長くないものですが、似ているけど微妙に細部が異なっているようなコードが多く、注意深く読んで内容を掴まないと混乱するので丁寧に読みましょう!ちなみに私は Rspec をほとんど使ったことがないのでとても勉強になりました。

さて、今日の記事は「審判の雷 Lightning Picker」です。意味わかんないですよね。はい、自分でもよくわかりません。これは、ADVENTAR 上でアドベントカレンダーに登録するときに適当につけちゃったタイトルです。いつもこういうの「細かいことは後で考えよーっと」と適当にノリでやっちゃって後悔することが多いです。今度の LT のタイトルもそうです。申し込むときにそのときの気分でつけちゃったので、どういう内容にするかとても頭を悩ませています…そう、LT。今度 LT があります。

12/20 に「よちよち.rb 第50回 みんなで LT デビューしよう会」が開催されます!

Lightning Talk

LT とは Lightning Talk の略で、その内容については、ゆかおさんがココにわかりやすくまとめてくれています。

私にとっては、これが人生初の LT で、まさに「みんなで LT デビューしよう会」の名に違わぬものになっています。そこで気になるのが発表の順番です。初めての LT なので、トップバッターになるのは怖いな…、あ、でも最初に発表した方がリラックスして他の人のを聞けていいかも…となるとやはり、真ん中あたりがベストなのだろうか…とか色々考えてしまいます。これは主催する人にとっても、発表順をどうするか、ということは結構頭を悩ませる問題だったりするのではないでしょうか。そして結局、「よし、公平にくじ引きで順番をきめよう!」となることも多いかもしれません。(今回の LT でどのように順番決めをするのかは全然知らないので、このお話はあくまでもフィクションです。)

そこで、LT 発表くじ引きサービスの Lightning Picker というものを作りました。

Lightning Picker

http://lightning-picker.nilsteps.com/

2014-12-09-judgement-thunder-lightning-picker-1.png

使いかたはとても簡単です。この画面のように対象者をまず登録しておいて、くじ引きボタンを押すことでその中から1名がランダムに選ばれます。

2014-12-09-judgement-thunder-lightning-picker-2.png

選ばれた人はリストから削除されるので同じ人が複数回選ばれることはありません。

Powered by Volt

とまあ、ごく単純なものなんですが、Lightning Picker についてちょっとアピールしときたいポイントがあります。このアプリケーションは Volt を使って開発しました。Volt というのはフロントエンドも Ruby で書ける Web アプリケーションフレームワークで、このブログでもこないだ記事を書いたので、興味があればぜひ読んでみてほしいです。

Volt は WebSocket を使って、フロントエンドの DOM とバックエンドのモデルをリアルタイムに結びつけています。つまり、たとえば誰かが自分のクライアント上で対象者の登録を行なった場合、他の接続中の人のクライアント上でも即座にその操作が反映されます。試してみたければ、別のブラウザやスマホなど別の端末から同時に接続して操作してみれば、すぐにその結果を見ることができるでしょう。このリアルタイム性を利用して、くじ引きを行うその場で、対象者に各自それぞれ自分を登録してもらって、実際にくじ引きをするのはスクリーンに写した端末から、とかの利用を想定しています。が、現状では誰でもどこからでも操作できてしまうので、実際に使うにはちょっとイマイチですね。

次回の「よちよち.rb Advent Calendar 2014」は、waterlow さんの「私のよちよち.rb活用法」 (の予定ですが明日誰か書いてくれたら変わるかも) です!お楽しみに!