開催予告ブログはこれです。
数理・計算科学系2年 noya2です。
traPではアルゴリズム班に所属していて、「作問部」の部長をしています。
作問ハッカソン2023 を開催しました
アルゴリズム班作問部のイベントとして、「作問ハッカソン2023」を開催しました。イベントには運営陣含め20人程度が参加し、合計16問の問題が出来上がりました。さらに、yukicoder というコンテストサイトをお借りして、3時間のコンテスト(traP作問ハッカソンコンテスト001)を開催させていただきました。150人を超える一般の方々にご参加いただき、全ての問題を少なくとも1人に正解してもらうことができました。ありがとうございます。
作問ハッカソンでは参加者に競技プログラミングの問題をイチから作ってもらいます。問題を思いついてから完成まで持っていくのはかなり大変で、初めて作問をするような人が自力で完遂するのはハードルが高いです。そこで、そのような人であっても経験者と一緒に作業をして、なるべく最後まで完成させることができるようなイベントを計画しました。時間的な制約で運営陣が参加者と連携を取らずに修正を加えることもありましたが、結果的にはほぼ全ての作業を参加者と協力して達成することができました。
少し、運営目線から、今回のイベントについての感想を書きます。
イベント当日まで
資料作成のこと
イベントは一日かけて行われますが、午前は私による講義形式で実際にどんな作業をすることになるのかを実演してみせるパート、午後はそれを参考に実際に作問作業を進めてもらうパートになっていました。午後の作業パートを参加者がなるべく自力で進めていけるように、チートシートを作っておこう、ということで、資料作成に時間を使っていました。かなりの作業が初心者にとっては初めてするような作業で、戸惑うこともあろうかと思い、コードの雛形やうまくいったときの画面の遷移などもなるべく詳細に記述することを心がけました。最終的な資料は15000文字超えと分量がかなり多くなってしまいましたが、役に立つでしょうか、不安でした。
コンテスト開催日のこと
せっかく作った問題を誰にも解いてもらえないというのは味気ないですよね。できるなら問題を集めてコンテストを開き、みんなで順位表観戦をできるなら対面でしたいものです。そこで yukicoder さんにコンテストを開かせてくれないかという連絡を入れました。予定は空いているので可能だということでした。しかし、後日、そのコンテスト予定日に別のイベントのコンテストがyukicoder上で開かれることがわかりました。あちらの運営陣はまだyukicoderに開催の連絡を入れていなかったのです。私たちの予約の方が先だったので、無理を言えばあちらが引くことになったかもしれません。しかし、あちらはオンサイトイベント(一般の方も交えた対面イベント)を計画しており、すでに告知もされていて参加者も集まり、会場も予約されているようでした。仕方がないのでその日はあちらに譲ることにしました。私たちのコンテストはその約一週間後に行うことにしました。対面での順位表観戦は叶わないですが、いつもyukicoderでコンテストが行われている曜日と時間帯にして、多くの人に参加してもらおうという狙いです。
ちなみに、はじめは1日で運営陣によるtest-run(問題に不備がないかをチェックし、実際に問題を解く作業)を行う予定でした。終わってみればあまりにも無謀だったと思えます。コンテスト日が変更になったのは結果的に良かったと思います。おかげで1週間程度のチェック期間を設けることができました。
Wi-Fiのこと
また、イベント当日はちょうど大学のWi-Fiが点検で使えないということで、これは日程を決める段階で把握しておくべきことでした。そのことが発覚した時も、ポケットWi-Fiを借りることで対応可能と判断して日程の振替を行いませんでした。これは悲惨Flagです。大学の期末試験が終わって人々が帰省したり他の予定が乱立したりすればイベント参加人数も稼げないだろうと思い、既に10人以上に参加していただけることになっていたこともあり、日程の振替はほぼ選択肢になかったのです。
そうは言っても、ポケットWi-Fiを借りることができればいいわけです。最近はそのような需要も復活してきており、さまざまなサイトでポケットWi-Fiを借りることができるようです。1日しか借りませんが、同時接続可能台数や容量、速度などを考え、合計4000円程度のものを用意することにしました。予約をし、当日の午前中に配達されるのを待ちます。私は社会を信用していたので、午前中に届くと書いてあったら午前中に届くと思っているわけです。
イベント当日
イベント当日の朝7時に衝撃的な報告と共に目を覚まします。ポケットWi-Fiのレンタルが前日にキャンセルされていたのです。料金は払い戻され、Wi-Fiの話はなかったことになりました。これだから社会を信用してはいけないのです。さて困りました。いちおう会場となる大学の教室に行ってWi-Fiが実はまだ生きていないか確認しに行ったのですが案の定使えず、イベント参加者全体にオンラインで開催する旨を伝えます。あまりにも衝撃的な予定変更です。しかしtraPの強みである自前のSNS「traQ」を活かした情報集約と拡散により、急な予定変更もすぐに参加者に知らせることができました。
結局イベントは対面で行うことはできず、すべてオンラインでの開催となりました。参加者にはdiscordに集まってもらい、作業中はチームごとに分かれて通話に入ってもらい、少しでも対面と近いコミュニケーションが取れるようにしました。
当日の作業時間としては 時間ほど確保していたのですが、当日で作業を終えた人は数人で、ほとんどの人は翌日以降にチームリーダーと連絡を取り合いながら完成まで持って行ってもらうことになりました。
コンテスト開催まで
私はイベント終了翌日からすぐに実家に帰省することになり、tester 作業はすべて実家で行うことになりました。夜間の通話しながらの作業が難しく、自分の部屋にエアコンがないのもあって少し作業しづらかったです。自分は主に問題文やサンプルの説明文が壊れていないかを確認する作業を行いました。かなり多くの問題で修正が必要だったり、writer の方と連絡を取るのが難しかったりして、作業は難航しました。合計で 16 問もあったこともあり、全ての作業を終えたのはコンテスト開催日の前日でした。とはいえ、問題そのものが壊れている問題はほんの少ししかなく、イベント参加者の競プロへの慣れに驚いていました。
コンテスト開催当日
yukicoder でのコンテストは 21:00~24:00(3h) で開催されました。このコンテストは東工大の外部を含む一般の方が参加できるコンテストで、問題をみんなに見てもらえる大きなチャンスでした。完成した問題の難易度が想定より高くなり、全完が出るかどうか微妙なところでしたが、告知通り 3 時間で行うことにしました。私のミスで直前の問題文修正がうまく他の部分と噛み合っておらず、コンテスト中の一部の時間で問題文に致命的な不備がある状態になってしまいましたが、その問題の tester の方の協力でなんとか短時間で修正することができました。他にも誤解を生みかねない問題文について質問や指摘がありましたが、そういう軽微なミスはいつでも起こり得るもので、その対応をイベント参加者に体験してもらえたのは結果的にはよかったと言えなくもないですかね。
コンテスト中はイベント参加者で都合のつく人に discord のボイスチャットに集まってもらい、順位表観戦をしました。どの問題がどんな人に解かれているか、何人に解かれているか、どのくらい WA (誤答)が出ているか、そういった情報を眺めながらみんなでワイワイしていました。
結果としては全ての問題にAC(正解)が出て、さらに一人だけ全完者も現れ、コンテスト全体としての出来も十分なものになっていたと思います。これだけ難しいコンテストになるとは思っておらず、イベント参加者の作問力に感服するばかりです。
次回以降のこと
次に同じようなイベントを開催することがあるなら、参加者を減らすあるいは運営を増やすなどして、もう少し円滑な作業ができる環境を用意するなどの工夫や、問題が多くなる場合はコンテストを二回に分けて開催することなどを検討するべきかもしれません。一日がかりではありますが長期休みではない普通の週末に開催するなどもいいかもしれないです。ただ、今のところ運営陣の負担が大きく、次回は最短でも春休み中になる気がします。毎年の恒例イベントになれば盛り上がるので、来年の夏休みにはもう少し計画を練ってから開催できたらいいなと思っています。