戻る

Web 系アプリケーション技術

Web 系の言語について、かいつまんで説明します。

HTML/XHTML

HyperText Markup Language。

HTMLとXHTML は WWW 上で公開する文書を記述するための仕様です。W3C という組織が策定している仕様で、その実体は単なるテキストに過ぎません。例えば、段落を表現するのに、次のように記述します。

<p>いづれの御時にか、女御、更衣あまたさぶらひたまひけ
るなかに、いとやむごとなき際にはあらぬが、すぐれて
時めきたまふありけり。</p>

<p>はじめより我はと思ひ上がりたまへる御方がた、めざましきものに
おとしめ嫉みたまふ。同じほど、それより下臈の更衣たちは、まし
てやすからず。朝夕の宮仕へにつけても、人の心をのみ動かし、恨
みを負ふ積もりにやありけむ、いと篤しくなりゆき、もの心細げに
里がちなるを、いよいよあかずあはれなるものに思ほして、人のそ
しりをもえ憚らせたまはず、世のためしにもなりぬべき御もてなし
なり。</p>

ブラウザは、HTML/XHTML をフォーマットして表示するツールで、開始タグ<p>を見つけると、段落が始まると認識して処理します。正確には、表示に関連する処理はレンダリング・エンジンという部分が受け持ち、TCP/IP や HTTP レベルのネゴシエーションは、ユーザ・エージェントと呼ばれる部分が受け持ちます。

ユーザ・エージェントは、ユーザに代わって、プロトコルに従ったネゴシエーションを自動的に実施してくれるツールです。ブラウザにはレンダリングエンジンとユーザエージェントが必ず含まれます。

HTML 4 までは SGML (Standard Generalized Markup Language)という仕様に従って言語仕様が定義されていましたが、その後継 XHTML 1.0, XHTML 1.1 以降は、 XML (Extensible Markup Language)という仕様に従って定義されています。

CSS

Cascading Style Sheet。

CSS は、 HTML/XHTML, XML などのレンダリング方法を指定するための仕様です。やはり W3C が策定しています。レンダリングエンジンの動作を指定するパラメタリストのようなもので、やはり単なるテキストに過ぎません。例えば、段落の先頭に一文字分のインデントをとり、文字の色を赤くする場合、次のように記述します。

p { text-indent: 1em;
	color: red }

レンダリングエンジンは、モニタへの表示を整形するものだけでなく、音声出力や紙媒体へ出力イメージの作成などを受け持つものもあります。CSS では、印刷媒体への改ページや余白などの指定や、読み上げる声の大きさや速さを指定すルこともできます。

XML

Extendible Markup Language。

XML は、構造化テキストの定義を決めるための仕様です。XML に則って定義された記述言語で最も有名なものは XHTML ですが、データ記述用のフォーマットとして、非常に広く使われています。やはり W3C が策定しています。W3C は、WWW の仕様を策定する団体です。その正式リリースされた仕様は、勧告 (Recommendation) として知られています。

XML 仕様自体は簡単なものですが、関連仕様が多岐に渡ります。XML 文書のボキャブラリを区別するための XML Namespaces、XML の変換やフォーマットを指定するXSL、XML に則って定義された文書の定義を記述する XML Schema、 XML をアプリケーションから操作できるようにするために、XML文書に対するアクセス形式を定義した DOM など、沢山のものがあります。

画像フォーマット

WWW で使われる画像のフォーマットには次のものがあります。

PNG - Portable Network Graphics
*.png. W3C が策定する画像形式。256色と約1,677万色で保存が可能。GIF の代替として策定された。軽くてきれい。
GIF - Graphics Interchange Format
*.gif. 米CompuServe社が策定した画像形式。最大 256 色。Unisys 社が著作権料金を徴収したことで一気に衰退。まだ多くの画像が GIF だが、PNG に置き換わりつつある。特に理由がなければ PNG を使うのが良い。
JPEG - Joint Photographic Exports Group
*.jpg. Independent JPEG Group (IJG) が策定する画像形式。ISO の JPEG Committee でも活動がある。約1,677万色。柔軟な圧縮形式をサポートし、色数の多さから写真に多く使われる。

