「VRC競プロ部」の「ABC感想会」で考えていること

この記事は『エンジニア作業飲み集会 Advent Calendar 2023』 6日目(飛び入り)の記事です。


ポエムです。表題のことを、記録代わりに書き記した記事です。
思想の話なので、合う・合わないがあると思いますが、各自でよしなにしていただければ…。


「VRC競プロ部」とは?

VRChat上にある、競技プログラミングをやっている/興味のある人の集まりです。ツイートにあるように、この会での一番の目的は「競プロを楽しく継続する」ということにあります。それを実現する方法の一つとして、AtCoderで開催されている 「AtCoder Beginners Contest」(通称: ABC) の開催後の「ABC感想会」をVRChatの中で行っています。

「ABC感想会」とは?

基本的に、代表者がYoutubeのライブ配信経由で画面共有を行い、Qvペン と Qvペンを使った黒板ギミック を使って解説を行っています。ワールドはかた湯さん作のセミナワールドを利用しています。

おおまかな流れは以下です。初参加の方がいる場合は、感想会開始の前に感想会自体の説明やVRChatの操作方法について説明が入ります。

  • (21:00~22:40: ABC)

  • 23:00~: VRChatで感想会用のインスタンスを開いて、人が集まるまで待つ

  • 参加者の解き具合の確認(2, 3分くらい)

    • AtCoderIDを聞いて一覧で見る

    • ここで各問題の解説のペース配分を大まかに決める

  • A問題から大体D~Fまで(24:30を目処に終了)

    • 問題のおさらい

    • 解法の解説

    • 各自がどう解いたか

    • 関連する問題や解法について

ちなみに、これらは私が主催する場合で、代理で開いて頂いた場合はその人のやり方にまかせているため、若干異なっているかもしれません(多分大枠は変わってないとは思います)。

「ABC感想会」を初めた理由

本題です。書いていたらすごい分量になったので、ここと次のセクションだけ読めばいいかなと思います。

感想会を始めるにあたって、大体以下のようなことを考えていたと思います。

  • 競プロは面白いので、ぜひやっていっていほしい

  • でも、基本的に競プロを続けるのは大変

  • やっているとつらいことが起こる

    • 解けなくてレートが下がった時とか、考えてもわからないときとか

  • ↑が続くと、楽しくなくってきて、続かなくなっちゃう

  • なら、それを吐露したり聞いたりする場があるだけでも、だいぶ気持ちが楽になるのでは?

つまり、「一人でやってるとつらいから、じゃあやいのやいのコンテストについて感想が言える場あったいいんじゃない?」というのが最初でした。
あと、もとから教えることは好きな方であったので、「じゃあついでに教えるのができると私が楽しいし勉強になってよいかも」ということも考えていました。

「つらいことを言える場」としての感想会

やいのやいの感想が言える場があることでなにがいいのか。これは、個人の感情の整理に役立つのではと思っています。競プロをやっている人向けの説明になってしまいますが、例えば、C問題で実装難のような問題が出たりします。初心者だと解けないことが起こります。もちろん解けないのは(おそらく多くの人にとっては)面白くない状態です。立て続けに解けない場合、鬱憤がたまってネガティブな感情になってしまいます。そういうとき、同じような感想をもった人が他にいたらどうでしょう?、「C問題むずすぎー」「いやあれはまじで重すぎる」「きつかったねー、どんまい…」みたいなことになれば、なんとなく嫌な感情が少し緩和するのではないかと思います。すると、感情的になったことが少し落ち着いて、「次のことを考えられるようになる」と思っています。

なので、(最近はあんまり言ってないですが、)感想会では(他者を攻撃するような暴言でない限りは)つらかったことは言っていいと考えています。むしろつらいことを言うことのほうが大事だと考えています。なので、なるべくネガティブなことが言いやすい雰囲気にはしたいと考えています。私もあまりにも大負けをしてしまったときは、感想会のインスタンスの端っこで不貞寝をして他の人に司会を任せるみたいなことをしていました。この行動の是非は置いておいて、そのぐらいつらいことを表明してもいいんだ、ということは感想会では大事だと考えています。

