Posted by 山崎富美 / Developer Relations Team
[Google Code Jam とは、複雑なアルゴリズムの問題を限られた時間の中で解く能力を競う個人戦のプログラミングコンテストです。2011 年は、東京オフィスの Google エンジニアが知恵を絞り、 初めて英語以外の言語での Google Code Jam Japan 2011 を開催しました。たくさんの方にご参加頂きまして、まことにありがとうございました。Google Code Jam Japan チームのインタビュー記事をお楽しみください。なお、この記事は "Meet the Google Code Jam Japan Team!" を元に翻訳・再編集しています。-山崎]
Google Code Jam Japan はどうやって生まれたのですか?
Frank: 私は本社での Google Code Jam チームのメンバーでした。東京オフィスで働くことを決める同時に Google Code Jam Japan を行いたいというアイディアを思いつきました。本社で行なっていた Google Code Jam でも日本からの参加者が多かったため、東京オフィスで Google Code Jam Japan チームを作るとよいのではと考えました。
高橋: グローバルの Google Code Jam には既に多くの日本人の方が参加してくださっているのですが、コンテストの案内から内容までが全て英語なので敬遠してしまっている方も多いのではないだろうか、と思ったのが出発点です。
末松: 最初はエンジニアの Frank が Google Code Jam を日本でやったらどうだろうと提案しました。私もプログラミングコンテストで楽しんだ経験があるので、ぜひやりたいと話しました。
小西: 日本には多くの優秀なプログラマが存在しているはずなのですが、Google Code Jam などのプログラミングコンテストの世界では、まだまだ日本からの参加者が少ないように感じていました。その原因はコンテストに関する情報や、問題自身が英語で書かれているため、試しに挑戦してみようという人にとって敷居が高くなっているためではないかと考えました。
今回、日本語でのコンテストとして Code Jam Japan を行うことにしたのは、この敷居を取り払うことによってより多くのプログラマに興味を持ってもらえるはずだと思ったからです。
Google Code Jam Japan の準備にあたって大変だったことは何でしたか?
Frank: 問題自体を作ることでしたね。Google Code Jam では問題のクオリティーがとても高いので、サンプルソリューション、インプットジェネレーターなどを提供するのが大変でした。
高橋: 問題は日本人のスタッフはもちろん、US にいる Google Code Jam のコアチームとも共有しつつ作成していくので、日本語版と英語版の両方が作られていました。この 2 つはどんどん更新されていくのですが、そこで齟齬が生じないようにするのが大変でした。
末松: コンテストのシステムは当時英語にしか対応していませんでした。システムの多言語対応を 20% プロジェクトの限られた時間で行うのはチャレンジングでした。
小西: 問題の難易度調整に苦労しました。初めてコンテストに挑戦する方にも取り組みやすくプログラミングコンテストの楽しさを理解してもらう問題と、常連の方をも唸らせる斬新な問題、この両方の問題を取り入れ、コンテストを盛り上げるために 1 位と 2 位が点数で差がつくように、なおかつ全問解いて時間を持て余してしまう参加者が出ないようにと注意しながら問題を設定しました。実はコンテストの2週間前までチームの皆と喧々諤々のディスカッションを行い問題の入れ替えや調整を繰り返していました 。
準備を行う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 日に登録開始となる予定です。詳細は
こちらをご覧下さい。