EEIC2017成績集計ツール「みんなのせいせき」のれきし

この記事は eeic Advent Calendar 2017の9日目の記事です。

qiita.com

はじめに

EEIC内では有名かもしれないのですが、EEIC2017には自分の成績を登録してもらうことで自分の成績の順位などが分かるツールがあります。登録は任意です。

https://eeic-scores.herokuapp.com/ (EEIC2017の人しかログインできません)

ちなみに、このアプリを公開した際にも一応ブログの記事書いています。

elecho.hatenablog.com

それからちょくちょく変更はありますが、あんま変わっていないのでここでは技術的なことのお話はしません。

どちらかというと、仕様の設計とか作成の経緯などの運営上のひとりごと(ポエム)を書いていこうと思います。

デモサイト

昨日がんばってデモ用のサイトを作ったので、記事を読む前に、こちらで適当に遊んでみることを遊んでみても良いかもしれません。

というかこれ以降のの駄文を読むよりもデモアプリで遊んだほうが面白いと思います。(重要)

https://eeic-scores-demo.herokuapp.com/

本家と比べてログイン手法を簡略化しています。機能はほとんど同じです。

つまり、自由に遊べるおもちゃです。

仕様

ひとりごとに入る前に、軽く機能を紹介してみたいと思います。

主な機能

(2017年4月版~)

  • 成績一覧表

f:id:elecho:20171209123425p:plain

  • 自分の成績の情報

f:id:elecho:20171209123455p:plain

  • 科目ごとの評定分布表

f:id:elecho:20171209123542p:plain

(2017年9月版~)

f:id:elecho:20171209124647p:plain

  • 志望研究室情報

f:id:elecho:20171209135952p:plain

モデル図

気が向いたら作ります(小声)

本題

実績

2017/12/09現在、EEIC2017約120人のうち96人に登録していただいています。

普通にとてもうれしいです。

設計思想

個人差はありますが、成績って実は意外とデリケートな情報です。(こんな怖いツール作っておいてなんですが)

しかも、成績を一科目一科目入力するはなかなかしんどい作業です。

一方、「みんなのせいせき」が意味のあるツールになるためには、多くの方にデータを、それもそれも、なるべくちゃんとしたデータを登録してもらわないといけません。

ということで、やったことは

  • 登録するメリットをいっぱい作る

  • データがそれなりにまともなものであるようにする

  • プライバシーに気をつける

の3つです。

登録するメリットをいっぱい作る

これは、ぶっちゃけ簡単で、機能をいっぱいつけて使いやすくすればよさそうです。(幸いライバルもいないし)

ということで、重要そうな機能から順番に追加していきました。

具体的に言うと、

3/24  公開
3/25  GPA計算機能追加
4/2   評定分布表機能追加
4/10  パスワードを忘れた場合の再設定メール機能追加
9/25  3Sセメスターの成績に対応
9/30  総合得点の分布表を追加
11/15  志望研究室登録機能追加

という流れです。なんだかんだ半年かけて欲しい機能は揃ったのでよかったです。

データがそれなりにまともなものであるようにする

これは、ちょっと考えました。

とりあえず重要だと思ったのは、

  • ①外部の人が適当なデータを投げ込めないようにする。

  • ②重複投稿できないようにする

でした。

  • ③偽情報を書き込ませない

というのも考えたのですが、1日の変更回数を制限するとかいうような、いかにも金融系のサイトがやってそうなルールをつけるのも馬鹿らしかったので、ユーザーに任せることにしました。

(でも、データが本当であるとは限らないというのも、高度な情報戦になる一因なんだよね…)

ちなみに、 サービス開始時はベーシック認証によって①を、3Aセメ開始時にSlack OAuth認証によって②を実現しました。

プライバシーに気をつける

これは、結構むずかしい問題です。

とりあえず、一覧表で名前・志望研究室・評定を各要素ごとに非公開に設定できるようにしています。

f:id:elecho:20171209123245p:plain
ハイフン(-)で表示を隠すことができます

ということで、一応普通なら隠したい情報は隠せます。

でも、頑張ってパズルを解くひとがいると困っちゃうので、何卒よろしくお願いします。

考察:このツールは「高度な情報戦(という名の研振り)」にどのような影響を与えるか

このツールによって自分の成績の立ち位置が分かってしまうことについて。

肯定派

