StackShelf
HTTP 第1回

HTTPとは?Webの通信の仕組みを初心者向けに解説

HTTPとは何か、ブラウザとサーバーがどのように通信しているのかをゼロから解説します。Web開発・API連携の前提となるHTTPの基本概念を学びましょう。

7分で読める
HTTPWebAPI初心者クライアントサーバーWeb開発入門

HTTPとは何か?

HTTP(HyperText Transfer Protocol:ハイパーテキスト転送プロトコル)とは、Web上でデータをやり取りするためのルール(プロトコル)です。ブラウザでWebサイトを開いたり、スマホアプリがサーバーからデータを取得したりするとき、裏側ではほぼ必ずHTTPが使われています。

「プロトコル」とは、コンピューター同士が通信するときの「約束事」や「手順書」のことです。人間同士が会話するとき「日本語で話す」「相手の話を最後まで聞いてから返事する」といった暗黙のルールがあるように、Webでも「リクエストはこう送る」「レスポンスはこう返す」という決まりがHTTPに定義されています。

HTTPは1991年にTim Berners-Lee(ティム・バーナーズ=リー)がWorld Wide Web(WWW)とともに提案した仕組みで、現在もWebの基盤として使われ続けています。HTML/CSSでWebページを作るWeb制作入門を学んだ方にとって、HTTPは「作ったページがどうやってユーザーに届くのか」を理解するための次のステップです。

クライアント・サーバーモデル

HTTP通信の基本はクライアント・サーバーモデルです。クライアント(依頼する側)がサーバー(応答する側)に「データをください」とリクエストを送り、サーバーがそれに応じてデータを返す、という一対一のやり取りが基本形です。

Webブラウザ(Chrome、Firefox、Safariなど)は典型的なHTTPクライアントです。あなたがURLを入力してEnterを押すと、ブラウザがサーバーにHTTPリクエストを送り、返ってきたHTMLやCSS、画像などを画面に表示します。スマホアプリやcurlコマンドもHTTPクライアントとして動作できます。

サーバー側では、nginxやApacheといったWebサーバーソフトウェアがHTTPリクエストを受け取り、適切なファイルやAPIの処理結果を返します。DockerでWebアプリを動かすDocker入門を学ぶと、コンテナ内のサーバーがHTTPで応答する仕組みがより具体的にイメージできるでしょう。

# ブラウザのアドレスバーに入力する例
https://example.com/articles/http-intro

# 内部的には次のような流れが起きている
# 1. DNSで example.com のIPアドレスを調べる
# 2. TCP接続を確立する
# 3. HTTPリクエストを送信する
# 4. サーバーからHTTPレスポンスを受け取る
# 5. ブラウザがHTMLを解釈して表示する

URLの構造を理解する

HTTP通信の宛先はURL(Uniform Resource Locator)で指定します。URLを分解して理解すると、HTTPの仕組みがより明確になります。

https://api.example.com:443/v1/users?page=1#profile
│      │               │   │         │         │
│      │               │   │         │         └─ フラグメント(ページ内位置)
│      │               │   │         └─ クエリパラメータ(?以降)
│      │               │   └─ パス(リソースの場所)
│      │               └─ ポート番号(省略時は80/443)
│      └─ ホスト名(サーバーの住所)
└─ スキーム(http または https)

スキームは通信方式を表します。http:// は暗号化なし、https:// はTLSで暗号化された通信です(詳しくは第6回で解説します)。ホスト名はサーバーのドメイン名またはIPアドレス、パスはサーバー上のリソースの場所を示します。

クエリパラメータ?key=value)は、検索条件やページ番号など追加情報を渡すときに使います。例えば /search?q=HTTP&page=2 は「HTTPで検索して2ページ目を表示」という意味になります。

HTTP通信の流れ:リクエストとレスポンス

HTTP通信は常に「リクエスト → レスポンス」のペアで行われます。クライアントが先にリクエストを送り、サーバーがそれに対してレスポンスを返す、という一方向の流れです(HTTP/1.1まではこのモデルが基本でした)。

HTTPリクエストには次の情報が含まれます。

  • リクエスト行:メソッド(GETなど)、パス、HTTPバージョン
  • ヘッダー:Content-Type、User-Agent、Cookieなどのメタ情報
  • ボディ:POSTなどで送るデータ(GETには通常なし)

HTTPレスポンスには次の情報が含まれます。

  • ステータス行:HTTPバージョン、ステータスコード(200、404など)、理由フレーズ
  • ヘッダー:Content-Type、Cache-Controlなど
  • ボディ:HTML、JSON、画像データなどの本体

第2回以降で、これらの構造をより詳しく見ていきます。今は「リクエストとレスポンスのペアで通信する」という大枠を押さえておきましょう。

HTTPとHTML・APIの関係

HTTPは「データの運搬手段」、HTMLやJSONは「運ばれる中身」です。Webページを表示するとき、HTTPレスポンスのボディにHTMLが入っています。API連携では、ボディにJSON形式のデータが入っていることが多いです。

