社長 重役 部長 課長 係長 平社員

情報アプリケーション1
2005年 9月 21日 第一回資料
担当 重定 如彦
はじめに
• 本授業では、CGIについて解説する
(後半の山本先生はXMLを解説する予定)
• CGIの構築に必要なプログラミングやHTMLについ
ては時間の都合上、必要最低限の説明しかしない
ので、興味のある方は各自勉強してください
• 参考文献
一週間でマスターするCGI[Windows XP対応版]
福島 靖浩 著、 毎日コミュニケーションズ
その他書籍やウェブページによる解説多数あり
目次
•
•
•
•
•
プロトコルとは?
インターネットのプロトコル
プロトコルの階層化
ウェブページの表示までの流れ
ウェブページの種類
プロトコルとは?
プロトコル(Protocol)とは、コンピュータ同士が通
信を行う際に、具体的にどのようにして通信を行う
かについての取り決めのこと
• プロトコルを決めておかなければ通信を行うことはできない
• コンピュータの世界だけではなく、我々の日常生活において
も、人や物の間で何らかのやりとりを行う場合、基本的には
何らかのプロトコルに従ってやりとりを行う
• 例えば、機械の説明書にはその機械を操作するための
プロトコルが記述されている
日常生活におけるプロトコル例(1)
人間同士が意思の疎通を行う場合
• 意思の表現方法のプロトコル
声、文字、手話、点字、表情、ジェスチャー・・・
• 意思の転送手段のプロトコル
空気(音波)、光(視覚情報)、電話、手紙、電報、電子メール・・・
• 言語のプロトコル
日本語、英語、フランス語、ドイツ語、中国語・・・
お互いに理解できるプロトコルを使ってはじめて意思の疎通が可能となる
また、理解できたとしても、使うプロトコルを具体的に決めておかなければ
うまく意思の疎通ができない場合もある
例:文化が違うと同じジェスチャーが全く違う意味を持つ場合がある
日常生活におけるプロトコル例(2)
自動販売機でジュースを買う場合
•
支払いのプロトコル
硬貨を投入する
•
商品の選択のプロトコル
展示されている商品に対応するボタンを押す
•
商品の受け取りのプロトコル
受け取り口から商品を取り出す
•
その他のプロトコル
お釣りの受け取りや返却方法、売り切れ時の表示方法など
これらのプロトコルを知らない人(自動販売機を知らない人)は
自動販売機でジュースを購入することはできない
また、同じジュースを買う場合でも、コンビニでジュースを買う場合は
上記とは全く別のプロトコルが使われる
コンピュータのプロトコル
コンピュータの場合、以下のような人とコンピュータの間の
やりとりの方法もプロトコルの一種と言えるだろう
• データの入力方法
キーボード、マウス、スキャナ、タッチペン、ジョイスティック・・・
• データの出力方法
ディスプレイ、スピーカ、プリンタ・・・
しかし、コンピュータ用語としてのプロトコルは、一般的には
ネットワークを使ってコンピュータ同士が通信を行う為の取り決め
のことを指し、この授業でも以後はプロトコルをこの意味で使用する
プロトコルの階層化
コンピュータのプロトコルには様々な種類があり、それぞれの役割の
レベルに応じて階層化して分類することができる
•
通信回線のプロトコル
低
ケーブル、光ファイバー、無線などで使われる部品などを規定
•
データを目的のコンピュータに届けるためのプロトコル
インターネットではTCP/IP、UDPが主に使われている
•
ネットワークを使って様々なサービスを提供するプロトコル
ウェブ(WWW)、電子メール、ファイル転送・・・
レ
ベ
ル
高
ここでいうレベルとは役割の細かさのこと
レベルが低いほど、より細かい役割を扱う
ここでは3つのレベルを紹介しているが、実際にはプロトコルをもっと細かく
7段階に分類するOSI階層モデルと呼ばれるものが定められている
プロトコルの階層化の意味
プロトコルを階層化することで、それぞれのプロトコルは自分より一つ
レベルの低いプロトコルの使い方を知っていればそれより下のレベルの
プロトコルのことを一切知らなくても通信を行うことができるようになる
以下は、日常で行われている階層化の例
会社の社員は一般に役職によってレベル分けされているが、上位の
役職の社員は自分の一つ下の役職の社員に指示をだすことで、
自分より下の役職の社員全体に指示を与えることができる
平
社
員
レベル
低
係
長
課
長
部
長
重
役
長社
高
この例では、各社員は自分より一つ下の役職の社員に対して指令を出す
例えば、社長は自分より一つ下の役職である重役に指令を与えることで
部長より下の社員のことを知らなくても会社全体を運営することが可能
日常で行われている階層化の例
他にも日常の様々な場面で階層化が行われている
• 車の運転
ハンドルやブレーキなどの運転に関する操作方法を学ぶだけで、
車のエンジンやブレーキなど、車の動作の仕組みのことを
一切知らなくても車を運転することができる
• 家電製品
電話、テレビ、冷蔵庫、電子レンジ、テレビゲームなど、ほとんどの
家電製品は使い方さえ知っていれば、機械の具体的な仕組みを
一切知らなくても使うことができる
製品の利用者
製品を組み立てる(修理する)人
部品を作る人
高
このように、階層化を行うことで我々は様々なものを、
詳細な仕組みについて知らなくとも利用することができる
低
インターネットのプロトコル(1)
• TCP/IP(「てぃーしーあいぴー」と読む)
インターネットで、あるコンピュータからあるコンピュータに
データを送り届ける為のプロトコル。日常生活でいうと、
郵便局を使って手紙を送る仕組みに似ている
 TCP/IPではインターネットにおけるコンピュータの住所を表す
