kagamihogeの日記

kagamihogeの日記です。

実践JS サーバサイド JavaScript 入門

サーバサイド JavaScript とか聞いただけでキモかったんだけど、最近盛り上がってるし一冊くらい本読んでおこうか、と本書を手に取った。そしたら意外とキモくなかったし、むしろ Java との関連性も強くあり思いのほか収穫の多い本だった。偏見はよくないよね、ってことですね。

本書の構成は、最初になぜサーバサイド JavaScript が注目されるかに至ったのかを JavaScript の歴史と共に振り返る。次に、JavaScript は元来はブラウザの拡張が目的だったのでサーバサイドに実行環境を移すには色々課題が発生するのでそのあたりの解説が続く。その流れで標準オブジェクト、標準 API 策定の動きの一つ CommonJS を軽くサンプルコードも交えつつ説明。そのあとは、実際に動くブツであるサーバサイド JavaScript の実行環境やフレームワークを色々紹介し、ちょろっと NoSQL, Google Apps Scriptがあり。最後が個人的には一番面白かったんだけど、Web アプリのアーキテクチャJava の上に JavaScript を乗っける形にするにはこんな感じじゃね? という筆者の考察がある。

それにしても処理系という単語を JavaScript で聞くことになるとは夢にも思わなかったが、Web の世界はホントーに何が起きるのか分からなくてエキサイティングです。最初にサーバーサイド JavaScript という発想を聞いたとき、ブラウザ側とサーバ側とで同じ言語使いたいニーズから生まれた偶然の産物、くらいにしか感じていなかった。ただ、サーバサイド JS は意外と良い線付いてるのかもなぁ、と本書を読んで感じた。最初からクロージャ的文化があるのでイベント駆動的なコードが書きやすい、非同期なロジックが表現しやすい、スクリプト言語文化圏由来の簡潔なコードに抑えやすい……などなど、時代のニーズに見合った力を備えているように見える。

とはいえ過渡期の技術は何でもそうだが課題も多く。主要な JavaScript 処理系は幾つもあったりとか、本書で紹介されてるサーバサイド JavaScript 実行環境が 7 個と百花繚乱状態であったりとか。フレームワークの乱立振りは Java の初期のサーバーサイドの頃を彷彿とさせるところがあり、今が正に熱い時期なんだろうな、と思わせられる。技術者としては色々いじれたり刻一刻と変化があり楽しい時期ではあるだろうけど、それだけにキャッチアップするのも大変そうである。

面白いのは、Java 屋な視点からもサーバーサイド JavaScript がポスト Java の選択肢の一つとして無くは無くなったところにある。Java 6 から Rhino が入ったからである。実際、本書でも JVM 系と非 JVM 系という切り口でサーバーサイド JavaScript コンテナの紹介をしている。動くブツとしての JVM は既存の Java 資産が動かせることもあり、現実的な選択肢になりうる、ってところでしょう。極端な予測を言えば、言語としての Java は消えて JVMJavaScript が残りました、なんてこともありえないわけでなく。でもまぁ、JVM ベースの言語も JRuby, Groovy, Scala, Jython とまぁコチラも選択肢豊富であり、JavaScript 一強になることは無さそうですが。

もういっこ本書が Java な人たちにも面白い部分があります。最後の章で筆者の考察として「サーバサイド JavaScript を活用した Web アプリの作成過程を通じて実践的な技法を説明」というのがあるんだが、サンプルコードの 9 割が Java という書名からは直感的には反する内容になっている。それには勿論理由があり、それは本書に譲るのだけど、そこから得られる、筆者の設計の評価が興味深い。一言でまとめるなら、筆者の言葉では「設計は連続的な行為」と称されるモノで、興味のある人は読んでみてください。

とりあえず、いまの JavaScript の熱気をサラッと知りたい人にはオススメの一冊です。

実践JS サーバサイド JavaScript 入門

実践JS サーバサイド JavaScript 入門