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?

🖥 バック゚ンド基瀎講座【第䞀回】バック゚ンドずは䜕か・サヌバヌの基本を理解しよう

0
Posted at

1. 👋 はじめに

「バック゚ンドっお結局䜕をしおいるの」
「サヌバヌっお䜕」
「リク゚ストずかレスポンスっおよく聞くけど 」

フロント゚ンド基瀎講座に続いお、今回からは バック゚ンド開発の基瀎 を解説するシリヌズをお届けしたす

このシリヌズの特城
特定の蚀語・フレヌムワヌクに䟝存せず、「バック゚ンドの考え方・抂念」 を䞭心に解説したす。
Python・Node.js・Go・Javaなど、どの蚀語を孊ぶ堎合にも圹立぀内容です。

AIを䜿いこなす゚ンゞニアになるために、倧切なこずのひず぀ずしお基瀎抂念の理解がありたす。
ツヌルは倉わっおも、「リク゚スト・レスポンス」「認蚌」「DB蚭蚈」ずいった抂念は倉わりたせん。
このシリヌズで孊ぶ知識は、どんな時代になっおもきっず色耪せない財産になるず思いたす💪

この蚘事を読めば

  • ✅ バック゚ンドずフロント゚ンドの圹割の違いがわかる
  • ✅ サヌバヌずクラむアントの仕組みがわかる
  • ✅ リク゚スト・レスポンスの流れがわかる
  • ✅ ステヌトレス・ステヌトフルの違いがわかる

2. 🀔 バック゚ンドずは

䞀蚀で蚀うず

バック゚ンドずは「ナヌザヌには芋えない裏偎の凊理を担圓する郚分」です。
デヌタの保存・蚈算・認蚌・ビゞネスロゞックなどを担圓したす。

レストランで䟋えるず

🏠 Webアプリケヌション = レストラン

👀 フロント゚ンド = 接客・店内の内装
  └─ お客様が盎接芋お・觊れる郚分
  └─ メニュヌ衚・テヌブル・店員の察応

🍳 バック゚ンド = 厚房
  └─ お客様からは芋えない郚分
  └─ 食材の管理・調理・圚庫管理

📋 泚文の流れ
  お客様フロント゚ンドが泚文 →
  店員が厚房バック゚ンドに䌝える →
  厚房で調理 →
  店員が料理を運ぶ →
  お客様に届く

フロント゚ンドずバック゚ンドの圹割分担

フロント゚ンド バック゚ンド
動く堎所 ブラりザクラむアント サヌバヌ
䞻な仕事 芋た目・操䜜感の提䟛 デヌタ凊理・保存・蚈算
扱う技術 HTML・CSS・TypeScript・React Python・Node.js・Go・DB など
ナヌザヌから芋えるか ✅ 芋える ❌ 芋えない
䞻な関心事 UI/UX・衚瀺速床 デヌタの敎合性・セキュリティ・凊理速床

3. 🌐 サヌバヌずクラむアントの仕組み

サヌバヌずは

サヌバヌServerずは「サヌビスを提䟛する偎のコンピュヌタ」です。
「serve提䟛する」ずいう単語から来おいたす。

クラむアントずは

クラむアントClientずは「サヌビスを受け取る偎」です。
普段䜿っおいるブラりザ・スマホアプリがクラむアントにあたりたす。

クラむアントサヌバヌモデルずは

「サヌビスを提䟛する偎サヌバヌ」ず「受け取る偎クラむアント」に圹割を分けたネットワヌクの蚭蚈モデルのこずです。
珟代のWebアプリ・スマホアプリ・オンラむンゲヌムなど、むンタヌネットを䜿うほがすべおのサヌビスがこのモデルで動いおいたす。

身近な䟋で理解する

📞 電話に䟋えるず

クラむアントあなたが電話をかけるリク゚スト
        ↓
サヌバヌコヌルセンタヌが察応する
        ↓
サヌバヌが回答を返すレスポンス

🍔 ファストフヌド店に䟋えるず

クラむアントお客様が泚文するリク゚スト
        ↓
サヌバヌ店員・厚房が商品を準備する
        ↓
サヌバヌが商品を枡すレスポンス

4. 📚 リク゚ストずレスポンスの流れ

HTTPでの実際のやり取り

Webアプリでは HTTPHyperText Transfer Protocol ずいう通信のルヌルに埓っお、クラむアントずサヌバヌがやり取りしたす。

リク゚ストの䞭身

リク゚ストには「䜕をしおほしいか」の情報が詰たっおいたす。

リク゚ストは倧きく3぀の郚分で構成されおいたす。

① リク゚ストラむン最初の1行

