Node.js日本ユーザーグループの最初の発表者は増井雄一郎氏(@masuidrive)だ。「Titaniumの人、という認識もあるでしょうが、Node.jsの初期のコントリビュータでもある」と自己紹介。増井氏の発表内容はNode.jsとは直接関係なく、「作りたいものリストを作ろう」と題する内容だった。
作りたいものリストを作ろう思いついたアイデアのうち、完成に至るものはごく少数だ。それなら、アイデアを死蔵するのではなく、公開することでメリットを得よう、と増井氏は語る。公開している「作りたい物&試作品リスト」には、スキル交換サイト(私はRubyを教えるから、代わりに英語を教えてほしいなど)、個人用検索エンジン、執筆中の書籍にコメントを寄せられるシステム、といったアイデアが大量に掲載されている。
このアイデアのリストの中で「増井予約システム」と名付けられたアイデアは、実際に動く試作品が公開されている。「米国からの帰りの飛行機で7時間ぐらいでがーっと作った」ものだという。
「予約すると、僕のGoogleカレンダーに入ります。アポイントメントを取るのにいちいちメールしなくて済む。就職活動のとき使いました。上の目目線の就職活動ですね」
なぜアイデアを公開するのか。1つは備忘録としてだ。忘れるともったいないので記録する。アイデアよりそれを実現したものの方が価値が大きい。
「全部作るのは一生かかっても無理。それならアイデアを積極的に公開することで、僕という人間の価値にプラスになる」
「公開しないものは、存在しないと同じ。作る暇はないからアイデアだけでも。できればデモだけでも公開してみよう。楽しいですよ」と増井氏は発表を締めくくった。
なお、質疑応答では、増井氏が開発中のmruby処理系をiOSアプリ開発に使えるようにした「MobiRuby」のAndroid版の予定に関する質問が出た。「技術的に難しいが、サンプル版は年内には出したい」との回答だった。
小林秀和氏(@KOBA789)は、高校生ながらNode.jsの利用経験2年というプログラマだ。
「Node.jsを2年間使ってみた(PDF)」というタイトルで発表。Node.jsの「使いどころ」については「単純な掲示板のようなレガシーなアプリ、リアルタイム性がいらないアプリを作るには向かない」と話す。「Node.jsの有用性はエンジニアの手腕に依存する。ちゃんとしたものから、バグだらけのゴミも作れる」「使うなら覚悟の上で」と辛口の発表内容だった。
内山暁仁氏は、「Nodeを用いた大型加速器制御向けクライアントシステム」について発表した。
高エネルギー物理学の実験で用いられる大型の粒子加速器の制御のため、EPICS(Experimental Physics and Industrial Control System)と呼ぶオープンソースソフトウェアが開発されている。米ロスアラモス国立研究所と米アルゴンヌ国立研究所で開発が始まり、現在では世界各地の40以上の研究施設で使われている。日本でも、J-PARC(高エネルギー加速器研究機構と日本原子力研究開発機構の加速器施設)、 KEKB(高エネルギー加速器研究機構の加速器施設)、RIBF(理化学研究所 仁科加速器研究センターの加速器施設)で使われているという。
EPICSはクライアント/サーバモデルを採用している点、クライアントプログラムとサーバ間のプロトコルを統一することで多種多様な機器制御の際、機器特有のプロトコルに対応しなくても済むようにした点が特徴的だ。この特色を生かし、Node.jsによりEPICSのクライアントプログラムを作成可能なよう、ドライバ類を開発した。Node.jsを利用したことで、WebSocketを利用した、リアルタイムな遠隔制御が可能となった。Node.jsの特徴であるリアルタイム性と非同期I/Oの機能は、プログラム上で多数の制御点を扱う必要がある加速器の制御プログラムにも有用だという。
「EPICSの対応言語はC、C++、Java、Python、Perl、PHP、LabBIEW、Tcl/TKがある。ここにNode.jsが加わった」
「そもそもWorld Wide Webは、CERN(欧州原子核研究機構、加速器設備を有する)で働いていたTim Berners-Leeが開発した。今、WWWで加速器を制御するのは、男のロマンを感じませんか?」と問い掛けた。
関数型のメリットを取り入れたJVM言語は、ユーザーもとがっていた。
日本Scalaユーザーズグループの最初の発表者は水島宏太氏(@kmizu)。「Scala+Finagleの魅力」と題した内容だった。
米国Twitterは、JVM(Java仮想マシン)上で動作するScala言語を、同社のサービス開発に適用していることで知られている。Finagleは、Twitter社が開発したScala言語によるネットワークスタックでRPC(遠隔手続き呼び出し)システムを作るためのフレームワークである。
ここでFinagleを調査して分かったこととして、「もともとTwitterの社内フレームワーク。ドキュメントが追い付いていないこともある」。また「ステートフルなプロトコルでは工夫が必要。Finagleは(Javaベースのクライアント/サーバのSocketフレームワーク)Nettyの薄いラッパーなので、Nettyの知識が必要な場合もある」という。
浅海智晴氏は「Scalaでプログラムを作りました」というストレートなタイトルで発表。内容は、オブジェクトモデリングからプログラムにどう落とし込むか、というものだった。浅海氏がScalaで開発したプログラムは「モデルコンパイラ」。
「DSL(ドメイン固有言語)を使うためにScalaを使う──落としどころはこのあたり」と浅海氏は話す。Scalaは、関数型言語とオブジェクト指向言語の両方の特徴を取り入れたプログラミング言語で、トレイト(trait)、モナド(monad)、型クラス(type class)といった新しい概念を駆使できる。ただし「最初のうちは、関数型ではなく、オブジェクト指向の機能を中心にプログラミングすることは恥ではない」と話す。
尾崎智仁氏(@yuroyoro)は、「Scalaで作る奇妙なプログラミング言語」と題して、難解プログラミング言語(esolang処理系)について発表した。
難解プログラミング言語としては、1日目のLT(ライトニングトーク)でも登場した「Brainf*ck」が有名だが、この言語が8種類のシンボルを組み合わせてプログラムを書く。一方、シンボル数3のGrass言語、シンボル数2のIota言語があり、こうした言語をベースにすれば、さらに余計な要素を排除した、極めて難解なプログラムを書くことができる。
ゆるよろ氏はこれまで「天使ちゃんマジ天使」「ブブゼラ」「ほむほむ」といった言語を作り出してきた。「ほむほむ」が並ぶだけのコードを入力して、「Hello World」を表示するデモンストレーションを行った。 さらにその場で新しい言語を作り、「おっぱい、おっぱい」を並べるだけで、「Hello World」を出力して見せた。
2日間にわたる勉強会の最後となるプログラムは、ハッカソン成果発表。参加者たちは、「1クリック」という「お題」に沿った成果を披露していった。
このようにして、2日間にわたる激烈なミーティングは終わった。
振り返ってみれば、これは日本の開発者コミュニティの中でも特に「イキがいい」人たちが集まった勉強会だった。
ただ、「ニコニコ超会議」の喧噪の一画という空間だったので、開発者同士がゆっくり交流するような余裕はなかったかもしれない。2日通しで勉強会を聞いた筆者は、日本の開発者コミュニティの水準や、若くて優秀な開発者が次々と登場している様子が少し見えてきたような気がする。その感覚が、多少なりとも本レポートから伝われば幸いである。
Copyright © ITmedia, Inc. All Rights Reserved.