TTPC2015の運営

この記事はCompetitive Programming (その2) Advent Calendar 2015の$8$日目の記事です.

TTPC2015がどのように運営されていたかを書いていこうと思います.

メンバー

メンバーは以下の通りです

  • camypaper
  • tokoharu
  • piroz
  • shimomire
  • yosupo

体制

問題$1$つに$2$人,基本的には原案者と誰かもう$1$人がテスターにつくという形でやりました.

それぞれの問題には以下のようなものが用意されました(例外あり).

  • 問題文
  • 入力生成器(テストケースを出力するプログラム)
  • 入力検証器(テストケースが制約に沿っているかどうか判定するプログラム)
  • 出力検証器(出力された答えが正解かどうか判定するプログラム)
  • 想定解
  • 別解
  • 愚直解(あるいは嘘解法)

入力生成器や,検証器は主にtestlibが用いられました.

問題のテストはrimeからやろうという話になっていましたが最終的に以下のような体制になりました.

  • rime: tokoharu, piroz, shimomire
  • SOJ: yosupo
  • spica: camypaper

こういう体制になると,他の人がテストしたりしづらいのでやめましょう.

オンサイトイベント

Google社の泉さんにお願いしたところ快く引き受けていただけました.本当にありがとうございます.初めてのイベント運営ということもあり不手際が多かったかもしれません.以下のことはしっかりチェックしましょう.

  • 席はどれくらいか?
  • WiFiは使用可能か?
  • タップは足りているか?
  • 参加者はどこに集合させるか,どうやって会場まで誘導するか?
  • 飲食物やおかしはどうするか?
  • 会場側の制約で何か特殊なものはあるか?

活用したサービス

TTPC2015の運営において,基本的に活用されたのは以下のサービスです

  • Slack
  • Bitbucket
  • Google スプレッドシート

Slack

いわゆるチャットツールですが,TTPCは基本的に全てSlack上で進んでいたと言っても過言ではありません.以下のようなチャンネルが主に活用されました.

  • 全体連絡(#general)
  • 問題についての議論とか(#mondai_an,#easy_problem,その他各問題チャンネル)
  • 雑談(#random)
  • 会議(#日付-meeting)
  • 日程調整(#nittei-chousei)
  • Bitbucketとの連携(#progress)
  • clarの処理や,コンテストの実況(#clar,#jikkyo)

基本的な使用方法は,

  • あとで閲覧したい情報(重要な情報,問題概要とか)はpinする
  • 全体に伝えたいことは#generalに書く.
  • 問題案は#mondai_anに投げてとりあえずpinする
  • 簡単な問題は#easy_problemに投げる(難しい問題ばかり集まったので必要になった)

の$4$つです.これを繰り返して,問題案を集めてワイワイするイメージです.棄却されたものを含めると計$32$問ぐらい問題案はあったようです.

ある程度進んできたら全員でオンライン会議をするというのを繰り返していたのですがその日程調整には#nittei-chouseiが用いられました.使い方は空いている日かダメな日を適当に書き込むだけのガバガバさでしたが,人数が少なかったのでなんとかなりました.

Bitbucket

ソースコードホスティングサービスです.以下のように使われました.

  • ソースコードの共有
  • 解説スライドやデータセットの公開
  • Slackと連携してコミット時に通知

git力がなさすぎてブランチを切ったりは全然しませんでした.

通知機能は誰がいまどのくらい仕事をしているのか分かるのでとても便利でした.

Google スプレッドシート

表です.以下のように使われました.

  • 問題の難易度,ジャンルとかの一覧表の作成
  • 進捗チェックシート

いまどんなジャンルや難易度の問題が集まっているか$1$目でまるわかりだったので便利でした.チェックシートもどこまでできているかがわかるので便利でした.

所感

僕の思ったことです.当てはまらないところも多いかもしれません

  • 少人数で進める場合,$1$人あたりの担当範囲が広いので全体の様子が分からないということはまずなさそう
  • 問題案は集めまくって損することはないのでどんどん溜めたほうがよい.
  • C++以外の言語も書ける人がいると,他の言語だとどのくらいの時間がかかるのかも分かって便利
  • 問題のテストとかはサーバに投げたらいい感じにやってくれるみたいなのがあるととても便利そう
  • 直前でいろいろやろうとすると,体調不良になったりするので$1$日前にはやることがなくなっているようにすべき
  • 個々人で使うツール(例えば問題のテストツール)が違うのは本当にダメ
  • 誰か$1$人はものぐさでなく,外部とちゃんと連絡を取ったり会議の調整とか進捗を煽ったりできる人間がいるとよい

明日はnullさんの記事です.お楽しみに.