DiPilot
C-0 CS概念理解
← 一覧へ
C-0 · How a Web App Works

CS概念理解(簡易版)

あなたはコードを書きません。日本語でClaude Codeに指示するだけ。仕組みを「レストランの例え」で知っておくと、指示が正確になり、トラブル時に原因が分かります。用語の暗記は不要です。

全体像 クライアントとサーバー 三層アーキテクチャ フロントエンド バックエンド API・エンドポイント データベース CRUD 認証と認可 ローカルとクラウド 実践プロンプト集 心構え
Intro | この資料の位置づけ

コードは書かない。日本語で「指示する」だけ

あなたの仕事はコードを書くことではありません。日本語でClaude Codeにお願いするだけ。ただ、Webアプリの仕組みをざっくり知っておくと、指示が正確になり、トラブルが起きても原因の見当がつくようになります。

🎯

指示が正確になる

「どこを直したいか」を言葉にできると、Claude Codeは狙い通りに動いてくれます。

🔍

原因の特定がラクになる

不具合が「画面」「処理」「保存」のどこで起きているか、当たりがつけられます。

役割の流れ

🧑‍💼 あなた(日本語で指示) ↓ 🤖 Claude Code(指示を受けてコード作成) ↓ 📱 アプリ(3層構成のWebアプリ)
🧠 用語の暗記は不要ですこの資料は「必要になったら開く地図」です。全部を覚える必要はありません。エラーが出たら、画面をそのままClaude Codeに貼って「これ直して」でOK。

この資料の使い方

Chapter 1

全体像 ── Webアプリの構成マップ

Webアプリは大きく「3つの層」でできています。まずは全体の地図を頭に入れましょう。

Overview | 3層構造

Webアプリは「ホール・厨房・倉庫」でできている

レストランに例えると、とても分かりやすくなります。お客さんの前に立つホール、料理を作る厨房、食材や帳簿をしまう倉庫。この3つがWebアプリの3層です。

レストラン例技術役割
フロントエンド🍽️ ホールHTML / JavaScript / CSS画面の表示・操作
バックエンド👨‍🍳 厨房Python(FastAPI)等データ処理・ルール管理
データベース📦 倉庫・帳簿SQLite, MySQL 等データの永続保存

3層をまたぐ、横断的な仕組み

仕組み例え役割
認証・認可会員カード・権限管理「誰が」「何をできるか」を管理する
ローカル → クラウド試作店 → 本店開発環境から本番環境へ公開する
Example | 処理フローの例

例:製造業の「見積もりアプリ」の流れ

3つの層が実際にどう連携するのか、身近なアプリで追ってみましょう。データが層から層へ渡っていくのが分かります。

🛠️ 設計のアプローチ「どういう構造にすべきか」の判断が難しいときは、AIに相談しましょう(/effort high やウルトラコードモードを使うと、じっくり考えてくれます)。(/effort high=Claude Codeに『いつもよりじっくり考えて』と伝える合図。難しい判断のときだけでOK。日本語で『じっくり考えて複数案を出して』と頼むだけでも十分)最初から完璧な設計は不要です ── 試行錯誤しながら固めていくのが前提です。
Chapter 2

クライアントとサーバー

Webアプリの通信は「お願いする側」と「応える側」の2つの役割で成り立っています。

Concept | 2つの役割

クライアント(頼む側)とサーバー(応える側)

レストランの注文と同じです。あなたが「カレーください」と頼み、お店が作って出す。この「頼む・応える」のやりとりが、Webアプリの通信の正体です。

🙋 クライアント(リクエスト送信) ↔️ 通信 👨‍🍳 サーバー(処理・レスポンス返却) ↔️ 通信 😊 クライアント(結果受け取り)
ステップ誰が何をする用語
1クライアント「カレーください」と頼むリクエスト(要求)
2サーバー注文を受けて調理する処理
3サーバー → クライアント「カレーお待たせしました」と出すレスポンス(応答)
🍔 現実の例:Uber Eatsアプリ(クライアント)で注文 → お店(サーバー)が調理 → 料理が配達される(レスポンス)。しかも、1つのサーバーには複数のクライアントが同時に接続できます(1軒のお店が、たくさんのお客さんの注文をさばくのと同じ)。
Chapter 3

三層アーキテクチャ

Chapter 1の3層を、もう少しだけ詳しく。なぜ「分ける」と便利なのかを見ていきます。

