Webアプリケーションの基礎知識

ここでは、Webアプリケーションの基本的な事柄について説明します

■ Webアプリケーション

魅力的なWebサイトを構築するには、最新情報の掲載や訪問者の要望にかなった情報の発信などの頻繁なコンテンツ更新が欠かせません。しかし、HTMLのみでそういった動的なコンテンツ更新をするのには限界があります。そこでHTMLを出力するアプリケーションとWebサーバーを連携させて、動的にWebページの内容を変更する仕組みが考え出されました。この仕組みを利用したシステムをWebシステムといい、そのシステムを構成するアプリケーションをWebアプリケーションと呼びます。

■ 基本的な仕組み

Webアプリケーションは、Webサーバ上に格納されており、通常のHTMLと同様にブラウザからのURL指定でアクセスされます。アクセスされたWebアプリケーションはWebサーバによって起動されます。起動されたWebアプリケーションはなんらかの処理を行い、その結果としてHTMLをWebサーバに返します。最終的にアクセスしたブラウザには、Webアプリケーションが処理したHTMLが出力されます。

■ CGIとサーバーサイドスクリプト

Webアプリケーションは、Webサーバとの連携で処理が行われますが、その連携広報にはCGIと呼ばれる方法とサーバサイドスクリプトとの2種類があります。

CGI(Common Gateway Interface)はWebアプリケーションをOS上の単体のプログラムとして作成しておく方法で、広くPerlが使われています。CGIプログラムがURLでアクセスされた場合、Webサーバはそのプログラムを実行します。CGIプログラムは標準出力にHTMLを出力し、それをWebサーバが受け取ってブラウザに返信します。perlのようなスクリプト言語で書かれたCGIプログラムは、CGIスクリプトと呼ばれます。

サーバサイドスクリプトはHTMLの中にプログラムを埋め込んだスクリプトのことで、CGIとは異なり、Webサーバ自身がスクリプトの内容を解釈・実行して、処理結果のHTMLを生成します。PHPやASPはこのサーバサイドスクリプトとして記述します。CGIと比較した場合、HTMLとスクリプトを分離しなくて良い、いちいち外部プログラムが実行されない為サーバの負担が軽い、などのメリットがあります。

■ データベースとの連携

Webアプリケーションは、プログラミング言語を用いて作成します。perlやPHP、ASPなどの言語では通常のプログラミングと同じようにさまざまな処理を行うことができます。また、これらの言語ではデータベース用のライブラリが用意されている為、データベースに格納してあるデータをHTMLとして出力したり、逆にユーザが入力したデータをデータベースに格納することができます。

■ フォーム

Webアプリケーションでユーザの入力を受け取るには、HTMLの「FORM」タグを使います。多くの場合Webアプリケーションは、検索条件や登録内容を入力してもらってから処理を行います。こういった入力内容をWebアプリケーションに受け渡す為の仕組みが「FORMタグ」です。

FORMタグでは、テキストボックスやチェックボックスなどの部品を作成することができ、Webアプリケーションにその内容を引き渡せます。Webアプリケーション側は、FORMによって飛ばされた内容を読み込んで様々な処理を行います。

例えば「名前」を入力するテキストボックスの内容を「test.php」というWebアプリケーションに引き渡す場合、次のようなHTMLを記述します。

<FORM ACTION = "test.php" METHOD = POST>
名前: <IMPUT TYPE = "TEXT" NAME = "NM" >
<IMPUT TYPE = "SUBMIT" NAME="SUBMIT" VALUE="実行" >
</FORM>

このフォームを含んだHTMLはブラウザでは次のように表示されます。

 

名前:

 

この画面の「実行」ボタンを押すと test.phpというWebアプリケーションが起動するように設定しています。test.phpではフォームで送られてきたNMという入力値を参照することができます。

■ フォームタグ

フォームタグの基本的な構文は次の通りです。

<FORM ACTION= "Webアプリファイル名" METHOD="送信方法" >
部品名 <INPUT TYPE="入力部品種類" NAME="変数名">
部品名 <INPUT TYPE="入力部品種類" NAME="変数名">
・・・・・・・・・・
<INPUT TYPE="SUBMIT" NAME="" VALUE="ボタンに表示するテキスト">
</FORM>

FORMタグのACTIONには実行するCGI/サーバーサイドスクリプトのファイル名を指定します。METHODには入力内容をwEBアプリケーションに送信する方法を指定します。POST/GETの指定については別の項で説明します。

■ フォーム部品タグ

