• 検索結果がありません。

テンツそのものを ( うまく ) 書く記述言語 HTML と (2) そのコンテンツをサーバーから 端末へ送り届けるための転送手順 ( プロトコル )HTTP の 2 つから成る サーバー 側では HTML に従って書かれたコンテンツがファイルの形で保存されており 端末 側からそのコンテンツを要求さ

N/A
N/A
Protected

Academic year: 2021

シェア "テンツそのものを ( うまく ) 書く記述言語 HTML と (2) そのコンテンツをサーバーから 端末へ送り届けるための転送手順 ( プロトコル )HTTP の 2 つから成る サーバー 側では HTML に従って書かれたコンテンツがファイルの形で保存されており 端末 側からそのコンテンツを要求さ"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

CGIプロジェクト1

サービス提供型ホームページ

サービス提供型ホームページ

サービス提供型ホームページ

サービス提供型ホームページ の技術

の技術

の技術

の技術

第1章

第1章

第1章

第1章

サービス提供型ホームページ

サービス提供型ホームページ

サービス提供型ホームページ

サービス提供型ホームページ

ホ ー ム ペー ジ を 介し た ( = ブ ラウ ザベ ー ス の) ネット 越し のサー ビ ス提 供が広 く使 わ れている。 本プロジェクトでは、自分たちの考えるサー ビ スを、このスタ イルのサー バー技術で提供することを試みる。 ここで考えた いのは、どのよ うなサービ スを提供する かであり、そ のプロトタ イプをこ こで見るようなサーバー機構で実現してみることである。 プロジェクト期間の前半は(1)サービスのアイデアづくりと(2)仕組・構造・技術の理 解に充てることにし 、後半で自分たちの創意工夫に基づくサービス提供のプロトタイ プづくりをしよう。 このメモは、(2)の仕組・構造・技術の理解のための知識と演習をするためのもので ある。 プロジェクトの全体像 CGIプロジェクト1 ネ ッ ト 越 し の サ ー ビ ス 提 供 は 、 日 常 よ く 見 か ける。たとえば *ネットショッピング *サービスの登録 *WebMail *履修登録システム そ れ に 対 し て ネ ッ ト を 介 さ な い 「 ス タ ン ド ア ロ ー ン 」 の サ ー ビ ス の 例 は 、 ワ ー プ ロ や 表 計 算 の プ ロ グ ラ ム を 手 元 の PC 上で立ち上げた場合である。 ( 注: ワ ー プロ や 表 計 算をネ ッ ト 越し に サ ー ビ ス す る 場合 も あ る 。 Google Docs や Microsoft の Office365サービスなど) これらのサービスは、「ホームページ」(技術用語では HTML と HTTP)を使って提供さ れている。 そこでまず、ホームページの技術を確認しておこう。 ≪静的なホームページ≫ 出来た頃 (1995 年ごろ?) のホームページは、前もって作られた内容(コンテンツ) が サ ー バ ー 上 の デ ー タ ( フ ァ イ ル ) と し て 置 か れ て お り 、 ユ ー ザ 端 末 上 の ブ ラ ウ ザ (Internet Explorer, Netscape, Firefox などの閲覧アプリケーション)はそのコンテンツ

をサーバー からネットワーク 越しに取り出して、表示する 。この時、コンテンツはいつ でも 同じ 内容であり、一旦アップし た ら 変化し ないので、静的なホ ー ムペー ジと 呼ば れる。 ここで使われる 技術は、詳細はネット ワーク の授業等を参照し て欲し いが、(1) コン ネット越しサービス提供 アプリ ケー ション プログ ラム アプリケーション プログラム スタンドアローン スタンドアローン スタンドアローン スタンドアローン PC PC PC PCでのサービスでのサービスでのサービスでのサービス ネットワーク越し ネットワーク越し ネットワーク越し ネットワーク越し でのサービス でのサービス でのサービス でのサービス

(2)

