Okapi Project

X-Framework の概要

バージョン
2003 年 08 月 14 日 Ver.1.1
作成者
J.Daita ( Xware )

要約

フレームワークという言葉は最近たくさんのところで耳にします。フレームワークとは何でしょうか?日本語に訳すと、骨組み、骨格と訳されます。その名のとおり、システム開発時にフレームワークがシステムの骨格を担います。そして、この骨格に肉付けして業務ロジックを作成してシステムを作り上げていきます。ここでは、Java 言語で開発される Web システムで使用されるフレームワークについて注目します。世界で一番有名なフレームワークである Struts とオカピプロジェクトが開発をした2つのフレームワークについて紹介していきます。

目次


1. フレームワークを知る前に

 フレームワークを知るには、まず Web システムがどのような仕組みで処理を行なっているのか知る必要があります。Web システムは、サーバサイドの処理とユーザと直接触れるブラウザがあります。アプレットや Flash などで出来ているシステムもありますが、基本的には Html で画面が作られています。この画面と、サーバーは、HTTP 通信でやりとりされます。サーバサイドでは、不特定の場所からのアクセスについて様々な業務処理を行い、処理結果として html ファイルを送信します。このように1回、もしくは複数のトランザクションを繰り返し行なうことで利用者にサービスを提供しています。

 すべてのフレームワークに共通する機能を知ることでフレームワークの概要をつかんでいきましょう。Web システムは、画面 → サーバでの業務処理 → 画面 となっています。サーバの処理は、Java 言語です、画面は Html 言語です。サーバでは、Java で業務ロジックを記述し、画面表示用の html を作成しなければなりません。しかし、Java と Html 、業務ロジックと画面デザインは、混在しているメリットはありません。デメリットのみです。そこで、考えられたのが MVC と言う概念です。

  1. M(モデル)   : モデルには、業務ロジックの中心となる機能が含まれています。モデルは、業務ロジックをカプセル化します。
  2. V(ビュー)    : ビューは、画面に該当し外観についてのみ責務を負います。主にJSPがこの役割を担っています。
  3. C(コントローラ) : コントローラーは、利用者の入力に対して応答し、モデルを呼び出し、ビュー(画面)を利用者に提供します。

2. フレームワークとは

フレームワークを身近なのものに例えると、それはパソコンです。パソコンは、様々な IC チップなどの電子部品から作成されています。
高度な設計で作られた電子部品を組み合わせて、パソコンは構成されていますがこれでは、ほとんどの人はパソコンを作ることができません。
ここで登場するのがフレームワークです。フレームワークはマザーボードに該当します。CPU、ハードディスク、メモリ、LAN ボードをマザーボードに差し込むだけで、パソコンは出来上がります。その差し込む部分は一定の形をしています。CPU の口にメモリを入れることは出来ません。しかし、CPU の口には様々 CPU(Pentium 3 だったり、4 だったり、celeron だったりします。しかし、どの CPU を差込口に入れても、正常に動作します。フレームワークを使ってシステムを作成する開発者は、この差込口(インターフェース)にしたがって実現したい機能を持った AP を作ればよいのです。決して、CPU を作っている人はメモリとの関係についてや、ハードディスクはもちろんフレームワークであるマザーボードについて詳しく知る必要はありません。

Web システムのフレームワークを使うことによって、サーブレットや、JSP といった技術に知識がなくても、フレームワークのルールに則って作成すれば一定の品質を持った Web システムが素早く開発するすることができるようになります。

では、フレームワークはなぜいくつも製品があるのでしょうか?フレームワークは、開発者が作る部分を少なくすることで開発効率を上げることが出来ます。しかし、その一方で実現できる機能に制限が出てきます。それは、マザーボードを使ってスーパーコンピュータを作ることが出来ないのと同じことが言えます。

フレームワークを作る際、選ぶ際のポイントはここにあります。何をフレームワークがやって、開発者が何をしなければならないか?フレームワークを使って何を作ることができるか、何は作れないかです。このバランスが製品によって違うのです。

フレームワークを一言で言うと、「don't call us ,we'll call you」:「私(フレームワーク)を呼び出さないで、私(フレームワーク)があなた(モジュール)を呼ぶから」です。

3. 様々なフレームワーク

フレームワークとして、様々な製品が世の中に出ています。世界で一番有名なフレームワークであるシンプルな Struts、Okapi サイトが提供する二つのフレームワークを紹介していきます。

3.1. Struts

フレームワーク

  1. 利用者からの要求(ボタンを押したり、リンクをクリックしたりするアクション)は、すべてをコントロールするサーブレットが要求を受け取ります。
  2. サーブレットは、受け取ったリクエストをすべて取り出し、フォーム Bean(画面から入力されたしたデータを格納する入れ物)にデータ格納します。
  3. 要求に従い、クラス(ビジネスロジック)を呼び出します。
  4. 呼び出されたクラスでは、リクエストの内容が入っているフォーム Bean を参照しながら、ビジネスロジックを遂行します。
  5. ビジネスロジックの処理を終えたら、処理結果を返却します。
  6. 再び、コントロールサーブレットが処理結果に従い JSP を呼び出します。
  7. JSP では、利用者に返すレスポンス画面を作成します。

上記の流れで、処理が行なわれていきます。では、開発者はどこの部分をコンポーネントとして作成すればよいのでしょうか?
作らなければいけないものは、各画面(JSP)、画面に対応するフォーム Bean、そして業務ロジックを記述するビジネスロジッククラスです。
以上が作成するコンポーネントですが、その他にフレームワークがコントールするための定義を XML に記述します。

Struts というフレームワークを使った割には、意外と開発者が作る部分が多いように感じます。それは、Struts が「本当に Web アプリケーションとして必要なもののみ、シンプルに提供している」からです。それにより、様々な Web アプリケーションで使うことが出来ます。

最後にフレームワークが提供する主な機能

3.2. X-Framework Light

X-Framework Light は、現在作成されている Nippo システム、learn3ed システムで採用されています。基本的な流れは、Struts と同様です。ただし、Struts よりは開発スピードを上げるために、いくつか規定されるが作業効率の良い機能を付随しています。1番大きな違いは、フォーム Bean を開発者が作成しなくても良いように、汎用的に使うことができる inputValue をフレームワークが提供しています。

これによって開発者は、フォーム Bean とフレームワークに登録する定義情報(画面とのマッピング等)の登録から解放されます。また、フレームワークは、outputValue も提供しています。

基本的に、業務ロジックはこの3つのオブジェクトを入出力のデータとして、値の取得、設定を行い業務ロジックを実現します。

X-Framework Light のその他の機能

3.3. X-Framework Pro

X-Framework Pro の製品概念は、「できる限りフレームワークに機能を持たせて開発効率を高め、開発スキルをできるだけ必要としないでもWeb システムを作成できるようにする」です。そのために、Struts に機能を付随した X-Framework Light、さらに機能を付随したのがこのフレームワークです。基本的に、このフレームワークを使って開発者が作るのは、業務ロジック部分です。では、Web システムの作成する部分毎にどのように生成されているか紹介していきます。


Copyright © 2003 - 2006 Okapi Project All Rights Reserved.