近頃、教育現場や就職試験にも導入されるようになった「競技プログラミング」。パソコンにコードをプログラミングする技術を争う頭脳競技だが、この勝負に青春を捧げてきた学生がいる。東京大学医学部4年生の伊佐碩恭(ひろたか・22)さんだ。彼は今年、2人の仲間と共に大学対抗の世界大会に挑戦する。

 ***

甲子園のような夢舞台

「国際大学対抗プログラミングコンテスト(ICPC)」。伊佐さんが挑む世界大会の名称だ。同じ大学の学生3人でチームを作り、世界の強豪大学とプログラミングの技を競う。毎年100カ国以上の約3000大学が挑戦するが、国内予選、地区予選を通過し、決勝に進めるのは約130チームだけだ。

 伊佐さんたちが勝ち上がったのは2019年の大会で、本来ならばファイナルは昨年6月にモスクワで行われる予定だった。だが、コロナ禍の影響で延期になったままだという。伊佐さんが語る。

「まだどうなるかわかりません。オンライン開催の可能性もある。けど、できることなら、世界の強豪が一堂に集う会場で戦ってみたいです。毎年、決勝はネットで生中継され、世界中の競プロ愛好家がリアルタイムで視聴します。僕も中高生の頃からそれをずっと観てきて、いつかここで戦いたいと憧れていました」

 競プロを続けてきた彼らにとって、ICPCファイナルは“甲子園”のような夢舞台だというのだ。

東大内でも繰り広げられる“代表争い”

 東大は強豪校として知られる。このコンテストでは1位から4位までに「金メダル」が与えられるが、東大は1998年からこれまで4回金を獲得してきた(最高位は3位)。各大学1チームしか決勝に参加できない規定があるため、毎年、代表の座をかけて東大内でも熾烈な争いが繰り広げられるのだ。伊佐さん自身も大学1年から仲間らと挑み続けるも、東大内のライバルに阻まれ、毎年、涙を飲んできた。

 3度目の挑戦にしてようやく掴んだ世界への道。狙うは優勝か? 伊佐さんは苦笑してこう答える。

「本当はそう言い切りたいのですが、世界大会となると強豪ばかりです。マサチューセッツ工科大学、モスクワ大学、ソウル大学など、実績のあるライバルたちと戦わなくてはいけません。もちろんやるからには狙いますが、とりあえず4位までの金メダルを目標に据えています」

 彼らはいったいどのようなレベルで戦っているのだろうか。2019年アジア地区予選で出題された問題を見てみよう。

〈アンダーソン氏は昔の映画をよくレンタルする。何回も観賞しているので、彼は好きなシーンが始まるタイミングを完璧に覚えられるようになった。できるだけ早くそのシーンに行くために、プレイヤーで何秒早送りすればいいのかを知りたい。

「再生」ボタンを押すと通常の速度でビデオが再生される。「3倍」ボタンは3倍の速度で、「1/3倍」ボタンはその時点での再生速度を1/3にする。どちらの速度調整ボタンも、押してから1秒後にその効果を発揮する。(中略)さて、希望のシーンが始まるまでに、これらのボタンを使って、最短何秒で再生できるだろうか。もちろん、該当のシーンは通常速度で再生するものとする〉

 質問の意図すら頭に入らない人がほとんどであろう。

 このような問題を解くために必要なのが「アルゴリズム」と呼ばれる問題解決の方法だ。アルゴリズムが分かったら、それを実行する「コード」をパソコンに打ち込み、正しい答えが導かれたら正解となる。ICPCでは、このような難問が十数問出題され、5時間の制限時間内にどれだけ速く多くの問題を正解するかが競われる。

小3で高1の過程が修了した公文

 数学の素養が必須となるのは言うまでもない。「競プロ」の世界では、有望な選手のほとんどが少年時代から数学オリンピックなどで好成績を収めてきた秀才たちだ。

 伊佐さんも、小学6年で「算数オリンピック」銅賞、高校1年の時には「数学オリンピック」の国内大会で銅賞を獲得した“天才少年”だった。

「5歳から公文を始めたのですが、気づいたら小学3年の頃には、高校の過程が修了していました。小さな頃から納得するまで考えることが好きだったんです。勉強していたというより、絵本の代わりに問題集を読んでいたような感じでした」

 そして開成中学に進学後、中2の時に「競プロ」と出会う。