Structure | 三層アーキテクチャ

役割ごとに「3つの部屋」に分ける

ホール・厨房・倉庫は、それぞれ独立した部屋です。役割をきっちり分けておくことで、あとから変更しやすく、壊れにくいアプリになります。

📎 3層の一覧について※3層の一覧は最初の『全体像』の章を参照してください。この章では「3層に分ける利点」とデータの流れに絞って説明します。

3層に分ける利点

データの流れ

お客さん → ホール → 厨房 → 倉庫 → 厨房 → ホール → お客さん
Chapter 4

各層の詳細 ── フロントエンド(ホール)

まずは、お客さんが実際に触れる「ホール」から。ユーザーとサーバーの仲介役です。

Frontend | 役割

フロントエンドは「ホール(接客の場)」

フロントエンドの役割は、ユーザーとサーバーの仲介役です。もし画面(フロント)がなかったら、どうなるでしょうか?

❌ 画面なし
  • URLを直接入力して通信する
  • 結果がJSON(機械向けのテキスト)で返ってくる
  • JSON= {"名前":"田中"} のような、コンピュータ同士がやりとりする書式。人が読むには読みにくい
  • お客さんが直接キッチンに行くような感覚
✅ 画面あり
  • ボタンを押すだけで通信できる
  • 見やすい画面に整形して表示される
  • ホールが間に立って取り次いでくれる
🌐 Chromeで見れるもの=AIで扱える※ここは応用の余談です。ブラウザで見れるもの(Webサイト・社内ポータル・Slack/LINEのWeb版など)は、Claude Codeのブラウザ操作と組み合わせれば、画面操作そのものも任せられます。なお、ログイン済みなら会員限定・課金コンテンツも扱えます。
Frontend | HTML / JavaScript / CSS

ホールを作る3つの担当

フロントエンドは、3つの部品でできています。それぞれ「内装」「接客係」「デザイナー」と考えると分かりやすいです。

部品例え役割具体例
HTML🪑 内装・家具画面の構造・配置入力欄 / ボタン / 表示エリア
JavaScript🤵 動き回る接客係(ウェイター)処理ロジック・通信ボタン押下 → サーバー送信
CSS🎨 デザイナー見た目の装飾・色・レイアウト文字色 / 背景色 / 余白

JavaScript(動き回る接客係/ウェイター)の3つの仕事

仕事例え用語具体例
1お客さんの合図に反応するイベント処理「追加」ボタンの押下を検知
2キッチンに注文を伝えるサーバー通信(fetch)サーバーへ送信し、結果を受け取る
3料理を運ぶ画面更新受け取ったデータを画面に表示

完成の構図

HTML(配置) + JavaScript(処理) + CSS(見た目) = 完成した画面
🗣️ Claude Codeへの伝え方
色や余白など、見た目だけ整えて→ CSSだけを調整してくれます
ボタンを押したら保存されるようにして→ JavaScriptの処理を追加してくれます
入力欄をもう1つ増やして→ HTMLの構造を追加してくれます
💡 ポイント「どこを直したいか」を言葉にできると、AIは狙い通りに動きます。用語そのものを覚える必要はありません ── 「見た目」「保存の処理」「入力欄」のように、やりたいことを日本語で伝えればOKです。
Chapter 5

各層の詳細 ── バックエンド(厨房)

お客さんからは見えない「厨房」。注文を受けて、ルール通りに料理を作る場所です。

Backend | 厨房の機能

バックエンドは「厨房」で行われる4つの仕事

厨房では、注文票を受け取り、レシピ通りに調理し、料理を出し、衛生ルールを守る ── この4つが行われています。

仕事例え具体例
リクエストを受け取る注文票を受け取る「メモ一覧をください」
データを処理するレシピ通りに調理する検索・作成・更新・削除
レスポンスを返す料理をホールに出すJSON形式でデータを返却(=先ほど出てきた機械向けの書式)
ルールを守らせる食品衛生を管理するログイン確認・権限検証
🍳 バックエンドの本質ひとことで言えば、「ルールに従って、正しくデータを処理する」こと。これが厨房の役目です。
Chapter 6

API と エンドポイント

ホールと厨房をつなぐ「注文システム」の仕組みです。エラー番号は覚えなくて大丈夫。

API | APIとエンドポイント

