Powered by SmartDoc

6、Cluster Navigation System (設計編)

アーキテクチャ仕様

CNシステムのアーキテクチャは、厳密なフレームワークとコンポーネントの設計のもとに構成されている。これはソフトウェアの保守・管理を容易にし、再利用性を向上させる。さらに開発段階では、コード作成時における役割分担を明確化し、生産性の向上を促進する。以下ではその詳細について述べる。

フレームワーク、コンポーネント、アーキテクチャ

CNシステムは、コンポーネントとフレームワークという概念を中心に据えて、アーキテクチャを考えている。ここでは、実際にその説明に入る前に、このフレームワークとコンポーネント、そしてアーキテクチャについて、その意味を整理しておく。

フレームワークとは、オブジェクト(もしくはコンポーネント)の集合が一体となってどのように動作するかを定義したものである。具体的には、Webアプリケーションとは、Webサーバ、DBMS、そしてWebブラウザが連携したフレームワークである。

コンポーネントは、明確に定義されたインターフェースを持った、交換可能なソフトウェアモジュールのことである。コンポーネントは一般的にそれ単体でも実行可能であるが、多くの場合、適当なフレームワークに接続して利用される。上で述べたWebアプリケーションのフレームワークの例では、Apache(Webサーバ)、Tomcat(Servletコンテナ)、Oracle(DBMS)、Internet Explorer(Webブラウザ)などが、Webアプリケーションフレームワークに接続されるコンポーネントである。

アーキテクチャとは、このフレームワークもしくはコンポーネントを構成する具体的なソフトウェアの仕組みのことである。フレームワークのアーキテクチャはそれに接続されうるコンポーネントのインターフェースを定義する。言い換えれば、あるコンポーネントがそのフレームワークのもとで交換可能かどうかは、そのアーキテクチャが決定付けるのである。

ここで注意しておきたいのは、レベルの違いによって、コンポーネントはフレームワークになりえるし、フレームワークもコンポーネントになりえるということである。例えば、Webアプリケーションを構成するWebサーバとして機能するApacheは、Webアプリケーションフレームワークのコンポーネントとしてとらえることができる。また、Apacheに接続して利用されるサーブレットコンテナTomcatはApacheフレームワークのコンポーネントであると言える。それは、フレームワーク及びコンポーネントのアーキテクチャによって決定される。

CNフレームワーク

CNシステムのフレームワークは、Webアプリケーションのフレームワークに基づいている。基本的にCNシステムのクライアントはWebブラウザであり、サーバはWebサーバとDBMSを中心にして成り立つ。

CNシステムのコンテンツ形式は、カリキュラム情報や時間割機能を提供するHTMLと、科目関係図作成ツールのAppletである。これらを含むクライアント(Webブラウザ)は、随時サーバに表示用のデータを要求するメッセージを送信する。そしてそれに対する返信として受け取ったデータを、HTMLテキストや、Applet上のグラフィカルな図といった形に加工して、画面に表示するという手続きを行う。以下の図はその様子を表したものである。

サーバとクライアントの関係1(クライアントからの視点)

クライアントからの要求を受信したWebサーバは、CNシステムのデータモデルコンポーネントにクライアントの要求内容を渡す。このデータモデルコンポーネントはJDBCインターフェースを通してDBMSに接続しており、クライアントのWebサーバに渡された要求に応じて必要なデータを取得し、Webサーバに返す。Webサーバは、その返されたデータをそのままクライアントに返信する。以下はそのようなCNフレームワークのアーキテクチャを表現した図である。

サーバとクライアントの関係2(サーバからの視点)

なお、クライアントがサーバに対して要求を送信したり、サーバがそれに対して返信したりする際の通信プロトコルにはHTTP(Hyper Text Transfer Protocol)が利用される。特にHTTP上でのメッセージおよびパラメータの伝送方式として、CNシステムの大部分がHTMLフォームを利用するのに対して、科目関係図作成ツールのAppletはSOAP(Simple Object Access Protocol)を利用する。SOAPとは、サーバ上のメソッドをクライアントから呼び出す仕組み(RPC:Remote Procedure Call)を、HTTPを利用してXMLメッセージを交換することにより実現したものである。

このように、クライアントがWebブラウザ、サーバがWebサーバ+Servletコンテナ、DBMS、データモデルコンポーネントで構成され、クライアントとサーバ間のメッセージ交換がHTTPとSOAP、データモデルコンポーネントとDBMSの連携がJDBCインターフェースによって実現されているようなフレームワークが、CNシステムのフレームワークである。

CNフレームワークのコンポーネント

