カテゴリ: 基本情報技術者試験 更新日: 2026/08/11

CGIとは?初心者でもわかるWebとプログラムのつながりを解説!

CGI
CGI

先生と生徒の会話形式で理解しよう

生徒

「ホームページの問い合わせフォームって、どうやって入力内容を送信してるんですか?」

先生

「それはCGIという仕組みを使って、Webサーバーとプログラムがやりとりをしているからなんです。読み方はCGI(シージーアイ)です。」

生徒

「CGIってどんな役割をしてるんですか?」

先生

「それでは、CGIの仕組みや使い方を初心者向けに解説していきましょう!」

基本情報技術者試験をこれから学習する人や、 独学で確実に合格レベルまで到達したい人におすすめの定番対策書です。

いちばんやさしい 基本情報技術者を見る

※ Amazonアソシエイト広告リンク

1. CGIとは?意味と読み方

1. CGIとは?意味と読み方
1. CGIとは?意味と読み方

CGIは、Common Gateway Interface(コモン・ゲートウェイ・インターフェース)の略称で、読み方はそのまま「シージーアイ」と呼びます。私たちが普段見ているWebサイトは、ただ情報を表示するだけでなく、検索ボタンを押したり、掲示板に書き込んだりと「動き」があるものが多いですよね。CGIとは、その「動き」を実現するために、Webサーバーが外部のプログラムとデータをやり取りするための標準的な規格(ルール)のことです。

初心者の方でもイメージしやすいように、簡単なプログラムの例を見てみましょう。たとえば、名前を入力すると「こんにちは!」と挨拶してくれるシンプルな仕組みを考えます。

CGIプログラムの簡単な例(Pythonイメージ)
# 名前を受け取って挨拶を表示するプログラム
name = "ゲスト" # 実際は画面から送られてきたデータが入ります
print("Content-Type: text/html") # ブラウザにHTMLを送る合図
print()
print(f"<h1>{name}さん、こんにちは!</h1>")

このように、Webサーバーが受け取った情報をプログラムに渡し、プログラムが計算や加工をして、その結果を再びWebサーバー経由でブラウザに戻す。この仲介役のルールこそがCGIです。特定のプログラミング言語のことではなく、あくまで「情報の渡し方の決まり」を指す言葉だということを覚えておきましょう。

2. CGIの役割とは?

2. CGIの役割とは?
2. CGIの役割とは?

CGIの最も重要な役割は、「ユーザーの操作に合わせて、リアルタイムでWebページを作り替えること」です。通常、HTMLだけで作られたページは誰がいつ見ても同じ内容ですが、CGIを使うことで「あなた専用」の情報を表示できるようになります。

例えば、あなたがWebサイトの検索窓にキーワードを入力したときの動きを想像してみてください。CGIは以下のようなステップで「裏方」の仕事をしてくれます。

プログラミング未経験者向けの役割イメージ
  1. 受け取る: ブラウザから送られてきたキーワードを受け取ります。
  2. 計算・探す: 外部のプログラムを動かして、データベースから情報を探します。
  3. 組み立てる: 見つかった結果をHTML形式で新しく組み立てます。
  4. 返す: 出来上がった「検索結果ページ」をブラウザに送り返します。

このように、固定されたファイルを表示するのではなく、その場限りの「動的なコンテンツ」を生成するのがCGIの役割です。問い合わせフォームの送信だけでなく、ショッピングカートの計算やログイン情報の照合など、現代の便利なWebサービスの多くがこの仕組みを応用して成り立っています。

3. CGIで使われるプログラミング言語

3. CGIで使われるプログラミング言語
3. CGIで使われるプログラミング言語

CGIは特定のプログラミング言語の名前ではなく「仕組み」のことなので、実は多くの言語で動かすことが可能です。代表的なものには、Perl(パール)、Python(パイソン)、Ruby(ルビー)、PHP(ピーエイチピー)などがあります。

かつてはPerlが主流でしたが、現在は初心者でも読み書きしやすいPythonや、Web開発に特化したPHPが広く使われています。プログラミングに慣れていない方のために、もっともシンプルな「画面に文字を出すだけ」のプログラムが、言語ごとにどう違うか比較してみましょう。

言語別の書き方比較(一例)
【Python】(現代の主流。AI開発などにも強い)
print("Content-Type: text/html\n")
print("Pythonで動いています!")
【Perl】(CGI全盛期を支えた元祖。今も根強い)
print "Content-Type: text/html\n\n";
print "Perlで動いています!";

このように、書き方は違っても「ブラウザに情報を送る」というCGIの目的は同じです。初心者が今から学ぶのであれば、コードがシンプルで汎用性が高いPythonや、レンタルサーバーなどでの導入が非常に簡単なPHPから触れてみるのがおすすめです。自分の目的や、使いたいサーバー環境に合わせて言語を選べるのもCGIの面白いところです。

4. CGIの仕組みを簡単に説明

4. CGIの仕組みを簡単に説明
4. CGIの仕組みを簡単に説明

CGIがどのように動いているのか、その裏側を具体的なステップで見ていきましょう。一言でいうと、CGIは「ブラウザ」「Webサーバー」「プログラム」の3者が連携するための橋渡しをしています。

例えば、ユーザーがWebサイトのアンケートフォームに回答を記入して「送信」ボタンをクリックしたとき、内部では次のような処理が行われます。

処理の4ステップ
  • 1. リクエスト: ユーザーが入力したデータが、ブラウザからWebサーバーへ送られます。
  • 2. プログラム起動: Webサーバーは「これは計算が必要だ」と判断し、指定されたCGIプログラム(Pythonなど)を呼び出します。
  • 3. データの加工: 呼び出されたプログラムが、届いたデータを計算したりデータベースに保存したりします。
  • 4. レスポンス: プログラムが作成した結果(HTML)を、Webサーバーを経由してブラウザに送り返します。

