Web教材一覧ハードウェアとソフトウェア

Web環境でのプログラミング言語

本章では「プログラミング言語の発展」に続いて、WebブラウザとWebサーバ間で処理するためのプログラミング言語を扱います。Webページを記述するにはHTMLやXMLなどのハイパーテキストマークアップ言語がありますが、ここでは、それらの中での処理を記述するスクリプト言語(Javascriptなど)およびその関連事項を対象にします。

キーワード

スクリプト言語、Javascript、CGI、軽量言語、Java実行環境、javaアプレット、Javaサーブレット、セッションID、クッキー、Ajax、HTML5


スクリプト言語

スクリプト言語とは、HTMLと同様にWebページに組み込んで記述できる言語です。Webページのある部分を表示/非表示にしたり、入力データから簡単な計算をして結果を表示したりするのは、ほとんどスクリプト言語で行っています。

代表的なスクリプト言語にJavascriptがあります。Webブラウザで解釈され実行されます(Webサーバは関与しません)。ほとんどのブラウザはこの機能をもっており、どのブラウザでもほぼ互換性があります(ブラウザ間により若干の違いがあり、一部の命令が異なっていたり結果の表示が微妙に異なっていたりすることがあります)。

JavaScriptライブラリ

Javascriptでの処理には、表示/非表示、画像の拡大/縮小など決まったパターンが多くあります。そのなかには、かなり複雑で初心者にはわからないとか、熟練者でも大量の記述が面倒だというものもあります。さらにブラウザ間での非互換を吸収できると便利です。
 そのような要請に応えるのが「JavaScriptライブラリ」です。代表的なものに、jQueryPrototypeなどがあります。どちらもOSSになっており無料で利用できます。

CGI

Javascriptは豊富な機能をもっていますが、JavaやCなどの通常の言語と比べると不十分です。複雑な処理をするための仕組みがCGI(Common Gateway Interface)です。

  1. あらかじめ、通常の言語で記述したプログラム(ロードモジュール)をサーバに保存しておく。
  2. Webブラウザから、そのプログラムの起動リクエストを出す(HTMLで指定、データが必要ならばFORM入力)
  3. サーバはプログラムを実行。その結果をHTML形式にして、ブラウザに戻す
  4. ブラウザは受け取った結果を表示する

JavaScriptを含んだHTML(Webページ)は、閲覧者がソースリストを見ることができます。それに対して、CGIの場合は結果だけが戻されます。CGIの中身を探せたとしてもロードモジュールなので解析が面倒です。そのため、簡単な処理でも秘密にしたいときはCGIが使われます。

 処理がサーバで行われるので、ブラウザの負荷は軽いのですが、サーバの負荷が重くなります。

SSI

CGIと似た機能ですが、もっと単純なものにSSI(Server Side Includes)があります。例えば、HTML中に、
       <p>今日は<!-- #echo var="DATE_LOCAL" -->です。</p>
と記述すると、DATE_LOCALの値がサーバで処理され、その結果が
       今日は Sunday, 9-August-2015 09:12:43 です。
のように、記述した部分に挿入されます。
 SSIは時刻・日付機能やアクセスカウンタなどのように簡単な機能に限定されています。SSIコマンドを含んだHTMLファイルをSHTMLファイルといい、それを扱える環境が増えてきました。

軽量言語

軽量言語(軽量プログラミング言語)の厳密な定義はありませんが、JavascriptのようなWebページに組み込める言語です。Javascriptも軽量言語ですが、Javascript以外のものの総称として使うことが多いようです。
 有名な簡易言語に、Perl、PHP、Rubyなどがあります。OSSになっています。

これらの言語は、Javascriptと同様にブラウザだけで処理することもありますが、サーバ側に保存されているデータベースを処理するような、CGIでのサーバ側のプログラムに使われることが多いようです。

Java実行環境

Javaは、CやC++などと同様な通常のコンパイラ型のプログラミング言語ですが、特にWeb環境で広く使われています。Javaプログラムには、大きく分けて「アプリケーション」と「アプレット、Applet」があります。アプリケーションは、他の言語で作成したアプリケーションと同じですので、ここではアプレットを対象にします。

Javaのソースコードは、いったんバイトコード(目的プログラムに相当)に翻訳され、UNIXやWindowsで機械語にされ実行されます。そのバイトコードを扱える環境をJRE(Java Runtime Environment、Java実行環境)といいます。
 ほとんどのブラウザ(またはOS)は、JRE対応になっています。そのため、Javaで作成したプログラムは、どのブラウザでも表示できるといえる状況になっています。

Javaアプレットには、ブラウザで実行されるJavaアプレットとサーバで実行されるJavaサーブレットがあります。

