0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WebサービスとWebサイトの違いを解像度高く理解する 〜APIリクエストの流れとサーバー構成を分解解説〜

Last updated at Posted at 2025-05-18

✅ この記事で理解できること

  • WebサイトとWebサービスの違い
  • ブラウザ → サーバー → DB の実行フロー
  • Webサーバー、アプリケーションサーバー、DBサーバーの役割
  • FastCGI・php-fpmとは何か?

✅ 用語の前提整理

用語 説明
Webサイト 静的なHTML・画像・CSSなどをブラウザに表示(例:企業サイト)
Webサービス(Webアプリケーション) ログイン・投稿・購入など、ユーザーの操作で動的に変化するサービス(例:ECサイト、SNS)
API フロントエンドとバックエンドが通信するためのインターフェース(URL形式)。JSONを返すことが多い
サーバー ソフトウェアやデータを処理・提供するコンピュータまたはプロセス

✅ Webサイト vs Webサービスの処理フロー

🔷 A. Webサイト(静的HTML)の流れ

[1] ブラウザが https://example.com にアクセス
     ↓
[2] Webサーバー(Apache/Nginx)が HTML ファイルを返す
     ↓
[3] ブラウザが表示(HTML+CSS+画像)
  • HTMLやCSS、画像ファイルは ファイルとして保存されている
  • PHPやDBなどの動的処理は発生しない(静的)

🔷 B. Webサービス(動的アプリケーション)の流れ

[1] ブラウザでログインボタンを押す
     ↓
[2] JavaScript が API(例:/api/login)にリクエスト送信
     ↓
[3] Webサーバー(NginxやApache)がリクエストを受ける
     ↓
[4] Webサーバーが FastCGI 経由で php-fpm に処理を渡す
     ↓
[5] PHP(Laravelなど)がリクエストを処理
     ↓
[6] DBサーバーと通信し、ユーザー情報などを取得
     ↓
[7] PHPがJSONで結果を返す
     ↓
[8] Webサーバー → ブラウザへレスポンス返却
     ↓
[9] ブラウザがJavaScriptで画面を更新(Vue, Reactなど)

✅ 関わるサーバーの種類と役割

サーバーの種類 具体例 主な役割
Webサーバー Nginx, Apache HTTP通信の受付、ルーティング、静的ファイル提供
アプリケーションサーバー php-fpm, Node.js PHPなどのプログラムを実行
DBサーバー MySQL, PostgreSQL ユーザー情報・商品データなどを保存・提供
静的配信サーバー S3, Netlify, Vercel HTML/CSS/JS/画像などの配信(SPAなど)

※上記でWebサーバーとアプリケーションサーバーとDBサーバーと分けられていますが、これは物理的にサーバーが別れているとは限りません。
分ける場合もありますが(AWSなどを使っていると別けて処理する場合が多い)、プロセスとして分離されている場合もあります。


✅ Laravel + Vue/Nuxt 構成の場合の流れ

[ ブラウザ ]
     ↓ HTML表示 or API通信
[ Webサーバー(Nginx) ]
     ↓ FastCGI(通信プロトコル)
[ PHP実行エンジン(php-fpm) ]
     ↓ PHPアプリ(Laravelなど)
     ↓ DBアクセス(MySQLなど)
     ↓ 結果をJSONで返す

✅ FastCGI / php-fpm とは?

  • FastCGI:Webサーバーとアプリケーション(PHPなど)を分離して通信するための仕組み(プロトコル)
  • php-fpm:PHPをFastCGIとして実行するプロセスマネージャ
  • Webサーバー(Nginx等)とは別プロセスでPHPが実行されるため、パフォーマンスと安定性が高い

✅ なぜ「WebサーバーとPHP」を分離するのか?

課題(旧来のmod_php) 解決策(FastCGI + php-fpm)
ApacheがPHPも処理→高負荷で不安定 PHPを別プロセスに分離し、高速で安定
メンテやスケーリングが難しい PHPを自由にスケール、独立管理しやすい
モダン構成と乖離 FastCGIは本番構成の標準的手法

✅ 結論まとめ

  • Webサイト=HTML等の静的ファイルを返すだけ
  • Webサービス=JavaScriptがAPIを叩き、PHP(Laravelなど)が動的に処理
  • WebサーバーとPHPを分離することで、スケーラビリティと保守性が向上
  • FastCGI + php-fpm構成は、Laravel開発や本番運用でのベストプラクティス

✅ おまけ:どのように使い分ける?

条件 推奨構成
静的Webサイト(コーポレートなど) HTML/CSS + Apache or Netlify
API付きWebサービス(SPA, Laravel) Nginx + php-fpm(Laravel) + Vue/Nuxt(SPA)
本番構成と揃えたい DockerやAWSでFastCGI構成にするのが◎

理解を深めることで、Docker構成、インフラ設計、Laravel×Vueの連携にも自信が持てるようになります!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?