初心者でもわかるウェブ技術 完全ガイド

ブラウザ、HTTP、HTML/CSS/JavaScript、API、デプロイまでを一枚の地図として整理。

HTML、CSS、JavaScriptから、React、TypeScript、Next.js、API、DB、デプロイ、セキュリティまで。バイブコーディングで出てくる名前を「何者で、どこに置かれる技術か」から理解できるように、詳しい地図と短い実例を行き来できる形でまとめた実践ガイドです。

まず迷ったらここを見る

Web技術は名前が多いですが、最初は「画面」「通信」「保存」「公開」の4つに分けるとかなり見通しがよくなります。

見る観点関係する技術最初に押さえること
画面を作るHTML、CSS、JavaScript、ReactHTMLは意味、CSSは見た目、JavaScriptは動き
通信するHTTP、URL、JSON、APIブラウザがリクエストし、サーバーがレスポンスを返す
保存するDB、ストレージ、Cookie、状態管理一時的な状態と、長く残すデータを分けて考える
公開するビルド、ホスティング、CDN、CI/CD開発用コードを本番用に変換して、サーバーやCDNから配る
読み方: 左の目次から気になる章へ飛んでください。全体像をつかみたいときは1章から、手を動かす前提を作りたいときは2章と3章、技術選定で迷ったときは5章・12章が入口になります。

1. ウェブアプリの全体像

ウェブアプリは「ブラウザで動く画面」と「サーバー側の処理」と「データを保存する場所」が、HTTPという約束で会話する仕組みです。

flowchart LR
  U["ユーザー"] --> B["ブラウザ"]
  B -->|"HTTPリクエスト"| W["Webサーバー / CDN"]
  W --> A["アプリサーバー / API"]
  A --> D[("データベース")]
  A --> S["外部サービス\n決済・メール・AI・認証"]
  A -->|"JSON / HTML"| B
  B -->|"HTML + CSS + JavaScriptを解釈"| UI["画面"]

見る場所

ユーザーの端末にあるブラウザ。HTMLを読み、CSSで見た目を作り、JavaScriptで操作に反応します。

考える場所

サーバー。ログイン判定、データ取得、決済、AI呼び出しなど、ユーザーに直接見せたくない処理を担当します。

覚える場所

データベースやストレージ。ユーザー、投稿、商品、画像、設定、履歴などを保存します。

最初の理解: フレームワークやクラウド名は多く見えますが、ほとんどは「画面を作る」「サーバー処理を書く」「データを保存する」「公開して運用する」のどこかに分類できます。

2. HTML・CSS・JavaScript

ブラウザで動くウェブの三大基礎です。まずここが地面です。

技術一言でいうと担当すること
HTML 文書と構造 見出し、段落、リンク、フォーム、画像など「意味」を作る <h1><button><form>
CSS 見た目とレイアウト 色、余白、文字サイズ、配置、レスポンシブ対応を作る display: gridcolor@media
JavaScript 動きと振る舞い クリック反応、入力チェック、API通信、画面更新を行う addEventListenerfetch、状態管理

同じボタンを三層で見る

まずは、1つのボタンをHTML、CSS、JavaScriptに分けて見るのが一番わかりやすいです。

<button id="saveButton" class="save-button">保存</button>

HTMLは「これは保存ボタンです」という意味と構造を作ります。

.save-button {
  background: #146c68;
  color: white;
  padding: 10px 16px;
}

CSSは色、余白、文字色など、画面上でどう見えるかを決めます。

document.querySelector("#saveButton").addEventListener("click", () => {
  alert("保存しました");
});

JavaScriptは「押したら何が起きるか」を決めます。つまり、HTMLが骨組み、CSSが見た目、JavaScriptが振る舞いです。

3. ブラウザ・DOM・HTTP

ウェブ技術はブラウザの中で動き、ネットワーク越しにHTTPで会話します。

DOM

HTMLをブラウザが読み取って作る、操作可能な木構造です。JavaScriptはDOMを変更することで画面を書き換えます。

HTTP