「入部した『数学研究部』には、『競プロ』をやっている部員が多かった。競プロに必要なアルゴリズムはまさしく数学です。自分の得意分野を活かせるかもしれないと考え、『情報オリンピック日本委員会』が主催する有望選手を育てる夏季セミナーに応募したら、選考に通ったんです」

 それから四六時中、「数学」と「競プロ」漬けの生活を送るようになった伊佐さん。「数学オリンピック」では国内大会、アジア大会で銅賞を獲得したものの世界大会には進めなかった。だが、競プロのほうでは、高1の時、中高生の国際大会「国際情報オリンピック」日本代表4人に選抜された。

「国際情報オリンピックは大学対抗戦と違って個人戦です。台北で行われたこの年の世界大会には311人が参加し、結果は40位でした。初めて世界戦に挑み、世界の壁を知りました。悔しいというよりは、同年代の桁違いな選手たちを見て、純粋にすごいなと。いつか僕も頂点に立ちたいという気持ちで続けてみたのですが、高2、高3では代表にも選ばれず、上位入賞する夢は潰えました」

大学進学後、気づいた“弱さ”

 その後、東大医学部に現役合格。半年くらいは部活動やアルバイトをするなど一般的な大学生活を送り、競プロから遠ざかったという。だが、徐々にふつふつと想いが募ってきたという。

「このまま中途半端で終わりたくない。最後までやりきりたいと思うようになって。そして、もう一度一から勉強し出したんです。そうしたら、違った景色が見え出した」

 高校時代までの自分には「忍耐力」が足らなかったと振り返る。

「単に思考力と知識だけが問われている世界ではなかった。制限時間内に突破口を探さなければならないメンタル面も重要な競技です。高校時代までは、すぐに自分の中に壁を作ってしまい、あきらめてしまう癖がありました。ネガティブな気持ちになると、解けるものも解けなくなってしまう」

 心の持ちようを変えたことで、急に成績が伸びだしたという。

「絶対に答えはどこかにあるはずという前向きな気持ちになって挑むと、ちゃんと壁を乗り越えられることに気づいた。その瞬間って本当に気持ちいいんですよね。日常が彩られる。そういうプラス思考が循環しだして、練習方法も改善されていき、いつしか『競プロ』を純粋に楽しめるようになった」

仲間と戦う団体戦の醍醐味

 大学生になると団体戦がメインとなるが、これも新たな刺激となった。

「各々のメンバーには得意不得意分野がある。それを適材適所に割り振り、機能しだすと、一人ひとりの能力の足し算よりも高いパフォーマンスが出せるようになるのが面白いです。これまでの個人戦にはなかった醍醐味です」

 今回、世界大会に挑むチームメイトの井上卓哉さん(22)と高谷悠太さん(21)は、中高時代、開成「数学研究部」で同じ釜の飯を食べた仲間だ。

「コロナ前は週に1回くらい僕の下宿にパソコンを持って集まって、泊まり込みの練習会をしたりしていました。気心の知れた仲間と一つの目標に向かって頑張るのは楽しいです」

 国内最大手の競技プログラミングサイトを運営するAtCoder代表の高橋直大氏は、3人についてこう評す。

「毎年東大チームは世界上位に入るのですが、今年もかなり上位が狙えるメンバーだと思っています。高谷さんは世界大会で個人1位を取ってもおかしくない実力を保持していますし、井上さんや伊佐さんも決勝大会に残っていておかしくない実力です。AtCoderの高いレーティングからもそれが示されていますし、今年も観戦が楽しみです」

 高橋氏によれば、趣味として競プロを楽しむ愛好家も年々増えているという。

「少し前まではごくごく一部の人しか知らなかった競技である競技プログラミングも、今ではたくさんの人が参加するようになりました。中学高校での部活動で競技プログラミングを嗜んだり、社会人が会社内で、趣味として競技プログラミングで競い合ったりしています。中学生から年配の方まで、日本だけでなく世界中で楽しめる頭脳スポーツとして、徐々に注目が集まっています」

競プロに教えられたこと

 AtCoderでは毎週のように、気軽に参加できるコンテストが開催されており、伊佐さんたちも個人練習の場として活用しているという。

 伊佐さんは、自身の「競プロ人生」をこう振り返る。

「もうこのレベルまでくると、実務に役立つプログラミングというのはとうに通り越して、『競技』のためのプログラミング技術を磨いている感じです。競プロを通して、自学自習の習慣や壁にぶつかった時の対処法、忍耐力を身につけることができました。社会人になると、時間の制約があるので、事実上“選手”としては引退となります。世界大会では悔いが残らないようベストを尽くすつもりです」

 青春の集大成となる世界大会で、有終の美を飾って欲しい。

デイリー新潮取材班

2021年4月14日 掲載