週刊アスキー

  • Facebookアイコン
  • Twitterアイコン
  • RSSフィード

日米対抗プログラミングコンテストがめちゃくちゃ熱かった!

Recruit Programming Contest

1. キヤノン元社長御手洗肇
2. Dropbox創業者ドリュー・ヒューストン
3. 「2045年問題」のレイ・カーツワイル

 3人の共通点は、マサチューセッツ工科大学(MIT)出身ということです。MITは1865年に設置された、米国東海岸はボストンの私立大学。ハーバードと並ぶ世界有数のエリート大学です。

 MIT卒業生からはとりわけシリコンバレーへの人材輩出が多く「2万5800もの会社を設立し、300万もの雇用を生み出している」と言われるほど。すごすぎて逆によくわからないと思いました。

Recruit Programming Contest

↑ボストンは古くからアメリカ有数の大学都市。

Recruit Programming Contest

↑MITもあればハーバード大学もあります。


 2月11日、そんなMITでプログラム『Recruit Programming Contest』が開催されました。リクルートホールディングスと子会社である米インディードの共催イベントです。

 インディードは月間ユーザーが1億人超という大手求人検索サイト。国土の広い米国には日本のようなハロワ文化がなく、代わりにインディードのような検索サービスが伸びているそうです。

Recruit Programming Contest

↑求人検索インディード。日本でも展開中です。


 今回のコンテストはアルゴリズム部門、いわばプログラムの基礎体力を競う大会。制限時間内にどれだけの問題が解けるか争います。昨年12月、東京で開催されたコンテストの日本人優秀者22名を集め、日米頂上決戦を開くというわけです。出場者は東京大学や京都大学の大学生・大学院生など20代の若い学生たち。

 しかし日本でプログラマというと、受託開発でデスマに苦しむ編集者のような姿が浮かんでしまいます。エンジニアの評価が低いという話も目にしますが、実際コーダー、アルゴリズマーとしての実力はどうなのか。リクルートさんにお願いし、対決に立ち合わせてもらえることになりました。


■少なくとも1000問は解いている

 が、出発予定日の2月10日、東京では45年ぶりの豪雪で交通機関が完全マヒ。成田空港までの陸路は断たれ、「飛ぶの? ねえ飛ぶの?」と言いながら、東京・上野で8時間の待機状態です。

 京成上野駅で電車待ちの列に並んでいたとき、「電車が動く時間、行列の長さからフェルミ推定で分かるんじゃないの」というプロコン(プログラミングコンテスト)らしい会話は聞こえてきました。

 結局東京で夜を明かし、どうにか交通網が回復した翌日、3時間遅れのJAL直通便で東海岸へ。約13時間のフライトを経て、到着したボストンは気温マイナス11℃です。冷凍庫でしょうか。

 息を吸うとピリピリするくらいの真冬っぷりで、市の中心部を流れるチャールズ河は凍結。きれいな街並みが霊界のように向こう岸に見えました。

Recruit Programming Contest

↑凍結したチャールズ河。ハヤカワSFか何か?

Recruit Programming Contest

↑除雪がとてもざっくりした感じでよかったです。 


 軟弱な記者が手をこすっている中、出場者たちが楽しそうにおしゃべりする姿が印象的でした。

 問題の監修にあたっている、オンラインジャッジシステムを運営するアットコーダー(関連リンク)の高橋直大さん(@chokudai)によれば、みんなオンラインのプロコンで友達同士なんだそう。

「どれくらいのレベルの方が集まるんですか?」
「みんな少なくとも1000問は解いてますね」

 1000問って。ゲームのプレイ時間みたいに言われましたが普通なんでしょうかそれは。

 聞けば近年プロコン業界(?)では日本人コーダー活躍していると言います。登録人数60万人以上、世界最大級のオンラインプロコン・トップコーダー(関連リンク)も、ロシア・中国・ポーランドの3強に日本が食いこんでいるそうなんです。