CGIプロジェクト1 テンツそのものを(うまく)書く記述言語HTMLと、(2)そのコンテンツをサーバーから 端末へ送り届ける た めの転送手順( プロト コル) HTTP、の2 つから 成る。 サー バー 側では、HTMLに従って書かれたコンテンツがファイルの形で保存されており、端末 側からそのコンテンツを要求されると、HTTPプロトコルの手順に従ってネットへ送り 出す。端末側では、初めに(HTTP プロトコルの手順に則って)コンテンツを要求する と、サーバーがそのコンテンツ(=に当たるファイルの中身)を HTTP の手順に従って 送出するので、それを受取る。受け取っただけでは読めない(HTML 言語で書かれて いるので読める形でない)ので、HTML言語を解釈してきれいな画面の形に変換して 表示す る ( こ れをレ ン ダ リン グと 呼 ぶ) 。 変換 生成さ れた 画面 を、 我々 が見 る ので あ る。 ≪動的なホームページ≫ 「静的な」ホームページが、コンテンツはあらかじめ準備された決まったものだったの に 対 し て 、 サ ー バ ー が コ ン テ ン ツ と し て 何 ら か の 計 算 処 理 の 結 果 を 送 り 出 す よ う な場合がある。たとえば、オ ン ラ イ ン シ ョ ッ ピ ン グ の サ イ ト で は 、 ユ ー ザ が 商 品 を 選 択 し 個 数 を 入 力 す る と 、 合 計 金 額 が 表 示 さ れ 、 更 に ク レ ジ ッ ト カ ー ド な ど で の 決 済 の 処 理 が 行 わ れ る 。 こ れ は、 ユ ー ザが端末から与える 情 報(商品の選択・個数など)を、サーバー が受け取って計算処理をし、結果をサー バ ー側に保存す ると 同時にユ ーザ端末にも 表示し ている 。このよう にサー バー側で処 理を行 いそ の処 理結果( 状 況によ っ て結 果が異 なる ) を表示す る 場合 、動的 なホ ー ムページと呼ぶことにする。 このとき、「静的」で決められていた、コンテンツを書くための言語HTMLと、転送の 手順HTTPは、一切変更しないでおく。 (多少拡張が必要だが。) ということは、サ ーバー側の送出の仕組も、端末側のブラウザ(=受け取ってHTMLを解釈してきれ アプリ ケー ション プログ ラム 静的 静的 静的 静的 動 動動 動 的的的的 端末 CGIプロジェクト1 いに画面を表示するプログラム)も、基本的には変更が要らない。静的で使ってきた サーバーやブラウザの仕組を、そのまま使う。 ≪ネット越しのアプリケーションサービス提供という見方≫ 動的なホ ー ムペー ジ は、端 末 に 座 る ユ ー ザ が 何 か の 入 力 デ ー タ を 与 え 、 サ ー バ ー 側 に あ る ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム ( オ ン ラ イ ン シ ョ ッ ピ ン グ や 授 業 登 録 の ア プ リ ケ ー シ ョ ン ) が 処 理 し 、 出 力 結 果 を ユ ー ザ の 端 末 に表示する 。アプリケーションはサーバー側に置かれており、ユー ザとの入力・出力 はホームページ画面(Web 画面)を通じて行う。つまり、ユーザが自分で手元の PC に アプリケーションをインストー ルする代わりに、サーバー上にアプリケーションを提供 し 、その入出力だ けを手元PC のホー ムペー ジ画面に引いてきた も の、と 考える こと ができる。 ネット越しのアプリケーション提供 アプリ ケー ション プログ ラム

(3)

CGIプロジェクト1 ア プリケー シ ョン 提供を考える と き、サー バー 上に置いたア プリケー シ ョン の入出力 を、Web 経由で行うことが、こ の 方 式 の 特 徴 で あ る 。 サ ー バ ー と 端 末 が ネ ット を 越 え て や り と り す る た め の 手 順 ( 通 信 の 約 束 ご と ) と し て HTTP が 、 ま た や り と り の 内 容 ・ 書 き 方 に 関 す る 約 束 と し て HTMLが標準化されている。 これを使うと、どのブラウザと も(スマホや携帯端末上のブ ラウザも含めて)やりとりでき る。 このやり取りの仕方の約束は、図にある よう にサー バー と端末の間のやり取りの約 束なので、端末側のブラウザがどんな形をしていようと、またサーバー側のプログラ ム(Webサーバ)がどんな形をしていようと、構わない。たとえば、端末側のプログラ ムが通常 のブ ラウザと 違 っ て、全く表 示をし な いがそ の 代わりにそ の 内容を 単に溜 め込むプログラムでもよいし、別のサイトに転送するプログラムでもよい。 同様にサー バー の側でも 、 ど の よ う な 形 で デ ー タ を 提 供 し よ う と 、 ネ ッ ト ワ ー ク の 境界の面で約束を守ってい れ ば 、 端 末 側 は ど の よ う な サー バー から 送ら れてきた か に は 関 心 が な い 。 つ ま り 普通のブラウザで表示でき る 。 動 的 な ペ ー ジ で は 保 存 さ れた ペー ジ デ ー タ の 代わ り に サ ー バ ー 側 の ア プ リ ケ