CNフレームワークでは、WebサーバにApache、ServletコンテナにApache Tomcat、データベースにはPostgreSQLをコンポーネントとして採用する。データモデルコンポーネントは、JSPのtaglibコンポーネントとして作成し、JDBCインターフェースを通してPostgreSQLと連携させる。データモデルコンポーネントの具体的な仕様については、CN仕様書の方に詳述するのでここでは触れない。クライアントのWebブラウザは、UNIXの特別教室に備わっているNetscape4.7及びそれ以上、もしくはIE5.0以上を想定している。クライアント―サーバ間の通信プロトコルには、先に述べたHTTPと、メッセージの伝送方式としてHTMLフォーム及びSOAPを利用する。以下の表では、利用するアーキテクチャのバージョン情報及び、そのアーキテクチャをCNシステムで利用することへの意義を、簡単に説明する。

Apache Apacheは、Apacheプロジェクトがフリーで配布している、非常に強力で柔軟性のあるHTTP1.1仕様のWebサーバである。Apacheは世界で最も利用されているWebサーバで、修正なしにほとんどのUNIX環境で稼動し、マニュアルや関連情報も多く、安定性と信頼性が非常に高い。
Apache 1.3
Apache Tomcat Tomcatは、Apacheプロジェクトのひとつ、Jakartaプロジェクトがフリーで配布しているServletコンテナで、使い勝手がよく、一般的に最も利用されている。またApacheプロジェクトに属するだけあって、WebサーバApacheとの親和性が非常に高い。Tomcatを利用してWebアプリケーションを開発した経験が豊富にあるというのも重要なメリットである。
Apache Tomcat 4.0
PostgreSQL 由緒正しいフリーのDBMSである。フリーであるにもかかわらず、安定性、信頼性ともに高く、大規模なシステムでも利用可能である。JDBCをサポートしている。日本語にも対応している。
PostgreSQL 7.13
HTTP WWWで利用される通信プロトコル。テキストベースなので開発が容易で、汎用性が高い。
HTTP 1.1
JDBC JavaコードからDBにアクセスするための、統一的なインターフェース群を提供する。JDBCをサポートしたDBMSであれば基本的に同じインターフェースで接続できるため、汎用性が非常に高い。
JDBC 2.0
SOAP SOAPは、RPC(遠隔メソッドの呼び出し)をHTTP上でXML文書を介して実現する仕組みである。RPCをJavaで行う場合、RMIを用いる方法あるが、RMIは実装がややこしく、バグも介在するというデメリットがある。SOAPはテキストベースの伝送方式を採用しているので、バグが入りにくく、実装も容易になっている。
SOAP 1.1
JSP HTMLページの中にJavaコードを埋め込むことができ、簡単にWebアプリケーションを開発することが可能である。また、JSPではJava Beansに加えてtaglibをサポートしており、徹底したコンポーネント指向開発が可能である。
JSP 1.1
JSP taglib JSPから呼び出す処理を、Java Beansよりも高いレベルでコンポーネント化したもの。JSPページ内のアプリケーションロジックとプレゼンテーションロジックの分離を徹底できる。これはプログラムモジュールの再利用性を向上し、保守管理を容易にする。またCNでは、プログラマがtaglibを開発し、Webデザイナがそのtaglibを利用するという役割分担を行うことで、生産性の向上をはかる。
JSP 1.1 taglib 1.0

CNシステムにおけるアーキテクチャの連携

CNシステムでは、カリキュラム情報などのデータの表示にはHTMLページを用いる。また、時間割機能における個人情報の送信時などにはHTMLフォームを利用する。表示されるHTMLページは、URLまたはHTMLフォームから送信される情報を入力として、Webサーバ上のJSPページから出力される。JSPページはクライアントの要求に従い、データモデルコンポーネント(taglibコンポーネント)にアクセスし、必要な情報を取得する。さらに、CNシステムでは、ユーザが授業同士の関係図を閲覧しそれを操作できる仕組み(科目関係図作成ツール)をAppletで用意している。そのAppletへのデータの取り込みは、SOAPによるRPCで、Webサーバ上のデータモデルコンポーネントに対してデータ要求のメッセージを送信することで実現している。すなわち、クライアントにダウンロードされたAppletから、SOAPを利用してHTTPからサーバにアクセスし、サーバ上のメソッドを実行する。JSPの出力データや、AppletがSOAPを利用して呼び出すメソッドの返り値は、CNのデータモデルコンポーネントから取得したデータである。以下の図は、CNシステムにおけるアーキテクチャの連携をコンポーネントレベルで表したものである。

コンポーネントレベルでのアーキテクチャ同士の連携

インターフェース設計・デザイン

インターフェースの設計に当たっては、ユーザの目的の情報へのアクセシビリティを考慮して、CN内の全ての情報に3クリック以内で到達できるように設計した。またサイトデザインにおける主要なコンセプトとして、Cluster Navigationの名前にちなんで、「航海」のイメージを演出する青と黄色の配色を採用した。以下はCNサイトにおける主要なページのスナップショットである。

CNサイトのスナップショット