読者です 読者をやめる 読者になる 読者になる

ふるつき

記事と内容がないです

Joken SQL Challenge #1 を開催しました。

 過去、 Joken Marathon Challenge を開催して大失敗したことがありましたが、めげずに、今度は Joken SQL Challenge を開催しました。そのことについて、多少ぽえみーに書いていきたいと思います。

Joken SQL Challenge とはなにか

Joken とは私が所属している情報処理研究会の通称であり、 SQL Challenge はその名の示す通り、SQLに関するコンテストです。今回は、 PostgreSQL 上での SELECT 文の技術を競うコンテストにしました。様々なデータをSELECT文一つで取得するというわけです。

 問題はたとえば、こんな感じで出題されます。これは実際に出題された問題のひとつで、難易度でいえば難問の部類に入ります。

f:id:Furutsuki:20170429133027p:plain

これにたいして、ユーザは次のようなクエリを実行することでこの問題の指示を満たし、問題を解こうとします(図は不正解になるけど)。

f:id:Furutsuki:20170429133258p:plain

 このように、全部で16問が配点とともに用意されており、もっとも点数を稼いだユーザが優勝になります。いわゆる jeopardy というわけです。競技時間はおよそ1時間45分となりました

競技の結果

 はじめに 30 分ほど SQL とは、データベースとは、SQLの文法についてなどを喋ったあとに競技をやってもらいました。

すると、こんな結果になりました。 theoldmoon0602 は私のダミーアカウントなので、全部で 7名の参加ですね。

f:id:Furutsuki:20170429133723p:plain

1位のthrustをはじめ、 Kaburagi、 chige12が4年生、 rinpach は 2年生か3年生、 lafr4nc3 などは 1年生なので、4年生は面目を保ち、一年生は可能性を見せつけたことになります。

 1位が 1000 点を取れたら上々かな、と思っていたのですが、最初に 1000 点を突破したのは lafr4nc3 だったことなど、思いのほか優秀な成績を残してもらい、また楽しんでもらえていたようなのでこちらは成功といえる結果だったと思っています。

 一方で、実際にやってもらうと、作問ミスがあったり、UIのわかりづらさがあったりと運営側の甘さもわかりました。特に tablename.columname という記法を断りなしに導入してしまって混乱を生むことになったのはなかなかに失敗でした。

まあでも楽しんでもらえたし実質成功ですね。

なぜこんなことをやろうと思ったか

 ぽえみーなぶぶんです。

 そもそも私はこういうイベントごとは好きらしいのですが、SQL Challenge のもとになったのは mixi git challenge でした。昔参加させてもらって大変たのしい時間を過ごし「よし、帰ったら joken でもやろう」と思っていたものの結局実現できずにいたところへ、 pixiv spring boot camp でちょろっと聞いた SQL の改善の話があわさってこういうものができました。

 もともとはクエリの改善、高速化をやろうと思っていたのですが、私ごときにはデータベースがつまるほどのデータを用意することができなかったので、いろんなSELECTを書いてもらうコンテストになりました。

 なんだかんだで、いろんなインプットがちゃんとアウトプットに繋がったので個人的にはかなり満足してます。

開催してみてどうだったか

 楽しかったです。企画しだしたのは 4/8 頃のようで、師匠に「こんなのやりたいけどどうだろう?」とお尋ねしていました。今回は師匠は不参加で、オブザーバのような役割を果たしてもらったのですがこれも正解だったと思います。師匠が参加していたら最後の問題以外は瞬殺だったかな。

 それから、自分の技術力もそれなりではというふうに思うことができました。はじめは シャーロック・ホームズの小説などを適当に分割してデータとしていたところを、 pawoo.net から引っ張ってきたデータに切り替えようという決断は自分ならそれができるだろうという目算があってのことでしたし、実際にデータ収集用のクライアントを書き上げてしっかりと準備することができました(勝手にデータを使ってごめんなさい)。

 一方で、作問は苦しいものでした。何度も問題を作り直しています。私もSQL力があるわけではないので調べながらだったりするのですが、ちょうどよい難易度の問題を作るのは難しく、極端に簡単な問題、極端に難しい問題が生産されていきました。そしてコストがかかる。一問作るのに 30分なら良い方で、結局どのくらいの時間を奪われたのかわかっていません。こういうイベントを開催してお金を稼げたら時間が奪われているという感覚ではなくなるのかなぁ。


最後ですが、 JSQL のソースコードPHPですけど、これは github で公開しています。使用したデータは pawoo.net のものなので公開できないので遊んでもらうことができませんが、ご寛恕ください。 github.com