バックエンド開発では、PythonやNode.js、JavaなどでAPIサーバーを作り、HTTPリクエストを受け取ってSQLでデータベースからデータを取得し、JSONとして返す、という流れが一般的です。HTTPを理解しておくと、フロントエンドとバックエンドの境界が明確になり、開発全体の見通しが良くなります。

HTTPのバージョン:1.1、2、3

HTTPには複数のバージョンが存在します。現場で最もよく見るのは次の3つです。

  • HTTP/1.1:1997年策定。1接続あたり1リクエストが基本だったが、Keep-Aliveで接続を再利用可能に。現在も広く使われている
  • HTTP/2:2015年策定。1つのTCP接続で複数リクエストを並列処理(多重化)。ヘッダー圧縮で高速化
  • HTTP/3:2022年標準化。UDPベースのQUICプロトコルを使用。接続確立が速く、モバイル環境に強い

初学者の段階では、HTTP/1.1の基本概念(リクエスト・レスポンス・メソッド・ステータスコード)を押さえれば十分です。バージョンの違いはパフォーマンスの話であり、API設計やデバッグの基本は共通しています。

なぜHTTPを学ぶべきか

Web開発、スマホアプリ開発、インフラ運用——どの分野に進んでもHTTPの知識は必須です。具体的には次のような場面で役立ちます。

  • API連携:外部サービスのAPIを呼び出すとき、リクエストの組み立て方とレスポンスの読み方がわかる
  • バグ調査:「404 Not Found」「500 Internal Server Error」の意味がわかり、原因を切り分けられる
  • セキュリティ:HTTPS、Cookie、認証トークンの仕組みを理解し、安全なアプリを作れる
  • パフォーマンス:キャッシュヘッダーの設定でページ表示を高速化できる

HTML/CSSだけでは「見た目」は作れても、「データのやり取り」は理解できません。HTTPを学ぶことで、Web開発の全体像——フロント・バックエンド・インフラ——がつながって見えるようになります。

まとめ:HTTPはWebの「共通言語」

HTTPはWeb上でデータをやり取りするためのプロトコル(約束事)です。クライアントがサーバーにリクエストを送り、サーバーがレスポンスを返す——このシンプルなモデルが、Webページの表示からAPI連携まで、あらゆるWeb通信の基盤になっています。URLの構造、リクエストとレスポンスの概念を理解したら、次回は実際のHTTPメッセージの中身を詳しく見ていきましょう。

まとめ

HTTPはWeb上でデータをやり取りするためのプロトコルで、クライアントがサーバーにリクエストを送りレスポンスを受け取るモデルが基本です。URLはスキーム・ホスト・パス・クエリで構成され、HTMLやJSONなどのデータはHTTPレスポンスのボディとして運ばれます。Web開発・API連携の前提知識として、HTTPの基本概念を押さえておきましょう。

次にやること

次回はHTTPリクエストとレスポンスの内部構造を、実際のメッセージ例を見ながら詳しく解説します。リクエスト行・ステータス行・ヘッダー・ボディの4要素を理解しましょう。

よくある質問

HTTPとHTTPSの違いは何ですか?

HTTPは暗号化されていない通信方式で、HTTPSはHTTPにTLS(暗号化)を加えた安全な通信方式です。現在のWebではパスワード入力や決済など個人情報を扱うページはHTTPSが必須で、多くのサイトがHTTPSに移行しています。詳しくは第6回で解説します。

HTTPはプログラミング言語ですか?

いいえ、HTTPはプログラミング言語ではなく通信プロトコル(約束事)です。PythonやJavaScriptなどのプログラミング言語を使ってHTTPリクエストを送ったり、HTTPサーバーを作ったりしますが、HTTP自体はデータの送受信ルールを定めた仕様書に近いものです。

Webサイトを見るだけならHTTPを学ぶ必要はありますか?

HTML/CSSだけで静的なWebページを作る分には必須ではありません。ただし、フォーム送信・API連携・ログイン機能・Webアプリ開発に進む段階ではHTTPの理解が不可欠です。早めに学んでおくと、後のバックエンド学習がスムーズになります。

HTTP/1.1とHTTP/2はどちらを使えばいいですか?

サーバーとクライアントの両方が対応していればHTTP/2が自動的に使われることが多いです。開発者が意識する必要は通常ありません。API設計やデバッグの基本(メソッド・ステータスコード・ヘッダー)はHTTP/1.1でもHTTP/2でも同じです。

HTTPを学ぶのに必要な前提知識はありますか?

HTML/CSSの基礎(Webページの構造)と、ターミナルやブラウザの基本的な操作がわかると理解が早まります。プログラミング経験は必須ではありませんが、Python入門などで簡単なスクリプトを書いたことがあると、API連携の章でより実感を持って学べます。

次に読むべき記事

同カテゴリ「HTTP」の記事

学習ルート

体系的に学びたい方はこちらから。

インフラ・ドキュメントコース →

あわせて読みたい