IPアドレスを指定して目的のデータを転送する
 郵便の場合、建物の住所を指定して手紙を送る
 TCP/IPも郵便局も、送るデータの内容については一切関知しない
(中身に関しては、より上位のプロトコルが処理を行う)
インターネットのプロトコル(2)
• HTTP(HyperText Transfer Protocol)
その名の通り、ウェブページなどの記述言語である
ハイパーテキストデータ(HTML)を転送する為のプロトコル
 ウェブページを表示するウェブブラウザ(HTTPではユーザエージェントと
呼ぶ)と、ウェブページを管理するウェブサーバと呼ばれる2つの
コンピュータの間でデータの転送を行う
 データの転送は一つ下のレベルのプロトコルであるTCP/IPを使う
 HTTPでは主に、ウェブブラウザからウェブサーバにどのような
要求データを送ればよいか、そしてウェブサーバがその要求に対して
どのような返答データを送り返すかについて規定されている
TCP/IPとHTTPの関係
TCP/IPとHTTPは郵便局と葉書を使った通信販売の関係に似ている
1.見たいページのURLを入力する
http://www.hosei.ac.jp/gaiyo/gaiyo.html
1.葉書の表に通信販売の
会社の住所を書く
2.葉書の裏に欲しい商品を書く
2.URL入力後エンターキーを押す
3.葉書をポストに投函する
3.TCP/IPを使ってデータを
ウェブサーバに転送する
4.郵便局が葉書を郵送する
4.ウェブサーバがウェブページの
データをTCP/IPを使って送り返す
5.要求された商品を郵送する
5.受け取ったデータをブラウザで表示
6.届いた商品を利用する
TCP/IPの担当部分
郵便局の担当部分
ウェブページ表示までの流れ(1)
1.ユーザが見たいページのURLを入力する
http://www.hosei.ac.jp/gaiyo/gaiyo.html
ウェブページ表示までの流れ(2)
2.URLを入力後エンターキーを押す
ウェブブラウザが、入力されたURLをプロトコル、
ホスト名、ウェブページのパスの3つに分解する
http://www.hosei.ac.jp/gaiyo/gaiyo.html
(郵便の場合)
プロトコル:HTTP
ホスト名:www.hosei.ac.jp
ウェブページのパス:gaiyo/gaiyo.html
(通信販売)
(住所)
(商品名)
ウェブページ表示までの流れ(3)
3.HTTPの要求メッセージを作成する
2で、プロトコルがHTTPであることがわかるので、ウェブブラウザは、
HTTPの要求メッセージを作成する
GET /gaiyo/gaiyo.html HTTP/1.1
Host: www.hosei.ac.jp
Accept-Language: ja
1行目は特別な意味を持ち、以下の3つの情報をスペースで区切って記述する
メソッド データのパス HTTPのバージョン
注:GETはデータを取ってくるというメソッド、HTTP/1.1は最新のバージョン
2行目以降は1つの行にひとつずつ要求時の補足情報を以下のように記述する
リクエストヘッダ名: データ
ウェブページ表示までの流れ(4)
HTTPの要求メッセージの主なリクエストヘッダ
Host
データが保存されているホストのアドレスを
記述する。必ず記述する必要がある
User-Agent
ブラウザ(ユーザエージェント)の情報
Accept-Language
利用可能な言語
Referer
直前にリンクされてたURLの情報
If-Modified-Since
目的のデータが指定した時間から後に
更新されているかどうかを確認する
ウェブページ表示までの流れ(5)
4.作成したHTTPの要求メッセージを転送する
3で作成したHTTPの要求メッセージを、2で調べたウェブサーバ
(www.hosei.ac.jp)にTCP/IPを使ってウェブブラウザが転送する
TCP/IPを使って転送する
GET ・・・(省略)・・・
Host: www.hosei.ac.jp
・・・(省略)・・・
ウェブブラウザ
ウェブサーバ
(www.hosei.ac.jp)
ウェブページ表示までの流れ(6)
5.ウェブサーバはHTTPの要求メッセージの中身を見て、
要求されたウェブページのファイルを読み込む
ウェブサーバのハードディスク内の
/gaiyo/gaiyo.html というファイルを開く
GET /gaiyo/gaiyo.html HTTP/1.1
Host: www.hosei.ac.jp
・・・(省略)・・・
ウェブサーバ
(www.hosei.ac.jp)
残りのヘッダの情報は必要に応じて利用する
例:日本語が要求されていた場合は、日本語で
記述されたページを選んで読み込む
ウェブページ表示までの流れ(7)
6.ウェブサーバは返信メッセージを作成する
HTTP/1.1 200 OK
Content-Type: text/html; charset-shift-jis
Date: Thu 20 Sep 2005 11:10:00 GMT
この後にファイルの中身を書く
返信メッセージのヘッダ
ヘッダとボディを分ける
ための空白行
返信メッセージの本体(ボディ)
1行目は特別な意味を持ち、以下の3つの情報をスペースで区切って記述する
HTTPのバージョン ステータスコード ステータス情報
注:ステータスコードは100~599までの数字で例えば200は要求されたデータがうまく
取得できたことをあらわす。また、404はファイルが見つからないということを表す
2行目以降は1つの行にひとつずつ補足情報を記述する
空白行の後、返信メッセージの本体を記述する
ウェブページ表示までの流れ(8)
7.作成したHTTPの返信メッセージを転送する
6で作成したHTTPの返信メッセージを、TCP/IPを使ってウェブサーバが
ウェブブラウザのコンピュータに転送する
TCP/IPを使って転送する
HTTP/1.1 200 OK
・・・補足情報(省略)・・・
ウェブブラウザ
・・・データ本体(省略)・・・
ウェブサーバ
(www.hosei.ac.jp)
ウェブページ表示までの流れ(9)
8.送られてきた返信メッセージを見てウェブページを表示する
まず、返信メッセージの1行目に記述さ
れているステータスコードをみて、
正しくデータが送られてきたかどうかを
確認する。正しければ、ウェブページの
内容を表示し、正しくなければエラー
メッセージを表示する
ウェブページの種類(1)
• 通常のウェブページ
 ウェブサーバ内に、ウェブページのデータが記述してある