<FORM>~</FORM>の間には具体的な入力項目を記述します。

TYPE
サンプル画面
説明
オプション
TEXT テキストボックス。テキストの入力に使う。
MAXLENGTH=数値 最大文字数
SIZE=数値 テキストボックスの幅
DEFAULT=値 テキストのデフォルト値
PASSWORD パスワード入力用テキストボックス。TEXTと同じオプションを指定することができる。
CHECKBOX チェックボックス。はい/いいえなどの二者択一の項目で使う。
CHECKED デフォルトでチェック状態にする。
VALUE=値 チェックボックスがONの時の値を指定する。デフォルトは1でOFFの値は必ず0になる。
RADIO

 

ラジオボタン1
ラジオボタン2
ラジオボタン。複数の選択肢から1つの値を選択する項目で使う。NAMEの値で選択肢がグループ化される。
CHECKED デフォルトで選択された状態にする。
VALUE=値 このボタンが選択された時の値を指定する
HIDDEN   隠しフィールド。ユーザーに見せたくない項目を作成する場合に使う。この項目はブラウザには表示されない。
VALUE=値 デフォルト値

入力部品にはINPUTタグの他に、複数行入力を行うテキストボックスのTEXTAREAタグと、コンボボックスまたはリストボックスで複数の値から選択を行うSELECTタグとがあります。

<TEXTAREA NAME="変数名" COLS="横幅" ROWS="行数" >デフォルト値</TEXTAREA>

TEXTAREAは複数行入力を行うテキストボックスです。
COLSとROWにはテキストボックスの横幅と行数を指定します。<TEXTAREA>と</TEXTAREA>の間に記述した文字がデフォルト値として表示されます。

<SELECT NAME="変数名" SIZE="リストの行数" >
<OPTION VALUR="値" >選択肢名1</OPTION>
<OPTION VALUR="値" >選択肢名2</OPTION>
・・・・・・・・・・・・・・
<OPTION VALUR="値" >選択肢名n</OPTION>
</SELECT>

SELECTは複数の値から選択を行うリストボックスです。SIZEによりリストボックスで一度に表示する行数を指定します。SIZEを指定しない場合はリストがドロップダウンして表示されるコンボボックスになります。

<SELECT>~</SELECT>の間にはリストに表示する選択肢を列挙します。VALUEには、選択肢が選ばれた時の値を指定します。どれかをあらかじめ選択させておきたい場合はSELECTEDオプションを使って<OPTION VALUE=0 SELECTED>のようにします。

■ フォーム実行ボタンタグ

フォームの実行ボタンを作るには、<INPUT TYPE="SUBMIT">を使います。INPUTでTYPEを指定すると、FORMタグのACTIONで指定したWebアプリケーションを実行するボタンができます。フォームの実行は、このボタンを押すことで行われます。ボタンは実行ボタン(SUBMIT)のほかにも以下のような種類があります。

TYPE
説明
SUBMIT 実行ボタン。FORMタグのACTIONで指定したWebアプリを実行するボタンを作成する。
RESET 取り消しボタン。<FORM>上の全部品の内容をデフォルト値に戻すボタンを作成する。
BUTTON 汎用ボタン。<INPUT TYPE=BUTTON ONCLOCK=""・・・・・・・・・・・など、ボタンを押した時にJavaScriptを起動する際によく用いられる。

■ GETとPOST

FORMのMETHODで指定するフォームデータの送信方法にはGETとPOSTの2種類があります。それぞれ次のような特徴があります。

METHODにGETが指定されているとフォームの送信時にはGETメソッドで要求を出します。具体的には、ACTION属性に指定したURLに?をつけ、その後にデータをくっつけて、そのURLを要求します。それを受け取ったサーバは?以降を環境変数に入れてCGIのプログラムに渡します。実装上、URLの長さや環境変数の長さに制限がある場合、長いデータを送ろうとすると切れてしまうことがあります。掲示板への書き込みのように大量のデータを送る必要がある場合には向きません。また、FORMタグを使わずに <A HREF=" http://Localhost/test.php?no=123"> のような記述でCGIにデータを送信することもできますが、この場合もメソッドはGETになります。

METHODにPOSTが指定されていると、POSTメソッドが使われます。データはURLの一部ではなく、独立した本文として送られますので、よほどのことがない限り切られることはありません。場合にもよりますが、POSTが使える場合はPOSTを使ったほうが良いでしょう。

<< 戻る

RIKO's Trial Page | Shirley's i-box | Shirley's little box