Recruit Programming Contest

↑世界最大級オンラインプロコン、トップコーダー。


「国別ランキングでは日本が2位なんです。ロシア、日本、中国、ポーランド、ウクライナの5強で米国はずっと下。インドが強いって話も聞きますが、ランキングは17位なんですよ」(高橋さん)

 フィギュアスケートで大技4回転ジャンプが当たり前になったように、プロコンも求められる知識レベルがインフレしていく世界。そんな中でも、優秀な成績をおさめた「レッドコーダー」称号を持つ日本人の数はインドの10倍だといいます。

 すごいじゃないですか日本。なぜか比較対象にしてしまったインドの方々すいません。
 

■突然のピザにUSAパワーを感じる

 これは勝ったも同然だとタカをくくり、記者がレンガ作りの大学通りを歩いたり、生ガキを食べたり、ボストンチャウダーを食べたりしているうちに勝負のときが近いてきました。

Recruit Programming Contest

↑大学通り。きれいな作りのお店が並びます。

Recruit Programming Contest

↑生ガキもボストン名物。トロッと美味しいです。


 出場者とともに荘厳な正門があるロジャーズ・ビルディングを入り、勝負の舞台である小ぶりな教室に移りました。

Recruit Programming Contest

↑勝負の舞台になったロジャーズ・ビルディング。

Recruit Programming Contest

↑小さな教室にぎっちり出場者が集まりました。


 教室の左がアメリカ、右が日本。それぞれのグループに分かれ、愛用のパソコンを開きます。記者はMacBook Air利用者ですが、Macユーザーは55人中10人だけで、ほとんどが日本人でした。

Recruit Programming Contest

↑Macユーザーは10人でした。

Recruit Programming Contest

↑ものすごいステッカーチューン。Macですよね。


 使用言語もさまざまです。PythonやRubyユーザーもいましたが、ほとんどC++かJavaです。Pythonのような言語があまり使われていない理由は趣味ではなく、処理速度に問題があるからだそうです。

「Pythonはインタープリタ言語なので実行速度が遅いんです。Pythonでは時間内に『解けない』問題が出てきてしまうことがあります」(出場者)

 当然ですが合理的な理由があるんですね。記者は過去モンティ・パイソンが好きだという理由だけでPythonを学び、挫折した経験があります。

Recruit Programming Contest

↑Python利用者は希少でした。記者は好きです。


 そして準備が終わり、競技開始15分前を迎えたときのこと。突如25枚を超える大量のピザが運び込まれます。そしてMITの学生たちはすごい勢いで食べはじめます。ものすごいUSAを感じます。日本人が勝てるのかとても不安になりました。

Recruit Programming Contest

↑突然大量のピザが運び込まれました。

Recruit Programming Contest

↑めっちゃ食べます。


 ピザが落ち着いたところで問題用紙が配られ、あらためてルールが説明されます。課題は10問、勝負は3時間。正答数が同じ場合は、より速く解けた人の勝利です。間違えてもペナルティはなし。

 優勝賞金は3000ドル(約30万円)。賞品はグーグルのChromeBook、Nexusタブレット、あと打ちやすそうなキーボードです。出場者の一人が「どれがいちばん高いのかな?」と言っていて、冷静な視点に好感が持てました。

 すでにクラウチングスタートのようにキーボードに手を置きながら説明を聞いている人もいて、問題を解くわけではない記者まで緊張してきます。


簡単な問題は2分で解ける

「開始で~~す」

 直前までの緊張感とは裏腹に、とてもゆるい合図で競技が開始しました。教室にタタタタタ……と静かなキーボードの打鍵音が響きはじめます。

Recruit Programming Contest

↑静かな教室内に響き渡る美しい打鍵音。

Recruit Programming Contest