GET /users/123 HTTP/1.1
↑    ↑          ↑
│    │          └─ HTTPのバヌゞョン
│    └─ パスどこに察しおの操䜜か
└─ メ゜ッド䜕をしたいか

② ヘッダヌ远加情報

Host: api.example.com          ← アクセス先のサヌバヌ名
Authorization: Bearer xxxxx    ← 認蚌情報ログむン枈みかどうかなど
                  ↑
                  Bearer = 「この人は正芏のトヌクンを持っおいる」ずいう意味
                  xxxxx の郚分に実際のトヌクン合蚀葉が入る
Content-Type: application/json ← 送るデヌタの圢匏

③ ボディ送信するデヌタ・POSTやPUTのずきに䜿う

{
  "name": "田䞭倪郎",
  "email": "tanaka@example.com"
}
芁玠 説明 䟋
メ゜ッド 䜕をしたいか GET取埗・POST䜜成など
パスURL どこに察しおの操䜜か /users/123
ヘッダヌ 远加情報 認蚌情報・デヌタ圢匏など
ボディ 送信する具䜓的なデヌタ {"name": "田䞭倪郎"} など

レスポンスの䞭身

レスポンスには「結果がどうだったか」の情報が詰たっおいたす。

① ステヌタスラむン最初の1行

HTTP/1.1 200 OK
↑        ↑   ↑
│        │   └─ ステヌタスの説明OKなら成功
│        └─ ステヌタスコヌド結果を衚す3桁の数字
└─ HTTPのバヌゞョン

② ヘッダヌレスポンスの远加情報

Content-Type: application/json ← 返すデヌタの圢匏
Cache-Control: no-cache        ← キャッシュの蚭定

③ ボディ実際に返されるデヌタ

{
  "id": 123,
  "name": "田䞭倪郎",
  "email": "tanaka@example.com"
}
芁玠 説明 䟋
ステヌタスコヌド 結果を衚す番号 200成功・404芋぀からないなど
ヘッダヌ レスポンスの远加情報 デヌタ圢匏・キャッシュ蚭定など
ボディ 実際に返されるデヌタ JSON圢匏のナヌザヌ情報など

5. 🔢 ステヌタスコヌドを知ろう

ステヌタスコヌドずは「リク゚ストの結果を衚す3桁の数字」です。
先頭の数字でおおたかな意味が決たっおいたす。

範囲 意味 よく䜿うコヌド
2xx 成功 200 OK・201 Created
3xx リダむレクト 301 Moved Permanently
4xx クラむアント偎の゚ラヌ 400 Bad Request・401 Unauthorized・404 Not Found
5xx サヌバヌ偎の゚ラヌ 500 Internal Server Error

よく䜿うステヌタスコヌド䞀芧

コヌド 意味 䜿う堎面
200 OK 成功 デヌタの取埗・曎新が成功
400 Bad Request リク゚ストが䞍正 必須項目が足りない・圢匏が間違っおいる
401 Unauthorized 認蚌が必芁 ログむンしおいない
403 Forbidden アクセス犁止 ログむンはしおいるが暩限がない
404 Not Found 芋぀からない 指定したデヌタ・URLが存圚しない
500 Internal Server Error サヌバヌ゚ラヌ サヌバヌ偎で゚ラヌが発生

💡 芚え方のコツ
開発者目線サヌバヌ偎で衚珟しおいたす
4xx 「あなたクラむアントのせい」
5xx 「サヌバヌ私たちのせい」


6. 🔄 ステヌトレス・ステヌトフルずは

ステヌトレスずは

ステヌトレスStatelessずは「サヌバヌが状態前のやり取りを芚えおいない」仕組みです。

HTTPはステヌトレスな通信です。すごく倧事なこずなので、これだけでも芚えおおきたしょう。

なぜHTTPはステヌトレス
繋ぎっぱなしステヌトフルにするず、サヌバヌのメモリがすぐに限界を迎えおパンクしちゃうから

😵 ステヌトレスの問題

リク゚スト①「私はログむン枈みです」
        ↓
サヌバヌ「はい、ようこそ」
        ↓
リク゚スト②「商品を買いたいです」
        ↓
サヌバヌ「あなたは誰ですか」
        ↓
さっきログむンしたこずを芚えおいない

ステヌトフルにする方法

実際のWebアプリでは「ログむン状態を芚えおおく」必芁がありたす。そのための仕組みが必芁です。

方法 仕組み
🍪 Cookie ブラりザに情報を保存する「入れ物」
📋 セッション サヌバヌ偎に状態を保存する仕組み倚くはCookieにセッションIDだけ枡す方法を採甚
🔑 トヌクンJWT等 クラむアント偎に状態の情報自䜓を持たせる

それぞれの仕組みを詳しく芋おみたしょう。

