アットマーク・アイティ @IT@IT情報マネジメント@IT自分戦略研究所QA@ITイベントカレンダー  
 
 @IT > 新種リッチクライアント出現 「Ninja-VA for Win2Jaws」
 
@IT Special

 

PR

新種リッチクライアント出現
「Ninja-VA for Win2Jaws」

2005年4月、『JSFを凌駕するビジュアルWebシステム構築ソリューションの誕生』として紹介した「Ninja-VA」(以下、Ninja-VA)が新たなターゲットへと動き出した。
これまで、Ninja-VAのターゲットは純粋なWebアプリケーションであったが、新たに拡張された「Ninja-VA for Win2Jaws」は、WindowsクライアントとJavaサーバーモジュールの連携を前提とした“リッチクライアント・ソリューション”の一種に位置付けることができる。
Windowsクライアントが持つパワーとJavaテクノロジが持つオープンな性質を融合し、経営者、開発者、ユーザーのそれぞれにメリットのあるソリューションを提供しようという、サイオステクノロジーの新たなる取り組み「Win2Jaws」を、ここで探ってみよう。



  クライアントに.NET、サーバにJavaという選択

 Webアプリケーションは、2層クライアント/サーバと比較して運用コストが低い点が評価され、エンタープライズシステム領域においても爆発的に普及した。しかし、Windowsアプリケーションの操作性を期待するユーザーにとって、ブラウザとHTMLで構成されるユーザーインターフェイスが力不足なのは事実であり、ここに来て、クライアントにリッチな操作性を実現するニーズが高まっているのは周知の通りだ。

 この流れを受け、すでに多くのリッチクライアントソリューションが出現しているが、その多くは専用の言語やスクリプト、あるいは開発環境を使用する必要があるため、広く普及しているWindowsアプリケーション開発に比較すると、技術的、コスト的オーバーヘッドが高いという側面を否めない。

 Microsoft .NETが提供するテクノロジーをフルに利用した分散システムを構築すれば、上記の問題は解決できるであろう。しかしながら、サーバライセンスのコスト、セキュリティ対策への不安、テクノロジーによる囲い込みといった理由から、それに不安を覚える経営者も多い。

 そこで、いっそのこと、クライアントにはMicrosoft.NETによるWindowsアプリケーションを、サーバにはJavaを基本としたオープンスタンダードを採用し、経営者、開発者、ユーザーのそれぞれにメリットのあるまったく新しいソリューションを提供しようという意図のもとに開発されたのがWin2Jawsである。

 Win2Jawsは、クライアント側にはWindowsのメリットである、Windows UIの操作性、.NETの高い開発生産性を提供する。サーバ側には、JavaEEテクノロジーをコアとした安定性と堅牢かつ高度なセキュリティ、および、オープンなアプリケーション開発環境を提供する。では、その内容に迫ってみよう。

  Win2Jawsが提供する7つのメリット

 Win2Jawsは単なるリッチクライアントツールではない。

 プレゼンテーション層にはMicrosoft.NETによるWindowsアプリケーションを利用するが、中核となるビジネスロジック層はJavaモジュールで構成される「まったく新しい多層エンタープライズシステムモデル」を構築する為の基盤であると理解してほしい。

 従来の2階層クライアント/サーバシステム(以下2層C/S)、Webシステム、リッチクライアントと変遷してきたエンタープライズシステムモデルが抱えているさまざまな課題が、Win2Jawsによって解決され、さらに柔軟性、拡張性、生産性が高いシステム構築が可能となるのだ。

Windowsのメリットを生かしたプレゼンテーション層の開発

 先に述べたとおり、既存リッチクライアントソリューションは、技術的、コスト的オーバーヘッドが高いという側面がある。

 一方、Win2Jawsは、Microsoft Visual Studioで開発できる通常のWindowsアプリケーションをプレゼンテーション層として利用する。このため、Visual Basicで2層クライアント/サーバの開発経験をもったエンジニアであれば、すぐにプロジェクトに参加することが可能であるという大きなアドバンテージがある。

 もちろん、.NETベースとなるため、旧バージョンVisual Basicからのステップアップは必要となるが、他のリッチクライアントツールへの乗り換えをするより、技術的な敷居ははるかに低く、必要となる時間も少ないはずだ。

 当然、通常のWindowsアプリケーションなので、ユーザーが期待する2層クライアント/サーバ的な操作性や表現力を再現するのも容易だ。

 Visual Studio標準コンポーネントだけでも、HTMLインターフェイスと比較すれば、はるかにリッチなインターフェイスを構築できるが、さらに強力なのはサードパーティーが提供する.NET対応コンポーネント群だ。中途半端なリッチクライアントツールではおよびもつかない豊富なバリエーションの中から、ユーザーニーズを満たすものを自由に選択することが可能だ。

 さらに、既存リッチクライアントソリューションの不得意分野であるクライアント側リソース活用も容易だ。例えば、バーコードリーダーやスキャナー、プリンター等の周辺機器連携、WordやExcelといった定番オフィスアプリケーションとの密連携も実現することができる。

