クライアントとは
クライアントは、サーバーへ要求を送り、返されたデータや機能を利用する端末またはソフトウェアです。Webではブラウザが代表的なクライアントですが、スマートフォンアプリ、メールソフト、コマンドラインツール、自動処理プログラムなどもクライアントになれます。
クライアントは製品の種類ではなく、通信における役割を表す言葉です。「利用者のパソコンだからクライアント」なのではなく、相手へ要求を開始し、その応答を利用する側として動いているためクライアントと呼びます。
クライアントブラウザページを表示したい
サーバーWebサーバー要求を処理して結果を返す
クライアントは何をするのか
- 要求を組み立てる
- 取得、送信、更新など、相手へしてほしい処理と必要な情報を、プロトコルで定められた形式へ組み立てます。
- 要求を送る
- ネットワーク経由でサーバーへ要求します。HTTPではメソッド、対象、ヘッダー、必要に応じて内容を含む要求メッセージを送ります。
- 応答を解釈する
- 成功・失敗を表す状態、返されたデータの種類、保存条件などを読み、表示、保存、再試行、エラー表示など次の処理を決めます。
端末とソフトウェアのどちらを指すのか
文脈によって、クライアントという言葉は利用者側の端末全体を指すことも、その端末で動くソフトウェアを指すこともあります。正確に切り分ける必要がある場面では「クライアント端末」「クライアントアプリ」「HTTPクライアント」のように対象を補います。
一台のパソコンでも、ブラウザはWebサーバーのクライアント、メールソフトはメールサーバーのクライアントとして別々に動きます。同じ端末にあるから同じ通信や設定を使うとは限りません。
クライアントとサーバーは固定された身分ではない
ブラウザクライアント
利用者にはWebアプリ=サーバー外部APIにはクライアント
外部サービスAPIサーバー
一つのページでも複数のサーバーへ要求する
Webページを開くと、ブラウザは最初のHTMLをWebサーバーから受け取ります。そのHTMLが別のURLにある画像、フォント、動画、広告、解析用プログラムを参照していれば、ブラウザはそれぞれのサーバーに対して新しいクライアント要求を送ります。
画面では一つのサイトに見えても、通信先が一つとは限りません。ブラウザの開発者向け機能やネットワークログでは、要求先URLごとに通信を確認できます。
クライアントが送る情報
要求には、取得したい対象だけでなく、対応できるデータ形式や言語、認証情報、Cookie、参照元などが含まれる場合があります。何が送られるかはプロトコル、アプリの設定、利用中の機能によって変わります。
クライアントが端末内のすべての情報を自動的に送るわけではありません。Webブラウザでは、カメラ、マイク、位置情報などへのアクセスに利用者の許可が必要な機能があります。一方で、公開IPアドレスのように通信を成立させる過程で接続先から観測される情報もあります。
サーバーから見たクライアント
サーバーは要求を受けても、目の前にいる人物を直接見ているわけではありません。接続、要求ヘッダー、認証情報、Cookie、送信された内容など、通信で受け取った情報をもとに処理します。
そのため、同じ利用者でも別ブラウザや別端末では別の状態に見えることがあります。反対に、同じアカウントで認証すれば、複数端末を同じ利用者として扱うサービスもあります。
エラーを切り分けるときの見方
「クライアントエラー」という言葉は、クライアント機器が故障したという意味だけではありません。HTTPの4xx状態コードは、要求された資源がない、権限がない、要求形式を受け付けられないなど、要求側に関係する条件を示します。
同じ要求を別のクライアントで試すと、ブラウザ固有の保存データや拡張機能の影響を切り分けられます。ただし、条件が違う試験結果をそのまま比較しないよう、URL、アカウント、接続方法、時刻をそろえます。
仕様の確認資料:RFC 9110「HTTP Semantics」