連載
» 2012年02月14日 00時00分 UPDATE

IT資格Watch!(2):エンジニアを熱狂させたグーグル「DevQuiz」は、日本生まれ世界育ち (1/2)

[星暁雄,@IT]

今回紹介する資格:グーグル「DevQuiz」

 グーグルが主催するイベント「Google Developer Day」(以下、GDD)は、技術イベントの中でも特に注目を集めるものの1つである。

 注目を集める理由はさまざまあるだろうが、その1つとして「イベント参加のための選抜試験」が挙げられるだろう。選抜試験の名前は「DevQuiz」。グーグルのエンジニアが作った技術に関するクイズをオンラインで解き、一定基準を満たした人が参加資格を得られる、というものだ。

 2010年からスタートしたDevQuizは、「GDD 2010 Japan」「GDD 2011 Japan」と、回数を重ねるごとに参加者が増加した。特に、GDD 2011 Japanでは高得点獲得者が相次ぎ、激戦が繰り広げられた。僅差で参加資格を逃し、涙を飲んだエンジニアたちの無念あふれるツイートをTwitterで何回も見掛けた記憶がある。

 DevQuizは、2012年1月現在、4カ国(日本、ブラジル、アルゼンチン、オーストラリア)での開催実績がある。

 さて、このDevQuiz、実は日本発祥であることをご存じだろうか? グローバル規模で拡大しているDevQuizは、「クイズマニア」な日本人エンジニアたちが生んだ偶然の産物だった。

 今回は、DevQuizの生みの親であるグーグルテクニカルプログラムマネージャー 石原直樹さんとソフトウェアエンジニア 菅原悠さんに取材し、DevQuizが生まれた経緯を聞いた。

※特定分野の技術認定とは性格が異なるものの、ITイベントの参加資格を得る試験という意味で、「資格Watch」で扱うことにした。

「コードを1000行以上書いたことがありますか?」

 「DevQuizはリベンジの成果なんですよ。最初に作ったものが、あまりにエンジニアたちから不評だったので」

石原直樹さん 石原直樹さん

 DevQuizの発案者である石原さんは、意外な事実を語る。

 DevQuizの発祥は2009年、「GDD 2009 Japan」の準備期間までさかのぼる。このイベントでグーグルは、Android端末(「GDD Phone」と呼ばれている)を参加者全員に配布する、という大盤振る舞いをした。当時はまだ、日本国内ではAndroid端末が市販されていなかった。配布の目的はAndroidエンジニアを増やすことだったのだが、「高額な端末を入手できる」という期待から、エンジニアではない参加希望者が増えるのではないか、という懸念が出てきた。

 「イベントの参加者が、本当にエンジニアであることを確かめたかったんです。先着順では、それが分からない」

 そこで、GDD 2009 Japanでは、参加者がエンジニアかどうかを判断するためのアンケートを作ることにした。

 「とにかく時間がありませんでした。その中で、“エンジニアと非エンジニアを区別する”質問を考えなくてはならない。そこで、『コードを1000行以上書いたことがありますか』という質問を付けたのですが、これがエンジニアたちにとても不評で……。自分としてはこれがショックで、いつかリベンジをしたい、と思っていました」

 当時、「クイズ」というアイデアが固まっていたわけではなく、漠然とではあるが「別の形でリベンジを」という思いがあったという。

自分たちも参加者も楽しめる方法としての「クイズ」

 リベンジの機会は、2010年3月開催の「DevFest」準備期間で訪れた。

 それまでのイベントは、申し込みの先着順に登録を受け付け、満員になると受け付けを中止していた。一般的な方法ではある。しかし、石原さんは先着順の受付が果たして適切な方法なのか、疑問を持っていた。

 技術イベントにはエンジニアに来てほしいという思い、そしてリベンジしたいという思いから、石原さんは「クイズ」という方法を選んだ。

 「クイズなら、公平かつ選抜に落ちた人でも楽しめます。それに、自分たち自身も楽しめると思ったのです」

クイズ世界大会出場者が社内にいた

菅原悠さん 菅原悠さん

 そこで、石原さんはアイデアを社内のエンジニアに相談した。すると、なんと社内にクイズマニアがいることが分かった。しかもただのマニアではない。世界大会経験者である。

 菅原さんは、東京大学大学院に在学中、米国の学会ACMが開催するプログラムコンテスト「ACM International Collegiate Programming Contest」(ICPC)に出場し、世界で19位タイとなった実績を持っていた。菅原さんはその他にも、最強のプログラミング言語を競うICFPプログラミングコンテストにも出場している。菅原さんは、日本のICPC参加者のために、模擬戦の問題作成とジャッジを務めているほどの強者であった。

 初回のDevQuizは、主に石原さんと菅原さんが作成した。前出のICFPプログラミングコンテストの他、「Google Code Jam」「TopCoder」などを研究しながら、DevQuizの企画は進められていった。

 菅原さん以外にも、プログラミングコンテスト世界大会の参加者や優勝経験者が、グーグル社内にはいた。さらに、コンテストの運営経験がある社員がいたことも助けとなった。

 「世界大会の経験者たちに相談すると、ものすごく積極的になってくれて、問題を考えるのが本当に楽しかったです。上級者向けの問題は、彼らが考えてくれました。最初のDevQuizは、試行錯誤しながら、2カ月かけて作りました」(石原氏)

