取材日:2023/10/4
取材訪問者:高橋直大(AtCoder株式会社代表取締役社⻑、以下高橋)、snuke(ABC Admin、解説放送担当)、kaede2020(AtCoder株式会社AtCoder Junior League運営担当)
AtCoder株式会社(以下AtCoder)のコミュニティリーダー、kaede2020(以下かえで)です。この連載では弊社代表取締役社長の高橋直大(以下高橋)と私がAtCoder Junior League 2023(以下AJL)に参加しているランキング上位校の中高生に会いに行き、AJLや競技プログラミング(略称:競プロ)にどのように取り組んでいるかを伺い、その様子をみなさんにお伝えしていきます。今回はABC Adminおよび解説放送を担当している弊社社員のsnuke(以下すぬけ)も同行しました。
AJLは、今年5月より始めたAtCoderが主催する中高生向けの学校対抗長期リーグ戦です。参加登録を行った中高生に対して、AtCoderのプログラミングコンテストの参加結果をスコアとして算出し、学校別、学年別にスコアを集計し、中学部門、高校部門のランキング上位20校および各学年上位20名を表彰予定です。参加登録は無料で、2023年12月現在、全国42の都道府県の283校の中高生、約1000名が参加してくれています。
(AtCoder Junior League 2023 について詳しく知りたい方はリンク先をご覧ください。AtCoder Junior League 2023の詳細および参加登録方法)
第2回はAJL2023の開催期間が残り1か月を切った今、中学部門、高校部門ともに暫定2位の灘中学校・高等学校(以下灘校)の灘校パソコン研究部(Nada Personal Computer users’ Association, 以下NPCA)所属の部員8名、および顧問の川西先生に会いに行き、お話を伺いました。なお、川西先生には当日ご挨拶させていただきましたが、こちらの記事には事前にメールでご回答いただいたものを掲載しています。
灘校パソコン研究部について教えてください
—灘校パソコン研究部(NPCA)の部員数は何人ぐらいいますか。(聞き手:かえで以下略)
高3今井さん:高3が6名、高2が6名、高1が7名の計19名、中3が11名、中2が3名、中1が5名の計19名で、合わせて38名です。
—活動時間や活動内容について教えてください。
高3重久さん:基本的に月曜から金曜の放課後に活動しています。中学生もいっしょです。それぞれが好きな時間にやってきて活動をしています。競技プログラミングだったり、CTFだったり、機械学習だったりと、パソコン全般の好きなことをしています。文化祭では中1が毎年ゲームを作っています。競技プログラミングはわからない問題を質問し合ったりしていて、部員の半数位が参加していると思います。
中3古徳さん:サーバーを管理しています。
—数研とも兼部している人はいますか。
重久さんと高3児玉さんの手が挙がります。数研にもAtCoderに参加したことのある人はある程度いるとのことでしたが、がっつり参加している人は他にはいないとのことでした。
—部室にあるパソコンのOSは何ですか。
重久さん:Windowsが3つ、mac2つ、Ubuntuひとつです。
競技プログラミングに取り組むようになったきっかけを教えてください
—競技プログラミングを知ったきっかけや始めたときのことを教えてください。
古徳さん:パソコン部に入ったあと部室にいたときに先輩がやってきて、「競プロって知ってますか」と言われておもしろそうだなぁと思ったのが最初です。
中2高重さん:自分も同じような感じで、パソコンが好きでゲームを作りたいなあと思ってパソコン部に入りました。入ってから先輩にAtCoderを教えてもらいました。始めてみたらおもしろくて、そこからはまりました。
中3木村さん:もともとこの人(注:隣に座っていた古徳さんのこと)と仲が良くて、教室で競技プログラミングをしていて「これ何?」って聞いて教えてもらいました。それでパソコン部に入って始めました。
副部長の中3山下さん:自分はプログラミングをしたいと思ってパソコン部に入りました。そのときに先輩から競プロをおすすめされたのでAPG4b(AtCoderのC++入門)で勉強して始めました。
高2尼丁さん:もともと数オリをやっていたのですが、得意分野が組合せで、だったら競プロがおすすめだよと教えてもらって、そのままはまりました。教えてくれたのは他校の人で数オリと競プロの両方をする人です。
重久さん:パソコン部に入ってから先輩に教えてもらって、やってみたら楽しかったのがきっかけです。
児玉さん:僕は競プロを先に知ってからパソコン部に入りました。競プロを知った理由は、学校の土曜講座です。土曜講座はOBや外部の方をお呼びして講義をしてもらい、興味のある生徒が自由に参加するというものなのですが、そのときはPFNに勤めていらっしゃるOBの方がいらっしゃいました。情報オリンピックにも出ていた銅メダリストだったかと思うのですが、その方が講義の中で競プロを紹介してくださっていたので、それで興味を持って始めました。
今井さん:高1から始めました。児玉の話していた土曜講座で競プロの話を聞いておもしろそうだなあと思っていました。
すぬけ:中1で情報オリンピックに出ました。パソコン部ではなく囲碁部でした。囲碁部の前に数研の部室があったので問題を解くことはありました。※すぬけは灘校OBです。
—学校の中でAtCoderのことを知っている人はどのくらいいると思いますか。
児玉さん:AtCoderを聞いたことがあるという人は割といるかもしれませんが、内容がわかる人はそんなにいないと思います。
尼丁さん:1割もいないと思います。
—コンテストに参加し始めたときはどんなことをしていましたか。また、最初に参加したコンテストで何問解けたかを覚えていますか。
木村さん:最初はAPG4bをやったりしたけど、あとはひたすらコンテストに出ることを繰り返しました。
山下さん:ひたすら精進しました※。最初はABC2完だったと思います。
※精進する:競技プログラミングの勉強をしたり、問題を解いたりと努力すること
児玉さん:中1で初めて参加したときは1完でした。ABCが4問の時代です。
—コンテスト後にわからない問題を教え合うといったことをしていますか。
児玉さん:去年僕が後輩に競プロを教えたいと思って作ったDiscordサーバーがあり、コンテスト後に活発に質問を受けていた時期もありました。最近は僕が忙しくなってしまってあまり行えていません。
—コンテストに参加する時間を除くと、どのくらいの時間を競技プログラミングに使っていますか。
古徳さん:コンテストの時間をのぞいたら、週に3時間くらいかな。
高重さん:(週)2時間くらい。
木村さん:コンテスト以外だと、月に1問解いていたら良い方です。コンテストに出て、その後できなかったのをちょっと時間をかけて解いて、解説を見て終わりです。
山下さん:コンテストプラス精進の時間は週に2時間くらいです。解説はいつも記事で、動画はあまり見ないです。
尼丁さん:AtCoderで作問をしています。生活をしながら作問のことを考えているので微妙なんですけど、言っちゃえば1日5、6時間やっています。問題を解くとなるとコンテスト以外だったらあまりやっていなくて、週3時間くらいだと思っています。
重久さん:受験が近いので時間が取れないのですが、最近は1日30分から40分くらいはやるようにしています。
児玉さん:今は0時間なんですけど、つい1か月半くらい前だとIOI※直前だったので、週20時間くらいはやっていたと思います。
※国際情報オリンピックのこと。インタビューは2023年10月4日、IOI2023は2023年8月28日から9月4日に行われました。ここにいる児玉さん、尼丁さんはともにIOI日本代表として参加し、金メダルを獲得されています。
今井さん:自分はコンテストに出て、それ以外に週3時間くらいでしょうか。
—部活の時間には競技プログラミングをやっていないのでしょうか。
「あまり意識していないので、あらためて聞かれると答えるのが難しいです」「各々がやっている感じで、部活でもコンテストの話をしたり質問したりしているときはあります」などと答えてくれました。
—個の活動が多いように感じるのですが競技プログラミングをやる上で部活の必要性って何だと思いますか。
児玉さん:NPCAがなかったらここまで競プロをやる人は増えなかったと思います。
—例えば部活が今なくなったら競技プログラミングをやめる人はいますか。
誰の手も挙がりません。だとしたら、やはり部活は必要ないのではというこちら側の思いを感じたのか尼丁さんが言います。
尼丁さん:部室に集まってみんなでワイワイしているみたいな。
尼丁さんの言葉を聞いて、第1回の筑駒インタビューのときのことを思い出していました。顧問の先生方から伺った「部活という枠組みがあって、部室という場所があることが競プロをする上で大事なのだ」という話を。まさに今同じことを再び聞いていると思いました。これが現在の競技プログラミング強豪校に共通する強さの秘密のひとつなのだと思いました。
—話は変わりますが高3生にお聞きします。競技プログラミングと受験とのかねあいについて教えてください。引退や休止時期について考えていますか。
児玉さん:僕はパソコン甲子園の本選が終わったら一旦受験が終わるまでやめます※。それまでは普通にやろうと思っています。
重久さん:全然決めていませんでした。
※児玉さんは高3生になってもIOI(金メダル)、SuperCon 2023(優勝)、PG BAttle 2023、パソコン甲子園等多くのコンテストに参加されているとのことでした。そしてインタビュー後に行われたパソコン甲子園本選プログラミング部門(2023年11月11日開催)では見事有終の美を飾られていました。
—AtCoder以外の競技プログラミングには参加していますか。
ほぼ全員が参加していると答えてくれたのが「PG Battle」、他にも「パソコン甲子園」2人、「スパコン」2人、「Topcoder」1人等、積極的にいろいろな競技プログラミングのコンテストに参加している様子が伺えました。
※スパコン:Supercomputing Contestのこと。毎年予選が6月にあり、本選が8月に開催される。
—ヒューリスティック・コンテストには参加していますか。
AHC(AtCoder Heuristic Contest)に参加していると答えてくれたのは3人、そのうち2人は中学生でした。
—家族の人は競技プログラミングをやっていることを知っていますか。
全員の手が挙がります。
—家族の人に応援してもらっていますか。
これもまた全員の手が挙がります。「(コンテストのある日は)ご飯をちょっと早めに作ってくれます」といった声も聞かれました。
—先輩という立場から後輩に向けての、競技プログラミングを広めたいとか底上げしたいといった思いは何かありますか。
児玉さん:機材(ノートパソコン)がコロナ禍で貸し出されるようになったこともあり、競プロに取り組むハードル自体は全然高くないと思っています。もっと普及するためには「競技プログラミングって何?」という説明を聞いたときに「何か難しそう」と思ってしまう人が多いので、それが減ると良いと思います。実際、灘のような中学受験の算数とゲーム性が似通っている部分も多く、適している生徒が多いと思っているので、勇気を出して始めてほしいなあと思っています。
重久さん:校内にポテンシャルのある人は結構いると思います。
—AtCoder Junior League の中学部門では筑駒と灘が接戦ですね。
山下さん:個人的には抜かされていないか、AJLの結果を毎週見ています。
※インタビュー時は中学部門で灘中学校が1位でした。
—AJLのランキングは気になってはいるけど他の部員に参加を促すことはしていないという感じでしょうか。
尼丁さん:AJLのスコア計算方法を見ると布教してあらたに人を増やしてもスコアはほぼ変わらないと思っています。
古徳さん:今いる人を強くした方が効率がいいんですよ。
木村さん:ARCパフォ3000出します!
—尼丁さんは数学と競プロの両方をされていたように思いますが、今も両方取り組んでいますか。
尼丁さん:数学の方は完全にやめてしまいました。幾何と代数が嫌いで、逆に整数と組合せが好きなのですが、競プロにわりと適している2分野だったので、それをきっかけに競プロをすすめられました。競プロを始めたら、それ以降はどんどん数学が減っていって、高1の1学期くらいにはしなくなりました。
—数学の進度が追い付いていなくて競プロで困ったことはありますか。
山下さん:三角関数は中2のときはまだやっていなかったので毎回調べていたと思います。
複素数は知らなかったから諦めていました。
古徳さん:中1のときはStatue of Chokudai※のような三角関数が必要な問題が出ると少し苦労していたと思います。
※E869120さんの競プロ典型90問の18問目の問題。
未履修の数学の知識が必要となる場合でも、自分で三角関数の概念を調べて自分なりに理解した上で、その知識を使って解いていることには驚きを隠せません。最後に競技プログラミングの目標を教えてもらいました。
競技プログラミングの目標について教えてください
—競技プログラミングをやる上で、いちばん目標にしていることは何ですか。
古徳さん:春合宿です※。
※日本情報オリンピック(JOI)の本選の成績優秀者が春合宿に参加することができ、春合宿参加者の中からその年の国際情報オリンピック(IOI)出場者が選抜されます。
高重さん:特にないです。
木村さん:IOI!
山下さん:IOI進出。
尼丁さん:自分もあと1回あるのでIOI、できれば1位で。
重久さん:暖色が達成できるようにがんばりたいです※。
※ AtCoderのレート2000以上を指す言葉。赤・橙・黄のこと。AtCoderではレーティングの上から赤・橙・黄・青・水・緑・茶・灰に色分けされています。
児玉さん:受験が終わってからの話なのですが、AtCoderの銅冠です※。
※AtCoderのレッドコーダー(赤のレーティング保持者)のうち上位100名以内に入るとユーザIDに銅冠が表示されます。
今井さん:細く長く続けたいです。
—以上でインタビューを終了させていただきたいと思います。本日はお忙しい中どうもありがとうございました。
NPCAの部員の皆さん、インタビューに答えてくださり、どうもありがとうございました!
また事前に顧問の川西先生にも質問に対する返答をメールでいただきましたので、その一部をご紹介させていただきたいと思います。
学校側の支援の必要性について教えてください
—顧問の先生はどのようなことをしているのでしょうか。
川西先生:関わっていません。部室の鍵などは管理していますが競プロに関する会話などは有りません。
—学校側の支援の必要性についてどのようにお考えですか。
川西先生:学校からは一切支援していませんが、競プロ系の全国大会に出場するのであれば若干の補助は出ます。他のクラブ活動と同じように補助する仕組みがあるので。今年も情報オリンピックに数名出場するはずですが、費用面などの補助以外は何も無いです。入賞したことによって校内外で大々的に告知/掲示されるといったことも無いです(希望すれば終業式等に他大会入賞者と共に1回読み上げられますが申請しない生徒も多い)。
技術面では、Web上に良質な教材は無数にあるはずなので支援は必要ないかと。Webで完結するので特殊なPCも必要ありませんし、競プロというのは支援の必要が無いことが特徴かもしれませんね。無論一般論としてPC環境は快適であるべきですが、これは競プロに限った話ではありません。
—参加をすすめるといったこともしないのでしょうか。
川西先生:生徒に圧をかける(生徒に教えたり情報を与えたり誘導する)と参加者や入賞者は数倍になるでしょうが、それによって何か学校が嬉しいとか良い影響があるとかは無いわけで、自由にやったら良いと思います。因みにパソコン部ではなく数学研究部からも入賞者が多いので、特段PC全般についての興味関心が薄くとも、数学が出来る人間は中高生対象の競プロは比較的容易い可能性は高いです。
—川西先生!貴重なご意見をどうもありがとうございました!
インタビューを終えて
今回インタビューに参加してくださった部員の皆さんの多くは、コンテストに参加する時間を除けば週3時間程度という声が多く、競技プログラミングの精進にものすごく時間をかけているのではと想像していた私はそこまで長時間ではないことに驚きました。インタビュー後に尼丁さんが「もう少し前の時期は全体的に一人ひとりがもっと精進していた」と教えてくれたので、もう少し早い時期にインタビューに伺ったら別の答えを聞くことができたのかもしれません。
一方、尼丁さんや児玉さんの競技プログラミングにかけている時間は長く、生活の中心に競技プログラミングがあることを想像するに難くないものでした。「作問のことを1日中考えている」と話してくださった尼丁さん。「コンテストに集中しているので、コンテストが終わった後も(平静に戻るまでに時間がかかるので)すぐに眠ることができない」と答えてくださった児玉さん。2人の高校生レッドコーダーの言葉はとても重く、印象に残りました。
今回のインタビューで特に聞いてみたかったことがありました。それは高3生が競技プログラミングに参加することについてです。受験を控えて時間的な制約のある中で競技プログラミングを続けようとする意志に学ぶことの多さを感じました。
インタビュー中、丁寧に質問に答えてくれていた部員たちの姿は随分と大人っぽく見えましたが、印刷をして持参したAJLランキング表を手渡したときには、ランキング表を肩を寄せ合ってのぞき込みながら得点差を計算したり、口々に思ったことを話して盛り上がっていました。その様子は和気あいあいとしていて微笑ましく、ランキング表の更新を毎週行っている自分自身にとっても、反応を間近に見ることができたのは初めてで励みになりました。
これからもAJLを通して同年代の仲間と切磋琢磨して、競技プログラミングを長く続けていってもらえたらうれしく思います。
(文:kaede2020)