ファイルをそのまま保存する
 ウェブページのファイルを変更しない限り、いつ、誰が
そのページを表示してもまったく同じ内容が表示される
 ウェブページの表示までの流れは、先ほど説明した
ウェブページ表示までの流れそのもの
 一般的にURLの拡張子は .html(または.htm) となる
ウェブページの種類(2)
• CGI(Common Gateway Interface)
 ウェブサーバ内のファイルには、ウェブページの内容その
ものではなく、プログラムを保存する
 ウェブサーバはHTTPの要求メッセージを受け取ると、
指定されたファイルに記述されているプログラムを実行し、
その結果を返信メッセージとしてブラウザに送り返す
 プログラムはHTML文章を作成する
 掲示板やアクセスカウンタなどのように、ユーザの操作
などで毎回表示内容が変化するようなページを作成可能
 一般的にはファイルの拡張子は .cgi となる
ウェブページの種類(3)
• CGIの動作例
アクセスした時間によって表示する内容を変えるCGI(Time.cgi)
1.Time.cgiに
対する要求
2.ウェブサーバが
Time.cgiを開き、
記述されている
プログラムを実行する
3.作成されたHTML
文章を返信メッセージ
として送り返す
ウェブサーバ
このファイルには、
以下のような動作を行う
プログラムが記述されている
1.現在時刻を調べる
2.現在時刻をみて
「おはようございます」
「こんにちは」
「こんばんは」
のいずれかを表示する
HTML文章を作成する
Time.cgi
ウェブページの種類(4)
• ウェブブラウザ側で実行するプログラム
代表的なものにJavaScriptがある
 HTML文章の中にプログラムを記述する
 CGIと異なり、プログラムはウェブブラウザ側で実行する
 CGIは、ウェブサーバ側で実行されるため、CGIを実行する為には
