スクリプト言語による軽量なWeb開発
エンタープライズWeb開発における課題
第1回では、エンタープライズWeb開発の動向として、主にJava EE関連の技術動向や「WebSphere Application Server」(WAS)の拡張機能について紹介しました。今や、Java EEはエンタープライズWebアプリケーションの基盤として確固たる地位を築いており、アプリケーション開発言語としてはJavaが主流となっていると言って差し支えないと思います。
Javaにはいろいろな側面がありますが、C言語などと同様のコンパイル型言語であることが1つの大きな特徴です。Javaで記述したアプリケーションを実行するためには、ソースコード(.javaファイル)をコンパイルして実行用コード(.classファイル)を生成した上で、実行用コードをJava仮想マシン(JavaVM)上で実行する必要があります。Java EEベースのアプリケーションでは、これに加えてWAR/EARなどの決まった形式にアプリケーションをパッケージングし、アプリケーション・サーバーにデプロイするという手順も必要になります。
最近はビジネス環境の変化が激しく、企業間の競争も激化しています。このような環境下では、ビジネス要件の変化をいち早くエンタープライズ・アプリケーションに反映していくことが求められるため、アプリケーション開発のサイクルを短縮する必要があります。いわゆるウォーターフォール型の開発プロセスより、アジャイル的な要素を取り込んだ開発プロセスの方がアプリケーション開発サイクルの短縮化には有効でしょう。
この際に課題となるのが、Javaがコンパイル型言語であるという制約です。前述の通り、Javaで記述したアプリケーションを修正する場合、ソースコードを修正してから実際に実行して結果を確認するためには、コンパイルなどの手続きが不可避であり、あまり効率的ではありません。
また、アプリケーション開発においては「確実に動くコードを少しずつ書き足していく」ことがセオリーですが、Java開発者はコンパイルの回数を減らすために、ある程度まとまった量のコードを一気に書き足してしまう傾向があるのではないでしょうか(自分にも覚えがありますが、とにかくコンパイル待ちの時間というのはイライラするものです)。結果的には、余計なバグに悩まされて、かえって生産性が下がってしまうことが多いようです。
エンタープライズでスクリプト言語が注目を集める理由
スクリプト言語とは、Javaのようなコンパイル型言語とは異なり、ソースコードをコンパイルせずにそのまま実行できる言語です。PerlやPHP、Ruby、Pythonなどが有名です。
従来、スクリプト言語はB2C(一般消費者)向けのWebアプリケーション開発などに多く使われてきましたが、(社内システムや企業間システムなどの)エンタープライズ・アプリケーションの領域ではあまり使われていませんでした。
しかし、スクリプト言語の持つ「ソースコード=実行用コードであり、ソースコードを修正するだけで直ちに実行することができる」という特性は、アジャイルな開発という観点からはJavaよりも有利です(この意味では、JSPをスクリプト言語的に使っているケースは意外と多いのではないでしょうか)。
もう1つの考慮点として、Javaにはプログラミング言語として以下の特性があります。
- 静的型付け言語であり、コンパイラ・レベルでの型チェックが可能である。ただし、その代償として冗長なコーディングが要求される。
- 言語仕様にやや古臭いところや、互換性維持のため後付けで拡張してきた個所などがあり、必要以上に複雑なコーディングが要求される場合がある。
ケース・バイ・ケースですが、ある処理をJavaで記述した場合に比べ、同等の処理をスクリプト言語で記述した方が簡潔になることが多いようです。特に、Webアプリケーションに頻出するテキスト処理やオブジェクトのコレクション操作などでこの傾向は顕著です。スクリプト言語がもたらす「コードの簡潔さ」は、開発生産性の向上に貢献するだけでなく、メンテナンス時に重要となるコードの可読性向上にもつながります。
エンタープライズにおけるスクリプト言語の活用という観点では、JavaVM上で動作するスクリプト言語の動向を押さえておくと良いでしょう。JavaVMという成熟したプラットフォームの上でスクリプト言語を利用することができるため、「安定した環境としてのJava」と「生産性の高いスクリプト言語」の両方のメリットを享受できます。
スクリプト言語のうち、特に注目度の高いものを以下に挙げます。
--------------------------------------------------------------------------------
【Scala】: 関数型言語とオブジェクト指向言語のハイブリッド。Javaの次世代を担う言語として注目されている
【JRuby】: JavaVM上で動作するRuby、Ruby on Railsも動作可能
【Groovy】: Javaと同じ文法のスクリプト言語、Javaとの親和性が高い
【Quercus】: JavaVM上で動作するPHPエンジン
--------------------------------------------------------------------------------
次ページからは、スクリプト言語やマッシュアップに適した軽量Webアプリケーション・サーバーの特徴を、米IBMのソフト製品を引き合いにしながら詳しく解説します。