Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

  1. Home
  2. PHPBeginner - What is CGI?

What is CGI? - Japanese Only

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

というわけで今回は『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の処理の流れとかは以上となります。なんとなくでも一連の動きが掴めてきたでしょうか。

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

This article was written by Sakurama.

Author's beloved small mammal

桜舞 春人 Sakurama Haruto

A Tokyo-based programmer who has been creating various content since the ISDN era, with a bit of concern about his hair. A true long sleeper who generally feels unwell without at least 10 hours of sleep. His dream is to live a life where he can sleep as much as he wants. Loves games, sports, and music. Please share some hair with him.

If you find any errors or copyright issues, please .