行きたい研究室があって

  • 成績が良かった人は、次の学期で科目数や勉強時間を減らしてのんびり暮らせる。

  • ちょっと成績が悪かった人は、次の学期頑張るモチベーションを得ることができる。

  • 成績が結構悪かった人は、早めに自分の志望の方針を考えることができる。

行きたい研究室が決まってない人も

  • 現在の自分の位置を知ることで、後々自分の行ける研究室を絞りやすくなる。

  • 成績が良ければ、思う存分イキることができる。

否定派

行きたい研究室があって

  • 成績が良かった人は、研振りでの優位性を次の学期で奪われないように勉強を迫られる。

  • 成績がちょっと悪かった人は、勉強を迫られる。

  • 成績が結構悪かった人は、周りの成績の良い人を恨みながら研振り制度への殺意を膨らませる。

行きたい研究室が決まってない人も、

  • もし底点が高い研究室に行きたくなった時に行けるように勉強を迫られる。

マクロ的に見ると

  • 点数を気にして行きたい分野を諦めてしまうのは好ましくない。

  • 逆に、点数が良かったからといってあまり興味がないのに人気の高い研究室に行く人が出てしまうかもしれない。

  • それ以前に、情報が本当に正しいかどうか分からない情報をもとに4年生の1年間を決めてしまうおそれがある。

作者の見解

まず、上記の肯定意見・否定意見はいまさっき考えました。

便利そうだからという理由で作っただけです。作っているときは何も考えていません。

でも、せっかく考察したので、作者として少しだけコメントしておきます。

  • みんなのやや正しい情報をみれるので、研究室振り分けの参考情報としては有用なはずです。

  • ただし、週約20コマとることが前提の競争以上に、絶対正しい保証もない情報を信じて行きたい分野を諦めてしまう方がつらいことなので、ちゃんと自分の信念を持ちましょう。

  • とりあえず、現状のつらさの根源は合計点制度とひたすら囚人のジレンマナッシュ均衡にいこうとする今の風潮です。
    (まあ、研振りが有限繰り返しゲームであるのがいけないよね)

  • そして、一番悪いのは行きたい分野に定員がある世界の不条理さです。つらい。

f:id:elecho:20171209173205j:plain

ちなみに、こんな記事を見つけました。

toyokeizai.net

ということで、B2, B3のみんなは研振り競争がんばらないでね!!(牽制)

余談

アプリの誕生

2017年2月…

このサービスを思い立ったのが、2Aセメ後の春休みが始まってしばらくたった時。

つまり、魔の週21コマ授業とその期末が終わって束の間のおやすみを満喫していた時。

「来学期以降もこんな泥沼進みたくない…」

「でも、行きたい研究室も特に決まってないし、とりあえず合計点だけはもっておきたい…」
【注:(おそらく)EEIC2017までは、B4の研究室振り分けが合計点制度で行われる】

「あ、でも早い時期にみんながどれぐらいの成績なのか分かれば力の入れ加減がわかるかも…?」

「どうやってみんなの成績集められるかな…(。´・д・)」

「たぶんみんなこういう情報知りたいだろうし、掲示板っぽいものを作っちゃおう!」

後日

「せっかくRails勉強したしRails使って作ろっと」

「はじめてのRailsアプリだけど、まあみんなの点数を入力してもらって適当に計算するだけだし余裕だよね~」

~2017年3月24日~

ぼく「あれ、成績4月に発表されるんじゃないの!?!?!?!?!?」

(参照)学事暦

f:id:elecho:20171209160055p:plain

ぼく「え、しかも素点開示されないの!?!?!?!?!?」

ぼく「なんか全然できていないけど、とりあえずなにか作らないとやばい!!!!!!」

最初はグダグダだったとさ(完)

あとがき

このツールを自分たちのコミュニティで運用したい方へ

一応ソースコードはここにあります。 https://github.com/elecho1/score_competing_tool

ただ、もしちゃんと運用してみたい方がいたらTwitterなどにリプを投げてください。

コメントアウトとか不要なファイルを消したきれいなバージョンを作ります。(はじめからやれ)

もう少し丁寧にデプロイ手順などを書いたREADMEを作ります。(はじめからやれ)

特に、EEIC2018以降でやってみたい人歓迎です。

(ただ、強い人はこんなクソコードを使うよりちゃんと実装したほうがまともなサイトができるかもしれません)

そもそも下の代から平均点制度になったしそんなに需要がないのかも…(汗