プログラミング未経験の方でもイメージしやすいように、ごく簡単な「足し算の結果を表示するCGI」の動作例を挙げてみます。本来は裏側で見えない動きですが、プログラムは以下のような出力を生成しています。

CGIプログラムの出力イメージ
# 1. ブラウザに「これからHTMLを送るよ」と伝える
Content-Type: text/html

# 2. 実際に画面に表示されるHTMLを生成する
<html>
  <body>
    <p>計算結果は 30 です!</p>
  </body>
</html>

このように、あらかじめ用意されたファイルを表示するのではなく、その瞬間にプログラムがHTMLを書き上げているのが最大の特徴です。この仕組みがあるおかげで、私たちは個別にパーソナライズされた便利なWebサービスを利用できるのです。

5. CGIの使用例と実際の場面

5. CGIの使用例と実際の場面
5. CGIの使用例と実際の場面

以下のようなWebサービスでCGIが使われています:

  • お問い合わせフォーム
  • 掲示板
  • アクセスカウンター
  • ログイン認証システム

6. 静的ページと動的ページの違い

6. 静的ページと動的ページの違い
6. 静的ページと動的ページの違い

HTMLファイルだけで作られたページは「静的ページ」と呼ばれ、常に同じ内容を表示します。一方、CGIを使うとユーザーの入力によって表示が変わる「動的ページ」を作ることができます。

7. CGIとセキュリティの注意点

7. CGIとセキュリティの注意点
7. CGIとセキュリティの注意点

CGIプログラムは入力データを処理するため、セキュリティ上のリスクがあります。不正なデータが送られてきたときの対策が重要です。特に「スクリプト挿入」や「コマンドインジェクション」などに注意が必要です。

8. CGIのメリットとデメリット

8. CGIのメリットとデメリット
8. CGIのメリットとデメリット

メリット:

  • Web上でプログラムを使える
  • フォーム送信など多機能なページが作れる

デメリット:

  • 処理速度が遅くなることがある
  • セキュリティ対策が必要

9. 最近のWeb開発とCGIの位置づけ

9. 最近のWeb開発とCGIの位置づけ
9. 最近のWeb開発とCGIの位置づけ

最近はCGIよりも効率的で高速なWebアプリケーションフレームワーク(例:Django、Laravelなど)が使われていますが、CGIの基本的な仕組みは今でもWebの基礎知識として重要です。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

CGIとは何の略称で、日本語ではどのような意味を持つ言葉なのでしょうか?プログラミングの基礎として知っておきたいです。

CGIは、英語の「Common Gateway Interface(コモン・ゲートウェイ・インターフェース)」の頭文字を取った略称です。日本語で直訳的な意味を考えると「共通の入り口となる境界の仕組み」といったニュアンスになります。具体的には、Webサーバーがブラウザからのリクエストを受け取った際に、外部のプログラムを起動してデータのやり取りを行うための標準的な「決まりごと」や「仕組み」のことを指します。読み方はアルファベットの通り「シージーアイ」と読みます。Webプログラミングを学ぶ上での入り口となる非常に重要な概念です。

ホームページの問い合わせフォームで送信ボタンを押したあと、内部ではどのような仕組みで動いているのですか?

ユーザーが問い合わせフォームに入力して送信ボタンをクリックすると、ブラウザからWebサーバーへデータが送られます。このときWebサーバーは自分自身でデータを処理するのではなく、CGIという仕組みを通じて外部のプログラムを呼び出します。呼び出されたCGIプログラムは、受け取った名前やメールアドレスなどの入力データを解析し、データベースに保存したりメールを送信したりする処理を行います。最後に、処理が終わったことを知らせるためのHTMLを生成してサーバーに返し、それがユーザーの画面に「送信完了」として表示される仕組みになっています。
カテゴリの一覧へ
新着記事
New1
基本情報技術者試験
命令ミックスを完全ガイド!CPUの性能を理解するための初心者向けやさしい解説
更新記事
New2
基本情報技術者試験
クロックサイクル時間をわかりやすく解説!CPUの動きを初心者向けに丁寧ガイド
更新記事
New3
基本情報技術者試験
MIPS(Million Instruction Per Second)を完全ガイド!初心者でもわかるCPU性能の基本
更新記事
New4
基本情報技術者試験
CPI(Clock Cycles Per Instruction)を初心者向けに完全ガイド!CPUの仕組みをやさしく解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
イーサネット(Ethernet)とは?初心者にもわかるLANの基本技術をやさしく解説
No.2
Java&Spring記事人気No2
基本情報技術者試験
DHCP
376
DHCPとは?初心者でもわかるIPアドレス自動割り当ての仕組み
No.3
Java&Spring記事人気No3
基本情報技術者試験
CPU
349
CPUとは何かを完全解説!初心者でもわかるコンピュータの頭脳の仕組み
No.4
Java&Spring記事人気No4
基本情報技術者試験
NIC
309
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.5
Java&Spring記事人気No5
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.6
Java&Spring記事人気No6
基本情報技術者試験
NTP
207
NTPとは?初心者でもわかる時刻同期の仕組みとネットワーク時刻プロトコルの基本
No.7
Java&Spring記事人気No7
基本情報技術者試験
IPv4
181
IPv4とは?初心者でもわかるIPアドレスの基本と通信のルール
No.8
Java&Spring記事人気No8
基本情報技術者試験
SMTP
177
SMTPとは?初心者でもわかるメール送信の仕組みとプロトコルをやさしく解説!