もちろん、そのままただ文句をいうだけで終わっては、生産され続ける嫌な気持ちを消費する井戸端会議になってしまうので、それはそれで(少なくとも私は)楽しくない。なので、文句を言うだけで終わらないようには気をつけています。例えば、「じゃあどうすればよかったんだろうね」「これは覚えておいたほうが良かったね」「次こうしてみるといいかも」みたいな、「次につながる話」も続けていたりします。

感想会での "解説" について

「次につながる話」をする機会として、各問題の "解説" をしています。解説といっても、公式解説のような想定解法をなぞるようなものではなく、「どのように考えて解いたのか」というそれこそ「感想戦」のようなものです。話のなかで、アルゴリズムや考え方について解説することもあるので、便宜的に "解説" ということにしています。

ある意味メインコンテンツであるこの "解説" では、特に考えることが多く、悩むことも多いです。

簡単すぎる/難しすぎることはつまらない

ずっと頭を悩ませている問題です。「感想会」では、特に参加数回ですという人から、青色や黄色や果ては赤色の人まで参加しています。そうなると、参加者ごとに話がしたい・聞きたいポイントは変わってきます。それらを一度に満足させるように話をするのは至難の技です。基本的に「感想会」では、初心者に話題を合わせるようにしています。上級者は後述する対策方法があったり、正直この「感想会」がなくてもなんとかなります。ですが、初心者は気持ちのことも含めて放置ではよくないので、初心者に合わせるようにしています。

では、どのぐらいまで話題を合わせればいいのか?、このあたりの判断のために、最初の解き具合確認を行って「どのポイントで話をすればいいのか?」を把握するようにしています(これは特殊だと思いますが、私はABC中に問題を解きながら、各問題でどのようなポイントの話をしようか考えていたりします)。逆に上級者向けには、「参加者はどういう実力を持った人がいるのか」という周知することで、初心者の話題に合わせることへ納得しやすくするようにしています。

とはいえ、高レートの人の話題も話せるように、「延長戦」として、F, Gの話をがっつりする時間を設けることもしていました。(最近はとある人からのアドバイスである、「ABCは解説にでてくるものをとりあえず知っておくといい」を実践するため、あまり設けなくなっていますが…)

話題以外に、話が盛り上がってくると初心者置いてけぼりになってしまうことはあります。そういうときは、改めて要点を説明し直したり、知っているか確認したりしています。もし知らなかった場合、このときに高レートの人のつまらなさ解消として、「今の話はどういうことでしたか?」という感じで言語化させるようにしています。

「わからない」という人がえらい

前節の初心者置いてけぼりに関連して、普段考えていることです。感想会では、「わからない」という人がえらいと考えています。これは、ネガティブなことを言いやすくするということにも関連しています。「わからない」ということを言うのは、基本的に大変です。なので、「わからない」といっても行ってもいいんだ、とすることで、初心者が質問をしやすい環境にしているつもりです。わかっている人には、わからないことを馬鹿にせず、わかっている人がわからない人に対して、理解できるように噛み砕いて話するように持っていきます。結局は、教え・教えられの関係性を作ることで初心者・上級者ともにいい関係が作れるようになるのではと思っています。

「ずっと一人が喋る」という状況

これは「感想会」の組み立てや私の能力不足によるものでもあるんですが、「解説役」の人である私がずっと前にでて私だけが喋り続けているという状況になることがあります。正直、これはあまりいい状況ではありません。当初の目的であった「(自分が感じている)つらいことを言える場」として、そもそも喋るタイミングがなければ達成されることはないです。

ひととおり喋ったあとに「なにか質問がありますか?」という聞き方もあるかもしれません。個人的にはこれでは足りないと思います。10分20分喋らないようにする必要があった状況から、実際に声を出して喋ろうと思うのは負荷が高いことだと思っています。それなら、もっと一人以外が喋るタイミングを増やしてみる、ということで、「どうやって解いたか振る」「各問題の最初に感想を改めて聞く」ということを試したりしています。すると、喋るタイミングが増えるので、そもそも自分が思ったことがしゃべりやすくなるのではと思っています。「問題の解説(司会)自体を他の人に振る」というのも試すこともあります(私が楽をするという意味もありますが…)。