ブラウザとサーバーが会話するためのプロトコルです。GETで取得し、POSTで送信し、ステータスコードで結果を伝えます。

sequenceDiagram
  participant User as ユーザー
  participant Browser as ブラウザ
  participant Server as サーバー
  participant DB as データベース
  User->>Browser: URLを開く / ボタンを押す
  Browser->>Server: GET / POST / PATCH / DELETE
  Server->>DB: 必要なデータを読む・書く
  DB-->>Server: 結果
  Server-->>Browser: HTML または JSON
  Browser-->>User: 画面を表示・更新

ブラウザが画面を描くまで

flowchart LR
  HTML["HTMLを読む"] --> DOM["DOMツリー"]
  CSS["CSSを読む"] --> CSSOM["CSSOM"]
  DOM --> Render["レンダーツリー"]
  CSSOM --> Render
  Render --> Layout["レイアウト\n位置とサイズ"]
  Layout --> Paint["ペイント\n色・画像・文字"]
  Paint --> Composite["合成\n画面に表示"]
  JS["JavaScript"] --> DOM
  JS --> CSSOM

DevToolsのElements、Console、Network、Performanceは、この流れを観察するための道具です。表示崩れはElements、通信エラーはNetwork、JavaScriptエラーはConsole、重さはPerformanceで見ると切り分けやすくなります。

URL・JSON・Cookie・CORS

名前何者か初心者がつまずきやすい点
URLWeb上の場所を示す住所ドメイン、パス、クエリ、ハッシュは役割が違う
JSONAPIでよく使うデータ形式JavaScriptのオブジェクトに似ているが、文字列キーや値の形式にルールがある
Cookieブラウザに保存され、リクエスト時に送られる小さな情報ログインセッションに使う場合はSecure、HttpOnly、SameSiteを意識する
CORS別オリジンへのブラウザ通信を制御する仕組みサーバー側が許可しないと、ブラウザがレスポンス利用を止める
ステータス意味よくある場面
200成功ページやAPIが正常に返った
301 / 302リダイレクト別URLへ移動
400リクエストが不正入力値や形式が間違っている
401 / 403認証・権限エラーログインしていない、権限がない
404見つからないURLやデータが存在しない
500サーバーエラーサーバー側の例外や設定ミス

4. SVG・Mermaid・画像・Canvas

画面に出るものはHTMLテキストだけではありません。図、アイコン、写真、動画、グラフも重要な構成要素です。

SVG

拡大しても荒れにくいベクター画像。アイコン、ロゴ、簡単な図解に向いています。HTMLに直接埋め込めるのでCSSやJSで操作できます。

Mermaid

テキストから図を生成するツール。フローチャート、シーケンス図、ER図などをドキュメント内で管理しやすくします。

Canvas / WebGL

ピクセルや3Dをコードで描く領域。ゲーム、画像編集、複雑な可視化、3D表現に向いています。

SVG ロゴ・アイコン 写真・ビットマップ Mermaidで設計図

Mermaidは設計の会話に強い

flowchart TD
  A["要件"] --> B["画面設計"]
  B --> C["API設計"]
  C --> D["DB設計"]
  D --> E["実装"]
  E --> F["テストとデプロイ"]

コードとして差分管理できるので、設計の変更履歴も追いやすくなります。

5. JavaScript系スタックの関係性

Next.js、TypeScript、React、Node.js、Vite、npmは同じ階層の競合ではありません。役割が違います。

flowchart TB
  JS["JavaScript\n言語そのもの"] --> TS["TypeScript\n型を足したJavaScript"]
  JS --> Browser["ブラウザ実行環境"]
  JS --> Node["Node.js\nサーバー・CLIでJSを動かす実行環境"]
  Node --> NPM["npm / pnpm / yarn\nパッケージ管理"]
  NPM --> Vite["Vite\n開発サーバー・ビルドツール"]
  NPM --> Next["Next.js\nReactベースのフルスタックフレームワーク"]
  JS --> React["React\nUIを部品で作るライブラリ"]
  TS --> React
  React --> Next
  Vite --> ReactApp["React SPA\nブラウザ中心のアプリ"]
