網羅的、そして丁寧に書かれている本である。少ないページ数で多数のスクリプティング言語をカバーしようとしているので概要的な内容になってはいるが、Java言語と連携して動かすスクリプト言語をこれから学ぼうという読者には十分であろう。

本誌の表紙にはRino(JavaScript)使いのDukeが描かれているが、ルビーを手玉にとるDukeや、grailの中身を飲み干すDukeも思い浮かんでくる。また、ソースコードとインタープリタ方式による実行例がきっちりと掲載されているので、途中で分からなくなって投げ出すことは少ないはずだ。Javaプログラマがより理解しやすくなるための配慮も随所にみられる。

本書はJavaプログラマに向けて、JavaVM上でスクリプティングを試してみよう、まずはスクリプティングの世界が今どうなっているかを見てみようというメッセージを送っている。

表紙に描かれたRino(JavaScript)使いのDuke - このイラストは、コラム「コーチングで変わる人材管理」でもおなじみのナバタメ・カズタカ氏によるもの

複数の言語を使った"いいとこどり"のプログラミング

それでは、どのスクリプト言語を試してみようかという段階で、本書は皮肉にも、動かしてみようとする勢いを止めてしまうかもしれないくらい多数のスクリプト言語を取り上げている。Java SE 6で導入されたRino(JavaScript)を始め、この分野で脚光をあびているJRubyとGroovy、かなり以前から開発が続けられてきたBeanShellにPnuts、ごく最近登場したJavaFXやPythonのJavaによる実装Jythonまで解説されている。

Java言語出身のemigrant的な言語あり、Java言語の世界にやってきたimmigrant的な言語ありと、それぞれに違った魅力があり、どの言語から始めてみようかと迷ってしまう。JavaVM上で動くスクリプト言語について多少の知識はあると思っていた筆者だが、この本を手にして、こんなにたくさんの言語が動くのかという新鮮な驚きを感じた。

スクリプト言語を選んでサンプルプログラムを試してみると、そこにはJava言語とスクリプト言語が融合した不思議な世界が広がっている。あたかも、京急が都営浅草線と相互乗り入れをしていて、さらに京成線にも乗り入れをしていて、羽田空港から成田空港まで行けてしまう――そんな感覚に似ている。

Java言語の多数のAPI、良いところ、便利なところを使いながら、スクリプト言語の良さも手に入れられる。また、ひとつの線路上を複数の鉄道会社の車両が行き交うように、Javaかと思ったら、Rubyになっていて、Rubyで記述しているはずなのにJavaのクラスを使っている。慣れないと、どっちがどうだったか混乱してくるのだが、試しているうちにこの不思議な世界がおもしろくなってくる。

JavaとRubyが融合した世界

それではJavaとRubyが融合した世界がどういうものなのか、本書から例を引用してみよう。

require 'java'

include_class 'java.io.BufferedReader'
include_class 'java.io.InputStreamReader'
include_class 'java.io.FileWriter'
include_class 'java.io.PrintWriter'
include_class 'java.net.URL'

url = URL.new 'http://www.pheedo.jp/f/gihyo_rss2'
reader = BufferedReader.new(InputStreamReader.new(url.openStream(), 'UTF-8'))
out = PrintWriter.new FileWriter.new 'gihyo.xml'

while rss = reader.readLine do
 out.println rss
end

reader.close
out.close

このように、Rubyのシンタックスでありながら、Javaのオブジェクトが使われている。もっと複雑な操作を行おうとしたら、よりRubyよりの実装や、よりJavaよりの実装があるだろう。どのような実装にするかはコーダ(coder)のアイディア次第だ。

そして、読者がいちばん知りたいであろうと思われる(J)Ruby on RailsとGroovy on Grailsといったフレームワークについての解説も本書にはある。特に、ちまたの情報が不足していると思われる後者のフレームワークにはかなりのページをさいて丁寧に解説している。本書の著者が作成したGSP(Groovy Server Pages)タグライブラリ一覧表もある。Ruby on Railsに押され気味のGroovy on Grailsではあるが、GroovyはJava出身のスクリプト言語で、また、GrailsはSpringやHibernateと連携しているなど、Javaプログラマが取り掛かりやすい言語、あるいはフレームワークではないだろうか。

あえて本書の難点を挙げるとしたら、巻頭企画のChapter1で開発手法をもとにJavaとスクリプト言語を分類してしまっているところだろう。最近のJava言語によるフレームワークやIDEの機能を考慮すると、複雑なコードを書かなければならないJava言語、シンプルに書けるスクリプト言語という分類は時代後れの感があるし、アジャイルか、ウォーターフォールかといった分類も言語には依存しない感がある。また、本書は概要的な内容なので、もっとスクリプト言語の世界を知りたいと思う読者のために参考になる書籍の紹介やWebサイトの一覧が欲しかった。

世間の評判を気にする前に、本書を片手にスクリプティングを試してみるといい。おそらく、こんなことができるという発見をしては、こういうことはできるのかという探求心をかきたてられる世界に足を踏み入れることになるだろう。

『スクリプティング with Java』

沖林正紀著
技術評論社発行
2007年10月12日発売
B5判 / 216ページ
ISBN978-4-7741-3202-0
定価1,869円(本体1,780円)