Webエンジニアになる人に知っておいて欲しい最低限のWebの技術

## はじめに

株式会社シンシアでは、実務未経験のエンジニアの方や学生エンジニアインターンを採用し一緒に働いています。

※ シンシアにおける働き方の様子はこちら 

https://www.wantedly.com/companies/xincere-inc/stories

この記事は

- これからWebエンジニアとして働こうとしている人
- Webエンジニアになったけど、Webの基礎的なことが身についていないのでは？
- サイトが不具合で表示されないが、どうやって調査するかわからない

という人向けに書いたものです。ぜひ読んで見ていただけると嬉しいです。


## "Web"に付いて学ぶ目的

"プログラミングできればいいじゃん"、"フレームワーク扱えればいいじゃん"と思う方もいると思います。

でも、そんな方に聞きますが、**"運営しているサイトが落ちている（or エラーが出ている）時、あなたはどういう順番でなにを確認しますか？"**

この質問に即答できるなら、この記事は読まなくていいのでそっと閉じましょう。

**これに即答できないあなたは**最後までしっかり読んで、いいねもストックもいらないので（本当は欲しい）、ちゃんと覚えて学んで、実践で使えるようになってから閉じてください。

## 全体像を把握しましょう（絵で）

Webブラウザでは、URLを打ち込んでから、データをWebサーバーにリクエストして、サーバーから返ってくるデータ（HTMLやCSSなど）を表示しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69406/80e4becb-4224-351b-e710-fd351f6ef150.png)


※ 動画参照：

https://naminori.xincere.jp/courses/2/lectures/8


実際に、URLからサーバーにたどり着くためにはDNSサーバーが必要になります。

## DNSサーバーの役割

人間にとって覚えやすいドメイン名（例: sample.com）を、コンピュータが通信に使うIPアドレス（例: 198.11.11.11）に変換するのがDNSサーバーの役割です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69406/ab5d19e7-3eb7-b444-3762-33e0d41a27f0.png)

※ 動画参照：

https://naminori.xincere.jp/courses/2/lectures/8

※ IPアドレスを特定するにはdigコマンドなども使えます。

https://qiita.com/hypermkt/items/610b5042d290348a9dfa#dig%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A8%E3%81%AF

Webサイトが映らないと気がついたときには、まずDNSの設定など確かめましょう。
ドメイン名とIPがきっちり紐づいていない可能性があります。

紐づけがはっきりしている場合、サーバーを特定したところで、サーバーの中について勉強しましょう。

## サーバーの3層構造

Webサーバーに到達すると、3つの層があります。

- プレゼンテーション層
    - Webブラウザ上に画面を表示する役割
- アプリケーション層
    - Webシステムの動的処理する役割
- データベース層
    - 処理された情報を保管/管理する役割


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69406/38b46971-70bd-9b6e-1756-71d6fc593ce2.png)

※ 参考動画：

https://naminori.xincere.jp/courses/2/lectures/9

次はURLの詳細について、問題を詳細に特定できるようにしていきましょう。

## URLの詳細

URLには**主に**

- ドメイン・サブドメイン
- パスパラメータ
- クエリパラメータ

があります。これらの情報を使って、コードの原因箇所を特定します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69406/5eabbeb2-481c-70ab-d137-680295735941.png)

※ 参照動画

https://naminori.xincere.jp/courses/2/lectures/12


## HTTPリクエストとHTTPレスポンスについて

- HTTPリクエスト
    - クライアント（Webブラウザ等）がサーバーに対して情報を要求するために送信するメッセージです。
- HTTPレスポンス
    - サーバーは、クライアントからのリクエストに対してHTTPレスポンスを返します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69406/20eead1f-023f-6f74-b768-462a7cdbafa6.png)


※ 参照動画

https://naminori.xincere.jp/courses/2/lectures/13

## GETとPOSTの違いについて

GETとPOST通信だけ覚えましょう。下記のような特徴だけ、ひとまず覚えましょう。

GETには下記のような特徴があります。

- データはURLに含まれる（クエリパラメータとして）
- リクエストボディがない
- サーバーの状態を変更しない（安全性がある）
- URLの長さに制限がある（通常2,000〜8,000文字程度）
- 読み込み専用の操作に使用される


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69406/620d716e-d42e-17c1-5257-cd4fc62f4384.png)

POSTには下記のような特徴があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69406/ab72ccba-810d-4ff7-8f09-1857b4952c8b.png)

- リクエストボディにデータを含む（フォームデータやJSON、ファイルなど）
- サーバーの状態を変更することがある（データの作成や更新）
- クエリパラメータ以外にも大容量データを送信可能
- 認証や機密データの送信に使用されることが多い（ログイン、データ登録など）
- URLの長さ制限に影響を受けない（データはボディで送信されるため）


※ 参照動画

https://naminori.xincere.jp/courses/2/lectures/15


## 最後に

この記事では、Webエンジニアとして知っておきたい基礎的な知識をわかりやすく解説しています。Webサイトがどうやって動いているのかや、サイトがうまく表示されないときに何をチェックすればいいかを、具体的な例や図を使って説明しています。


- 最短でエンジニア転職で使う量のWebの知識をつけたい方はこちら

https://naminori.xincere.jp/courses/2

- さらにエンジニア力を上げたい方はこちら

https://www.amazon.co.jp/dp/B0D2PPRBGZ?ref=cm_sw_r_cp_ud_dp_RJG2RV8SZ3VVTRJRNS0W&ref_=cm_sw_r_cp_ud_dp_RJG2RV8SZ3VVTRJRNS0W&social_share=cm_sw_r_cp_ud_dp_RJG2RV8SZ3VVTRJRNS0W&skipTwisterOG=1&tag=yamadagenki06-22

- 第一線のエンジニアとして戦い方はこちら

https://www.amazon.co.jp/dp/B07JK7FZH2?ref=cm_sw_r_cp_ud_dp_0EP4EN6ESMG08SAT50TC&ref_=cm_sw_r_cp_ud_dp_0EP4EN6ESMG08SAT50TC&social_share=cm_sw_r_cp_ud_dp_0EP4EN6ESMG08SAT50TC&skipTwisterOG=1&tag=yamadagenki06-22

## その他

シンシアでは、エンジニア転職のサポートをしています。Webの技術に加え、エンジニア転職を成功させたい方はこちらの記事もご参照ください。

https://qiita.com/yamadagenki/items/3b8b0ce8df0117b9af8e

上記の学習を終えて、転職活動用のポートフォリオを作ろうと思っている方はこちらがおすすめです。

https://portfolio.xincere.jp/