CGI (Common Gateway Interface)

Web ブラウザ Web サーバ HTTP: やり取りの仕方 「データXXを下さい」 「了解、以下データです」 HTML: データ中身の書き方 タイトルは***** 本文段落開始 ここへ絵を入れる など ページ データ 静的 静的 静的 静的 なページなページなページなページ Web ブラウザ Web サーバ HTTP HTML アプリ ケーション プログラム CGI 動的なページと 動的なページと 動的なページと 動的なページとCGICGICGICGI

CGIプロジェクト1 ーションプログラムが計算処理を行い、その結果をHTMLの形式に書き整え、HTTP の手順に従って送出すれば(これはWebサーバーの仕組をそのまま使えばよい)、 端末側のブラウザは画面として表示できる。 ここで、アプリケーションプログラム(計算処理をし結果を HTMLの形に作る部分)と Webサーバ(HTTPでのやりとりを担当する部分)は、分けて考えるのが普通で、そ

の間の受け渡しの境界(インターフェース)を CGI (Common Gateway Interface) と呼 ぶ。

(4)

CGIプロジェクト1 動的なホ ー ムペー ジ の仕組 を実現す る 枠組みは、 いろ いろと 提供さ れている が 、こ のプロジェクトでは簡便さの点から(Apache+PHP+MySQL)の枠組みを利用する。 世の 中 では 、 簡便 さ を 求 め る 場 合 にこ の 枠組 み か類 似 のも の が使 わ れる こと が結 構多い。大規模なサービスで性能を要求される場合や、セキュリティを要求される場 合、またサービスの開発をする業者が慣れているなどの理由で、他の枠組みを用い ることもまたよくあることである。ここでは、この枠組みが唯一ではないこと、条件によ っては他の方法の方がよいこと、を心に留めておいて欲しい。 ≪Apache Web サーバー≫ ApacheはWebサーバプログラムであり、現在は静的ページと動的ページの両方を

サポートしている。動的ページの実現には CGI (Common Gateway Interface) を提 供している。 このプロジェクトでは、apacheのWebサーバーが既に動作しているサーバーホスト 上で、ページを作る作業に終始する。 apache Webサーバー自体のインストールや 設定は自分では行わない。もちろん、興味のある学生は自分の PC へインストールし てみるのもよいだろうし、その環境が自分で用意できないが是非やってみたいという 学生には、インストールできる PC を一時的に提供することも考えるので、相談して欲 しい。 ≪PHP プログラミング言語≫ 動的なページはサーバーホスト上で動作するアプリケーションプログラムが生成する が 、 そ の ア プ リ ケ ー シ ョ ン を 記 述 す る 言 語 と し て 、 PHP ( 正 式 名 称 は PHP: Hypertext PreProcessor) という言語を用いる。動的ページのためのプログラミング 環境は多数あり、たとえばJava、Perl、Rubyなどがよく使われる。 このプロジェクト では、比較的簡単で学習も扱いも容易、かつ、世の中では結構使われている(いた)、 という理由からPHP 言語を選んでいる。 PHP の 大 き な 特 徴 と し て 、 静 的 な ホ ー ム ペ ー ジ デ ー タ を 格 納 し た の と 同 じ 場 所 に PHPのプログラムを用意し、実行できることが挙げら れる 。つまり、静的なホームペ ー ジ を作る のと 同じ 環境で 簡単に作れる 。これは 便利 なのだ が、そ れによ る 欠点も プロジェクトで使う枠組 CGIプロジェクト1 ある 。た と えば、セキ ュリテ ィ 設定が甘 いと プロ グラ ムを 読まれてし まう 。 簡便さ と の 兼ね合いで、賛否は分かれる。PHP の書き方の規則やそれの意味などの詳細は、 ホームページ http://www.php.net を参照のこと。プロジェクトでは PHPを使ってど んどん プログラムを書いて欲しいが、プロ グラムの書き方については、後からまと め て学習する。 PHPはインタープリタ(逐次解釈)型のプログラミング言語である。PHP単体でプログ ラムを作ることも可能であるが、プロジェクトではApache Webサーバーの後方に居 て、ホ ー ム ペー ジ から デ ー タ を受け 取っ て起 動さ れ、 処理 結果をホ ー ム ペー ジ に返 す形の使い方をする。PHPで書いたプログラムとApache Webサーバーとの間のや りとりのインターフェースは、CGI に相当するもの(mod_php)を使う。このやりとりは、 PHP プログラムから見ると、端末から入力されたデータはいくつかの特別な変数によ って伝えられる。また端末で「送信」(submit)ボタンをクリックすると、指定したPHPプ ログラムが起動される。出力側は、普通に文字列をprintすると端末のブラウザにそ のまま送られて、HTML として解釈される。 これらは、後から実例を持って試してみ る。 PHP の処理環境、つまり PHP の実行エンジンや Apache Web サーバーとの間のイン ターフェースモジュール(mod_php)は、プロジェクトでは予め設定されて提供される。 これらのインストールや設定は自分では行わない。興味のある学生は、Apache Web サーバー同様に、自分の環境へインストールしてみると、よい経験になる。 ≪MySQL SQLデータベース管理システム≫

