---
title: "CGIとは？Webサーバと外部プログラムを連携させる仕組み【基本情報技術者試験】"
description: "CGIを「Webサーバが外部プログラムを呼び出し、処理結果をブラウザへ返すための仕組み」として整理し、HTML、MIME、URL、Web API、アプリケーションサーバとの違いをFE試験で切れるように解説します。"
last_modified_at: "2026-07-25"
canonical_url: "https://stemtazoo.github.io/fe/cgi/"
section: "fe"
---

## まず結論

CGIとは、**Webサーバが外部プログラムを呼び出し、その処理結果をブラウザへ返すための仕組み**です。

CGIは、Common Gateway Interface の略です。

基本情報技術者試験では、次のように判断すると選択肢を切りやすくなります。

| 用語 | 何を表す？ | 判断の合図 |
|---|---|---|
| CGI | Webサーバと外部プログラムを連携させる仕組み | 外部プログラムを実行、結果をブラウザへ返す |
| Web API | Web経由で他のプログラムに機能やデータを提供する窓口 | API、JSON、データ連携、サービス間連携 |
| HTML | Webページの構造を書く言語 | タグ、見出し、リンク、画面表示 |
| MIME | データの種類を示す仕組み | Content-Type、画像、PDF、メール添付 |
| URL | Web上の資源の場所 | アドレス、リソースの位置 |

問題文に **「Webサーバ」＋「外部プログラムを実行」＋「結果をブラウザに返す」** が出たら、CGIを疑います。

## 直感的な説明

CGIは、Webサーバが外部の処理係に仕事をお願いする仕組みです。

静的なHTMLだけなら、Webサーバは用意されたページをそのまま返せば十分です。

```text
ブラウザ
↓ リクエスト
Webサーバ
↓
HTMLを返す
```

一方、入力内容によって結果を変えるページでは、何らかのプログラムで処理する必要があります。

```text
ブラウザ
↓ 入力内容を送る
Webサーバ
↓ 外部プログラムを呼び出す
CGIプログラム
↓ 処理結果を返す
Webサーバ
↓
ブラウザに表示する
```

つまり、CGIは **Webサーバと外部プログラムの橋渡し** と考えると分かりやすいです。

## 定義・仕組み

CGIは、Webサーバが外部プログラムを起動し、リクエスト内容を渡して、処理結果を受け取り、ブラウザへ返すための標準的な仕組みです。

フォーム入力、検索、掲示板、アクセスカウンタなど、利用者の操作に応じて表示内容を変える動的なWebページで使われてきました。

CGIの流れは次のとおりです。

1. ブラウザがWebサーバへリクエストを送る
2. Webサーバが必要に応じて外部プログラムを起動する
3. 外部プログラムが入力内容を処理する
4. 外部プログラムがHTMLなどの結果を返す
5. Webサーバがブラウザへレスポンスを返す

ただし、CGIはリクエストごとに外部プログラムを起動するため、処理効率が課題になることがあります。

そのため、現在のWebアプリケーションでは、FastCGI、アプリケーションサーバ、Webフレームワークなどの仕組みが使われることも多いです。

このテーマは、基本情報技術者試験の「ネットワーク」や「Webの仕組み」と関係する内容です。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## Web APIとの違い

CGIとWeb APIは、どちらもWebサーバやプログラムの連携に関係するので混同しやすいです。

切り分けの中心は、**誰に向けて結果を返すか** です。

| 用語 | 主な相手 | 返すもののイメージ | 判断の合図 |
|---|---|---|---|
| CGI | ブラウザで見る利用者 | HTMLなどの画面表示 | 外部プログラムを実行して、結果をブラウザへ返す |
| Web API | 他のプログラムやサービス | JSON、XMLなどのデータ | API、データ取得、サービス連携、プログラムから呼び出す |

例えば、問い合わせフォームで入力内容を処理し、結果ページをブラウザに返すならCGIの文脈です。

```text
利用者がフォーム送信
→ Webサーバが外部プログラムを実行
→ 結果ページをブラウザに返す
→ CGI
```

