2/10追記:①で、参加者16人の時にすら正常動作していなかったバグを修正し、プログラムの動作を大幅に変更しました。一部のファイル名を変更しました。
自分がオフ会を主催するときに、めんどくさいと思った部分を手抜きできるようにちょっと自動化するツールを作りました。
既に主催慣れしている方には不要かもしれませんが、今後オフ会を主催する方のお役に立てばと思い公開します。
みんなもっとオフ会主催してね! あと3月の大阪オフ参加してね! それからバグを見つけたら遠慮なく連絡してね!
①対戦組み合わせ・説明シート自動生成ツール
②対戦結果処理用スプレッドシート
説明
ある程度パソコンがわかる人向けに簡単に書きます。気が向いたらもうちょっと追記します。Twitterなどで直接聞いてもらえればサポートします。
①対戦組み合わせ・説明シート自動生成ツール
出来るだけ参加者全員が均等に対戦できるような組み合わせを作り、ランダムに割り振ります。
可能な限り4人卓を多く作り、3人卓(CPU入りの4人卓)に入る回数は参加者全員で可能な限り均等にします。
得られた組み合わせをLaTeXの表として出力します。
メリットは、表や説明文のレイアウトをWordなどでいちいち頑張っていじらなくても勝手にキレイな表を作ってくれることです。(Wordガチアンチ)
注意:参加者5人以下、または参加者数が4で割って1余る場合(3人卓が3つになる場合)には非対応で、エラーになります。(処理がめんどくさい主催が抜けて4の倍数人にすることを想定しているため)
また、参加者が25人程度を越えると、最終的に出力されるPDFのレイアウトが崩れ、実用的でなくなります。気が向いたら多人数にも対応します。
0:Python3およびLaTeX(arrayjobxパッケージが必要)が動作・タイプセットできる環境をPCにインストールしておく。main.py、data.csv、ref.py、templete.texを同一フォルダに配置しておく。
1:data.csvをテキストエディタで開き、参加者の名前を行区切りで入力しておく。
2:コマンドラインでmain.pyを実行する。試合数と出力形式(現在CSV形式には非対応)を聞かれるので、半角数字で入力する。(試合数は多く指定しても、1で指定した参加人数に応じて適当に打ち切られるので注意)
3:標準出力に出てくるLaTeXコードをクリップボードにコピーする。ここで組み合わせが抽選、決定されている。
4:templete.texをテキストエディタで開き、当日使用するマップ名・オフ会の名称をソースコード中のコメントで指示された場所に入力しておく。プリアンブルにあります。
(必要であれば他の説明事項も書き換える)
5:3でコピーしたコードを、4のソースコード内のコメントで「表コードここから」「表コードここまで」と書かれた部分にペーストし、templete.texをタイプセットする。PDFが作成されるので、これを印刷して当日持っていく。(作成されたPDFの例を見本.pdfとして同梱しています)
結果
②対戦結果処理用スプレッドシート
各対戦の順位や総魔力を入力すると、あらかじめ設定しておいた順位ごとの獲得ポイントを合計し、総合順位を自動で算出してくれる表計算ツールです。こちらは他の主催の方もよく使ってるかな。
見本では5卓20人・5試合まで対応していますが、適当にセルを挿入したりシートをコピーすればいくらでも拡張できます。
注意:対応人数に制限はありませんが、大規模なオフ会の場合は結果入力が煩雑になるので、ぱんださん作成のAI如水などもっといい選択肢があると思います。
サーバーサイドの知識が不要、天下のGoogle様のサービスなので当日トラブルで動かない可能性がほぼゼロ、(編集権限を他人に与えなければ)悪意のある参加者に結果を書き換えられるリスクが少ない、のはこちらのメリットかなと思います。
1:「総合成績」シートの「参加者」列に、参加者全員の名前を入力しておく。不要な行は削除しておく。
2:各試合の終了時に、「n試合目」シートに各卓の順位と総魔力を入力する。
3:入力するごとに、「総合成績」シートに自動で順位が反映される。
結果