プレゼンテーション層、ビジネスロジック層の協調分散処理

 クライアントが優れた操作性をもつのは喜ばしい事であるが、必要以上に肥大化する状況には弊害がある。2層クライアント/サーバの時代にはこのようなクライアントプログラムが多く見受けられた。重要なビジネスロジックや複雑なDBトランザクションまで実装してしまった、いわゆる「ファットクライアント」である。

 システムの拡張や保守、あるいは性能チューニングといった局面で、この「ファットクライアント」が深刻なボトルネックとなった。

 一方、Webシステムモデルでは「シンクライアント」化への代償として、アプリケーションサーバへの負荷一極集中が問題となった。HTTP送信とHTML表示しか行わないクライアント側に対し、サーバ側の仕事量はあまりにも多いためである。

 クライアント側のマシンスペックやネットワーク環境が著しく改善された今日では、それぞれの役割を見直し、最適化を図る必要がある。

 Win2Jawsの基本形はプレゼンテーション層、ビジネスロジック層、データベース層から構成される多層システムだ。

 Windowsアプリケーションをプレゼンテーション層とし、十二分な操作性と表現力を備える一方、重要なビジネスロジックや複雑なDBトランザクションは、ビジネスロジック層にJavaモジュールとして実装する。

 これにより、2層クライアント/サーバおよびWebシステムが抱えてた問題を見事に解決する理想的なシステムモデルを実現できるのである。

クライアントモジュールの自動配布・更新

画面1 Win2JawsStartクライアント側管理ウィンドウ(画面をクリックすると拡大表示します)

 プレゼンテーション層をWindowsアプリケーションとすることで、課題となるのは、アプリケーションの配布・更新にかかわる運用のコストだ。これは2層クライアント/サーバの限界でもあった。

 一方、Microsoft .NETには「スマートクライアント」と呼ばれるアプリケーション配布メカニズムが用意されているが、これはサーバ側OSがWindows Serverである事が前提となる。

 そこで、Win2Jawsは上記の課題を「Win2JawsStart」と呼ばれる独自アプリケーション配布メカニズムを開発することで解決した(画面1)。

 Win2JawsStartはクライアントモジュールの自動配布、バージョン管理および自動更新を実現する。これらの機能を実現するため、「Win2JawsStart Server」というサーバプロセスが必要となるが、JavaベースのWebアプリケーションであるため、稼働プラットフォームを限定される事はない。

サーバサイドプログラミングの生産性を改善

 既存リッチクライアントソリューションの多くは、プレゼンテーション層のみにフォーカスした開発ツールやフレームワークである。このため、リッチクライアントを適用する開発プロジェクトでは、サーバサイドのアーキテクチャーを策定するため、非常に多くのコストを費やさなければならないという事実がある。

 この手間を惜しんだプロジェクトは悲惨な状況へと陥る。リッチクライアントとのデータ送受信を行う何万行ものコードをスクラッチで作り倒さなければならないのだ。

 しかし、Win2Jawsではそのような心配は無用だ。

 プレゼンテーション層とのセッション確立や、データオブジェクトの送受信、サーバ側メソッドの起動といった基本メカニズムは全てWin2Jawsが提供してくれている。サーバサイドの開発者は、Ninja-VAフレームワークの作法にのっとって、ビジネスロジックのみをシンプルにプログラミングするだけで良い。

 また、データベーストランザクションの実装も非常に素早く簡単に行うことができる。これは、Win2Jawsの機能というより、ベースとなっているNinja-VAフレームワークの機能や専用開発環境「Ninja-VA Studio」によるものだ。

 Ninja-VAフレームワークについての詳細な説明は『JSFを凌駕するビジュアルWebシステム構築ソリューションの誕生「Ninja-VA」』を参考にしてほしい。