名前分類何を解決するか競合しやすい相手
JavaScript言語ブラウザやNode.jsで動くプログラムを書くPython、Ruby、Goなど
TypeScript言語拡張JavaScriptに型を足して、バグを早く見つける素のJavaScript
ReactUIライブラリ画面をコンポーネントとして組み立てるVue、Svelte、Solidなど
Next.jsフレームワークReactにルーティング、サーバー処理、最適化、ビルド規約を足すNuxt、SvelteKit、Remix系、Astroなど
Vite開発・ビルドツール高速な開発サーバーと本番ビルドを提供するWebpack、Rspack、Parcelなど
Node.js実行環境ブラウザ外でJavaScriptを動かす。サーバーやビルドツールの土台になるDeno、Bunなど
npmパッケージ管理ライブラリの取得、バージョン管理、スクリプト実行を行うpnpm、Yarnなど
具体例: 「Next.js + TypeScript + React」は、ReactでUIを書き、TypeScriptで型を付け、Next.jsの規約でページ・サーバー処理・ビルドをまとめる構成です。ReactとNext.jsは横並びというより、Next.jsがReactを土台にしている関係です。

Reactだけ、Next.js、Viteの違い

構成向いているもの考えること
HTML + CSS + JS 小さなページ、教材、単純なツール ファイル構成、部品化、状態管理を自分で決める
Vite + React ブラウザ中心のSPA、管理画面、プロトタイプ ルーティング、API、認証、SEOを必要に応じて追加する
Next.js ページ数があるサービス、SEO、サーバー処理込みのアプリ サーバーコンポーネント、キャッシュ、デプロイ環境の理解が必要

6. フロントエンドの作り方

フロントエンドは、ユーザーが直接触る部分です。見た目だけでなく、状態、入力、アクセシビリティ、API通信まで含みます。

コンポーネント

ボタン、カード、フォーム、一覧などを再利用可能な部品にします。React、Vue、Svelteなどが得意です。

状態管理

選択中のタブ、入力値、ログインユーザー、取得済みデータなど、画面が覚えている情報を扱います。

ルーティング

URLに応じて表示する画面を切り替えます。Next.jsではファイル構成がルートになります。

レンダリング方式

方式意味強み注意点
CSRブラウザ側で画面を作る操作感が軽いSPAにしやすい初回表示やSEOに工夫が必要
SSRリクエストごとにサーバーでHTMLを作る初回表示やSEOに強いサーバー負荷とキャッシュ設計が必要
SSGビルド時にHTMLを作る高速・安定・安価頻繁に変わるデータには再生成が必要
ISR / 再検証静的ページを後から更新する速度と鮮度のバランスを取れる更新タイミングの理解が必要
RSCReact Server Componentsサーバーで完結できるUI処理を増やせるサーバー/クライアント境界の理解が必要

7. バックエンドとAPI

バックエンドは、ユーザーに見せるべきでない処理や、信頼できる場所で行うべき処理を担当します。

flowchart LR
  UI["フロントエンド"] --> API["API"]
  API --> Auth["認証・認可"]
  API --> Logic["業務ロジック"]
  API --> DB[("DB")]
  API --> Queue["キュー / バッチ"]
  API --> External["外部API\n決済・メール・AI"]
概念役割
APIフロントエンドや外部サービスが使う窓口REST、GraphQL、RPC、Server Actions
OpenAPIAPIの仕様を機械可読な形で書くエンドポイント、入力、出力、エラーを共有する
認証誰かを確認するログイン、OAuth、メールリンク、パスキー
認可何をしてよいか決める管理者だけ削除可能、本人だけ編集可能
業務ロジックアプリ固有のルール在庫計算、予約可否、料金計算
ジョブ時間のかかる処理を裏で実行メール送信、画像変換、AI生成、集計

ブラウザからAPIを呼ぶ最小例

async function loadPosts() {
  const response = await fetch("/api/posts");
  const posts = await response.json();
  console.log(posts);
}

