« 成果物のサイズとシステムの保守性 | トップページ | 「てにをはレビュー」の是非 »

2012.04.02

ブラウザアプリと3階層型デスクトップアプリ

 自作の開発ツールであるXEAD Driverをデモすると、「ブラウザベースではないんですね」と言われることがある。ブラウザアプリ全盛のご時勢だ。業務システムをデスクトップアプリとして立ち上げるXEAD Driverに違和感を覚える技術者もいるかもしれない。しかし、デスクトップアプリが業務システムに向かないとみなす理由は今はない。

 ブラウザアプリとして開発することの意義として「配布容易性」が筆頭に挙げられる。ブラウザがあればどこでも使えるのは大きな利点である。しかし、デスクトップアプリの配布容易性も、JWS(Java Web Start)や.NETのClickOnceなどの自動配布技術のおかげで遜色はなくなった。ブラウザアプリは規定のブラウザでなければ使えないが、自動配布技術にはそんな制約がない点も魅力的だ。

 いっぽう、デスクトップアプリの魅力は「操作性」である。かつてのブラウザベースの業務システムは、デスクトップ型の業務システムに慣れたユーザには我慢できないほど操作性が悪かった。しかし今では、ブラウザアプリの操作性もデスクトップアプリに肉薄している。AjaxやjQueryなど、HTMLページの表現力や使い勝手を高めるための技術がどんどん出てきているからだ。

 かくして、デスクトップアプリとブラウザベースアプリとの違いは年々小さくなって、今では配布容易性の面でも操作性の面でも違いはほとんどなくなった。

        デスクトップアプリ ブラウザベースアプリ
配布容易性     ○           ◎
   操作性     ◎           ○

 さて、ブラウザアプリと対比されるデスクトップアプリは、正確に言えば「3階層型デスクトップアプリ」である。業務システム向けのシステム構成を例に、両者を比べよう。

Brouser_desktop

 DBサーバを伴う点や、アプリサーバに「DB操作クラス」と「UI操作クラス」とが置かれているといった大枠については違いはない。どこが違うか。ブラウザアプリでは、アプリサーバ上のUI操作クラスがクライアント上のブラウザとhttp通信する。いっぽう3階層型では、DB操作クラスとUI操作クラス(ビジュアルコンポーネント)とが完全に分離されている。そして後者がクライアントにいったんダウンロードされ(2回目以降はキャッシュが使われる)、これがアプリサーバ上のDB操作クラスとhttp通信する。

 基本構成は異なるものの、パフォーマンスやネットワーク負荷について両者に優劣はない。ちなみに90年代に流行した「C/S型(クライアント・サーバ型。2階層型ともいう)」には、アプリサーバが含まれていなかった。そのため、ネットワーク負荷や配布容易性に問題があったのである。

 では「業務システム」は、どちらのシステム構成が向いているのだろう。決め手はけっきょくのところ「開発生産性」だ。業務システムの特徴である複雑な帳簿組織をそのまま扱えて(つまりサロゲートキーが強制されるとかではなくて)、保守性が高い(つまりhtmlだのxmlだのをチマチマ書くとかではなくて)のであれば、どちらでもよい。私の場合、ブラウザベースの業務システムの開発に何度か関わってウンザリしたクチなので「3階層型デスクトップアプリ」を選んだ。

 ただし、XEAD Driverのシステム構成には、他にはない特徴がある。DB操作クラスやUI操作クラスは実行エンジンであるXEAD Driverそのものであって、個別の業務システム向けに開発された要素は含まれない。そもそも、個別案件の開発においてクラスは新規作成されない。開発者はORマッピングだのMVCだのに頓着せず、帳簿組織やビジネスルールの問題に集中できる。

Xeaddriver_sysconfig

 個別案件毎の可変部分は、この図で「仕様書」として示したファイルだけだ。この情報は専用エディタを用いて編集され、前回記事でも説明したように、膨大な定義要素がたった1個のコンパクトなプレーンテキスト(拡張子.xeafのXMLファイル)としてまとめられる。UI操作クラスが起動時にそれを読み取って、個別仕様のアプリとして瞬時に変形して立ち上がるのである。

 その様子は、ネットからダウンロードしたMIDIプレイヤーに、ネット上のMIDIファイルを読ませて音楽演奏している状況と相似形をなしている。この場合のMIDIファイルが「演奏可能な楽譜」とみなされるように、XEAD Driverの仕様書ファイルは「実行可能な仕様書」である。私はこの構成が、開発作業を合理化するための、そして業務システムを効果的にクラウド化するための鍵になると確信している。そのことの重大さに比べたら、ブラウザアプリかデスクトップアプリかなどなんて瑣末な話だろう。

本ブログでの関連記事:
オブジェクト指向とイパネマの娘
さようなら「画面ファイル」

|

« 成果物のサイズとシステムの保守性 | トップページ | 「てにをはレビュー」の是非 »

コメント

インストールマニアックのコンテストに参加したとき、
主催者にWEBアプリじゃないとだめなの?と質問しました。
WEBアプリでなくても別にかまわないがといった返事でした。対象をWEBアプリと想定していたようでした。
このとき、わたしもWebアプリもデスクトップアプリも関係ないのにと思いました。そしてXEAD Driverをcloud(Windows Azure)で動作させるのに手間が必要でした。この手間をなくせないか?
Windows Embedded (WES7)を使うとシンクライアント端末が作れます。プリンタも印刷できる時代だそうです。こんどXEAD Driverをシンクライアントで動作できないか挑戦してみます。シンクライアントは工場で使うことが多い?イメージを勝手に持っていいます。すると次は生産管理につながると、これまた、勝手に思っています。

たとえシンクライアントがうまくいかなくとも、XEADのWindows 7, Windows 8, Windows Azure RDP
版インストラーを作成して、いろんな環境で簡単にためせる化にも今度挑戦してみます。

投稿: 伊藤秀樹 | 2012.04.02 09:27

伊藤さま

たしかに、3階層型は効果的ですがサーバ設定に手間がかかる難点がありますね。シン・クライアントやデスクトップ仮想化が進展すればずっと楽になる。業務システムをブラウザアプリとして作る意味も薄れます。

それにしても、興味深い挑戦をいろいろされてますねぇ。またいろいろ教えてください~(^^)

投稿: 渡辺 | 2012.04.02 12:58

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: ブラウザアプリと3階層型デスクトップアプリ:

« 成果物のサイズとシステムの保守性 | トップページ | 「てにをはレビュー」の是非 »