「実践JS サーバサイド JavaScript 入門」について

献本いただきました。ありえるえりあの著者の文体そのままですね。

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

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


サーバサイドJavaScript。2011年のWeb技術者のトレンドはどうやらこれみたいです(HTML5とか大本命を除く)。
早めにサーバサイドJSに入れ込んで、日の目をみることなく散っていった(あるいはただ単に日の目を見ていないだけで生きている)アーリーアダプターたちのサービス・プロダクトを良く知っています。とはいってもサーバサイドJS(というよりNon-Browser JS)は、この本にも触れられてるとおり、昨日今日でてきたものでもなく結構な歴史があるのですが。ともかく、Node.jsがでてきてよかったですね。

しかしどうやらこの本的にはそのNode.jsにはあまり触れていない。「NodeなどV8ベースのがどうなるかは今後に期待」というスタンス。実践アプリ開発においてコードとして乗っているのもRhino+Jersey(On GAE/J)。今ならnode.js+express(on Cloud Foundry ?) でサックリ書けるところかもしれない。
なのでNode.jsによるイベント駆動型でのサービス作成に興味がある人にとってはどうか、とは思う。おそらくNodeは今後他にも本が出てくるので、そっちを見ればいい。こちらは歴史も含めてサーバサイドJSというものを概観するのにふさわしい。


さて、この本での一番のポイントは、個人的には「クラウドの拡張言語」としてのJavaScript、に対してもスポットを当てた点ではないかと思う。具体的には、Google Apps Scriptの事を1章使って紹介している。PaaSのレイヤで動くものでなく*1SaaSのレイヤで利用できる言語として最適である、としている。
これについては、古くから(といってもつい5,6年前頃なんだけど)SalesforceJavaScriptをサーバロジック記述に採用すべきだ、と主張してきた身*2としては、納得いく主張ではある。クラウドでなくても、Lotus Notes/Dominoとか、それこそ著者の会社のArielのプロダクトとか、拡張で使うことは多いみたいですね。あまり語られないですが、NetSuiteのSuiteScriptってのがあるんですが、これもJavaScriptベースみたいですよ旦那。


ちなみに、JavaScriptがプロダクトの拡張機能を記述する目的において優れている、というだけではなく、クラウド特有(=マルチテナント環境特有)のメリットというのはあるのかないのか、これを僕自身は知りたいところではある。
例えばなんらかのSandboxみたいなものは、マルチテナント環境には必ず必要になるだろう。ユーザ/アプリケーション/リソースの種類毎に、プログラム実行時の振る舞い(アクセス制御、リソースの利用制限)をより低いレイヤから制御する、というようなことが可能になるのかどうか。たとえば、先にあげたGoogle Apps Scriptは、ループなどで暴走するコードは実行時にステップが多くなりすぎると中止するようになっている。これは統制がより下のレイヤで行われている、と考えていい。
もちろんこれは言語そのものより実行系として与えられたものの性質の話ではあるけれども、ともかく、そのようなことが楽に可能になることがPaaSをよりスケーラブルに展開するのに役に立つことは間違いないだろうと思う。

*1:このあたり分解点は微妙ではあるが。ロジック記述できたらそれPaaSでもよくね?と思うこともある

*2:もし型チェックがほしいならScalaとかでもいいから、とにかくApexでない何かでいい(笑)