毎回ウェブサーバに接続する必要がある
一方、Javascriptの場合、一回ウェブページをサーバから転送し
さえすれば、ウェブサーバに接続することなく何度でもプログラムを
実行することができる
 CGIと組み合わせる(CGIプログラムがJavaScriptが記述されている
HTML文章を作成する)ことも可能。
従って、特定の拡張子を持つわけではない
 マウスを上に乗せると絵が変わるボタンなどで使われる
ウェブページの種類(5)
• CGIの特徴(1)
掲示板のように、不特定多数の人が共通のデータを利用する
ような場合、CGIでなければ実現できない
1.keijiban.cgi
に対する要求
2.ウェブサーバが
keijiban.cgiを開き、
記述されている
プログラムを実行する
掲示板に書き込まれた
データが保存されているファイル
3.データの読み書き
このファイルには、掲示板に対する
4.作成されたHTML
文章を返信メッセージ
として送り返す
操作(読み込み、書き込み)の処理
を行い、結果を表示するHTML文章
を作成するプログラムが記述される
ウェブサーバ
keijiban.cgi
ウェブページの種類(6)
• CGIの特徴(2)
JavaScriptのような、ウェブブラウザ側で実行する
プログラムは、セキュリティなどの理由から一般的に
自分のコンピュータの中のデータしか扱えない
自分のコンピュータ内のデータを他のコンピュータのユーザ
と共有できないため、アクセスカウンタや掲示板はつくれない
一方、CGIは、ウェブサーバ上でプログラムを実行するため、
処理の重いプログラムや、非常に多くの人が短時間に
アクセスするようなCGIを作成してしまうと、ウェブサーバに
大きな負担をかけてしまう
ウェブページの種類(7)
• プラグイン(Plug-in)によるブラウザの機能の拡張
プラグインと呼ばれる拡張プログラムをインスールすることによって、ブラ
ウザに新しい機能を追加することができる
 ウェブブラザは基本的にはHTMLを表示する為のプログラムであるが、プラ
グインによって、それ以外のデータも表示が可能になる
 有名なものにFlashがある。FlashはJavascriptと同様に、ウェブブラウザ側
でプログラムされるプログラム
• その他
他にもHTMLに記述されたコマンドをウェブサーバで実行
するSSI(Server Side Include)と呼ばれる技術がある
SSIは主にアクセスカウンタやアクセス集計などで使われる