3-2. クライアント側とサーバー側の処理
更新日:2025年12月7日
3-2. クライアント側とサーバー側の処理について解説します。
※画像は生成AIによるイメージです。
Webアプリケーションは、クライアント側(ブラウザ)とサーバー側で役割分担して動作します。 この仕組みを理解することで、JavaScriptとPHPをどのように使い分けるべきかが明確になります。
処理の流れ
- ユーザーがURLにアクセス
- ブラウザがサーバーにリクエスト送信
- サーバー(PHP)が処理してHTMLを生成
- サーバーがHTMLをレスポンスとして返す
- ブラウザがHTMLを表示
- JavaScript がブラウザ上で実行
サーバー側処理(PHP)
特徴
- ユーザーには見えない
- データベースに直接アクセス可能
- セキュアな処理が可能
- ページ生成時に1回だけ実行
主な役割
| 処理内容 | 具体例 |
|---|---|
| データベース操作 | ユーザー情報の取得、保存 |
| 認証・認可 | ログイン処理、権限チェック |
| ファイル操作 | 画像アップロード、CSVエクスポート |
| APIとの通信 | 外部サービスからデータ取得 |
| メール送信 | お問い合わせフォームから送信 |
クライアント側処理(JavaScript)
特徴
- ユーザーのブラウザで実行
- ソースコードが見える
- リアルタイムな操作が可能
- ページ読み込み後も動作継続
主な役割
| 処理内容 | 具体例 |
|---|---|
| DOM操作 | 要素の表示/非表示、スタイル変更 |
| イベント処理 | クリック、スクロール、入力 |
| バリデーション | フォーム入力チェック |
| アニメーション | スライドショー、トランジション |
| Ajax通信 | ページ遷移なしでデータ取得 |
処理の分担例
ログインフォーム
| 処理 | 担当 | 理由 |
|---|---|---|
| 入力欄の空チェック | JavaScript | 即座にフィードバック |
| メール形式チェック | 両方 | UX向上とセキュリティ |
| パスワード照合 | PHP | セキュリティが必要 |
| セッション作成 | PHP | サーバー側で管理 |
| エラー表示 | JavaScript | 動的な表示 |
セキュリティの観点
重要な原則
「信頼できるのはサーバー側の処理のみ」
なぜサーバー側が安全か
- ソースコードが見えない
- ユーザーが改ざんできない
- データベース接続情報を隠せる
パフォーマンスの観点
| 項目 | サーバー側 | クライアント側 |
|---|---|---|
| 処理速度 | 高性能サーバー | ユーザーの端末依存 |
| ネットワーク | 通信が必要 | ローカル処理 |
| スケーラビリティ | サーバー増強必要 | ユーザー端末で分散 |
| キャッシュ | サーバー側キャッシュ | ブラウザキャッシュ |
実例:検索機能の実装
サーバー側(PHP)の役割
<?php
$keyword = $_GET['q'] ?? '';
$stmt = $db->prepare("SELECT * FROM products WHERE name LIKE ?");
$stmt->execute(["%{$keyword}%"]);
$results = $stmt->fetchAll();
header('Content-Type: application/json');
echo json_encode($results);
?>
クライアント側(JavaScript)の役割
document.getElementById('searchBox').addEventListener('input', async (e) => {
const keyword = e.target.value;
if (keyword.length < 2) return;
const response = await fetch(`/search.php?q=${keyword}`);
const results = await response.json();
displayResults(results);
});
まとめ
サーバー側(PHP)は安全で確実な処理を、クライアント側(JavaScript)は快適なユーザー体験を提供します。 両者を適切に組み合わせることで、セキュアで使いやすいWebアプリケーションが実現できます。
免責事項
本コンテンツは2025年12月時点の情報に基づいて作成されている。最新の情報については公式ドキュメントを参照されたい。
本コンテンツは2025年12月時点の情報に基づいて作成されている。最新の情報については公式ドキュメントを参照されたい。