# Webアプリケーション開発基礎編
## Webアプリケーションの仕組み
- ブラウザは HTML と CSS と JavaScript しか対応してない
- サーバー側で諸々処理して、3種ファイルを渡してブラウザにお任せ
- Webブラウザ ↔ Webサーバー ↔ APサーバー ↔ Webアプリケーション
- [超絶初心者のためのフロント入門(HTML、CSS、JavaScript) - Qiita](https://qiita.com/shuntaro_tamura/items/c9b2fec0f3a9f7d1e987)
### HTML
- [HTML の基本 - ウェブ開発を学ぶ - MDN](https://developer.mozilla.org/ja/docs/Learn/Getting_started_with_the_web/HTML_basics)
- Hypertext Markup Language
- Webサイトの本体。主にレイアウトを決めるための言語。
### CSS
- Webページのデザインを司っている
### JavaScript
- Webページに動きを作ってくれる
(例: 画像をクリックしたらタイトル文字列を変える)
## ネイティブアプリケーション
- PC/スマホにインストールするアプリケーション
- Swift(iOS),Kotlin(Android),Electron(PC) など
- Webアプリケーションと対になる存在
## 各種担当領域
(これらのことをすべてやる人は「フルスタックエンジニア」と呼ばれたりする)
### フロントエンド(クライアントサイド)
- 主にユーザが触る画面を担当
- HTML,JavaScript,CSS,jQuery,Vue&Nuxt,React&Next,Angular など
### バックエンド(サーバーサイド)
- 主にフロントエンドに渡すデータの処理を担当
- PHP(Laravel),Ruby(Rails),Python(Django,Flask,FastAPI),Node(Express) など
##### Webフレームワーク
- ライブラリをまとめたもの
- ライブラリとの違いは「書き方を強制されるか否か」
- ライブラリは拡張して使うものだがフレームワークは決められた書き方に沿うほうがやりやすい
### インフラ
- Webアプリケーションの開発環境/動作環境を担当
- Linux,Nginx,Docker,MySQL,PostgreSQL,AWS,GCP など
## 簡単に作ってみる
- 画面を HTML,JavaScript,CSS で作る
- サーバーからデータを渡してみる
## 余談:最近のWebアプリケーションの構成について
1. バックエンド側で画面を作りきってユーザに渡すパターン
- バックエンド中心 -> データと画面を混ぜてユーザに渡す
2. SPA/API駆動
- フロントエンド中心 -> APIを叩いてデータを取りに行く