↑回答者にはTシャツのプレゼント。投げます。


 高橋さんが小声で「勝負は8問目から……そこまでにどれだけ時間をとっておけるかが勝負……」と教えてくれました。深い世界です。

 問題を見せてもらうと完全に数学の世界です。答えは当然のことながら、問題の意味がすでに把握できません。高橋さんは「1問目は2分で解けますね」と言っていました。意味がわかりません。

 問題文としては「I'm Ninja」が大好きです。こんなことばかり言っているからPythonでもRubyでも挫折したんだなと思いました。

Recruit Programming Contest

↑アイエエエエ!ニンジャ!?ニンジャナンデ!?

Recruit Programming Contest

↑こちらが2分で解けると言われた問題です。


 30分が経過し、教室のホワイトボードに映しだされたランキングでは、トップ10のうち7人が日本人。しかし1位はMITのリチャードさんです。

 それでも、トップ5人が5問正解、それ以下はつばぜり合いという状況で、順位は次々に変わります。マラソンのスタート直後という感じで、みんなのキーボードにも勢いが感じられます。

 会場の雰囲気が変わってきたのは、90分が経過したあたり。上位9人が7問正解で止まり、ぴたりとランキングが動かなくなってしまいました。

 高橋さんが教えてくれたところによれば、6、9、10問目の3問は最難関。特に10問目は高橋さんも「解くのに3日かかりました」というほど。それは誰にも解けないんじゃないでしょうか。

Recruit Programming Contest

↑日本からの出場者には女性コーダーもいます。

Recruit Programming Contest

↑床を使う出場者も(ちょっと机が狭かった)。


 100分が経過したときのこと、1位を走っていたリチャードさんは学生ではなく「普段プログラムコンテストを運営する側の教授だった」という衝撃の事実が判明します。教授は「試しに解いてみたかったから」という旨のコメントを残して去り、ランキングからも姿を消しました。謎です。

 リチャード教授が消えたところで、競争は再加熱。日本人がトップに立ったかと思えば、すぐMITが抜き、それを他の日本人が追いかけます。

 それでもしばらくすると「うーん」とうなって頭をかいたり、天をあおいでため息をついたり、出場者たちの悩む姿が目立つようになりました。


■komakiさん優勝なるか

「このくらいの時間になってくると、上位の人たちはキーボードを打つ時間より、考える時間のほうが長くなってきますね」(高橋さん)

 高橋さんの言うとおり、キーボードの音もあまり聞こえなくなり、問題用紙をめくる音の方がよく聞こえるようになります。パソコンをカバンにしまってしまったり、ピザを食べながら教室を出ていってしまう人もあらわれはじめました。

Recruit Programming Contest

↑だんだんキーボードから指を離す人が出てきます。

Recruit Programming Contest

↑疲れもたまり、目をこする人も増えてきました。


 そして残り1時間。8問正解者は2人で、1位が米国(MIT)、2位が日本の一騎打ちとなりました。「1時間切っちゃったよ、日本勢大丈夫なの……」ランキングを見る高橋さんも心配そうです。

 残り45分。さらに2人が8問に正解しましたが、上位2名の順位は変わらず。このままではMITの優勝が決まってしまう――そう思った次の瞬間、日本のkomakiさんが9問目をクリアしました。

 komakiさんが残していたのは6問目と10問目。6問目は他の出場者も解いていますが、9問目が解けたのは初めてです。このままスピーディーに6問目が解ければkomakiさんの優勝です。

 うおおおおおおー!いける!いけるよkomakiさん!!いけるよーー!マジいけるよーー!!超マジいけるよー!いけるよいけるいけるよー!!

 記者の修造スイッチが入ったところで残り時間30分、ランキングの更新がストップ。結果はいよいよ最終発表を待つばかりとなりました。


■勝敗をわずか120秒が分ける

「終わりで~~す」

 開始時と同様のゆるい合図により、ついに戦いが終わります。見ているだけの記者も緊張し、いまだに興奮しっぱなし。勝負を終えた出場者たちはピザを食べながら、お互いの健闘をたたえます。

Recruit Programming Contest