javaアプレット
Javaアプレットは、あらかじめバイトコードにしてサーバに保存したプログラムをWebページから呼び出して、ブラウザで実行されます。アプレットもWebページと同じようなファイルとして保存しておけば、CGIを経由せずに使えます。呼び出すWebページで指定した個所、すなわち元のWebページ内に表示されます。
Javaサーブレット
Javaサーブレットとは、厳密にいえば、WebサーバをJavaアプリケーション・サーバに変身させる技術で、それを用いることにより、アプレットをサーバで実行します。それ以外はアプレットと同様です。

ブラウザ環境での処理の特徴

「プログラミング言語」からやや外れますが、Webページでの処理にはいくつかの特徴があります。

ローカルファイルへのアクセス制限

パソコン内でのプログラムでは、パソコンにあるデータファイルを読んだり書き込んだりすることは自由にできます。ところがWeb環境では、Webサーバにある他人が作成したWebページを閲覧するのが通常です。
 Webページから閲覧者のパソコン(ブラウザ側)のファイル(ローカルファイルといいます)をアクセスできると、悪意のあるWeb作成者に、パソコンにあるファイル内容を知られたり、改ざんや破壊をされたりします。
 このような危険を防ぐために、ブラウザやWeb関連言語では、原則として閲覧者が操作せずにローカルファイルへのアクセスができないようになっています。

HTTPとセッション管理

Webサイトで買物をするとき、ログイン→注文→決済→ログオフという流れになり、それぞれのWeb画面が表示されます。このとき、ログオンからログオフまでの一連の流れをセッションといいます。
 ところが、WebブラウザとWebサーバの間の通信プロトコルであるHTTPは、1往復のメッセージのやりとりで処理が完結するステートレスなプロトコルなので、セッションという概念がなく(一つのWebページが一つのセッション)、Webページが切り替わると接続も切れてしまうのです。それでは、注文ページで入力したデータを決済ページで使うというようなデータの受け渡しができません。

これを解決するために、いくつかの方法があります。

セッションID
セッションIDとは、セッション(あるWebページ)を識別する符号です。このサイトには多くの利用者がいます。利用者Aの注文データが利用者Bの決済ページに使われるのでは困ります。それで、Webサーバは、利用者Aの注文ページのセッションIDを利用者Aのブラウザに記録し、利用者Aが決済ページを閲覧したときにサーバはブラウザからセッションIDを受取り、同一利用者であると認識します。このような操作により、ログオンからログオフまでを一連のセッションにすることができます。
クッキー
セッションIDをサーバとブラウザ間で受け渡しする仕組みでよく使われるのがクッキーです。原則としてローカルファイルへのアクセスが禁じられているといいましたが、例外の一つがクッキーです。クッキーは、ブラウザがWebページを開くときにサーバから取りに来ます。
 クッキーはサーバが指定した一定期間保持されます。そのため、注文処理をしただけで中止し、翌日、決済処理を行うことができます。「買物カゴに入れる」などは、これを使っているのです。
URLパラメタによるデータの受け渡し
セキュリティ対策の一つとして、ブラウザにクッキー禁止の設定をしている場合もあります。あるいは、上記のような一連の処理ではなく、単にあるページから他のページに単純な情報(パラメタ)を受け渡したいこともあります。
 このような場合は、「http://kogures.com/index.html?para=xxx」というようにリンク先のURLにパラメタを追加して、データ「xxx」を受け渡すことができます。

Ajax

Ajax(Asynchronous JavaScript + XML)とは、JavaScriptを活用した方法論です。上述のjQueryのようなライブラリでもなくPHPのような新言語でもありません。XMLやJavascriptなどに関連する技術(非同期通信やDOMなど)を組み合わせて、新しい機能を実現させたものです。ほとんどのブラウザが対応しているので、何ら手を加えなくても、Ajaxを用いたWebページを作ることができます。

Ajaxの代表的な実用例として、GoogleMapの地図サービスがあります。GoogleMapでは、カーソルを操作するだけで、地図が連続的に変化します。これは、ブラウザがサーバからの情報をすべて受け取ってから解析して表示する従来の処理と異なり、パソコンからサーバにリクエストを送ったら、サーバからの結果を待つのではなく、その間にパソコンできる処理をやってしまうという、非同期通信(Asynchronous)をしているからです。

Webページは、タグで構成され、そのタグはDOM(Document Object Model)という階層構造の体系になっています。それを解析すれば、Webページの任意の個所をデータとして取り扱うことができます。それにより、現在のWebページの特定個所を表示/非表示にしたり、他のWebページのある部分を抜き取って現在のWebページに組み込んだりできます。その中核となるコマンドがXMLHttpRequestです。

HTML5による機能強化

HTMLの最新版はHTML5です。旧版では、Webページにグラフなどの図表を表示するには、gifのような画像ファイルを作る必要がありました。それがCANVAS機能を用いれば、Javascriptでデータからグラフを作り画像として表示できるようになりました。
 従来は、動画再生には、Flashなどのアドオンソフトを使う必要がありましたが、HTML5では、「video」や「audio」タグにより、Javascriptだけで実現できるようになりました