あと、私が一人で喋るには大きな問題点があります。それは「圧倒的な競プロの実力不足」です。正直、ABCであっても、このコンテストすべてに関して教育的なことを補っていくためには、青色の実力というのはあまりにも足りないと感じています。少なくとも橙色以上、もしくは別の競プロのコミュニティに属している人は必要なのではと感じています。なので、私が司会をする場合には、いつも上級者の方からツッコミを促すこともあります。そこでツッコミが入ることで、私も含め他の聞いている人の勉強になるのではと思っています。そういう意味でも、上級者の方に参加いただけているのはとても助かっています。

代理の人への負担

実は、意図的に明確に特定の個人に感想会の代理開催をお願いすることはあまりしていませんでした。これは、「開催に責任を持っている人は私以外にいない」ということを意味しています。つまり、「感想会が開かれるのは、あくまで善意で開かれている」ということです。別の言い方をすると、「これはあくまで趣味であり、義務にしない」ということです。この会の目的では、「楽しく競プロを続けること」であり、「感想会」が義務になってしまうと、競プロ自体の楽しみが阻害されてしまうことを避けるためにこのようになっています。なので、代理で開かれている場合は、私がこれまで上記で考えているようなことは私の中で不問としています。

上記のような運用をしているので、積極的に代理で感想会を開いてくださっている方々には本当に感謝しています(度々ご迷惑をおかけしております……)。なのですが、基本的に私が開催・代理の場合は「あくまで善意でひらかれている」という運用の性質上、私が見本になってしまい、代理開催であっても負担が高くなってしまっているのではという懸念はあります。上記で書いた通り、最悪話さえできればOKなので、画面共有すらなく話をするだけであってもいいかなと思っています。私が開催連絡を当日だけにしていたり、ちょっと雑な感じにやっているのも、代理の人が手を抜いてもいいかなと思えるようなことが狙いだったります(※要審議)。

ちなみに、どういう流れでやってるか言語化されたのですら、今回のnoteが始めてという有様なので……。持続性という話を考えると、なにか考えたほうがいいのかもしれません(まぁ、私がだめになっても勝手にやってくれそうかなというのは感じたりしていますが)。

私が楽しいという話

長々と書いてきましたが、結局の話私は他人に何かを教えたり、このような首魁を設計するのは好きなんだろうなという話だと思います(能力や素質が足りているかは別として)。結構私自身は楽しんでやっています。感想会を初めてからAtCoderのレートも上がっているし、最近だと作問活動も始まっているし……。面白いなと思ってます。

補足というか言い訳ですが、このような考えが合う・合わない、そもそも私がこの思想にあった行動を取れていないなどの理由で、合わないことや不満があることはあるかなと思っています。もし、そういうことがあったらごめんなさい、でもこちらも努力はするけど大きく改善はできないだろうから(私自身はそこまで勤勉ではないので……)、不満があったらぜひ新しい思想のもと集まりを立ててやってね、という気持ちでやっています。

余談: ことの始まり

そういえば、あまり「VRC競プロ部」の起こりについて記載したものがなかった気がするので、このあたりで記載をしておきます。

VRCを始める前から競プロをやっていたのもあったのですが、私のフレンドから「興味はあるんだけどやってない」という声が聞こえてきたのが最初だったと思います。

しばらくして、(具体的なきっかけはなんだったかは忘れましたが)実際に競プロを始めてみるフレンドがちらほらいらっしゃったので、競プロモチベも高かった(1日1精進をやっていた時期らしい)ので、2020/02/10に 「じゃあDiscord作ってみるかー」とDiscordを作りました。

2020/05/09に交流会を開いて、翌日の2020/05/10に始めての感想会を開きました。開催していてしばらくは多くて4, 5人という感じだったと思います(第一回の写真は撮ってなかったらしい)。

おわりに

軽い気持ちで書き始めたらとんでもない分量になっていました。一気に書いていたらだいぶ疲れてしまったので、後半の方は文章が崩壊しているかもしれないです。

「ABC感想会」はゆるい会として初めたので、わりとすぐになくなるかと思いきや3年半経っていました。メインで参加してくれる方は実は移ろっていっているのですが、それでもコンスタントに参加者・代理開催の方がいてくださるのはとてもありがたい話です。繰り返しになりますが、代理で感想会を開いてくださっている方々には、本当に助かっています。今後ともよろしくお願いいたします(?)。


この記事が気に入ったらサポートをしてみませんか?