オープンスタンダードテクノロジによるシステムの拡張性

 ビジネスロジック層のサーバにはTomcatをはじめとするJavaEE準拠のWebコンテナを利用し、この中でWin2Jawsのメインコントローラーが動作する。

 つまり、Win2Jawsのビジネスロジック層からは、JavaEEによって提供される多くのAPIやデータソースにアクセス可能になるという事だ。JDBCを利用したDBMSへのアクセスはもとより、メインフレームなどのレガシー、EJB、Webサービスなど、あらゆるものを利用できるようになる。

 また、OS、APサーバーといったインフラも同様だ。あらゆる選択肢の中から、最適なものを選択すれば良く、スケールアップもスケールダウンも自由自在だ。

 この柔軟性、拡張性こそ、オープンスタンダードテクノロジーの強みといってよいだろう。

WebユーザーインターフェイスとWindowsユーザーインターフェイスの連動

 Win2Jawsのメインコントローラーは、Windowsクライアントに対するサービス提供だけではなく、HTMLクライアントのWebアプリケーションを同時に制御することも可能だ。

 Webアプリケーションにはクライアント側のWindowsアプリケーションを起動するコンポーネントが用意されており、起動するアプリケーションの名前を指定するだけで、Webアプリケーションと.NETクライアントアプリケーションがシームレスに連携可能という、まったく新しいアプリケーションモデルを実現できる(画面2)。

画面2 ログインからデータの検索と一覧表示までのHTMLクライアントとして実装し、データ編集をWindowsクライアントとして実装した例
一覧から編集対象を選択すると、共有セッション情報から選択されたデータの詳細がWindowsクライアントに表示される(画面をクリックすると拡大表示します)

インターネット環境での利用

 従来の2層クライアント/サーバ間の通信には、DBMS固有のプロトコルが利用されていた。このため、インターネット環境でそのままこのシステムモデルを適用することは、事実上不可能であった。

 一方、インターネット環境が前提であるWebシステムではHTTPプロトコルが基本となる。Webシステムモデルを拡張したモデルあるWin2Jawsも、当然ながらHTTPプロトコルを利用し、プレゼンテーション層であるWindowsアプリケーションとビジネスロジック層であるJavaモジュールとの会話を行っている。

 これにより、従来の2層クライアント/サーバでは、実現不可能であったインターネットを経由したワイドエリアなシステムを実現すると同時に、Webシステムを凌ぐ操作性を提供することが可能になっている。

 また、サービス要求やデータ交換に必要なプログラミングは至ってシンプルである。

 一般的なリッチクライアントソリューションは、複雑なデータ交換にXMLを利用することが多く、この部分で低水準なプログラミングを強いられるケースも多いが、Win2Jawsであれば、このような心配は無用だ。

 Win2Jawsもデータ交換の際、XMLを利用しているが、これをアプリケーションプログラミングで意識する必要は無い。.NET側もJava側も、わずか数行のコードを書くだけで、それぞれの世界で取り扱いできるデータオブジェクトに復元されるのだ。


  Win2Jawsのアーキテクチャ

 さて、ここまで解説してきた数々のソリューションを実現できる理由は、JavaEEアプリケーションサーバと.NETクライアントが独自のアーキテクチャによって連携するアーキテクチャにある。どのようにJavaと.NETが連携し、スムーズなサービス要求やデータ交換が行われるのかについて、代表的なコンポーネントを紹介することで理解を深めていこう(画面3)。

画面3 Win2Jawsのアーキテクチャ(画面をクリックすると拡大表示します)

(1) Windows Form

  Win2JawsのフロントエンドはWindows Formで構築する。これはMicrosoft Visual Studioを利用し、一般的なWindows Formアプリケーションと何ら変わりの無い手順で開発できるものだ。使用する言語もVisual Basic、C#など、Visual Studioによってサポートされる言語であればどれでも選択可能だ。

 唯一注意すべき点は、インストーラーの作成である。先に解説した、Win2Jawsが提供するアプリケーション配布メカニズム「Win2JawsStart」を利用するために、インストーラー拡張コンポーネントを埋め込んでおく必要がある。

(2) ADO.NET DataSet

 .NETフレームワークが提供する標準的なコンポーネントである。主としてデータベースのローカルコピーを作成する目的で利用されるが、Win2Jawsではビジネスロジック層とデータモデルを共有するという重要な役割をはたしている。

(3) Ninjava Connector

 Win2Jawsが提供する.NETコンポーネント。C#で実装されている。

 認証、ビジネスロジック層とのセッション確立、サービス要求、データ交換など、クライアントプログラムで必要となる手続きが完全にカプセル化されている。

 複雑な構造のデータを交換する場合は、Ninjava Connector APIへのパラメータ、戻り値として ADO.NET DataSetのインスタンスを利用する。