最後に紹介するのが SQL 型データベース管理システム MySQL である。Apache Web

サーバーとPHPだけで動的Webページを作成できるし、そのようなシステムも多数 使われている が、ここでは比較的定番である 、デ ー タ ベースと 組合せた 利用につい ても見ておきたい。 そもそも、データベースは授業で理論は学ぶのだが、黒板だけではおよそ実感が湧 かない。データベースを体感する(Apache や PHP を抜きにしても)意味でも、プロジェ クトの要素にデータベースを入れておく。

(5)

CGIプロジェクト1 データ ベー スは、同じ形のデ ータをたくさん 保持し 、検索し たり並べ替えたりできる、 データ管理のソフトウェアである。たとえば学生に関する情報(氏名・学籍番号・生年 月 日 ・ 現 住 所 … ) を 1 人 の 学 生 の 記録( レ コー ド ) と し 、 東 邦 大 学 全 体 の 学 生 の 記 録 を 集 め た デ ー タ ベースを考えると、 図のようになる。 オペレーティングシステムとユーザアプリケーションの中間に位置するこのようなソフ ト ウェ ア シ ステ ムを、ミド ルウェ ア と 呼 ぶ こ と も あ る 。 つ ま り 、 い ろ い ろ なア プリケー シ ョン がデ ータ ベース 管 理 シ ス テ ム を 使 い に 来 る と い う モデルである。 デ ー タ ベ ー ス の 理 屈 や 詳 細 は 授 業で学ん でも ら う と し て、 ここ では広く使 われて いる 「 関係 デ ー タ ベー ス」 ( リレ ー シ ョ ナルデータベース)の実際の使い方について紹介する。ユーザのアプリケーションプ ロ グ ラム が 、関 係デ ー タ ベ ー スを 使う 時の 操 作言 語と し て 、S Q L が使 わ れて いる 。 SQL の 仕 様 自 体 は 標 準 と し て 定 め ら れ て お り 、 ど の 環 境 で も 同 じ も の が 使 え る 。 MySQL はこのような関係デ ータベースを提供する管理ソ フトウェアの1つで、ア プリ ケーションに対して SQL 言語を提供する。管理ソフトウェアは MySQL 以外にもいくつ も製品化されており、たとえば PostgreSQL、SQLite、Oracle、IBM DB2などの名前を 聞くことがあるだろう。MySQLの詳細はホームページ http://www.mysql.com を参

照 の こ と 。 な お ホ ー ム ペ ー ジ は 有 料 版 ( MySQL Enterprise ) と 無 料 版 ( MySQL Community Server ) があり、わかりにくいが、学生が自分 の環境で実験す る には無 料版で十分であろう。 MySQL はサーバー内に既にインストールされているので、学生はSQLインターフェ 佐藤 の 記録 田中 の 記録 山田 の 記録 データベース アプリ ケーション 検索 取出し ソート 追加 … (関係)データベース OS アプリ アプリ アプリ SQL インター フェース CGIプロジェクト1 ースを使った( デー タ ベー スの) 簡単な操作を試し て、デ ータ ベー スと はどう いうも の かを実感して欲しい。 では、そのような関係データベースが利用できるとして、なぜApache Webサーバー +PHP CGIという「Webアプリケーション」と呼ばれるような枠組みの中に出てくるの か? おそらくは、Web アプリケーションのかなりの部分が、サーバーにデータを保存 し、検索し、表示するような目的を持っているからではないだろうか。 たとえば、皆さ ん がいつも 使う 成績のシ ス テ ムを考えてみる と 、成績 の デ ー タ をサー バー に保存し ておき、学生は学期の初めに授業登録するときに変更し、教員は学期の終りに成績 を出して追記する。成績デー タをデータ ベー スに保存し 、必要に応じ て検索したり情 報を抽出した り並べ替えた りして、表示した い。別の例と して掲示板がある。掲示板 に今 まで に書 き込 まれた デ ー タ をデ ー タ ベ ー ス に保 存し 、ユ ー ザが 書き 込 むと き に はデ ータ ベー スに追記し 、見るときには検索した り抽出し たり並べ替えたりし て表示 す る 。これ も デ ー タ ベー スが あれば 簡単 にできる 。シ ョッ ピ ン グも 然り 、ア ン ケー ド も 然りであろう。検索・抽出・並べ替えなどを自分でプログラムするのは面倒だし、安定 して安全にデータを保存できる仕組を作るのも経験が要る。それを、データベースシ ステムは提供してくれているので、便利に使おうということになる。 Web アプリケーションからデータベースを利用するためには、(1)データ操作のための SQL言語、(2) PHPプログラムからデータベースへSQL言語のコマンドを出す方法 と、データベースからの結果を取り出す方法(つまり PHP と MySQL との間のインター フェースの使い方)、の2点を知っている必要がある。幸いなことにいずれもそれほど ややこしくない。後から具体的に紹介する。

