クライアント開発

WEB系の開発となるといろいろなクライアントのアーキテクチャが考えられる。それこそ用語もたくさんあって、シンクライアント、ファットクライアント、リッチクライアント、スマートクライアントなどなど、結構わかりにくい。というわけで今回はその用語の整理。
 
まず、シンクライアント、ファットクライアント。
この二つはそもそも、もともとがアプリケーションという意味合いではなくてC/S上のクライアント端末の意味で使われていた。シンクライアントは簡単なリソースの少ない(thin)端末を想定している。逆にファットクライアントはPCのような、それなりのリソースが利用できる(fat)端末だ。
 
ところがシステム開発の側面において用語の意味は変わってくる。それまでのC/S系システムではなく「プレゼンテーション」「ビジネスロジック」「データ」という3つの階層に分けられて開発されることが多くなってくるにつれて「プレゼンテーション」かつ「ビジネスロジック」をクライアントに実装するものをファットクライアントと呼ぶようになり「プレゼンテーション」のみを実装し、「ビジネスロジック」をサーバーで実装する軽いクライアントのことをシンクライアントと呼んだ。
 
さらにWEBシステム開発の側面から見れば通常のアプリケーションのようにExe形式で独自に動くクライアントのことをファットクライアントというようになりビジネスロジックを持たず、IEのようなブラウザ上で動くクライアントのことをシンクライアントと呼ぶようにも変わってくる。
 
ただ、シンクライアントはブラウザ上で動くわけで、ユーザーインターフェイスの部分ではファットクライアントのような表現力や豊富なリソースが活用できるわけではない。逆にファットクライアントの場合はアプリケーションのバージョンアップに全クライアントの再インストールを強制するなどのデメリットもあった。
 
そこでこの両方のいいとこどりという意味で出てきたのがリッチクライアントである。
 
リッチクライアントは例えばブラウザ上ではFlashCurlMicrosoftのスマートクライアントなどを用いて、以前のHTMLベースのクライアントに比べればかなり見栄えや操作感のよいクライアントを作ることができる。
 
もちろんブラウザベースだけではなくて、最近では通常のExe形式のアプリケーションをWEBサーバーに登録することで、そこから起動したりインストールしたりできるような技術(ノータッチデプロイメントやClickOnce)という従来のファットクライアントの問題を解決している。こっちはExe形式なので自由に豊富なリソースにアクセスできるというメリットは残っている。

最後にスマートクライアントはMicrosoftが提供するリッチクライアント開発のためのフレームワークである。最近ではFlashを使ったFlexというリッチクライアントのフレームワークが注目されているようだ。