(4) Ninjava Servlet

 JavaEE準拠のWebコンテナ内で稼働するWin2Jawsメインコントローラーである。

 Ninjava ConnectorからHTTPリクエストとして転送されたサービス要求メッセージを処理し、対象となるビジネスオブジェクトへ処理を委譲する。

 また、同じセッションコンテキスト内で、一般的なHTMLクライアントのWebアプリケーションを同時に制御することも可能である。

(5) DataContainer

 Win2JawsのベースフレームワークであるNinja-VAが提供するコンポーネントである。DataTable, TableRelationといったデータオブジェクトを内包しており、アプリケーションプログラムで利用されるデータモデルを表現する。

 DataContainerの構造はADO.NET DataSetの構造に類似しており、Win2Jawsのデータ交換メカニズムは、この特性を利用し実装されている。.NETプログラムからNinjava Connectorを経由して転送されたADO.NET DataSetオブジェクトは、Ninjava Servletによって、このDataContainerオブジェクトとして復元されるのだ。

(6) Service WebObject

 ビジネスロジック層アプリケーションプログラミングの中心となるオブジェクトである。

 プレゼンテーション層へ提供するアクションメソッドや、DataTable, TableRelationといったデータオブジェクトを内包する。また、Ninja-VAフレームワークが提供するSQLコンポーネント群を利用し、データベーストランザクションの実装も行われる。これらのプログラミングは、Ninja-VAフレームワーク専用開発環境である「Ninja-VA Studio」を利用することが可能だ(画面4)。

画面4 Ninja-VA Studio 
ビジネスロジック層アプリケーションプログラミングの中心となるオブジェクトである。プレゼンテーション層へ提供するアクションメソッドや、DataTable, TableRelationといったデータオブジェクトを内包する。また、Ninja-VAフレームワークが提供するSQLコンポーネント群を利用し、データベーストランザクションの実装も行われる。これらのプログラミングは、Ninja-VAフレームワーク専用開発環境である「Ninja-VA Studio」を利用することが可能だ

 Ninja-VAフレームワーク、そして「Ninja-VA Studio」が提供するビジュアル開発スタイルを採用することで、これまで難易度が高いとされていたJavaEEでのサーバ側の実装、ビジネスロジックやデータベーストランザクションのプログラミングが大幅に簡素化される。

 使用する言語はもちろんJavaであるが、低水準APIをカプセル化した高水準コンポーネントをビジュアルに組み合わせてアプリケーションを構築する手法は、Windowsデベロッパーにも違和感なく受け入れられるであろう事は間違いない。

  まずは疑うことなく“体験”してみることだ

 過去にもJavaEEと.NETを連携したソリューションはいくつか登場してきた。しかし、手放しでどれもが歓迎されなかったのは、Javaと.NETの両方への造詣が必要だったのに加え、JavaEEと.NETの連携アーキテクチャが難解で敷居が比較的高かったことが理由として考えられる。

 その点、Win2JawsはJavaEEの難解さはNinja-VAフレームワークによって高度に隠蔽されると共に、JavaEEと.NETとの連携も簡単なコーディングで実現できるように設計されているため、その敷居は従来の連携ソリューションに比べ遥かに低いといえる。

 さらに、従来の2階層クライアント/サーバモデルや、既存のリッチクライアントソリューションの弱点を全て克服しているといっても過言では無いだろう。

 今まで説明したとおり、数多くの利点を含むWin2JawsはJavaEEと.NETの連携ソリューションの中では飛びぬけた完成度をもち、JavaEEと.NETの開発スタイルを一変させるだけの潜在力を感じさせる。

 このソリューションをさらに深く知り、そのメリットを体感するには、実際に利用してみるのがよいだろう。以下のURLからいますぐ体験版をダウンロードして、試してみて欲しい。


提供:サイオステクノロジー株式会社
企画:アイティメディア 営業局
制作:@IT 編集局

掲載内容有効期限:2005年12月14日
 
関連リンク
Ninja-VA

WebReportCafe

バーチャルOJT

教育トレーニング
 
記事リンク
@IT:開発中ソフトのOSSコードを検出、米Black Duckとテンアートニ(2005/6/24)

@IT:独自のフレームワークをオープンソース化、テンアートニ(2004/8/18)

@IT:Linuxビジネスの真髄は“ブランド”にあり、テンアートニ(2003/8/16)
 


 
@ITトップ@IT Special インデックス会議室利用規約プライバシーポリシーサイトマップ