300億円欲しい

メジャーリーグのデータ解析します

GSuiteを使って簡単にコンテストをやろう (学会運営 Advent Calendar 2019)

概要

この記事は、学会運営 Advent Calendar 2019の記事です。

adventar.org

私は、セキュリティのワークショップ Privacy Work Shopの運営に携わりました。
他のメンバの皆さん、ありがとうございました。引き続きどうかよろしくお願いいたします。

その中で、データの匿名加工と再識別の技術を競うコンテスト「PWS Cup」を開催しました。

こんなコンテストです。

pwscup紹介
f:id:gg_hatano:20191225142751p:plain

学会の参加者どうしで交流する一手段として、コンテストはよく行われます。結構盛り上がります。
例えば、データ分析のKDD CUPは有名です。
www.kdd.org

ただ...運営は結構大変です。学会運営にあまりお金は出ませんし、時間もありません。

ルール設計も大変ですが、システム構築も大変です。ちゃんと作らないと、コンテストにならなくて楽しくないです。

今回は、GoogleのGsuiteを利用して、割と簡単にコンテストを実現するシステムについて、紹介します。

PWS Cup とは

こんなコンテストです。

昨年のAdvent Calendarで紹介しました。もしご興味があれば、↓のスライドを見てください!

www.slideshare.net

運営がやること

運営視点で、システムでやることは、

  1. アカウント管理:運営が参加者にコンテスト用アカウントを発行する
  2. データ配布  :運営が参加者のみにデータを配る
  3. データ受付  :参加者が投稿したデータを受け付ける
  4. データ評価  :投稿されたデータを運営が評価する
  5. 結果公開   :評価した結果を参加者に通知する

基本的にはこれだけです...これだけなのですが、ちゃんとやらないと、コンテストが成立しません。

各項目ごとに重要度を付けてみると、↓みたいな感じになりました。

f:id:gg_hatano:20191225153734p:plain
検討事項

アカウント管理。
今回は「セキュリティのワークショップ」のコンテストなので、そこでセキュリティの事故が起きたら面白すぎます。
極力、手で実装したくないです。どんな穴があるのかわからないので...。

データの配布。
参加者だけに渡したいです。特に、今回のコンテストは特別に、参加者毎に渡すデータが異なる、という要件がありました。
アカウント毎に、正しくデータが配布できるような仕組みが必要でした。

投稿データのフォーマットチェックの自動化、は結構重要です。
参加してもらって折角投稿したのに、フォーマットがダメで評価できません...は頻繁にあります。
個別に修正箇所を指摘するのは超絶大変です。

また、データ配布・受付のシステムダウンが起きないことも重要です。
特に締め切り間際に投稿が相次ぎます。投稿データが大量に降ってくるとシステムのパフォーマンスが落ちます。
「システムのせいで投稿できませんでした」はかなり興ざめです。

予算。人件費は出ません。ボランティアベースで参加していますし、実装の工数に費用は出てきません。
可能な限り、ありものを使うのが良さそうです。サービス利用費...としてなら、費用の請求はしやすいと思います。

実現手法

比較します どうやったらできるか。

  • プロの力を借りる:コンテスト運営サービス
    • 〇 kaggleやtopcoderやsignateなど、有名なコンテスト事業者に協力してもらいます。プロの力で、いい感じにやってもらえます。
    • ✕ 予算感が分かりません...学術目的なら安くできたりするかな...?分かりません。(企業案件だと1千万円オーダーという声もあります)
  • 既存のシステムを使う:EvalAI
    • 〇 データ分析の予測モデル構築コンテスト...は、EVALAIというツールを使えば作れそうです
    • ✕ 予測モデル構築コンテストではない場合、システム改修が必要です。これは大変そう。
  • [今回採用] 既存のツールを組み合わせる : Gsuite
    • 〇 ところどころ人力を入れながら、ある程度は自動化します 今回はこの内容を紹介します
    • ✕ 規模が大きくなってくると、人力が無視できません。予算感も合わないかもしれません。
  • 一から全部自分で作る
    • 〇 何かを買う必要はありません。サーバ代くらいです。安く済みます。頑張れば、自分が欲しいものが作れます。
    • ✕ 労力はかかります。労力は抑えたいです...。

EvalAIはかなりいい感じだったのですが、コンテストの仕様と合わなかったので止めました。
↓の記事が参考になります。AWSとかでEvalAIを動かしておしまい、にしたかった。
qiita.com

今回は、Gsuiteを使って、簡単にコンテストシステムを作りました。

理想

こんな感じです。

f:id:gg_hatano:20191225154141p:plain
PWSCUPシステム(理想)

現実

  • Gsuiteでアカウント管理
  • Google driveでデータを配布 (フォルダのアクセス権限をいい感じに設定しておく)
  • Google Form + GAS で投稿時のフォーマットチェック
  • [変更] 運営のローカル環境に投稿データをダウンロードして、評価用スクリプトを回して、結果をgithub pagesで公開

f:id:gg_hatano:20191225154201p:plain
PWSCUPシステム(現実)

GCEからgoogle driveを見に行くのはちょっとアレなので、gcsに移して...とか考えるのが面倒なので、手元にダウンロードしてやりました。
投稿したらすぐに評価して表示したい場合は、いろいろ工夫が必要でしょうけど、今回は数日に1回評価すればよかったので、頑張りませんでした。

実装が必要なものは、

くらいです。簡単ですよね。

費用

  • Gsuite利用料は、1アカウント700円/月くらい
    • 25チームが2か月やって、700 x 25 x 2 = 35,000円くらいでした。

まとめ

コンテストは楽しいです。学会は盛り上がります。
でもシステムは面倒です。お金を多少使って、労力を最小化しましょう。

来年はEvalAI使いたい...

おまけ

  • 会社proxyのせいでGoogle Formが見られません、という参加者が...
    • メールで提出してもらいました。お互い頑張りましょう

参考記事

  • kaggle でコンテストをホストする
    • ↓からkaggleに申し込みができるみたいです。

www.kaggle.com