localhost:3000はなぜ友人のパソコンで開けないのか
localhostは特別に取り決められたドメイン名で、意味はただ一つ「いまこのコンピュータ自身」です。実際のIPアドレスは127.0.0.1ですが、毎回打つのは面倒なので、世界中がこの一つの名前で約束しておいたものです。友人が自分のブラウザにlocalhost:3000と打てば、それは友人のパソコンの3000番ポートを指すだけです。サーバーもドメインもDNSもHTTPSもまだない状態であり、この空白を埋める過程の全体がデプロイです。
デプロイはなぜ難しい問題だったのか
初期のデプロイはFTPでファイルをコピーする作業でした。単純に見えますが、事故が絶えませんでした。ファイルを一つ漏らせばサイトは半分だけ更新されたまま動き、チームメンバー二人が同じサーバーにアップして互いの作業を上書きし、自分のマシンはNode 18なのにサーバーは14で「自分のパソコンでは動いたのに」が繰り返されました。
三つの問題の解決策はそれぞれ別に生まれました。記録がないことによる問題は2005年にGitがコミットとブランチで解決し、環境の違いによる問題は2013年にDockerが、コードと実行環境をミールキットのように一つの箱に梱包する方式で解決しました。人手に頼ることによる問題はCI/CDが引き受け、プッシュ一回でテスト・ビルド・デプロイがパイプラインに沿って自動で流れます。一日数百回デプロイする時代はこうして開かれました。
Nginxはどのようにウェブサーバーの標準になったのか
かつて世界のウェブサーバーの70%以上がApacheでした。しかしApacheは接続者一人ごとにプロセスを一つ作る方式で、同時接続1万人ならプロセスも1万個になり、メモリが持ちませんでした。いわゆるC10K問題です。2004年にロシアの開発者イゴール・シソエフが作ったNginxは、少数のプロセスが大量のリクエストを交互に処理するイベント駆動アーキテクチャでこれを正面から突破し、現在はシェア1位です。静的ファイルは自分で返し、コード実行が必要なリクエストは後方のWASに渡すリバースプロキシ、つまり病院の総合案内デスクの役割も兼ねます。
Vercelは何を代行し、何を持っていくのか
サーバーの賃借、Nginxのインストール、Dockerの設定、CI/CDの構築、SSL証明書の発行まで自分でやれば数日かかります。VercelはGitHubリポジトリをつなぐだけでこの全部を代行します。プッシュのたびに自動で再デプロイされ、カスタムドメインをつなげばHTTPSも自動で適用されます。
代償は制御権です。便利なプラットフォームほど、細かいサーバー設定には手を入れにくくなります。プロトタイプはVercelやRailwayで始め、要求が複雑になればほぼすべての設定が可能なAWSへ移す流れが一般的なのはこのためです。
非開発者はなぜこの地図を知るべきなのか
知らなくても使えます。ただ、知って使えば、詰まったときにどの段階の問題なのか見当がつきます。AIに「デプロイして」と言う人と、「ビルド段階で環境変数が認識されていない気がする」「Vercelにドメインをつなぎたいが、CNAMEはどう設定すべきか」と聞く人とでは、結果が違ってきます。非開発者バイブコーディングの実力は、この質問の具体性で分かれます。SH ConsultingのAX教育でコード作成と同じ比重でデプロイを扱う理由です。