この記事は Competitive Programming (1) Advent Calendar 2018 3日目の記事です。
こんにちは。最近退職で話題の会社のグループ会社に所属しています @ktateish です。
某社の一部界隈では、今年競技プログラミングが大流行しました。一部の競プロ関係者には、この流行のことが伝わっていたようです。
本記事では、その流行を支えた練習会の話を共有したいと思います。
きっかけ
すべての始まりは、 @kumagi さんが競技プログラミングを始めたことだったと思います。
彼は今年の5月ごろから AtCoder や Codesignals, LeetCode などに参加して、Slack で競プロチャンネルをつくり、参加報告をつぶやくようになりました。
私も昔競技プログラミングに興味を持って各種サービスにアカウントを作ってあったんですが、過去問をいくつか解いた後 1〜2回ほど参加してそのあとは放置、という状況でした。 たまたま @kumagi さんが AGC024 に参加しまーすと言っているのを見て、「また再開してみようかなー」と思い、そのとき勢いで参加ボタンをポチりました。Slack で参加を宣言すると、他にも何名か後に続いてくれました。
練習会
そうこうしているうちに、AtCoder の過去問の練習に取り組む人が出てきました。どうせなら、都合のつく人で一緒に競争するか〜という話になり、 6/29 に @aajisaka さんが AtCoder Virtual Contest を見つけて、バーチャルコンテストのインスタンスを立ててくれました。このときの参加者は @kumagi さんと @aajisaka さん @ktateish の3名だけでした。
練習後は解法について Slack でワイガヤしつつあーだこーだ感想戦をしていると、競プロ経験者を始めとする興味を持った他の人も議論に参加してきてくれました。
練習会の継続
その翌日 6/30、たまたま暇だったので私が Virtual Contest を立て、2回目の練習会を実施しました。すると、前日の盛り上がりを見て参加したくなった人が参加してくれて、 参加者は一気に8名になりました。
これが、私達の中で競プロが大きなムーブメントになった瞬間でした。某Slackでは1日1回チャンネルごとの発言数ランキングが #general で発表されるのですが、練習後にあーでもないこーでもないと議論していると発言数はかなり伸びます。すると翌日のランキングではほぼ確実に1位になります。それを見た人たちが競プロチャンネルにJoinし、練習会に参加、さらに発言数が増える、という循環が回り始め、チャンネル参加者は一気に数十人レベルに膨れ上がりました(現在は100名を超えています)。その全員が練習会に参加するわけではありませんが、参加してくれる人が増えてくると、 Virtual コンテンストを開催するほうも、継続したくなります。(というか、簡単にはやめられなくなります)
急いで初心者向けに練習会参加用のマニュアルを整備し、過去の開催状況を一覧にしてチャンネルに共有したり、問題セットの選択方法を整理したりして、継続を楽にしつつ、新しい人達が参加しやすい環境を整えました。
オンサイト・コンテストの開催
ここまで盛り上がってくると、オンサイト・コンテストを開催したくなります。
上司に相談して会社のイベントスペースを借り、普段競プロチャンネルで練習会に参加している人たちを対象にオンサイト・コンテストを開催しました。コンテンストに出す問題は、参加者が解いてなさそうな過去問から出題することにし(作成はしない)、一部有志のメンバーには問題選定&解説をやってもらいました。
このオンサイト・コンテストには20名以上が参加し、大成功でした。
初心者向けセミナーの実施
今年の夏頃行われた某テックカンファレンスでは、競プロ経験者の @bakaming さんが一般の初心者向けの競プロセミナーを開催(私はサポート要員として参加)したのですが、 実は Slack のチャンネルには参加してるけど、いまいち練習会への参加のきっかけをつかめずにいたメンバーが何人か参加してくれて、そこから参加を継続してくれるメンバーも出てきました。
Slackで盛り上がっているとはいえ、ある程度メンバーが固定化されてくると、新しい人は入りづらい、という事象はどうしても発生してしまうので、こういった形できっかけを作ることはとても重要だなと思いました。
ブームの終焉 → 定着
競プロチャンネルには経験者の比較的強いメンバーも結構はいってきてくれてはいたのですが、基本的に練習会は AtCoder ABC の問題セットを中心に開催しています。7月から始めた練習会でしたが、原則として本家 ABC/ARC/AGC や企業コンなどがない日には毎日開催しており、 10月ごろには ABC を1周しました。
この頃になると、練習会の参加者も減り始めて、現在は結構下火になってしまっています。
しかし、本家 ABC 等のコンテストになると結構な人数がコンスタントに参加しているので、少なくとも某 Slack 内では競プロが文化として定着したんじゃないかなと思います。
今は私自身、最近はあまり時間をとれないこともあって、問題セットの選び方などの見直しをできていないのですが、このあたりをうまく変えて、今後またムーブメントを大きくできたらいいなと思います。
成果
私個人で言うと、 7月ごろから AtCoder に本格的に参加し始めて、 9月末には水色になることができました。やったね。
某Slack全体を見ると、AtCoder に新規に参加しはじめた人が30人前後はいると思います。そのうち、ICPCなどの競プロ経験者も含みますが、ざっくり5人前後が水色以上、10人程度が緑色に到達しています。
また、気分転換的に、いつもの競プロチャンネルのメンバーで picoCTF 2018 に2週間ほど参加したりもしました。この手のコンテストイベントに気軽に参加する文化ができたのも、この練習会の成果だと思っています。
まとめ
謝辞
AtCoder の chokudai さんを始めとするみなさま、 AtCoder Virtual Contest の not_522 さま、いつも使わせていただいてありがとうございます。