実際にどんな問題が出たのか?

 DevQuizはプログラミングコンテストを参考に作られているものの、性格上はプログラミングコンテストとは違いがある。

 菅原さんは、DevQuizの特徴を次のように語る。「普通のプログラミングコンテストだとまず出ないような問題が、DevQuizでは出ます。例えば、『OAuth認証をしてください』という問題は、エンジニアであれば仕様を読めば書けます。こういう種類の問題はコンテストでは出ません」

●問題例その1「神経衰弱」

問題文 問題文

ルール

 シンプルは神経衰弱ゲームです。カードはクリックすることでめくることができます。全64セットを解くことで問題クリアとなります。

ヒント

 枚目のカードを開いてその色を取得するChrome Extensionのサンプルをダウンロードできます(もちろん、Chrome Extension以外の方法を使って解いても構いません)

注意! このように解いてはいけません 注意! このように解いてはいけません

出題者からの解説

「ごく普通の神経衰弱ゲームです。全部で64セットをクリアする必要があります。初めは手動でも解けるものの、後半は到底、手で解けないような枚数のカードが出てきます。何らかの方法でブラウザ上の操作を自動化するのが解答への近道です。

 参加者の多くは、ヒントにある Chrome Extension を使って解いていました。その他、firebug、bookmarkletなどのブラウザの機能を使って解いた人、ブラウザとの通信を解析して解いた人などがいました」

●問題例その2「スライドパズル」

 幅が3マスから6マス、高さが3マスから6マスのボードが与えられます。各マスは、パネルが置かれているか、壁があるか、空白であるかのいずれかです。パネルには1から9、あるいはAからZのいずれかの文字が書いてあり、同じ文字の書かれたパネルは存在しません。壁は0個以上存在し、空白のマスはただ1つだけ存在します。例えば、次のようなボードが与えられます。ここで、壁は=で、空白は0で表されています。

40=

215

=86

 空白は、上下左右のマスのパネルと入れ替えることができます。上のマスのパネルと入れ替えることをUとよび、同様に、下左右のマスのパネルと入れ替えることをそれぞれD、L、Rと呼ぶものとします。壁を空白やパネルと入れ替えることはできません。

「パズルを解く」というのは、与えられたボードの各マスを操作して、ゴール状態に持っていくことです。

「ゴール状態」とは、上の行から各行順番に、左から右に1、2、3……9、A……Zという順にパネルが並び、最も右下のマスに空白が配置された状態のことです。壁のあるマスに対応するパネルは存在しません。例えば、左上のマスが壁であれば、ボード上に1のパネルは存在しません。

 例えば、ボードのパズルを解くと以下のようになります。

r5devquiz02.jpg

 今、使うことができるL、R、U、Dそれぞれの総数が与えられます。この総数は全パズルで共有されています。例えばあるパズルを解くためにLを使い切ってしまった場合、他のパズルではLを使うことはできません。この総数を超えないようにしながら、なるべくたくさんのパズルを解いてください。

 最初のDevQuizへの反響は、かなり良かったという。

 エンジニアの間には「腕試しを楽しむ」文化があるせいか、あえて難易度が高いやり方で問題を解く「お遊び」をする参加者がかなりいたようだ。「変わった言語を使って解いたり、Androidアプリの配布パッケージを逆コンパイルして解いたり、いろいろな人がいて、見ている方も楽しいです」と、菅原さんは顔をほころばせる。

 むしろ「もっと難しい問題を」という意見がかなりあったようで、DevQuizの難易度は年々上がる傾向にある。もちろん、参加者の数も増えているため、エンジニアが技術を駆使して楽しむ、一種のお祭り状態になっているといえよう。

 「イベントには能力のあるエンジニアが来てほしい」と、石原さんは語る。だが、「選別主義ではない」とも強調する。

 「あくまでエンジニアが楽しんで作った問題を、楽しみながら解いてほしい。ソーシャルメディアで流行っていたので何の気なしにDevQuizに挑戦してみたら、とても面白かったからイベントに来た、という人もいました。私たちとしては、こういう参加スタイルも大歓迎です」

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。