すでにチケットが売れ切れてしまったLL Planetsですが(※)、蓋を開けてみると今年はJavaScriptに関連したセッションが目白押しになっています。このように再びJavaScriptが注目を集めることになった理由は何だったのでしょうか?
今回のLL Planetsでは、現在日本で活気を集めているNode.jsコミュニティとその周辺コミュニティの人達をお招きし、JavaScriptの再ブームの理由について再検証していく予定です。
JavaScriptプログラマのための全方位的完全武装ガイド
まず午後一のセッションでは、最速インターフェース研究会の名称で有名なmalaさんに「JavaScriptプログラマのための全方位的完全武装ガイド」と題して45分間の基調講演をしていただきます。現在Webアプリケーションの開発現場で普通に使われているJavaScriptですが、今ではデスクトップ向けのネイティブアプリやスマートフォン上のHTML5アプリの構築に必要なプログラミング要素としてJavaScriptが使われるようになりました。AjaxやWeb2.0のブームで一時期注目を集めたJavaScriptですが、prototype.jsやjQueryなどのライブラリの普及によって、近代的なJavaScriptプログラミングができる人が増えてきたことも大きな特徴です。
ブラウザ側でAjaxによる非同期通信を行うJavaScriptプログラミングの経験が、サーバサイドでのメッセージ処理やWebクローラの作成など、他の異なる分野でどのように活用できるのか、malaさん自身の豊富な開発経験をもとに語っていただきます。
Node.jsとは何だったのか
基調講演の次のセッションでは「Node.jsとは何だったのか」というタイトルで90分のパネルディスカッションを行います。現在、サーバサイドJavaScriptの急先鋒としてNode.jsが脚光を浴びていますが、そのブームの正体について各プログラミング言語の有識者をお招きし、それぞれの立場から議論を交わしつつ探りを入れていく予定です。
サーバサイドJavaScriptと呼ばないで
サーバサイドJavaScriptというコンテキストでよく語られるNode.jsですが、その本質はサーバサイドで動いているということではありません。サーバサイドJavaScript自体は特に新しい技術ではなく、十数年前にブラウザにJavaScriptが搭載された当初からNetscape FastTrack Serverなどの実装が複数存在していました。
イベント駆動型プログラミングの過去と未来
Node.jsのもう1つの特徴として、非同期I/Oを用いたイベント駆動型のプログラミングスタイルを強制しているという点があります。これはWWWサーバのC10K問題を解決するために考案されたものですが、シングルスレッドでI/O多重化を行う手法は古くから存在し、特に新しいものではありません。JavaScript以外のプログラミング言語においても、 PerlのAnyEventやPythonのTwisted、RubyのEventMachineなどのように非同期I/Oを提供するAPIやライブラリの実装が既に存在しています。しかし、Node.jsではAjaxによるイベント駆動プログラミングに慣れたJavaScriptプログラマーの人口が増えてきたことによって、このようなパラダイムでのプログラミングに抵抗がなくなったことが普及の要因だったのかもしれません。
そこで本セッションでは、各プログラミング言語の有識者から、各言語の非同期I/Oライブラリの特徴と使いにくさについて発表していただき、当時流行らなかった反省点と、今後改善できる余地についてパネルディスカッションを行います。
- 1. Perl: AnyEvent / Coro について復習
malaさんの基調講演を受けて司会進行役の竹迫がPerlにおける非同期I/Oパラダイムを再整理します。
パネラー | 竹迫良範 @TAKESAKO(サイボウズ・ラボ/Shibuya.pm) |
- 2. JavaScript: 10分でわかるNode.js
Node.jsの作者であるRyan Dahlが目指したものは何だったのか。それをどのように実現したのか。そして、なぜ今またJavaScriptなのかをNode.js日本ユーザグループ代表のめそさんより10分で語っていただきます。
パネラー | 清水俊博 @meso(ドワンゴ/Node.js日本ユーザグループ) |
- 3. Python: Twisted と gevent
Pythonで手軽に使えるTwistedは昔から有名で簡単にネットワークサーバプログラムを書くことができました。長年使われてきたTwistedと、新しく登場したgeventのプログラミングモデルの違いについて紹介します。
パネラー | おおたに @liris(ありえるねっとわーく) |
- 4. Ruby: EventMachine について
CRuby/JRubyコミッターとして有名ななひさんをお招きし、EM RubyConfなど海外で盛り上がりを見せているEventMachine最新動向についてお話しいただきます。
パネラー | なひ @nahi(サリオンシステムズリサーチ/Asakusa.rb) |
- 5. パネルディスカッション
上記出演者4名から各プログラミング言語の非同期I/OのAPIやイベント駆動プログラミングの現在を紹介していただいた後、基調講演を行っていただいたmalaさんを交えた5名によりパネルディスカッションを行います。
特別出演 | mala @bulkneets(ライブドア/最速インターフェース研究会) |
さいごに
まだNode.jsを触っていない人も多いと思うのに「Node.jsとは何だったのか」と過去形のタイトルにしてしまいましたが、冷静な視点で各プログラミング言語のパラダイムを再整理する良い機会だと思いましたので、本セッションを企画してみました。
まだ本番の内容がどうなるかわかりませんが、楽しみにしておいてください。