はじめに
Node.jsは「サーバサイド JavaScript」環境として、近年のブラウザ上で動作するクライアントサイドJavaScriptの盛り上がりに合わせて、急速に注目を集めています。日本においても、Node.js日本ユーザグループの登録者は、すでに800人を超えており、さまざまなブログや技術系サイトで取り上げられたり、雑誌に記事が掲載されたり、実際のサービスで利用が開始されるなど、大きな盛り上がりを見せています。
第3回目の本記事では、Node Knockoutというなんとも素晴らしいハッカソンを紹介したいと思います。
Node Knockoutとは?
Node Knockoutとは、Node.jsを使って48時間でアプリケーションを作ることで競うハッカソンです。去年から毎年開催されており、今年の8月に二度目が開催されました。今年はNode.jsが大きく注目されていることもあり、294ものチームが参加し、参加者の数は720人にもなりました。
なぜ素晴らしいのか?
Node Knockoutが素晴らしい理由は幾つかありますが、二日間Node.jsを使って好きなコードを書ける、というのは大きいでしょう。それに加え、作ったアプリケーションをデプロイする環境は提供され、他のチームと集まってコーディングしたい場合は世界各国に集まれる場所が提供されており、有名な企業に務める175名もの審査員に自分の作ったアプリケーションを審査してもらえるのです。このような恵まれたハッカソンは見逃すわけにはいきません。
今年は、日本人のチームも10チームほどありました。Node.js日本ユーザグループも、東京で参加者が集まれる場所を用意しようという主旨のもと、東京Campを開催し、5チーム程が集まりました。
ルール
ハッカソンと言えど、優勝したチームには賞品が用意されています。よって、それなりのルールが定められています。概要は以下の通りです。
- アイデアやコーディングスタイルなどの話し合いは事前に行なってもよいが、コードを書くのはハッカソンの期間中の48時間のみ!
- チームは4人まで。
- コードはすべて、GitHubのレポジトリで管理する。
- Joyent、Heroku、Linodeから選んで、そこにデプロイする。
- 作るアプリケーションはウェブアプリケーションである必要はないが、Webアプリケーションでない場合は審査が難しい場合があるので、公平な審査を求めるのであればWebアプリケーションが無難。
- ライブラリ、プラグイン、モジュールは、公で自由に使えるものであれば使っても良い。
審査員
Node Knockoutが素晴らしい理由の1つに、審査員が豪華であるという事が挙げられます。LinkedIn、Mozilla、Heroku、Joyent、Twitter、Google、Dropbox、Twilio、Sequoia Capital、SimpleGeo、Microsoft、LearnBoost、Yammer、Facebook、Couchbase、Walmart、GitHub、Adobe、TwitPic、myGengo、Shopifyなどと言った有名な企業に務めている方々が、今年は175名も参加しました。こんな豪華な審査員に、自分のアプリケーションを見て貰えるチャンスはなかなかないでしょう。自分のアイデアを試す良い機会です。
審査方法
48時間後、約一週間が審査の期間と設けられています。その期間中に、各チームは以下のカテゴリに対して5段階評価で審査されます。
- Utility/Fun - 何度も使いたくなるようなものかどうか。
- Design - 使うにあたってのルックアンドフィールはどうか。
- Innovation - アイデアはどのくらいオリジナルなものか。
- Completeness - どれくらい完成されているか。
審査できるのは、審査員と参加者のみですが、誰でも投票できる公からの投票も行われます。公からの投票は、“Popularity”として、チームの最終的な得点に加算されます。審査の期間中は、審査員や参加者が評価と共にコメントを残してくれる事があります。気づかなかったこと、改善できる点など、これらのコメントは色々勉強になります。
これらの審査の結果、以下の7つのカテゴリに対して勝者が選ばれます。
- Overall Solo - 総合的に一番評価が高かった、チームメンバがひとりのアプリケーション
- Overall Team - 総合的に一番評価が高かった、チームメンバが複数人のアプリケーション
- Popularity - 一番人気が高かったアプリケーション
- Utility/Fun - 一番何度も使いたくなるアプリケーション
- Design - 一番ルックアンドフィールが優れているアプリケーション
- Innovation - 一番アイデアがオリジナルなアプリケーション
- Completeness - 一番完成されているアプリケーション
優勝したチーム
それでは早速、今年のNode Knockoutの勝者たちをカテゴリごとに見てみましょう。
※多くのアプリケーションは、Node Knockoutが開催されていたときにリリースされていたSocket.IOを使用していますが、そのSocket.IOのバージョンは、現時点での最新版のChrome (14) では正しく動作しません。最新版のSafari 5.1を使ってアプリケーションを試すことをお勧めします。
Overall Solo
Observerは、指定したWebサイトを観察して、ユーザがそのサイトで何をしているのかをブラウザでリアルタイムに見れるようにするアプリケーションです。たとえば、あるユーザがサイトに訪れ、あるボタンをクリックし、それがアラートを表示したとします。その場合、そのサイトを監視しているブラウザでも、そのユーザのマウスカーソルが動き、ボタンをクリックし、同様のアラートが表示されます。Observerは、ユーザによって発生したイベントを複製し、それを観察しているブラウザで再現する事によって、ユーザによって発生しているイベントを、観察しているブラウザでも同様に発生させています。
Overall Team
Eight Bit Beatsは、8ビット風な音が特徴的な、ブラウザで使えるシーケンサです。興味深いのは、複数人で同時に編集可能で、各々のユーザが自分のトラックを持つことができます。つまり、皆で協力してひとつの音楽を作るということになります。
操作は非常に簡単で、音の種類を選んで、それを譜面に配置していくだけです。既に誰かがドラムをやっていたらベースをやったり、メロディを足したりと、非常に楽しいアプリケーションです。驚くべきは、すべてがブラウザでできていることでしょう。
Popularity
Driv.inは、複数人でリアルタイムにYouTubeのビデオを見ることができるアプリケーションです。部屋を作り、そこに友達などを誘って、一緒に同じYouTubeのビデオを見ることができます。部屋に途中で参加する人がいた場合、その人も今部屋の他の人が見ている同じところから動画が始まるようになっています。同じ部屋の人達と、チャットも出来るようになっています。ニコニコ動画や、turntableに似ているかもしれません。
Utility/Fun
Doodle or Dieは、伝言ゲームを絵を使って遊ぶアプリケーションです。最初に誰かが絵を書き、他の誰かがその絵を見てその絵の説明を書きます。そして今度は、その絵の説明を見て、また誰かがその説明の絵を書きます。自分が書いた絵が、他の人によってどの様に説明され、そしてその説明によってどの様な絵が書かれるのか、非常に面白いです。勿論、一連の履歴が参照できるようになっているので、どのような絵から始まって、今どのような絵になっているのかわかります。
Design
ACROnodeは、複数人であいうえお作文のようなもので遊ぶアプリケーションです。ユーザには頭字語が提示され、時間内にそれが何の頭字語なのかを入力します。たとえば、NKTR、という頭字語が提示された場合、Node Knockout Totally Rulesを入力します。そしてその後、ユーザが入力したものに対して投票し、それで勝敗が決まります。
Innovation
Blue Lavaは、Webアプリケーションではなく、WebGLをNode.jsを使って処理するためのライブラリです。つまり、Node.jsをWebサーバなどを作るのに使うのではなく、WebGLをレンダリングするのに使っています。実際にこのライブラリが動く事を証明するために、Felix Woitzel氏によるTraveling WavefrontsというWebGLのデモを、ブラウザを使わずにNode.jsだけでレンダリングしてみています。このライブラリの発展によって、Node.jsを使ったクライアント側として使った3Dのゲームが出てくるかもしれません。
Completeness
Chess@homeは、チェスが遊べるアプリケーションです。ただ、普通のチェスと違うのは、遊ぶ相手がNode.jsで走っているチェスのAIだという事です。そしてさらに興味深いことに、チームが提供しているパッケージをnpmでインストールして実行する事によって、そのチェスのAIのクラスタに参加出来ます。AIのクラスタに参加している間は、そのマシンのCPUをこのアプリケーションに貸すことになります。その名の通り、SETI@homeのチェス板みたいな感じです。
まとめ
ここでは勝者7つのチームしか紹介できませんでしたが、他にも非常に面白いアプリケーションが沢山あります。Node Knockoutのサイトを見て、自分でも面白そうなアプリケーションを探してみてください。なお、全てのアプリケーションではありませんが、ソースコードを公開しているアプリケーションもあります。アプリケーションで遊んでみるだけではなく、ソースコードを見て勉強するのも良いでしょう。
Node Knockoutは今回で2回目を迎えましたが、今年も大成功に終わりました。来年も開催されると予想されるので、来年は是非参加してみませんか?