JavaScript

Netscape社が開発した、 Java に似たスクリプト言語。普通のブラウザには、JavaScriptを実行するための処理エンジンが搭載されています。

標準仕様は一応ありますが、MS I.E.ではJScriptと呼ぶなど、仕様のばらつきがあります。一般に、MS I.E.の処理エンジンが性能が良く、Opera 等の処理エンジンはパフォーマンスに何があったりします。

業務では、入力フォームの未入力チェックやナビゲーション・ウィンドウの起動、入力値の妥当性検証などに使われます。サーバ側の処理ではなく、クライアント側のブラウザ上で実行されるため、負荷分散の観点で優れています。また、コンパイルの必要がないインタプリタ型の単なるテキストなので、HTML/XHTML ファイルに記述したり、HTML/XHTML ファイルから読み込んだりするだけなので簡単です。

但し、クロスブラウザの観点では動作にばらつきがあるので、複雑なことはやらすべきではではありません。また、クライアント側にダウンロードされたテキストがブラウザに実行されるという仕組みなので、クライアント側での改竄やバイパスを防ぐ手立てがありません。そのため、サーバ側をロジック的に守ることにはなりません。

JavaScript の優位性は、殆どの人は改竄したりしないことを期待すると、サーバと通信しなくても済み(ネットワークを一往復通さないで済む)、クライアント側で処理することから、パフォーマンス上の利得と実装の簡便性にあります。

Java

Sun Microsystemsが開発したプログラミング言語。javacというコンパイラでコンパイルしたものを、JVM と呼ばれるソフトウェアで実行する。

Java 言語自体は、クライアント側のスタンドアロンで稼動するソフトウェアも開発できる汎用言語ですが、主たる用途はサーバサイドアプリケーション開発です。サーバサイドのアプリケーション開発には、Java に則った次の仕様が使われます。

サーブレット
Java に則った、HTTPを介したサーバサイドで稼動するアプリケーション開発用に最初に開発された仕様。現在は、MVC フレームワークのコントロール部分を担うように推奨されている。クライアント要求を受け取って、後段の入力妥当性検証、認証、業務処理に振り分けるためのもので、このために使う場合は、コントローラ・サーブレットと呼ばれる。動作にはサーブレット・コンテナと呼ばれるソフトウェアが必要。
JSP (JavaServer Pages)
HTML/XHTML と同じように記述しながら、Java の機能を利用できるようにした仕様。動作時にはサーブレットに変換されてからコンパイルされたJavaモジュールとして動作する。サーブレットで HTML/XHTML を出力するためには、System.out.println("HTML/XHTMLの行");のように記述する必要があり、非常に煩雑になる。その回避策として開発された。現在は、MVC フレームワークのビュー部分に使うように推奨される。JSP にはJava のコードをロジックとして埋め込めるが、なるべく使わないように推奨されている。視覚デザインの経験に長けたHTML/XHTML 開発者に使ってもらえるようにするためだ。動作には、JSP エンジンと呼ばれるソフトウェアが必要。
Java Bean
元々はGUIで使うJavaクラスのための仕様。その後、アプレットからの使用を経て、サーバサイドのロジック実装にはJava Beanを利用するように推奨されるようになった。習慣的に、個々のビーンのことは beans と表記される。MVC フレームワークのモデル部分はビーンとして作るように推奨される。全体の流れは、コントローラ・サーブレットが、クライアントからの要求を受け取り、ビーンに処理を委譲して、その結果を返してもらって、クライアントへの応答を適切な JSP に振り分けることになる。J2EE コンテナは、EJB と呼ばれる仕様に従ったビーンを実行する環境でもある。
J2EE
Java には三つの種類がある。一つ目はベース部分の J2SE、二つ目は携帯電話や PDA のようなリソースの限られた環境で組み込みに使う J2ME、そして三つ目がエンタープライズのサーバサイドで利用する J2EEJ2EE 1.4仕様書(PDF))だ。J2EE は、J2SEに基づいており、サーブレット、JSP、JDBCEJB などの複数の Java 系言語仕様をセットにしたものと、J2EE アプリケーションを実行するためのサーバが実装しているべき仕様とからなっている。J2EE サーバを名乗るためには、サーブレットコンテナ、JSP エンジン、トランザクション管理、永続性管理、セッション管理、セキュリティ管理など、多くの機能を実装している必要がある。
アプレット
サーバからダウンロードしてブラウザ上で実行する Java アプリケーション。業務では、Java アプレットをサーバサイドへの入力インタフェースに使えるが、サーバサイドへの要求は、HTTP の GET か POST 要求に過ぎないので、アプレットにする必要はない。アプレットにすると、視覚デザインの変更がしづらく、入力時の妥当性検証などのロジックを組み込む場合でも、クライアント側の処理のために、改竄/バイパスされる可能性があるなどの問題がある。重要な処理はクライアントに頼らずに、サーバ側でもしっかりやらなくてはならない。

