Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

  1. トップページ
  2. PHP入門編 - CGIとは

CGIとは

みなさまどうもこんにちわ。

というわけで今回は『CGI』(シージーアイ)について解説しつつ、そのついでにPHPの処理の流れを軽く追ってみたいと思います。『CGI』とは『Common Gateway Interface』の略で、昨今ではあまり聞かれなくなってしまった言葉です。

『CGI』とは一言で言うとPHPとかで組まれた『動的ウェブサイト』の『仕組み』のことです。ちなみに素のHTMLで組まれたウェブサイトはあんまり動かないので昨今では『静的ウェブサイト』とか呼ばれます。

『CGI』は厳密に言うと『ウェブサーバーソフトウェア』で『プログラム言語』を走らせる仕組みそのもののことを指します。これまでの記事で『MAMP』(Apache)を動かしつつ『PHP』の処理を走らせていますよね。なのでこれまで作ってきたものも立派な『CGI』になります。

昨今では動的ウェブサイトが当たり前になってしまったので「PHPとかで組まれた、ただのウェブサイトだろー(´・ω・`)」と軽く流されてしまいがちでございますが、昔はユーザーさんのアクセス状況などに合わせて内容やサービスを変えられるウェブサイトは非常に珍しく、とても画期的だったので『CGI』という名前がシステムにつけられた、といったイメージでOKかと思います。昔は素のHTMLだけで組まれたウェブサイトがほとんどでした。

では改めてPHPの処理の流れを軽く追ってみましょう。どこぞのウェブサーバーに以下のような素のHTMLファイルを『index.html』という名前で置いたとします。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
テストだよー
</body>
</html>

仮に弊社の『wp-p.info』のウェブサーバーの『/』のディレクトリに上記のファイルを置いたとしますね。するとブラウザのアドレスバーに『http://wp-p.info』と打ち込むと以下のテキストファイル(HTMLファイル)が送り返されてきます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
テストだよー
</body>
</html>

はい、見事にそのまま書いてあるとおりに送り返されてますね。これが『CGI』が組み込まれていないウェブサーバーの処理の流れです。

対して『ウェブサーバーソフトウェア』と動的言語を組み合わせてウェブサイトを構築したとしてみましょう。当項目の内容だと『Apache』と『PHP』になりますね。『wp-p.info』のウェブサーバーの『/』のディレクトリに以下のファイルを『index.php』という名前で置いてみます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
<?php
	echo 'テストだよー';
?>
</body>
</html>

そしてブラウザのアドレスバーに『http://wp-p.info』と打ち込むと以下のテキストファイルが送り返されてきます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
テストだよー</body>
</html>

PHP部分がちゃんと処理されたテキストファイルを送り返してきているのが分かりますでしょうか。これが『CGI』が組み込まれたウェブサイト、つまり『動的ウェブサイト』(PHPが組み込まれたウェブサイト)の処理の流れになります。

上記のサンプルでは「テストだよー」っていう固定の文字を表示しているだけなので動的な感じはしませんが、アクセスした時間を表示させたり、現在のアクセス数を表示させたりするプログラムを書けばユーザーさんがアクセスしてくるたびに違った内容のページを表示することができますね。他にも色々な処理を構築することができます。今では当たり前になってしまいましたがこういった処理をかませたウェブサイトが昔は非常に画期的だったのでございます。

シンプルなPHPファイルがリクエストを受けた場合の一連の流れを記述してみると以下のような感じになります。

  1. どこぞのブラウザからPHPファイルをリクエストされる。
  2. リクエストを感知したウェブサーバーはそのPHPファイルに書かれた記述を元にテキストファイルを生成する
  3. その生成したテキストファイルをリクエスト元に送り返す。
  4. 送り返されたテキストファイルをブラウザがレンダリングしてウェブサイトとして表示する。

リクエスト』とは直訳すると『要求』という意味になり、プログラムの世界では他方に所定のデータの提供や所定の処理を求めることを『リクエスト』といいます。

ちょっとした言葉の言い回しなんですが、例えばブラウザのアドレスバーに『http://wp-p.info/index.php』と打ち込むことを「『wp-p.info』の『/index.php』にブラウザでリクエストを飛ばす」といった言い方をします。

ウェブサーバー側からすると「『/index.php』にリクエストが飛んできた!だから書いてあるPHPを処理してテキストファイルを送り返さないと!」って感じになりますね。

『リクエスト』は「このファイルにリクエストが来たらJSON送り返すようにしてよー」とか「大量のリクエストが来た時にこのサーバーのスペックだとパンクしちゃいそうだわ」といったように、現場でも良く使われる言葉ですので覚えておくようにしてください。

PHPファイルへのリクエストを感知するとウェブサーバーはそのPHPファイルに書いてある通りに処理を走らせます。つまり『PHPファイルにリクエストを受けた時にそのPHPファイルに書かれている処理が走る』といった感じです。

PHPファイルがリクエストされた時にPHP処理が走る構造になっている、というのが『CGI』のミソです。リクエストを感知して処理を走らせるのが『ウェブサーバーソフトウェア』(Apache)で、処理をしているのが動的言語(PHP)って感じですね。これは覚えておいて下さい。

というわけで『CGI』とかPHPの処理の流れとかは以上となります。なんとなくでも一連の動きが掴めてきたでしょうか。

続いての記事では『文字列』について色々とやっていきましょう。ではではこのへんで。失礼致します。

この記事は桜舞が執筆致しました。

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

ISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。