↑競技終了。みんないい感じに疲れた表情です。


 そしていよいよ優勝者の発表。会場全体が緊張し、静けさの中にチーズピザの匂いが漂います。

「優勝者は……MITのワンさん!」

 おおおおおっ、とどよめく会場。記者の口からも「アウフェッ!?」という謎の声が漏れました。じゃあkomakiさんは? と見ると、2位です!

 そして1位と2位との差は……わずか2分!! 惜しい!惜しい!惜しい!惜しいよ!惜しすぎるよkomakiさん!komakiさん!

 アジア系のワンさんは日本が好きで、現在日本語の勉強中。終了3分前にパソコンをしまい、日本語のテキストを開いていたのが印象的でした。これが強者の余裕というものなのでしょうか。

Recruit Programming Contest

↑終了3分前のワンさん。日本語の勉強を開始。


 惜しかったのは、教室の階段にしゃがみこんでキーボードを打っていた彼。komakiさんです。

「2つの数字を逆に書いていたことに気づかず、簡単な問題に時間がかかってしまったのが原因ですね。悔しいです……」

 komakiさんは東京大学修士1年生で、本格的にプログラミングを始めたのは4年前。コードに出会ったきっかけは「単位を取るために受けた授業でたまたま習ったから」だそうです。それで日米対抗トップクラスって化け物でしょうか。

Recruit Programming Contest

↑1位のワンさん(右)、2位のkomakiさん(中央)、3位のkycさん(左)。MIT、日本、MITの順。


 なお、コンテストの全順位はこちら(関連リンク)から。成績上位トップ10のうち7人は日本人という結果になりました。やはりアベレージが高いです。

 プログラムコンテストそのものが楽しかったのが予想外の喜びでした。一応プログラムをかじったくせに何が起きているのかまったくわからないのですが、それでもランキングの動きを見ているだけで胸が熱くなってきます。楽しかった。
 

【Column】日本にプログラムコンテストを招致しましょう

 いまIT企業はプロコンブームだといいます。GoogleやFacebookは自社のコンテストを開催。応募者の実力がとてもわかりやすいため、Googleの履歴書にはトップコーダーのレーティングを書く欄さえあるといいます。

 米国だけでなく、国内ではGREEやNHN、サイバーエージェントなど、就職活動にプログラムコンテストを採用している企業は多々あります。

 プロコンで鍛えられるアルゴリズムは、応用的な実践が必要になったときに求められる基礎体力。ただウェブページを作るのではなく、毎日数千万人規模の利用者が使うウェブサービスを作るとなると、限界を超える発想力が必要となります。

 Google、Facebook、Appleなど世界を席巻している米国企業が優秀な日本人コーダーたちに目をつけていることは間違いないようで、今回参加の日本人の中にも「以前Googleさんに声をかけていただいたが返事は保留中」という方がいました。

 しかし、記者のような文系勢にとってプロコンは一大エンターテインメント。アスリートのように熱いバトルが繰り広げられているとは知らず、もっと知られていいのにと思ってしまいました。

「知られていないことは悪いことではないと思うんですけどね」と高橋直大さんは言います。

「カーリングも話題になるまで誰も知らなかったじゃないですか。それと似たようなもので、知る人ぞ知るスポーツで別にいいんじゃないかと思います。とはいえぼくもプロコンの会社を運営しているので、もっといろんな人に参加してほしいとは思うんですけど」(高橋さん)

 思うんですが、2020年に東京でプログラムコンテストの世界大会を開催されてはいかがでしょう。企業も喜び参加者も喜び観客も喜ぶウィンウィンな大会になることは間違いないのではないでしょうか。もし都知事がこちらの記事をお読みでしたらぜひ前向きにご検討いただければと思います。

■関連サイト
インディード
アットコーダー
トップコーダー
リクルートプログラミングコンテストについて
リクルートホールディングス Web採用サイト

この記事をシェアしよう

週刊アスキーの最新情報を購読しよう