図1●StrutsによるMVCモデル
図1●StrutsによるMVCモデル
[画像のクリックで拡大表示]
図2●「簡易日記帳アプリケーション」のサンプルを動作させるための手順。サンプルは,Windows 2000,J2SE 5.0,Tomcat 5.5.9,MySQL 4.1.7の環境で動作を確認した
図2●「簡易日記帳アプリケーション」のサンプルを動作させるための手順。サンプルは,Windows 2000,J2SE 5.0,Tomcat 5.5.9,MySQL 4.1.7の環境で動作を確認した
[画像のクリックで拡大表示]
図3●簡易日記帳アプリケーションの一覧表示画面
図3●簡易日記帳アプリケーションの一覧表示画面
[画像のクリックで拡大表示]
図4●日記の新規登録画面
図4●日記の新規登録画面
[画像のクリックで拡大表示]
表1●日記を格納するdiaryテーブルの構造
表1●日記を格納するdiaryテーブルの構造
[画像のクリックで拡大表示]

 この連載は,様々な局面で役立つオープンソース製品を紹介しています。第1回目である前回は,オープンソースを概観し,アプリケーション開発に有効な主要なオープンソース・ソフトウエアを紹介しました。今回からは具体的なオープンソース・ソフトの使い方を紹介していこうと思います。手始めに今回は,システムの構築を楽にする「アプリケーション・フレームワーク(以降,フレームワーク)」を取り上げます。

アプリケーションの基礎を提供するフレームワーク

 フレームワーク(framework)は,その名の通り,アプリケーションを構築するための「枠組み」です*1。ビジネスの世界で要求されるアプリケーションの仕組みは年々複雑になっています。ビジネスに使われるシステムを構築するのに,一から組み立てていくのはもはや現実的ではなくなってきました。そこで登場したのが「フレームワーク」です。アプリケーションの基礎となる定型的な土台を提供してくれるので,開発者はビジネス・ロジックの開発に集中することができます。開発工数を低減できると同時に,フレームワークが提供する設計を再利用できるので,ソフトの品質を平準化できるメリットがあります。

 もっとも,一口にフレームワークと言っても,様々なものがあります。Javaベースのオープンソース製品だけを見ても,多くの種類があります。テンプレート・エンジンVelocityやO/Rマッピング・ツールTorque,プロジェクト管理ツールMaven*2といった有名な製品の母体となったTurbine(http://jakarta.apache.org/turbine/),イベント駆動型モデルを特徴とするTapestry(http://jakarta.apache.org/tapestry/),ユーザー・インタフェースとロジックの分離を実現するJSF(JavaServer Faces)の参照実装であるMyFaces(http://myfaces.apache.org/)など様々です。

 しかし,現時点での普及度や知名度を考えると,代表的なのはなんといってもApache Struts(http://struts.apache.org/)でしょう。WebアプリケーションでMVCモデルを実現するシンプルなフレームワークです。MVCモデルとは,Model(ビジネス・ロジック),View(表示),Controller(ModelとViewの制御)という三つの役割を明確に切り分け,それぞれに相当するソフトウエアを部品(コンポーネント)化するつくりを言います。StrutsはMVCモデルの中で,全体の制御を行うControllerの機能を主に提供します。MVCモデルにより,それぞれのクラスの役割が明確に分離でき,開発者同士の協業や修正時の影響個所の特定が容易になります。

Strutsのエンジンに相当するアクション・サーブレット

 Strutsは,アプリケーションの種類に依存しない汎用性と柔軟性とが多くの開発者に受け入れられ,2002年ごろから国内でも急速に普及しました。Strutsを利用することで,これまで開発者が自前でコーディングしていた画面遷移の制御や入力データの検証といった定型的な処理を設定ファイルの記述だけで実現できるようになります。

 Strutsの中核をなすのが,アプリケーションの実行エンジンにあたる「アクション・サーブレット」です(図1[拡大表示])。Strutsがあらかじめ提供するもので,開発者がこの部分のコーディングを行う必要はありません。Strutsでは,クライアントからのすべてのリクエストをアクション・サーブレットが受け取ります。アクション・サーブレットは,開発者が定義した設定ファイルの情報に従って,適切な処理を呼び出すわけです。

 アクション・サーブレットがビジネス・ロジックを呼び出すときには,「アクション・クラス」を介して行います。リクエストにより送られた情報は「アクション・フォーム」というクラスに格納します。これらについてはStrutsが基本となるクラスを提供しているので,開発者は基本のクラスを継承したサブクラスに,ロジックを追加するだけでOKです。これらのクラスでの処理結果は,最終的にJSP(JavaServer Pages)ページに転送され,クライアントのWebブラウザに表示されます。

 今回は,フレームワークを利用したアプリケーションの例として,Strutsによる「簡易日記帳アプリケーション」のサンプルを取り上げます。名前の通り,ブラウザ上で日記の追加と参照ができる簡単な日記帳です。

日記帳アプリケーションを動かしてみる

 まず,Strutsが動く環境を用意しましょう。JDKとTomcatをインストールしてください。今回のサンプルである日記帳アプリケーションはデータベースを利用するため,MySQLとMySQL用のJDBCドライバであるConnector/Jもインストールする必要があります。サンプルの「nikkei.war」は,日経ソフトウエアのサイト(http://software.nikkeibp.co.jp/)からダウンロードできます*3。サンプルを動かすための簡単な手順を図2[拡大表示]にまとめました。ソフトウエアのインストール方法とデータベース・ファイルの展開方法,データベース・アクセス用ユーザーの追加方法については,著者のサイト「サーバサイド技術の学び舎 - WINGS」(http://www.wings.msn.to/)の「サーバサイド環境構築設定」を参照してください。Strutsはサンプルの中に含まれているので,特にインストールする必要はありません。

 準備が済んだら,日記アプリケーションを動かしてみましょう。アプリケーションの動作は単純です。「http://localhost:8080/nikkei/ReadAction.do」にアクセスすると,登録済みの日記が一覧表示されます(図3[拡大表示])。日記を追加する場合には,[新規登録]のリンクをクリックしてください。入力画面が表示されます(図4[拡大表示])。件名と本文を書き込んで[登録]ボタンをクリックすると,一覧表示に入力した日記が追加されます。日記情報はデータベースのdiaryテーブル(表1[拡大表示])に登録されます*4


山田 祥寛(やまだ よしひろ)

千葉県鎌ヶ谷市在住のフリーライター(http://www.wings.msn.to/