API=注文システム、エンドポイント=メニュー項目

APIは、クライアントとサーバーがやりとりするための「注文のルール」。エンドポイントは、その中の「1つ1つのメニュー」だとイメージしてください。

用語例え説明
APIお店全体の注文システムクライアント・サーバー間の通信のルール
エンドポイント各メニュー項目/api/memos などの具体的なURL

エンドポイント一覧(メモアプリの例)

エンドポイント意味注文で言うと
GET /api/memosメモ一覧を取得「注文の状況を見せて」
POST /api/memos新規作成「カレーを注文して」
PUT /api/memos/1更新「注文を変更して」
DELETE /api/memos/1削除「注文をキャンセルして」

ステータスコード(結果の合図)

コード意味例え実際に起きていること
200成功注文どおり料理が出た正常
400番台注文側のミス注文の仕方が違う/メニューに無い入力・URL・ログイン切れ(404=ページ無し, 401=未ログイン)
500番台厨房側のミス厨房でトラブルサーバー側の不具合
🧠 番号を覚える必要はありませんエラー画面をそのままClaude Codeに貼り付けて「これ直して」でOK。数字の意味を暗記するより、貼って相談する方がずっと早く解決します。
🗣️ Claude Codeへの伝え方
カテゴリ別に集計するAPIを /api/summary で追加して→ エンドポイントを1つ追加する指示になります
Chapter 7

各層の詳細 ── データベース(倉庫・帳簿)

データを「消えないように」しまっておく場所。Excelのイメージで理解できます。

Database | なぜ必要?

データベースがないと、データは消えてしまう

データの置き場所には2種類あります。一時的な「ホワイトボード」か、ずっと残る「帳簿・倉庫」か。この違いがとても大事です。

❌ インメモリ(ホワイトボード)
  • 置き場所:サーバーのメモリ
  • 保持:アプリ(サーバー)が起動している間だけ
  • アプリ(サーバー)を再起動するとデータが消える
✅ データベース(帳簿・倉庫)
  • 置き場所:ディスク
  • 保持:永続的(サーバー/アプリを止めても、ディスクに残る)
  • サーバーを止めてもデータが残る
😱 あるある「アプリを再起動したら、入力したデータが消えた!」 ── これはDBに保存していなかったのが原因です。そんなときは「入力した内容がデータベースに保存されるようにして」と頼めば解決します。
Database | 構造

データベースは「Excel」とほぼ同じ

難しく考えなくて大丈夫。テーブル=Excelのシート、行=1件のデータ、列=項目。ふだん使うExcelとほとんど同じ感覚です。

テーブル(Excelのシート)=データの種類ごと ↓ 行(横)=1件のデータ / 列(縦)=項目(名前・日時など)

メモテーブルの例

IDタイトル内容作成日時
1買い物リスト牛乳, 卵2/1 10:00
2会議メモ次回は来週水曜2/1 14:30
3アイデア新サービスの案2/2 09:15
💾 永続性アプリを閉じても、PCを再起動しても、DBに保存したデータは残ります。これがインメモリとの決定的な違いです。
🛠️ 設計の現実データ構造に「唯一の正解」はありません。会社ごとにデータ構造は異なります。まず作って、使いながら修正するのが現実的です。「このデータ構造でいいか確認して」と相談し、迷ったら /effort high やウルトラコードモードで複数案を比較してもらいましょう。
🗣️ Claude Codeへの伝え方
メモにカテゴリも保存できるようにして→ 列を1つ追加してくれます
タグを管理するテーブルを追加して→ 新しい表(シート)を追加してくれます
列を足す = 項目を増やす シートを増やす = テーブルを追加 感覚はExcelと同じ
Chapter 8

CRUD ── データ操作の4つの基本

どんなアプリも、突き詰めればこの「4つの操作」の組み合わせでできています。

CRUD | 4つの基本操作

Create / Read / Update / Delete

データに対してできることは、たった4つ。「作る・読む・変える・消す」。頭文字をとってCRUD(クラッド)と呼びます。

C

Create | 作成

新しくデータを作る

R

Read | 読み取り

データを読む・一覧を見る

U

Update | 更新

データを変更する

D

Delete | 削除

データを消す

4操作を、注文・アプリ・Excelで対応させると