[余談 Apache Web サーバー+PHP 以外の、動的 Web サーバーを作る枠組み] ≪CGI を使う方法≫

CGI のインターフェースを使うのだが、Web サーバー(ネットワークとのやり取りをする 側)に使うソフト、アプリケーション(CGI インターフェースの裏側で動くプログラム)を

作るのに使うプログラミング言語、の2つの要素が変更可能である。

Webサーバー側は、CGIを使うという前提では、おそらくApache Webサーバーと、

(6)

CGIプロジェクト1

んどであろう。それ以外のソフトもあるが、あまり多くは使われていないようだ。この2 者は、サーバーのOSがWindowsであれば両方とも利用可能(Apache Webサーバ

ー も Windows用バイナリが 提供さ れている ) である が、そ の他のO S 、具体的には Linux, Unix, MacOS X(OSコア部分は UNIX 系)では IIS は提供されないので Apache

のみとなるだろう。

Webア プリ ケ ー シ ョン のプ ロ グラ ム 言 語は 、 ここ で 挙 げ た PHP の他 、 Perl 、Java 、 Rubyなどが多く使われているだろう。本質は、CGIの約束さえ守れば何の言語で記 述してもよい。たとえばC言語でも作ることが出来る。使い勝手やデバッグの容易さ から、インター プリタ を介する スクリプト 言語が多く使われているようだ 。Cのようなコ ンパイル言語の場合は、コンパイル済みの実行ファイルをCGIの裏側に準備し、端 末の「送信」によって実行ファイルを立ち上げるような形になる。 ≪専用の Web サーバー(コンテナ)を使う方法≫ 裏側でア プリケー シ ョン を走 ら せる こと を最初から 念頭に 置いた 構造のサー バー が 作られ使われている。たとえば、Java のアプリケーションを想定したサーバーとして

Apache プロジェクト内で作られている TomCat が挙げられるが、これは Web アプリケ ーションを記述した Java プログラム(クラスになる)を、サーバー内に取り込んで実行 する形になる。コンテナなどと呼ばれることがある。 コンテ ナにす るメ リットの1つに、実行効率がある 。CGI 方式の場合は裏のプロ グラ ムのた めのプロセスを「 作っ て立ち上げる」のが標準的なスタイルで、立ち 上げの時 間がかかったり、メモリが余分に必要になったりする。立ち上げ時間を短縮するため に予めプロ セスをプー ルしておいて与える 方式も使われているが、プー ルの数が固 定さ れる など完全に解決し ているわけではない。コンテ ナ方式の場合はサー バーと して動いているプロセスがそのまま変身するので、プロセス立ち上げなどのOS操作 に伴う手間は必要なくなる。 今回のプロジェクトではこちらは使わない。

参照

関連したドキュメント

従来より論じられることが少なかった財務状況の

わからない その他 がん検診を受けても見落としがあると思っているから がん検診そのものを知らないから

この課題のパート 2 では、 Packet Tracer のシミュレーション モードを使用して、ローカル

はありますが、これまでの 40 人から 35

自発的な文の生成の場合には、何らかの方法で numeration formation が 行われて、Lexicon の中の語彙から numeration

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から

・私は小さい頃は人見知りの激しい子どもでした。しかし、当時の担任の先生が遊びを

わずかでもお金を入れてくれる人を見て共感してくれる人がいることを知り嬉 しくなりました。皆様の善意の募金が少しずつ集まり 2017 年 11 月末までの 6