fetch はブラウザからAPIへHTTPリクエストを送るための代表的な方法です。実際のアプリでは、失敗時の表示、読み込み中の表示、ログイン権限の確認も一緒に考えます。

重要: APIキー、DBパスワード、管理者権限の処理はブラウザに置かないでください。ブラウザに送ったものはユーザーから見える前提で設計します。

8. データベース・ストレージ・状態

「いま画面で覚える状態」と「長く保存するデータ」は別物です。

UI状態

モーダルの開閉、選択中タブ、入力中フォーム。消えても大きな問題がない短命な状態です。

サーバー状態

APIから取得するユーザー、投稿、商品など。キャッシュ、再取得、更新衝突を考えます。

永続データ

DBやストレージに保存する、アプリの本体となる情報です。設計ミスの影響が大きい領域です。

DBの大まかな分類

種類向いているもの代表例
リレーショナルDB整合性が大事な業務データPostgreSQL、MySQL、SQLite
ドキュメントDB柔軟なJSON構造MongoDB、Firestore
キー・バリュー高速キャッシュ、セッションRedis、Upstash Redis、DynamoDB系
オブジェクトストレージ画像、動画、PDFなどのファイルS3、R2、Blob Storage
検索エンジン全文検索、ランキング、ログ検索Elasticsearch、Meilisearch、Algolia

9. デプロイ・クラウド・運用

作ったものを他人が使える状態に公開し、壊れたときに直せるようにする領域です。

1
開発: ローカルで実装し、Gitで変更を管理します。
2
ビルド: TypeScriptやReactなどを、ブラウザやサーバーで動く形に変換します。
3
テスト: 自動テスト、型チェック、Lint、プレビュー確認で壊れていないか見ます。
4
デプロイ: Vercel、Netlify、Cloudflare、AWSなどへ公開します。
5
運用: ログ、監視、エラー通知、バックアップ、セキュリティ更新を続けます。

ホスティングの選び方

種類向いているもの
静的ホスティングHTML/CSS/JSだけのサイト、SSGGitHub Pages、Netlify、Cloudflare Pages
フルスタックPaaSNext.jsなどのサーバー処理込みアプリVercel、Netlify、Render
クラウドVM / コンテナ自由度の高いサーバー運用AWS、GCP、Azure、Docker
エッジ実行低遅延なAPI、ミドルウェア、軽量処理Cloudflare Workers、Vercel Edge

10. 品質: テスト・アクセシビリティ・パフォーマンス

動くだけでなく、壊れにくく、速く、誰でも使えることがプロダクトの品質です。

テスト

関数の単体テスト、画面のコンポーネントテスト、ユーザー操作を再現するE2Eテストがあります。

アクセシビリティ

キーボード操作、読み上げ、色のコントラスト、フォームラベルなどを整え、より多くの人が使えるようにします。

パフォーマンス

表示速度、操作への反応、レイアウトの安定性を改善します。画像最適化と不要なJS削減が効きます。

指標・観点見るもの改善例
LCP主要コンテンツが見えるまでの速さ画像最適化、SSR/SSG、キャッシュ
INP操作への反応重いJSを分割、再レンダリング削減
CLS表示中のレイアウトずれ画像サイズ指定、フォント読み込み調整
WCAGアクセシビリティの基準意味のあるHTML、十分なコントラスト、フォーカス表示

11. セキュリティの基本

セキュリティは後付けではなく、入力、認証、権限、依存関係、ログのすべてに関わります。

よくある危険

  • 権限チェック漏れ
  • SQLインジェクション
  • XSS
  • CSRF
  • 秘密情報の漏えい
  • 古い依存ライブラリ

基本対策

  • サーバー側で必ず権限チェックする
  • SQLはプレースホルダーやORMを使う
  • HTMLに差し込む値をエスケープする
  • APIキーはサーバー側の環境変数に置く
  • 依存関係を更新し、脆弱性を確認する
  • ログと監視で異常を検知する
バイブコーディング時の注意: 生成AIに「動くコード」を出してもらったら、認証・認可・入力検証・秘密情報の扱いは人間が必ずレビューしてください。ここは雰囲気で通すと事故になります。