因みに、JavaScriptと Javaは全くの別物。JavaScriptはNetscape社が開発したブラウザ上で実行するためのスクリプト言語ですが、JavaはSun Microsystems社が開発したコンパイル型とインタープリタ型の折衷形式の言語です。アプレットと JavaScript は、両方ともクライアント側のブラウザ上で実行されますが、実行環境も動作の仕組みも別のもので全く関係ありません。

サーバサイドの Java アプリケーションの実行環境をアプリケーションサーバと呼びます。実行環境である JVM を複数立ち上げる機能を持ち、その上でサーブレット・コンテナと JSP エンジン、管理アプリを実行するもので、組み込みHTTP サーバを含みます。アプリケーションの配布形式は *.war です。J2EE 仕様が要求する仕様を満たすものを J2EE サーバと呼び、アプリケーションの配布形式は *.ear となり、一般に複数の *.war を含みます。

Apache Jakarta プロジェクトの Tomcat や、 Mort Bay の Jetty はアプリケーションサーバです。IBM の WebSphere AS (WAS)、BEA の WebLogic、JBoss Group LLC(JBG) の JBoss などは J2EE サーバです。Apache Software Foundation でも、Geronimo という J2EE コンテナを開発中です。2003年2月現在はインキュベーション段階で、Apache incubator プロジェクト配下で開発が進められています。

CGI

Common Gateway Interface。

HTTP サーバから、任意の実行環境へのインタフェースとなる仕組み。HTTP サーバ上で動的コンテンツを実行するための方法の一つ。掲示板やチャットなどで使われる。Java が登場するまではサーバサイドアプリの主流でした。

HTTP サーバのPlug-inとして用意し、サーバ側に用意されたアプリケーションが、サーバ側の実行環境を使って実行され、その実行結果が HTTP サーバに渡されて、クライアントへの応答になります。

実装言語は何でも良く、サーバ側に実行環境が用意されていれば、PerlでもC/C++でもFORTRANでも何でも良いのが、コモンの由来です。掲示板やチャットには、UNIX 上の文書処理用に開発された言語である Perl が使われることが多いが、Perl はインタープリタ型で動作が遅いため、C/C++ で実装することも少なくありません。

Apache2の前までは、CGI 要求があると、そのたびにプロセスが起動してクローズしていたため、非常に負荷が高かったが、Apache2からはスレッドで起動できるようになりました。

PHP

PHP:Hypertext Preprocessor。1994 頃に Personal HomePage tools と呼ばれてリリースされたものが、PHP/FIを経て、1998 年の PHP 3.0 でPHP:Hypertext Preprocessorと改称されました。

CGI から派生した仕組みの一つ。サーバサイド・スクリプティングと呼ばれ、単なる CGI の一つの選択肢としてではなく、Apache のモジュールとして組み込める。Java の JSP に近く、Perl に代わって採用されることが多くなりました。言語仕様の観点で Perl と比べると、データベースへのアクセス方式を言語仕様として設けている点が挙げられます。

特徴としては、次のようなことが挙げられます。

戻る

Copyright 2005 SUGAI, Manabu. All rights reserved.
SEO [PR] !uO z[y[WJ Cu