CGIとは?初心者でもわかるWebとプログラムのつながりを解説!
生徒
「ホームページの問い合わせフォームって、どうやって入力内容を送信してるんですか?」
先生
「それはCGIという仕組みを使って、Webサーバーとプログラムがやりとりをしているからなんです。読み方はCGI(シージーアイ)です。」
生徒
「CGIってどんな役割をしてるんですか?」
先生
「それでは、CGIの仕組みや使い方を初心者向けに解説していきましょう!」
1. CGIとは?意味と読み方
CGIは、Common Gateway Interface(コモン・ゲートウェイ・インターフェース)の略称で、読み方はそのまま「シージーアイ」と呼びます。私たちが普段見ているWebサイトは、ただ情報を表示するだけでなく、検索ボタンを押したり、掲示板に書き込んだりと「動き」があるものが多いですよね。CGIとは、その「動き」を実現するために、Webサーバーが外部のプログラムとデータをやり取りするための標準的な規格(ルール)のことです。
初心者の方でもイメージしやすいように、簡単なプログラムの例を見てみましょう。たとえば、名前を入力すると「こんにちは!」と挨拶してくれるシンプルな仕組みを考えます。
# 名前を受け取って挨拶を表示するプログラム
name = "ゲスト" # 実際は画面から送られてきたデータが入ります
print("Content-Type: text/html") # ブラウザにHTMLを送る合図
print()
print(f"<h1>{name}さん、こんにちは!</h1>")
このように、Webサーバーが受け取った情報をプログラムに渡し、プログラムが計算や加工をして、その結果を再びWebサーバー経由でブラウザに戻す。この仲介役のルールこそがCGIです。特定のプログラミング言語のことではなく、あくまで「情報の渡し方の決まり」を指す言葉だということを覚えておきましょう。
2. CGIの役割とは?
CGIの最も重要な役割は、「ユーザーの操作に合わせて、リアルタイムでWebページを作り替えること」です。通常、HTMLだけで作られたページは誰がいつ見ても同じ内容ですが、CGIを使うことで「あなた専用」の情報を表示できるようになります。
例えば、あなたがWebサイトの検索窓にキーワードを入力したときの動きを想像してみてください。CGIは以下のようなステップで「裏方」の仕事をしてくれます。
- 受け取る: ブラウザから送られてきたキーワードを受け取ります。
- 計算・探す: 外部のプログラムを動かして、データベースから情報を探します。
- 組み立てる: 見つかった結果をHTML形式で新しく組み立てます。
- 返す: 出来上がった「検索結果ページ」をブラウザに送り返します。
このように、固定されたファイルを表示するのではなく、その場限りの「動的なコンテンツ」を生成するのがCGIの役割です。問い合わせフォームの送信だけでなく、ショッピングカートの計算やログイン情報の照合など、現代の便利なWebサービスの多くがこの仕組みを応用して成り立っています。
3. CGIで使われるプログラミング言語
CGIでよく使われるプログラミング言語には、Perl(パール)、Python(パイソン)、Ruby(ルビー)、PHP(ピーエイチピー)などがあります。現在はPHPやPythonが主流になっています。
4. CGIの仕組みを簡単に説明
CGIの基本的な流れは以下のとおりです:
- ユーザーがWebフォームに入力し、送信ボタンを押す
- WebサーバーがCGIプログラムを呼び出す
- CGIプログラムが入力データを処理
- 処理結果をHTMLとして出力し、ブラウザに表示
5. CGIの使用例と実際の場面
以下のようなWebサービスでCGIが使われています:
- お問い合わせフォーム
- 掲示板
- アクセスカウンター
- ログイン認証システム
6. 静的ページと動的ページの違い
HTMLファイルだけで作られたページは「静的ページ」と呼ばれ、常に同じ内容を表示します。一方、CGIを使うとユーザーの入力によって表示が変わる「動的ページ」を作ることができます。
7. CGIとセキュリティの注意点
CGIプログラムは入力データを処理するため、セキュリティ上のリスクがあります。不正なデータが送られてきたときの対策が重要です。特に「スクリプト挿入」や「コマンドインジェクション」などに注意が必要です。
8. CGIのメリットとデメリット
メリット:
- Web上でプログラムを使える
- フォーム送信など多機能なページが作れる
デメリット:
- 処理速度が遅くなることがある
- セキュリティ対策が必要
9. 最近のWeb開発とCGIの位置づけ
最近はCGIよりも効率的で高速なWebアプリケーションフレームワーク(例:Django、Laravelなど)が使われていますが、CGIの基本的な仕組みは今でもWebの基礎知識として重要です。