スクリプト言語による軽量なWeb開発
スクリプト言語のプラットフォーム: WebSphere sMash
これまで説明した通り、Java一辺倒であったエンタープライズWeb開発の世界でも、新たな選択肢としてスクリプト言語によるアジャイルなスタイルの開発が現実的になってきています。このような流れを受けて米IBM(および日本IBM)が提供するスクリプト言語向けのプラットフォームが「IBM WebSphere sMash」(以下、sMash)です。
sMashの主な特徴は以下の通りです。
- アプリケーション開発言語としてスクリプト言語(GroovyとPHP)をサポート
- Convention over Configuration(CoC)の採用による、設定項目の最小化
- 効率的な開発を支援するフルスタック・フレームワークを提供
- Ajaxと親和性の高い、REST形式のWeb APIをサポート
- Webサーバーやスクリプト言語のランタイム、開発ツールなど、必要な機能をワンストップで提供
- 開発ツールはコマンドライン、Eclipseプラグイン、Webブラウザから選択可能
- sMash本体はJava SEベースで構築されており、幅広いプラットフォームに対応
- Project Zeroにおけるコミュニティ・ベースの商用ソフトウエア開発(Community-Driven Commercial Development)
- 商用サポートのある製品版と、製品版と同一コード・ベースで無償の開発版(WebSphere sMash Developer Edition)を提供
sMashの最大の特徴は、スクリプト言語によるアプリケーションの開発を前提として設計されていることです(sMashのベースはJavaで構築されているので、もちろんJavaで開発することも可能ですし、既存のJavaモジュールを取り込むことも可能です)。
sMashで利用可能なスクリプト言語の1つであるGroovyは、Javaとほぼ同じ文法を採用しておりJavaのAPIもそのまま利用できるため、Java開発者であればほとんど苦労することなく使いこなせます。もう一方の言語であるPHPは、学習が容易であることから、Web開発者に広く普及しており、技術情報も充実しています。
従来、PHPの実行環境としてはApacheの拡張モジュールであるmod_phpを使うのが一般的でしたが、sMashのPHPサポートによって選択肢が広がりました。幅広いプラットフォーム(Windows、AIXおよびx86/System p/System zのLinux)に対応し、商用サポートを提供しているPHPの実行環境です。
また、sMashは米IBMが独自に実装した「p8」というJavaベースのPHPエンジンを内蔵しているため、別途Apacheを用意しなくてもPHPの実行環境を構築することが可能です。また、PHP-Javaブリッジ機能によってPHPからJavaクラスを呼び出すことができるため、エンタープライズ・アプリケーションにPHPを取り込みやすくなっています。
軽量開発に役立つsMashの付加機能
sMashはスクリプト言語による開発をサポートするだけでなく、効率の良い開発を実現するためのさまざまな付加機能を提供しています。
Convention over Configuration(CoC)は、Ruby on Railsによって提唱されたアイデアで、設定ファイルで細かい指定を行わなくとも、フレームワークやコンテナが規約に従って適切な設定を自動的に行ってくれる仕組みのことです。
例えば、Java EEではServletを実行する際にはweb.xmlでURLとクラス名の関連を指定する必要がありますが、この場合、Servletに関する情報がクラスと設定ファイルの2カ所に分散してしまいます。
sMashはCoCを採用しているため、HTTPリクエストを処理するリクエスト・ハンドラを特定のディレクトリに配置するだけで、自動的にsMashに認識されます。設定ファイルを排除することによって、結果的に開発者の負担を減らすことが可能になるわけです。
Web開発ではデータベース・アクセスがつきものですが、sMashはJavaベースであるためデータベースとの接続にはJDBCをそのまま利用することができます。また、生のJDBCではコーディングが煩雑になるため、JDBCをラッピングしたData Access APIを提供しており、必要最小限のコーディングでデータベース・アクセスが行えるように配慮されています(JDBCのラッピングには、米IBM製ORマッピング・ミドルウエア「pureQuery」のランタイムが組み込まれています)。
効率的なアプリケーション開発のためには、アプリケーションをモジュールに分割し、モジュールの組み合わせでアプリケーションを実装する手法が効果的ですが、その際に問題となるのはモジュール間の依存関係の管理です。
sMashはApache Ivyをベースとした依存性解決の仕組みを提供しており、開発者に負担をかけずにモジュール化が行えます。アプリケーションに対して依存モジュールを設定してやるだけで、必要なモジュールをsMashが自動的にリモート・リポジトリからダウンロードし、クラスパスの設定などを行ってくれます。
次ページでは、sMashの特徴をまとめます。必要とするシステム資源が少なくて済むというメリットに触れつつ、有効な適用領域について解説します。