操作注文で言うとメモアプリではExcelでは
Create新しく注文するメモを新規作成新しい行を追加
Read注文一覧を確認メモ一覧を表示シートを見る
Update注文を変更メモを編集セルの内容を変更
Delete注文をキャンセルメモを削除行を削除

CRUD と HTTPメソッドの対応

操作HTTPメソッド意味
CreatePOST「新しく作って」
ReadGET「データを見せて」
UpdatePUT「変更して」
DeleteDELETE「削除して」
💡 HTTPメソッドについてHTTPメソッド=章「API・エンドポイント」で出てきた GET / POST などと同じものです。番号も名前も覚える必要はなく、「新しく作って」「消して」と日本語で言えばClaude Codeが適切に選びます。
🔁 どんなアプリも、結局はCRUDメモアプリも、SNSも、ECサイトも ── すべてこの4操作の組み合わせでできています。ここが分かると、どんなアプリも「同じ仕組み」に見えてきます。
Chapter 9

認証と認可

「あなたは誰?」「何ができる?」を管理する仕組み。会員カードと権限の話です。

Auth | 認証と認可

認証(誰?)→ 認可(何ができる?)の2ステップ

ログインの裏側では、2つの確認が順番に行われています。まず「あなたは誰か」を確かめ、次に「何ができるか」を判断します。

ステップ問い意味例え
認証(Authentication)「あなたは誰?」本人確認会員カードを見せる
認可(Authorization)「何ができる?」アクセス許可一般会員は閲覧だけ、管理者は削除もできる(=同じログイン済みでも“できること”が違う)

処理の順序

認証(本人確認) → 認可(アクセス許可)
🔑 なぜこの順番?「誰か」が分からないと「何ができるか」を判断できないからです。だから、必ず認証が先、認可が後になります。
Auth | パスワードの安全な保存

パスワードは「そのまま」保存してはいけない

パスワードの扱いは、セキュリティの要です。そのまま保存するのは危険。「復元できない形」に変換して保存するのが鉄則です。

❌ そのまま保存(NG)
  • 「password123」をそのままDBに保存
  • DBが漏洩すると全員のパスワードがバレる
✅ ハッシュ化(OK)
  • 復元できない形に変換して保存
  • DBが漏洩しても元のパスワードは分からない
🔒 ハッシュ化とは一方向の変換(元に戻せない)のこと。変換後の文字列から、元のパスワードを復元することはできません。だから安全なのです。
🗣️ Claude Codeへの伝え方
ログインしないと使えないようにして。パスワードはハッシュ化して保存して→ 認証と認可をまとめて指示しつつ、安全な保存方法も指定できます
Chapter 10

ローカルとクラウド

「自分のPCで動かす」のか「ネットに公開する」のか。試作店と本店の違いです。

Deploy | ローカルとクラウド

ローカル=試作店、クラウド=本店

開発中は自分のPCの中(ローカル)で動かし、完成したらネット上(クラウド)に公開します。試作店で作り込んで、本店をオープンするイメージです。

ローカル環境 🏠(試作店)クラウド ☁️(本店)
場所自分のPC内他社のコンピュータ(AWS, Google 等)
誰が使える自分だけ世界中の誰でも
稼働時間アプリ(サーバー)を起動している間だけ24時間365日
URL例localhost:8000xxx.onrender.com 等
用途開発・テスト実際のサービス提供

昔のやり方 vs クラウド

昔のやり方クラウド
サーバー自分で買って管理Google や Amazon のPCを借りる
コスト高い安い
管理大変・知識が必要簡単・専門家が管理
比喩自分でビルを建てるテナントを借りる
😱 あるある「localhost:8000 を開いても表示されない!」 ── たいていは、アプリ(サーバー)が起動していないだけです。そんなときは「アプリを起動して。確認用のURLを教えて」と頼めば大丈夫。
Deploy | デプロイとは

デプロイ=アプリを「公開する」こと

「デプロイ」という言葉は、要するに試作店で作ったものを本店に移して公開すること。YouTubeに動画をアップして公開するのと、まったく同じ感覚です。

試作店(ローカル)で作ったもの ↓ 本店(クラウド)に移して公開 = YouTubeに動画をアップして公開するのと同じ

コスト感の目安

使う規模費用の目安使うサービス例
自分だけ無料自分のPC(localhost:8000)
数人〜100人$5〜$20/月Render, Railway 等(無料〜低価格)
それ以上スケール次第AWS, Google Cloud 等
🧭 判断基準はシンプル個人利用なら → 自分のPCで無料。他人に使ってもらうなら → クラウドが必要。まずはこれだけ押さえておけば十分です。

