AtCoder株式会社(以下AtCoder)のコミュニティリーダー、kaede2020(以下かえで)です。この連載では弊社代表取締役社長の高橋直大(以下高橋)と私がAtCoder Junior League 2023(以下AJL)に参加しているランキング上位校の中高生に会いに行き、AJLや競技プログラミング(略称:競プロ)にどのように取り組んでいるかを伺い、その様子をみなさんにお伝えしていきます。今回は解説放送を担当している弊社社員のsnuke(以下すぬけ)も同行しました。
https://atcoder.jp/contests/ajl2023
AJLは、今年5月より始めたAtCoderが主催する中高生向けの学校対抗長期リーグ戦です。参加登録を行った中高生に対して、AtCoderのプログラミングコンテストの参加結果をスコアとして算出し、学校別、学年別にスコアを集計し、中学部門、高校部門のランキング上位20校および各学年上位20名を表彰予定です。参加登録は無料で、2023年12月現在、全国42の都道府県の283校の中高生、約1000名が参加してくれています。
第2回はAJL2023の開催期間が残り1か月を切った今、中学部門、高校部門ともに暫定2位の灘中学校・高等学校(以下灘校)の灘校パソコン研究部(Nada Personal Computer users’ Association, 以下NPCA)所属の部員8名、および顧問の川西先生に会いに行き、お話を伺いました。なお、川西先生には当日ご挨拶させていただきましたが、こちらの記事には事前にメールでご回答いただいたものを掲載しています。
灘中学校・高等学校の正門
NPCAの部員数は現在、中学生19名、高校生19名の計38名。月曜から金曜日の放課後、中高生がいっしょに活動をしています。活動内容は、競技プログラミングのわからない問題を質問したり、サーバーを管理したり、CTF(Capture The Flag)、機械学習等、各々がパソコン全般で好きな活動をし、中1は文化祭でゲームを作ることもしているとのことです。NPCA部員のうちAtCoderのコンテストに参加してくださっているのは20名ほどと、かなり大勢の方が参加してくださっています。
部活の先輩や友人、そして土曜講座等、伝え合う文化があるからAtCoderをおもしろそうだと始められる
AtCoderを始めたきっかけを伺うと、「先輩からおすすめされた」と話してくれたのは中3の古徳さんと中2の高重さん、中3の山下さん。「友達がやっていて教えてもらった」と答えてくれたのは中3の木村さんと高2の尼丁さん。「土曜講座で紹介されていたから」と答えてくれたのは高3の児玉さんと高3の今井さんでした。
児玉さん:
僕は競プロを先に知ってからパソコン部に入りました。競プロを知ったのは土曜講座の講義で紹介されていたからです。土曜講座は学校にOBや外部の有名な方を招いて講義をしてもらう授業で、興味のある人が自由に参加できます。そこでPFN(Preferred Networks)に勤めているOBの方がいらっしゃって、確かIOIの銅メダリストだったと思うのですが、講義の中で競プロを紹介していて、それで興味を持って始めました。
一方、顧問の川西先生に学校の支援の必要性について尋ねると「学校側から参加を奨めることはしない」というお話も伺いました。
川西先生:
生徒に圧をかける(生徒に教えたり情報を与えたり誘導する)と参加者や入賞者は数倍になるでしょうが、生徒に強制することで学校生活への良い影響を及ぼすとは思いません。生徒自身がやりたことを見つけて打ち込めることが大切なので、自由にやってもらったらいいと思います。
競技プログラミングの存在を自発的に伝える先輩やOBがいること、競技プログラミングをやりたい生徒が集まる場があること、学校側もまた生徒の自主性を重んじていること、これら全体をもってすれば文化と呼ぶにふさわしいものと感じました。
NPCA部室とインタビューに参加してくださったNPCA部員のみなさん
競技プログラミングの強豪校であるにも関わらず競技プログラミングに取り組む時間は週に3時間程度が多数と意外に長時間ではない
競技プログラミング強豪校だから多くの時間をかけて厳しい練習を重ねているのかと想像しましたが、部員の多くから帰ってきた答えは意外にも「週2、3時間」でした。
山下さん:
コンテストプラス精進の時間は週に2時間くらいです。解説はいつも記事を読みます。
木村さん:
コンテスト以外だと月に1問解いていたら良い方です。コンテストに出て、その後できなかったのをちょっと時間をかけて解いて、解説を見て終わりです。
とても意外に思いました。口ではやっていないと言いながら努力する人もいるかもしれないので後日AtCoder Problemsという有志の方が運営するAtCoderの問題復習支援サイトでAtCoderの問題をどの程度解いているのかを調べてみました。お一人ずつ調べてみると精進量に個人差はあるものの、確かに毎日こつこつと問題を解いているわけではないようです。インタビュー後に尼丁さんが「もう少し前の時期は全体的に一人ひとりがもっと精進していた※」と教えてくれました。確かに集中して取り組む時期とそうでないときというような波がありそうです。
※競技プログラミングの勉強をしたり、問題を解いたりと努力することを「精進する」と表現します。
競技プログラミングを好きな者が集まる部室という場所が大事である
ここまで話を伺ってきて浮かんだ疑問がありました。部活の時間に競技プログラミングをやっているという話がまだありません。尋ねてみると「あまり意識していないのであらためて聞かれると答えるのが難しいです」「各々がやっている感じで、部活でもコンテストの話をしたり、質問したりしているときはあります」と答えてくれました。もう少し深く聞いてみたいところです。
かえで:
個の活動が多いように感じるのですが、競技プログラミングをやる上での部活の必要性って何だと思いますか。
児玉さん:
NPCAがなかったらここまで競プロをやる人は増えなかったと思います。
高橋:
例えば部活が今なくなったら競技プログラミングをやめる人はいますか。
高橋が問い方を変えてもう一度尋ねます。挙手を求めますが、部員の手は誰一人挙がりませんでした。だとしたら「やはり部活は必要ないのでは?」というこちら側の思いを感じたのか、尼丁さんが言います。
尼丁さん:
部室に集まってみんなでワイワイしているみたいな。
尼丁さんの言葉に「だから、部活は必要なのだ」という思いが伝わってきました。私は第1回の筑駒インタビューのときのことを思い出していました。顧問の先生方から伺った「部活という枠組みがあって部室という場所があることが競プロをする上で大事なのだ」という話を。まさに今同じことを再び聞いているのだと思いました。そしてこれが現在の競技プログラミング強豪校に共通する強さの秘密のひとつなのだと思いました。
中学受験算数と競技プログラミングには相性の良さがある
精進量がそこまで多くないのにどうしてランキングの上位に位置することができるのでしょうか。その理由の一つとして考えられるのが数学的発想力のある人が競技プログラミングに向いているということです。今回のインタビューでもそれを示唆するコメントをいくつかいただきました。
児玉さん:
灘のような中学受験の算数と競技プログラミングの問題は似通っている部分も多く、適している生徒が多いと思っています。
重久さん:
中学受験の算数と競技プログラミングの問題が近いので、校内にポテンシャルのある人がかなりいると思います。
川西先生:
情報オリンピックやパソコン甲子園さんが行っているプログラミングコンテストでは、一部の進学校のような、中学で高校の数学範囲が完了するような学校の生徒が高得点を取る傾向にあります。日本語で問題を読解し、数学的発想でアルゴリズムを組んで実装するとなると、数学の問題に非常に近くなってくるので。だからどのコンテストを見ても上位入賞者は同じ顔ぶれになりますね。
中学受験において算数の難しい問題に取り組むことでベースとなる力を伸ばし、入学後にさらに数学的な発想力を育んできたということがありそうです。入学後の学校での数学の進度は速く、中3くらいになると知識面で困ることはなくなるようです。コンテストに出題された問題で未履修の数学の知識が必要となり困ったことがないかを、中1や中2の頃を思い出して答えてもらいました。
山下さん:
三角関数は中2のときはまだやっていなかったので毎回調べていたと思います。複素数は知らなかったから諦めていました。
古徳さん:
中1のときはStatue of Chokudai※のような三角関数が必要な問題が出ると少し苦労していたと思います。
※E869120さんの競プロ典型90問の18問目の問題。
未履修の数学の知識が必要となる場合でも、自分で三角関数の概念を調べて自分なりに理解した上で、その知識を使って解いていることには驚きを隠せません。
目指すは国際情報オリンピック第1位!
最後に競技プログラミングの目標を教えてもらいました。「春合宿」「IOI代表」「IOI1位」等情報オリンピックの上位を目指す目標を掲げてくれたのは高2までの部員の方たち。その志は高くとても頼もしく思いました。情報オリンピック(JOI)は高2までを対象に国際情報オリンピック(IOI)の日本代表選手の選抜を行います。予選を突破して本選に出場した選手の上位から約30名を春合宿参加者とし、春合宿参加者の中から国際情報オリンピックの日本代表選手4名を選出するというとても狭き門です。
また、高3生の重久さんは「暖色」、児玉さんは「銅冠」と答えてくれました。これはAtCoderの話になります。AtCoderの成績は上位から赤、橙、黄、青、水、緑、茶、灰と色が分かれています。暖色とはそのうち赤、橙、黄を指し、黄色以上の成績を取ることを暖色と言います。また、レッドコーダー(赤のレーティング保持者)のうち上位100名以内に入るとユーザIDに銅冠が表示されます。
NPCA部員の皆さん、インタビューにご協力くださり、ありがとうございました!こちらに掲載しきれなかった内容がまだまだたくさんあります。そちらについては別途コーポレートサイトに掲載予定です。
向かって左上段から児玉さん、木村さん、尼丁さん、重久さん、今井さん、すぬけ、下段左より髙重さん、山下さん、髙橋、古徳さん、かえで
灘の強さの秘訣は精進量ではなく文化にある
競技プログラミングが面白いからやってみてと奨めてくれる先輩や友人、競技プログラミングに取り組む仲間が集まる環境、部活は自発的な活動で満たされるように先生方が配慮すること。灘校に脈々と受け継がれているそれらは一つの文化であると言え、だから絶えず強い選手を輩出するのかもしれないと思いました。
競技プログラミングの上位校は現在偏差値の高い中高一貫校で占められているかもしれません。しかし強い選手が一人現れれば、新たな学校に新しい文化が生まれるのではないかと思っています。
AtCoderは部活動で競技プログラミングを行うことを応援するためにAtCoder Daily Trainingを開始しました
AtCoderでは部活での競技プログラミングを応援するために、AtCoderの過去問から出題する練習用バーチャルコンテストを2023年10月17日から開始しました。開始するにあたっては第1回の筑駒インタビュー時の意見も参考にしています。例えば「もう少し易しい問題のコンテストがあったらうれしい」「学校によって部活の時間が違いそう」といった声に応えられるよう、難易度と時間帯を決めました。コンテスト時間は60分間で毎週火曜日は15時半、水曜日は16時、木曜日は16時半からと、開始時間をずらすことで多くの学校の部活時間帯に合うように、また難易度も3つに分けて、EASY、MEDIUM、HARDを作りました。EASYでは易しい問題を多く含むようにして、新しく始める人にも参加しやすくなっています。また全ての問題を集めたALLを作り、先輩がALLに参加することにより後輩と同じ問題を解いて、その後質問されたときにすぐに教えることができるようにしました。ぜひ活用してもらえればと思っています。
インタビューを終えて
競技プログラミングの目標を尋ねたとき、今井さんは「細く長く続けること」と答えてくれました。その答えから「競技プログラミングがおもしろいからやっている」ということが伝わってきて、とても共感を覚えました。JOIや大学生のICPC等、学生時代に一時期競技プログラミングに参加していても、その後競技から離れていってしまう人も多くいます。長く続けてもらうこと、それはAtCoderの取り組むべき課題の一つでもあるからです。
インタビュー中、丁寧に答えてくれた部員たちの姿は随分と大人っぽく見えましたが、印刷していた現時点でのAJLの順位表を手渡したときには、ランキング表を肩を寄せ合ってのぞき込みながら得点差を計算したり、口々に思ったことを話して盛り上がっていました。その様子は和気あいあいとしていて微笑ましく、ランキング表の更新を毎週行っている自分自身にとっても、反応を間近に見ることができたのは初めてで励みになりました。
これからもAJLを通じて、より多くの中高生の間で競技プログラミングが広がることを願っています。仲間と切磋琢磨し合える場を提供し、新たな文化が生まれること。それはAJLの目指す目標の一つです。競技プログラミングへの理解と子どもたちの未来の可能性をぜひ全ての人に想像してもらいたいと思います。
(文:コミュニティリーダー・AJL運営担当:kaede2020)
行動者ストーリー詳細へ
PR TIMES STORYトップへ