学生プログラマーの日本一は誰だ?

学生プログラマーの日本一を決めるだなんて触れ込みだったから、どうやってその勝敗を決めるのか興味があった。だって、聴衆の前で決戦が行われて腕利きのプログラマーを決めるってどういうことなんだろうみんなも不思議に思うだろう。だから、僕は昨日開催されたCODE VS(コードバーサスと読む)の決勝戦に出向いてきた。CODE VSはチームラボやPixiv、サイバーエージェントなど8社が開催した学生プログラマーを日本一を決める大会だ。これが第1回の大会となる。

この大会では、タワーディフェンスというコンピュータゲームを題材にしてプログラマーに勝負させている。タワーディフェンスは限られたマスの中にエイリアンを攻撃するユニットを配置して、エイリアンの侵入を防ぐというゲームなのだが、限られた時間で効率よくエイリアンを攻撃できるアルゴリズムを実装できたプログラマーが勝者となる。最初、僕はこの話を聞いてピンとこなかったのだが、たとえると、30×30のマスの中で始点と終点が決められたときに最長ルートを導き出して効率よく攻撃できるようにするのが命題なのだそうだ。

つまり、エイリアンが自分の陣地に容易に近づかないように迂回させるルートを導き出すアルゴリズムをつくるということだ。最短ルートを導きだすアルゴリズムは教科書にものっていたり、あるいはカーナビなどの最短ルート探索などでいろいろと実装されていて、最適解を求めるのは簡単なのだそうだが、逆に最長ルートをみつけるのは非常に莫大な計算量となって最適解を見つけることは不可能だそうだ。なので、アイデアを駆使してそれらしい解を見つけるアルゴリズムを実装したプログラムを作ることになる。プログラマーたちはこの日までに自分たちが寝ずにつくってきたプログラムを持ち寄って参加している。

決勝戦では1対1で同じゲーム(命題)に対して、同時に互いにプログラムを走らせて、結果がよかったものが勝者となる。決勝戦は8人のトーナメント戦で競われた。正直言えば、実際のバトルタイム(つまり、プログラムがゲームをしている時間)はゲームが画面に表示されているものの、高速に進んで何が起きているのかわからなかったし、音楽や解説がなければ、無味で地味な勝負だっただろうが、ルールを理解しているプログラマーたちが参加しているためか、不思議な盛り上がりを見せていた。

そして、800人以上の応募があったこの栄えある第1回大会の勝者となったのは東京大学大学院でシステム情報学を専攻して音声について研究している修士課程1年の吉里幸太さんだった。

こういったある難しい命題をプログラマーに解かせるプログラミングコンテストは「競技プログラミング」と言われるジャンルのものなんだそうだ。プログラミング技能だけじゃなくて数学的知識や論理的思考なんかが重要になってくる。米国ではヘルスケア分野で300万ドルの賞金を賭けたコンテストなんかも開催されいるし、Googlde Code JamやNetflix Prize(すでに継続は中止)なんかが知られている。また、TopCoderという競技プログラミングを競い合うサイトもある。TopCoderでは世界中の優秀なプログラマーその技能を競い合っていて、中でもすぐれたプログラマーはレッドコーダーと呼ばれる300人ほどの人たちだという。今回優勝した吉里さんもレッドコーダーだし、競技後にこういった背景を教えてくれた運営事務局のサポートをする慶應大学環境情報学部4年の高橋直大さんもレッドコーダーだそうだ。

最近は特に企業にとってエンジニアの需要が高まっているが、僕はこういったエンジニアが活躍する大会や人物がもっと表舞台になってもいいと思っている。それはスポーツ選手並の勝算賞賛を得てもいいはずだ。そのためにはもっと注目を集める大会やそこに登場して脚光を浴びる人のロールモデルが必要になってくるが、たぶんそんな時代もこれからやってくるのかもしれない(すでにプログラマーたちの間ではリスペクトされる人たちはたくさんいるのだが)。

コーディングできるプログラマーたちの重要性に気がついた日本の企業も多いから、これから競技プログラミングの大会も日本でも増えていくんだろう。日本にもプログラマーの時代がやっとやってくるね。

リクルートのMedia Technology Labで開催されたCODE VSの決勝戦の様子(写真は準決勝戦)