一方、天気アプリがサーバから天気データを取得するような場面はWeb APIの文脈です。

```text
アプリがURLを呼び出す
→ サーバがJSONデータを返す
→ アプリが画面に表示する
→ Web API
```

つまり、試験では次のように見ます。

```text
Webサーバが外部プログラムを呼び出す仕組み
→ CGI

Web経由で機能やデータを利用する窓口
→ Web API
```

選択肢にAPIがあっても、問題文が **「Webサーバと外部プログラムを連携させる仕組み」** を聞いているなら、CGIを選びます。

## 科目Aでどう出る？

科目Aでは、Web関連用語の説明を選ぶ問題として出題されやすいです。

判断するときは、次の表で切ります。

| 問題文の表現 | 選びたい用語 |
|---|---|
| Webサーバから外部プログラムを呼び出し、処理結果を返す | CGI |
| Webページの構造や文書を記述する | HTML |
| データの種類を示す。Content-Type、メール添付、画像形式など | MIME |
| Web上の資源の場所を示す | URL |
| Web経由で他システムに機能やデータを提供する | Web API |
| Webページの見た目を指定する | CSS |
| Webページ上で動きを付ける | JavaScript |

代表的な選択肢は、次のように切り分けます。

| 選択肢 | 判断 |
|---|---|
| CGI | Webサーバと外部プログラムを連携させる仕組み |
| HTML | Webページの構造を書く言語。外部プログラムを実行する仕組みではない |
| MIME | データの種類を表す仕組み。Webサーバとプログラムの連携ではない |
| URL | Web上の資源の場所。処理を実行する仕組みではない |

問題文の **「アプリケーションプログラムを実行」** がCGIを選ぶ決め手です。

## どんな場面で使う？

問題文では、CGIという用語そのものより、Webシステムの処理の流れを読む場面で役立ちます。

例えば、次のような流れです。

```text
利用者がフォームを送信する
↓
Webサーバがリクエストを受け取る
↓
サーバ側のプログラムが処理する
↓
処理結果をブラウザへ返す
```

このとき、ブラウザ側だけで完結しているのではなく、サーバ側で処理していることを読み取ります。

また、Web APIが出てきた場合は、画面表示そのものよりも、アプリケーション間でデータをやり取りしているかを見ます。

```text
画面を返す・ブラウザに表示する
→ CGIやWebアプリの文脈

データを返す・他システムが利用する
→ Web APIの文脈
```

## よくある誤解・混同

CGIでは、次の混同がよく起こります。

| 混同 | 正しい切り分け |
|---|---|
| CGIとHTMLを同じだと思う | HTMLはページを書く言語。CGIは外部プログラムを呼び出す仕組み |
| CGIとWeb APIを同じだと思う | CGIはWebサーバから外部プログラムを実行する仕組み。Web APIはWeb経由で機能やデータを提供する窓口 |
| CGIとURLを同じだと思う | URLは資源の場所を示す文字列 |
| MIMEをWebプログラム実行の仕組みだと思う | MIMEはデータの種類を示す仕組み |
| CGIは現在のWeb開発で必ず主流だと思う | 現在はアプリケーションサーバやWebフレームワークも多い |

特に、CGIとWeb APIは次のように覚えると安全です。

```text
CGI
→ Webサーバが外部プログラムを呼ぶ仕組み

Web API
→ 他のプログラムがWeb経由で機能やデータを使う窓口
```

試験では、**呼び出す主体** と **返すもの** を見ると切り分けやすいです。

- Webサーバが外部プログラムを呼ぶ → CGI
- 他のアプリやシステムがデータを取りに行く → Web API

## まとめ（試験直前用）

- CGIは、Webサーバと外部プログラムを連携させる仕組み
- 判断の合図は、外部プログラムを実行し、結果をブラウザへ返す
- HTMLは、Webページの構造を書く言語
- MIMEは、データの種類を示す仕組み
- URLは、Web上の資源の場所を示す文字列
- Web APIは、Web経由で機能やデータを提供する窓口
- APIが選択肢にあっても、Webサーバが外部プログラムを呼ぶならCGI
