サーバーとは何か
サーバーは、ほかのコンピューターやソフトウェアから要求を受け、データや機能を提供する側です。Webサイトでは、ブラウザからの要求に対して、HTML、画像、データ、エラーなどを返します。
「大きなコンピューター」という形だけで覚えると、役割を見失います。サーバーという言葉は、コンピューターを指す場合と、その上で要求へ応答するソフトウェアを指す場合があります。
一文でいうと
サーバーとは、クライアントからの要求を待ち受け、決められた機能やデータを返す側です。
Webでは、ブラウザとは何かなどがクライアントになります。MDNはWebサーバーについて、Webサイトのファイルを持つハードウェアと、URLやHTTPを理解して要求へ応答するソフトウェアの両方を指し得ると説明しています。
個人開発のどこで登場するか
作ったWebサイトを公開する、フォームの入力を受け取る、利用者ごとのデータを保存する、外部APIを安全に呼ぶといった場面で登場します。
静的なWebサイトでは、用意済みのHTMLや画像をそのまま返す構成があります。動的なWebアプリでは、要求に応じて処理を行い、データベースとは何かから情報を読み、結果を組み立てて返す構成があります。
ブラウザからページを開く例
URLを入力してページを開くと、概ね次の流れが起きます。
ブラウザがURLで示されたサーバーへHTTPリクエストを送る
サーバーが、対象のファイルや処理を探す
サーバーが内容とステータスを含むレスポンスを返す
ブラウザが受け取ったHTML、CSS、JavaScript、画像などを表示する
対象が見つからなければ404、サーバー側で処理に失敗すれば500番台など、成功以外の応答も返ります。「画面が出ない」という一つの現象でも、要求前、通信中、サーバー処理、ブラウザ表示のどこで失敗したかを分けて調べます。
クラウドやデータベースと区別する
サーバー:要求へ機能やデータを提供する役割
クラウド:ネットワーク経由でコンピューター資源やサービスを利用する形態
ホスティング:サイトやアプリを外部から利用できる場所で動かすこと
データベース:アプリが使うデータを保存、検索、更新する仕組み
クラウド上でサーバーを動かすことも、自分のパソコンで一時的なサーバーを動かすこともできます。また、サーバーを自分で管理せず、必要な処理だけを実行するサービスを使う構成もあります。
開発サーバーをそのまま公開しない
手元の開発サーバーは、変更をすぐ反映したり詳しいエラーを表示したりするためのものです。本番公開に必要な認証、アクセス制限、安定運用、秘密情報の保護が整っているとは限りません。
公開前には少なくとも次を確認します。
外部へ公開されるURLとポート
開発用の詳細エラーやデバッグ機能が無効か
秘密情報がブラウザへ送られていないか
認証なしで操作できる機能がないか
障害を調べるログとは何かと復旧手順があるか
ローカルで表示できたことと、本番環境で安全に提供できることは別の完了条件です。
次に読む記事
サーバーへ要求を送って画面を組み立てる側はブラウザとは何か、プログラム同士の窓口はAPIとは何かで説明します。
公開作業へ進む前には公開前チェックリストで、本番URL、エラー表示、秘密情報、復旧方法を確認します。