開発フロー全体

開発(ローカル) → 完成 → デプロイ(クラウド) → 公開
🗣️ Claude Codeへの伝え方
このアプリをローカルで起動して。確認用のURLを教えて→ 自分のPCで動かし、localhost のURLを教えてくれます
このアプリをネットに公開(デプロイ)して。必要なファイルも用意して→「公開して」=デプロイ。手順も必要なファイルもまとめて作成してくれます
Chapter 11

実践プロンプト集

そのままコピーして使える頼み方を集めました。困ったらここへ戻ってきてください。

Appendix | アプリを作るプロンプト

まずは「作って」とお願いしてみる

アプリ作りは、この一言から始まります。何を作りたいか、どんな項目が必要かを日本語で伝えるだけです。

🗣️ メモアプリを作る
メモアプリを作ってください。メモの追加・一覧表示・編集・削除ができるWebアプリで。フロントエンドはHTML/JavaScript/CSS、バックエンドはPython(FastAPI)、データベースはSQLiteで。
🗣️ 営業日報アプリを作る
営業日報を入力・閲覧できるWebアプリを作ってください。入力項目は『日付、訪問先、担当者、内容、次のアクション』。一覧画面と入力フォームの2ページ構成で。
Appendix | 機能を足す・直すプロンプト

作ったあとの「ちょい足し」もこの調子

一度作ったアプリに、機能を追加したり見た目を直したり。やりたいことを言葉にすれば、Claude Codeが対応してくれます。

🗣️ 入力フォームを追加
入力欄をもう1つ増やして。「メモの重要度」を入力できるようにして。→ HTMLの構造を追加してくれます
🗣️ 見た目を改善
色や余白など、見た目を整えて。もっと見やすいデザインにして。→ CSSだけを調整してくれます
🗣️ 新しいAPIを追加
カテゴリ別に集計するAPIを /api/summary で追加して。→ エンドポイントを1つ追加してくれます
🗣️ バリデーション(入力チェック)を追加
タイトルが空のときは保存できないようにして。エラーメッセージも表示して。→ 入力チェックを追加してくれます
🗣️ DBにテーブル/列を追加
メモにカテゴリも保存できるようにして。→ 列を1つ追加してくれます(テーブル追加なら「タグを管理するテーブルを追加して」)
🗣️ CSVエクスポート
メモ一覧をCSVでダウンロードできるボタンを追加して。→ エクスポート機能を追加してくれます
Appendix | 認証・公開のプロンプト

ログインを付ける・ネットに公開する

最後の仕上げは、ログイン機能と公開(デプロイ)。ここも、まとめてお願いするだけで対応してくれます。

🗣️ ログイン機能(ハッシュ化)
ログインしないと使えないようにして。パスワードはハッシュ化して保存して。→ 認証・認可と、安全なパスワード保存をまとめて設定してくれます
🗣️ ローカルで起動
このアプリをローカルで起動して。確認用のURLを教えて。→ 自分のPCで動かして、確認用URLを教えてくれます
🗣️ Render にデプロイ
このアプリをRenderに公開(デプロイ)して。requirements.txt や Procfile など、必要なファイルも用意して。→ 公開手順と必要ファイルをまとめて作成してくれます(requirements.txt / Procfile=公開に必要な設定ファイル。名前は覚えなくてOK、そのままコピペで伝えるだけ)
Chapter 12

心構え ── これだけ覚えておけばOK

細かい用語よりも、この3つの姿勢のほうがずっと役に立ちます。

Mindset | まとめ

用語は暗記しない。困ったら貼って相談する

この資料の締めくくりです。技術の細部より、次の3つの姿勢を持っておくことが、いちばん大切です。

🧠 いちばん大事なことあなたはコードを書きません。日本語で伝える・困ったら貼って相談する ── これだけで、Webアプリは作れます。仕組みは「知っておくと便利な地図」くらいの気持ちで大丈夫です。

全体フロー(この資料のまとめ)

開発 → ローカルで作成・テスト(localhost) → 公開 → クラウドにデプロイ(公開URL) → 世界中からアクセス可能
フロント=ホール バック=厨房 DB=倉庫 エラーは貼って相談 用語暗記は不要