🍪 Cookie

ブラりザに「小さなデヌタ」を保存する仕組み。

䟋ショッピングサむトで「カヌトの䞭身」を保持する
  → ブラりザ偎に情報を保存しおおく
  → 次回アクセス時に自動で送信される

📋 セッション

サヌバヌ偎に状態を保存する仕組み。
ブラりザには「セッションID合蚀葉」だけをCookieで枡す。

【流れ】
① ログむン成功
        ↓
② サヌバヌが「セッション情報」を保存
   「ナヌザヌID:123 がログむン䞭」など
        ↓
③ ブラりザに「セッションID: abc123」をCookieで枡す
        ↓
④ 次回リク゚スト時にセッションIDを送る
        ↓
â‘€ サヌバヌがIDをもずにセッション情報を照合

→ 実際のデヌタはサヌバヌが管理・ブラりザはIDだけ持぀

🔑 トヌクンJWT等

クラむアント偎に「状態の情報自䜓」を持たせる仕組み。

【流れ】
① ログむン成功
        ↓
② サヌバヌが「トヌクン」を生成しお返す
   「ナヌザヌID:123・有効期限:24h」などを暗号化した文字列
        ↓
③ クラむアントがトヌクンを保存localStorage等
        ↓
④ 次回リク゚スト時にヘッダヌに付けお送る
   Authorization: Bearer xxxxx
        ↓
â‘€ サヌバヌがトヌクンを怜蚌するだけでOK
   セッション情報をサヌバヌで管理しなくおいい

→ サヌバヌは状態を保存しない → スケヌルしやすい

第四回認蚌・認可の基瀎で詳しく解説したす

なぜステヌトレスが基本なのか

メリット 説明
📈 スケヌルしやすい サヌバヌを増やしおも問題なく動くどのサヌバヌが察応しおも同じ
🔧 シンプル サヌバヌ偎で耇雑な状態管理をしなくおいい
🐛 障害に匷い 1぀のサヌバヌが萜ちおも他のサヌバヌで察応できる

🏗 バック゚ンドが担圓する䞻な仕事

具䜓䟋ECサむトの泚文凊理

① クラむアント「この商品を泚文したい」ずリク゚スト
        ↓
② バック゚ンド認蚌確認「このナヌザヌはログむン枈みか」
        ↓
③ バック゚ンド圚庫確認「商品の圚庫はあるか」
        ↓
④ バック゚ンド金額蚈算「皎蟌み䟡栌・送料を蚈算」
        ↓
â‘€ バック゚ンドDB保存「泚文デヌタをデヌタベヌスに保存」
        ↓
⑥ バック゚ンドメヌル送信「泚文確認メヌルを送る」
        ↓
⑩ クラむアント「泚文完了したした」ずいうレスポンスを受け取る

このように、バック゚ンドは「目に芋えない倚くの凊理」を担圓しおいたす。


7. 🎯 たずめ

抂念 䞀蚀で蚀うず
🖥 バック゚ンド ナヌザヌに芋えない裏偎の凊理を担圓
🌐 サヌバヌ サヌビスを提䟛する偎のコンピュヌタ
💻 クラむアント サヌビスを受け取る偎ブラりザ・アプリ
📚 リク゚スト クラむアントからサヌバヌぞの「お願い」
📀 レスポンス サヌバヌからクラむアントぞの「返事」
🔢 ステヌタスコヌド リク゚ストの結果を衚す3桁の数字
🔄 ステヌトレス サヌバヌが前のやり取りを芚えおいない仕組み

バック゚ンドの本質
「リク゚ストを受け取り → 凊理をしお → レスポンスを返す」
このシンプルな流れの䞭に、認蚌・DB・ビゞネスロゞックなど
たくさんの芁玠が詰たっおいたす。

次回は API蚭蚈の基瀎 を解説したす
RESTfulな蚭蚈・HTTPメ゜ッドの䜿い分け・
良い゚ンドポむント蚭蚈の考え方を孊びたす🌟

💬 質問や感想があれば、コメント欄でお気軜にどうぞ!
👍 圹に立ったら、いいね&ストックをお願いしたす!
🎓 ここたで読んでくださっお、本圓にありがずうございたした!


🔗 シリヌズ蚘事

  • 【第䞀回】バック゚ンドずは䜕か・サヌバヌの基本この蚘事
  • 【第二回】API蚭蚈の基瀎近日公開
  • 【第䞉回】デヌタベヌスの基瀎近日公開
  • 【第四回】認蚌・認可の基瀎近日公開
  • 【第五回】バック゚ンド蚭蚈の実践近日公開
  • 【第六回】たずめ・デプロむ・次のステップ近日公開
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?