[本記事は、Code Jam のチームメンバーである Igor Naverniouk が 4 月 18 日 に Google Developers Blog に投稿した 「Code Jam's Sprint to Google I/O」という記事を元に、翻訳したものです。詳しくは元記事をご覧ください。 - 山崎]

Google Code Jam ã®äºˆé¸ã¯ 4 月 13 日に開始し、ニューヨークで開催する決勝に残れる 25 人を目指して、世界中から 36,000 名を超えるプログラマーの皆さんの応募がありました。今年の Code Jam の参加登録は既にクローズしていますが、来年を待たず、新しいチャレンジをする方法があります。



それが、4 月 19 日(木)午前 7:00 PDT / 14:00 UTC(日本時間では 19 日 23:00)より実施する、Code Jam Sprint です。このチャレンジを解いた最初の 100 人の方は、たった 20 分で売り切れてしまった今年の Google I/O のチケットを購入する機会を得ることができます。

Code Jam Sprint ã«å‚加するには、Code Jam のベテランである必要はありませんが、事前登録が必要です。チャレンジが始まる前にウォームアップをしたい場合は、Code Jam のクイックスタートガイドと練習問題をご覧ください。

チャレンジの詳細は、4 月 19 日(木)午前 7:00 PDT / 14:00 UTC(日本時間では 19 日 23:00)に Google Developers のページにポストされます。お見逃しなく!


準備を行うGoogle Code Jam Japan team

Google Code Jam Japan team に参加することによって学んだことは何ですか?

高橋: 私は今までも個人的にいくつかプログラミングコンテストを開催したことがあったのですが、Google Code Jam のように何千人もの人が一度に参加するようなコンテストは今回が初めてでした。コンテストは些細なミスやバグがあっただけで台無しになってしまいますから、そういった事態が起こらないように細心の注意を払ってプロジェクト運営を進めたり、コンテストシステムの開発を行ったりすることは、とても良い経験になりました。
末松: コンテストの最中に運営側の問題が発生したのですが、参加者のみなさんにとって不公平なことが起きないように気をつけながらチームメンバーが問題に対処している様子を間近で見て、勉強になりました。

Google Code Jam Japan でもっとも思い出に残る出来事は?

Frank: チームと共に活動し、ポイントシステムを考えたり、長時間のディスカッションを続けたりしたのが思い出に残っています。とても楽しかったです。
高橋: コンテストシステムの日本語化が一段落ついたところで、バグの洗い出しのために社内でミニコンテストを開いたんです。そのコンテストは問題を解くのではなく、コンテストシステムのバグを探し、見つけたバグの数を得点として競うというものです。上位の数名には景品が贈られるのですが、バグが少なければ開発者の私たちが景品を貰えるということになり、開発にも気合が入りました。しかしその甲斐なく、散々な結果だったんですけどね。
末松: チームを率いていた Frank への感謝をこめて、問題作成チームはこっそりと全ての問題文に "フランク" という人物を登場させました。Frank は日本語が得意ではないので、ばれないだろうと考えたのです。でも、コンテストの決勝戦の朝オフィスに着いた時には登場人物が "パスカル" に書き換えられていました。前日に気づいた Frank がこっそり書き換えていたのです。(注:末松のあだなはパスカルです)


Google Code Jam Japan ãƒãƒ¼ãƒ ã®ãƒ¡ãƒ³ãƒãƒ¼é”
 (左から): Frank Chu, æœ«æ¾ 宏一高橋 周平

Google Code Jam Japan é–‹å‚¬ã«ã‚たって心配なことはありましたか?

Frank: 初めての Google Code Jam Japan だったので参加者がどれくらい集まるかが分からなかったので、すこし不安でした。結果的には大人数の日本の方々に Google Code Jam Japan ã«å‚加して頂きました!
高橋: Google Code Jam を英語以外で開催するのは初めてだったので、コンテストシステムは一から国際化対応をする必要がありました。これが意外と大変で、本番までに間に合うかが心配でした。
末松: 充分な人数の参加者が集まるのかどうか、また、参加者が集まりすぎてシステムが耐えられなくならないかが心配でした。結果的には 2,000 人近い方に登録していただき、人数に関する問題は発生しませんでした。
小西: 今回は初めてコンテストに参加する方が多いだろうということで、参加したいけれどどうしたらよいのかわからないという人が出るだろうと予想されました。これに対処するためマニュアルとコンテストサーバをすべて日本語化し、日本語の練習問題を用意することにしました。また、初参加の方とベテランの方で問題文の解釈の仕方にズレが出ないように、問題文が暗黙の仮定を置いていないかなどを特に丁寧にチェックしました。

今後の開催にあたって、変えていきたいことはありますか?

高橋: 今回の Google Code Jam Japan は、グローバルの Google Code Jam に元々参加してくださっていた方々はもちろん、初めての方にもたくさん参加して頂けました。今後ももっと沢山の人にプログラミングコンテストを楽しんでもらう機会を提供していきたいです。
末松: 中学生・高校生に向けたコンテストには意味があるのではないかと思っています。コンピュータ科学やプログラミングの楽しさを若いうちに知ってもらいたいからです。
小西: 問題の背景など、深く踏み込んだ解説の機会を設けられればいいなと考えています。
何が問題を興味深くしているのかや、問題に対する複数の解法の存在、どのように考えて問題の解法を思いつくのかや、実際にコンテストで使われたアルゴリズムが日常使っているアプリケーションで使われていることを説明できれば、アルゴリズムについて考えることの楽しさを共有できる人がもっと増えると信じています。

あなたにとって Google Code Jam Japan とは?

Frank: 私は大学時代に実際に Google Code Jam ã«å‚加しました。その結果、様々な方とお会いし、お話する機会があり、さらに、プログラミングに興味を持っている人たちと話もたくさん出来、貴重な経験をすることが出来ました。その貴重な経験を与えてくれたコミュニティーに恩返しとしてこれからも Google Code Jam ã‚’続けたいと思います。
高橋: Google Code Jam は私の人生を変えたコンテストです。私は学生時代に Google Code Jam に参加していて、2006 年には Google ニューヨークオフィスで開かれた決勝大会に出場したことがあります。単身で海外に渡るのは初めてで緊張しましたが、初めて Google のオフィスに入り、その自由な文化に触れ、他では得難い貴重な経験をすることが出来ました。今、私が Google にいるのは、その時の経験があってこそだと思っています。今は Google Code Jam を開催する側となり、参加する方々に私がかつて得たような素敵な経験を提供することができればと思います。
末松: Google Code Jam を含めたプログラミングコンテストは、他の参加者とつながりを持って競い合いながら自分のアルゴリズムに関する知識を身につけることができます。今までは参加する側でしたが、場を提供する側になれることを嬉しく思っています。
小西: 日本中の賢いプログラマ達同士が一堂に会するお祭りです。

Google Code Jam Japan 2011 予選スタッフ

Problem A. カードシャッフル 出題: 松本 宜丈, 吉野 剛史, テスト: 泉 祐介
Problem B. 最高のコーヒー 出題: Frank Chu, 泉 祐介, テスト: 吉野 剛史
Problem C. ビット数 出題: 山内 暁, 牟田 秀俊, テスト: 牟田 秀俊
解答作成、その他準備: 泉 祐介, 北村 裕太, 小西 祐介, 吉野 剛史, 三廻部 大, 牟田 秀俊, Frank Chu, Tomek Czajka
アプリケーション国際化対応: 末松 宏一, 高橋 周平

Google Code Jam Japan 2011 決勝スタッフ

Problem A. アンテナ修復 出題: 松本 宜丈, 吉野 剛史, テスト: 北村 裕太
Problem B. バクテリアの増殖 出題: 山内 暁, 北村 裕太, テスト: 吉野 剛史
Problem C. ワイルドカード 出題: 松本 宜丈, テスト: 小西 祐介
Problem D. クローゼットルーム 出題: 小西 祐介, 牟田 秀俊, テスト: 小西 祐介
Problem E. 無限の庭園 出題: 野田 久順, 菅原 悠, テスト: 川中 真耶
解答作成、その他準備: 泉 祐介, 川中 真耶, 北村 裕太, 小西 祐介, 菅原 悠, 並木 洋平, 吉野 剛史, 松本 宜丈, 三廻部 大, 牟田 秀俊, 山内 暁, Frank Chu
アプリケーション国際化対応: 末松 宏一, 高橋 周平

※ 次回のグローバルな Google Code Jam 2012 は、米国時間 3 月 13 日に登録開始となる予定です。詳細はこちらをご覧下さい。


山崎: Google Code Jam Japan 2011 の開催がアナウンスされましたね。改めて Google Code Jam について教えてください。

yukoc: Google Code Jam は複雑なアルゴリズムの問題を限られた時間の中で解く能力を競う個人戦のプログラミングコンテストです。世界大会は 2003 年から行われていて、世界中から参加があります。学生、社会人問わず参加ができ、世界大会の最終ラウンドには、開催国の Google のオフィスにさまざまな国からプログラマーが集まります。

2011 年は世界大会に先駆け特別に Code Jam Japan を用意しました。

山崎: 過去にはどのような問題が出題されたのですか?

yuizumi: 様々な分野や難易度の問題が出題されています。私が選手として参加した 2008 年の大会では、「2 駅間を結ぶ鉄道路線の時刻表が与えられる。その時刻表どおりに運行するには何台の列車が必要になるか。」(Qualifcation Round)、「教室で試験をするにあたり、カンニング防止のため、ある生徒の両隣とそのひとつ前の席には別の生徒が座らないようにしたい。また、教室の席の一部は壊れていて使えない。最大で何人までその教室で試験を受けさせることができるか。」(Online Round 3)などがありました。

山崎: 参加者はどのくらいいるものなのですか?

ykonishi: 2010 年の世界大会には、世界中から 2 万人以上、日本からは 638 人が参加しました。予選ラウンドを日本からは 485 人が突破し、アイルランドのダブリンで行われた最終ラウンドには 25 人中なんと 2 人の日本代表が勝ち残りました。

Code Jam Japan は予選ラウンドと最終ラウンドともに日本時間の週末午後にオンラインで行われるので、より多くの方に参加していただけるのではと期待しています。

山崎: Code Jam Japan は Google Japan 主催、日本語での出題で、日本在住の方が対象だと伺いました。

dmikurube: はい。ルールも日本語で表記しており、大会に関する質問も日本語で受け付けます。今までの Google Code Jam では「英語を読むのが面倒くさいなあ」「難しそうだなあ」と感じていた方も、今回の Code Jam Japan は気軽に参加していただけるようになっています。

山崎: 今のうちに準備したい方のために役に立つサイトはありますか?

pascal: クイックスタートガイド や過去問 (英語) は参考になると思いますのでぜひ読んでみてください。また Google との関係はありませんが、TopCoder の Single Round Match (例)も問題の方向性としては似ていると思います。

山崎: Code Jam Japan 2011 の準備にあたっての裏話などあれば教えてください。

ykonishi/frank: Google Japan のエンジニアの中には Google 入社前に ACM ICPC や TopCoder、そしてもちろん Google Code Jam 世界大会などのプログラミングコンテストに参加していた者も多数おります。これらのコンテストは非常に楽しいものですが、日本の優秀なプログラマーの中にはこれらの大会が英語で行われているために参加しないという方が多いということも知っています。そこで、このたび Code Jam チームと共に日本語のコンテストを開催することにしたのです。世界大会と同様、日本大会は Google の社員が問題からルールまですべてを手がけました。社内のカフェで夕飯を囲みながら T シャツのデザインや参加規約について話したり、加点方式を決めるのに 2 時間議論したりしました。


(Code Jam Japan 2011 の準備風景)

山崎: ズバリ勝つための秘訣を教えてください。

nya: 計画的に問題を解くことですね。コンテストは 1 ラウンドあたり数時間と限られた時間で行われるので、必ずしもすべての問題に手をつけられるとは限りません。ですので、たとえばある問題の解法が思いつかないからといって、その問題にこだわって 1 時間考え込んでしまうと、他に解ける問題があったとしてもチャンスを逃してしまうかもしれません。ぜひ一度すべての問題に目を通して、自分の得意な分野の問題から解いていってください。

山崎: ありがとうございました。開催概要は以下のとおりです。皆さん、ぜひ参加してみてください!

●開催概要●


予選 3 月 19 日(土)延期予定
決勝 3 月 26 日(土)延期予定
(予選・決勝ともにオンラインで行われます)
賞品: 賞金と特製 T シャツ(T シャツの写真はこちら : 左から pascal、yukoc、nya がモデルをしています)

参加登録: http://code.google.com/codejam/japan
Twitter アカウント: @GoogleCodeJamJp