GSuiteを使って簡単にコンテストをやろう (学会運営 Advent Calendar 2019)
概要
この記事は、学会運営 Advent Calendar 2019の記事です。
私は、セキュリティのワークショップ Privacy Work Shopの運営に携わりました。
他のメンバの皆さん、ありがとうございました。引き続きどうかよろしくお願いいたします。
その中で、データの匿名加工と再識別の技術を競うコンテスト「PWS Cup」を開催しました。
こんなコンテストです。
学会の参加者どうしで交流する一手段として、コンテストはよく行われます。結構盛り上がります。
例えば、データ分析のKDD CUPは有名です。
www.kdd.org
ただ...運営は結構大変です。学会運営にあまりお金は出ませんし、時間もありません。
ルール設計も大変ですが、システム構築も大変です。ちゃんと作らないと、コンテストにならなくて楽しくないです。
今回は、GoogleのGsuiteを利用して、割と簡単にコンテストを実現するシステムについて、紹介します。
運営がやること
運営視点で、システムでやることは、
- アカウント管理:運営が参加者にコンテスト用アカウントを発行する
- データ配布 :運営が参加者のみにデータを配る
- データ受付 :参加者が投稿したデータを受け付ける
- データ評価 :投稿されたデータを運営が評価する
- 結果公開 :評価した結果を参加者に通知する
基本的にはこれだけです...これだけなのですが、ちゃんとやらないと、コンテストが成立しません。
各項目ごとに重要度を付けてみると、↓みたいな感じになりました。
アカウント管理。
今回は「セキュリティのワークショップ」のコンテストなので、そこでセキュリティの事故が起きたら面白すぎます。
極力、手で実装したくないです。どんな穴があるのかわからないので...。
データの配布。
参加者だけに渡したいです。特に、今回のコンテストは特別に、参加者毎に渡すデータが異なる、という要件がありました。
アカウント毎に、正しくデータが配布できるような仕組みが必要でした。
投稿データのフォーマットチェックの自動化、は結構重要です。
参加してもらって折角投稿したのに、フォーマットがダメで評価できません...は頻繁にあります。
個別に修正箇所を指摘するのは超絶大変です。
また、データ配布・受付のシステムダウンが起きないことも重要です。
特に締め切り間際に投稿が相次ぎます。投稿データが大量に降ってくるとシステムのパフォーマンスが落ちます。
「システムのせいで投稿できませんでした」はかなり興ざめです。
予算。人件費は出ません。ボランティアベースで参加していますし、実装の工数に費用は出てきません。
可能な限り、ありものを使うのが良さそうです。サービス利用費...としてなら、費用の請求はしやすいと思います。
実現手法
比較します どうやったらできるか。
- プロの力を借りる:コンテスト運営サービス
- 〇 kaggleやtopcoderやsignateなど、有名なコンテスト事業者に協力してもらいます。プロの力で、いい感じにやってもらえます。
- ✕ 予算感が分かりません...学術目的なら安くできたりするかな...?分かりません。(企業案件だと1千万円オーダーという声もあります)
- 既存のシステムを使う:EvalAI
- 〇 データ分析の予測モデル構築コンテスト...は、EVALAIというツールを使えば作れそうです
- ✕ 予測モデル構築コンテストではない場合、システム改修が必要です。これは大変そう。
- [今回採用] 既存のツールを組み合わせる : Gsuite
- 〇 ところどころ人力を入れながら、ある程度は自動化します 今回はこの内容を紹介します
- ✕ 規模が大きくなってくると、人力が無視できません。予算感も合わないかもしれません。
- 一から全部自分で作る
- 〇 何かを買う必要はありません。サーバ代くらいです。安く済みます。頑張れば、自分が欲しいものが作れます。
- ✕ 労力はかかります。労力は抑えたいです...。
EvalAIはかなりいい感じだったのですが、コンテストの仕様と合わなかったので止めました。
↓の記事が参考になります。AWSとかでEvalAIを動かしておしまい、にしたかった。
qiita.com
今回は、Gsuiteを使って、簡単にコンテストシステムを作りました。
理想
こんな感じです。
- Gsuiteでアカウント管理
- Google driveでデータを配布 (フォルダのアクセス権限をいい感じに設定しておく)
- Google Form + GAS で投稿時のフォーマットチェック
- GCEで評価して、結果をgithubにデプロイしてgithub-pagesで公開
現実
- Gsuiteでアカウント管理
- Google driveでデータを配布 (フォルダのアクセス権限をいい感じに設定しておく)
- Google Form + GAS で投稿時のフォーマットチェック
- [変更] 運営のローカル環境に投稿データをダウンロードして、評価用スクリプトを回して、結果をgithub pagesで公開
GCEからgoogle driveを見に行くのはちょっとアレなので、gcsに移して...とか考えるのが面倒なので、手元にダウンロードしてやりました。
投稿したらすぐに評価して表示したい場合は、いろいろ工夫が必要でしょうけど、今回は数日に1回評価すればよかったので、頑張りませんでした。
実装が必要なものは、
- google form のフォーマットチェック部分のGAS
- フォーマットエラーだったら、投稿者に通知する、という仕組みもGASなら簡単です。
- 投稿データの評価用スクリプト
くらいです。簡単ですよね。
費用
- Gsuite利用料は、1アカウント700円/月くらい
- 25チームが2か月やって、700 x 25 x 2 = 35,000円くらいでした。
まとめ
コンテストは楽しいです。学会は盛り上がります。
でもシステムは面倒です。お金を多少使って、労力を最小化しましょう。
来年はEvalAI使いたい...
おまけ
- 会社proxyのせいでGoogle Formが見られません、という参加者が...
- メールで提出してもらいました。お互い頑張りましょう