12. 技術スタックの選び方

流行ではなく、作りたいものの性質から選ぶと迷いにくくなります。

flowchart TD
  A["何を作る?"] --> B{"公開ページ中心?"}
  B -- "はい" --> C{"更新頻度は低い?"}
  C -- "はい" --> SSG["Astro / Next.js SSG / 静的HTML"]
  C -- "いいえ" --> NEXT["Next.js / Nuxt / SvelteKit"]
  B -- "いいえ" --> D{"アプリ操作が中心?"}
  D -- "はい" --> SPA["Vite + React / Vue / Svelte"]
  D -- "いいえ" --> SIMPLE["まずHTML + CSS + JS"]
  SPA --> E{"サーバー処理が多い?"}
  E -- "はい" --> FULL["Next.jsなどフルスタック"]
  E -- "いいえ" --> API["外部BaaS / 軽量API"]

目的別の初期構成

目的おすすめ初期構成理由
学習用の小さなページHTML + CSS + JavaScript基礎が見えやすく、セットアップが少ない
管理画面・ツールVite + React + TypeScript速く作れて、部品化しやすい
SEOが大事なサービスNext.js + TypeScriptルーティング、SSR/SSG、画像最適化が揃う
ブログ・コンテンツサイトAstro / Next.js / 静的サイト生成軽く、速く、運用しやすい
リアルタイム性が高いアプリReact等 + WebSocket + 専用バックエンド双方向通信と状態同期が重要になる
AI機能付きアプリNext.js等 + サーバーAPI + DBAPIキー保護、履歴保存、課金管理が必要

13. 学習ロードマップ

全部を同時に覚える必要はありません。作りながら、層を一枚ずつ増やすのが近道です。

1
HTML/CSS: 見出し、リンク、フォーム、Flexbox、Grid、レスポンシブを理解する。
2
JavaScript: DOM操作、イベント、配列、オブジェクト、非同期、fetchを学ぶ。
3
Gitとnpm: 変更管理、依存関係、開発サーバー、ビルドの意味を覚える。
4
React + TypeScript: コンポーネント、props、state、型、フォーム、API取得を作る。
5
Next.js: ルーティング、サーバー/クライアント境界、データ取得、認証、デプロイを学ぶ。
6
DBとバックエンド: テーブル設計、CRUD、認可、トランザクション、ログを扱う。
7
品質: テスト、アクセシビリティ、パフォーマンス、セキュリティレビューを習慣にする。

バイブコーディング用プロンプトの型

目的:
作りたいユーザー体験:
必要な画面:
保存するデータ:
使いたい技術スタック:
避けたいこと:
セキュリティ上の注意:
完成条件:
検証してほしいこと:

技術名だけで依頼するより、「何を保存するか」「誰が何をできるか」「完成条件」を書くと、生成される設計がかなり安定します。

14. ざっくり用語集

  • ライブラリ: 部品として使う道具
  • フレームワーク: 作り方の型ごと提供する道具
  • ランタイム: コードを実行する環境
  • ビルド: 開発用コードを本番用に変換すること
  • バンドル: 複数ファイルを配信用にまとめること
  • トランスパイル: TSや新しいJSを別のJSへ変換すること
  • ルーティング: URLと画面・処理を結びつけること
  • SSR: サーバーでHTMLを作ること
  • CSR: ブラウザで画面を作ること
  • API: ソフトウェア同士の窓口
  • ORM: DB操作をコードで扱いやすくする道具
  • CDN: 静的ファイルを世界中から速く配る仕組み
  • CI/CD: テストやデプロイを自動化する流れ
  • 環境変数: 環境ごとに変わる設定や秘密情報
  • オリジン: スキーム、ホスト、ポートの組み合わせ
  • CORS: 別オリジン通信のブラウザ側安全ルール
  • Cookie: ブラウザが保存してサーバーへ送る小さなデータ
  • OpenAPI: API仕様を文書化・共有するための標準的な形式

15. 参考ソース

内容作成時に確認した公式・信頼性の高い資料です。確認日: 2026-05-10。