ITアレルギーでもわかる！基本的な用語をわかりやすく解説！

## 前書き

初学者におススメの書籍（どちらか一冊でOK）

**Web職初心者は「プロになるためのWeb技術入門」**
https://amzn.to/4bmv4SH

**イラスト図解式 この一冊で全部わかるWeb技術の基本**
https://amzn.to/3UN7Tvm

自分もそうでしたが、全くの初心者、特にITアレルギーの方はかなりとっつきにくく、
このような用語の勉強には一歩踏み出せないことが多いと思います。自分はITアレルギーでもないですが避けてきました（笑）

特に未経験者はよりわかりやすい説明や例えを探していると思いますので、いろいろ調べまくった結果、頭の中で嚙み砕き、**この説明だとわかりやすい！** という説明をしていきたいと思います。
 
また、説明に入る前に準備があります。
この準備段階が結構大切だと思っていますので特に未経験者やITアレルギーの方は必ず読んでくださいね。


***
## 準備その1「英単語の意味を調べる」
前の記事にも書いたのですが、IT用語は英単語の意味と直結しています。
意味が分かっていない単語の解説をいきなり読んで理解しようとするより、
まずは単語の意味を調べてから説明を読んだ方が理解度が一気にあがります。

## 準備その2「現実世界と置き換えて考える」
コンピューターの世界は現実世界に置き換えられる場合が多いです。
できるだけ誰もが経験したことがあるようなシチュエーションにおきかえたりして考えた方がよっぽど頭に入ってきやすいです。

## 準備その3「絶対に1回で覚えようとしてはいけない」
これは準備というより心構えになりますが、人間の脳の記憶って1回で定着するようにできてないんですね。
もちろん衝撃的な事実やシチュエーションを目の当たりにしたときなどは忘れられない記憶になると思いますが、
そういう場合を除いて「**何度も何度も忘れては確認する、忘れては確認する**」の繰り返しで、
**気づいたら覚えていた**という流れが自然な記憶の流れです。
これを別の言い方に置き換えるなら「**覚えるまで繰り返す**」になります。
英単語の勉強してきた方なんかは身に染みてわかると思います。

ですので、**1回で覚えられない、理解できない**からと言って「自分には向いてない」とか思わないようにしましょう。
そういうものなんです。人間の記憶能力なんて1部の天才を除いてはみんな同じくらいの能力だと考えてください。




## 英単語の意味
前置きが長くなりましたが、ここからまず説明に登場する英単語の意味を紹介します。

- [x] **protocol(プロトコル)**
慣習、手続き、協定
- [x] **Address(アドレス)**
宛名、住所
- [x] **port(ポート)**
港
- [x] **request(リクエスト)** 
要求、依頼、頼むこと
- [x] **response(レスポンス)** 
返答、回答
- [x] **Cookie(クッキー)**
お菓子のクッキー、イギリス英語ではbiscuit(ビスケット)
後で出てきますが、開発者がビスケットのように小さくて一時的に情報を保存する仕組みが必要だと考えたそうです。
その仕組みに「Cookie」という名前をつけたと。単純ですよね（笑）
- [x] **stateful(ステートフル)**
状態を把握する、維持する
- [x] **stateless(ステートレス)**
状態を持たない、statefulの対義後
- [x] **domain(ドメイン)**
領地、領土、所有地、公有地

最後だけ難しかったかもしれませんが、あとは聞いたことある単語だったのでイメージしやすかったかなと思います。

では次に超基本IT用語に解説をしていきます。途中で分からなくなったら上の単語に戻って意味を確認しましょう

## 用語1　HTTPプロトコル
これはみなさんが「**インターネット通信をするときの決められた様々なルール**」になります。
HTTPプロトコルはそのルールの名前です。「○○規約」だったり「10か条！」みたいなものだと捉えましょう。
または**情報を送受信するときの約束事、取り決め事項**」といった方がわかりやすいかもしれません。
よくURLリンクの先頭にhttps://~と見かけると思いますが、まさにこのhttpことです。

例えは何でもいいともいます。野球におけるピッチャーとキャッチャーのハンドサインとか。
「こういう手の時はこの球」みたいに、予め決められたルールに基づいて通信やり取りが行われるということです。

人間通しの会話と捉えてもわかりやすいです。
日本人は日本語という共通言語を使います。このときに日本語のルールにのっとって話しますよね。
コンピューター同士も通信するときにこのHTTPプロトコルといったルールに基づいてデータのやり取りをするということです。

じゃあこのルールを決めることになんの意味があるのか？
これもいたってシンプルに現実世界と合わせて考えましょう。
ルールがなければ無秩序となり犯罪が起きたり交通事故が起きたり様々なトラブルが起きますよね。
会話でも相手を傷つけたり、逆に傷つけられたりして、それが原因で喧嘩になったりトラブルのもとになります。

HTTPプロトコルがあることによって
1. **やりとりするデータの安全性が保たれる**
2. **やりとりするデータの整合性がとれる**
3. **効率的なやりとりができる**

というメリットがあります。



## 用語2,3,4　IPアドレス, リクエスト, レスポンス
まずは**IPアドレス**ですが、これはアドレスという言葉の通り「住所」です。
IPアドレスは**インターネット通信をするときにあなたのパソコンやスマートフォン、
いろいろなネットワーク機器に割り当てられたネット上の住所**です。
どこから割り当てられるのかというと、例えば契約しているインターネットサービス会社などです。

難しく考える必要はありません。
情報を届けるのに場所がわからなければ届けられないですし、逆に自分もアクセスすることはできないですよね。
手紙を送る時に相手先の住所がわからなければ送れないのと同じです。

「ん？でもネットで検索するときにいちいちIPアドレスなんて調べてないよ！」と思った方がいるかもしれませんが、実は無意識にやっているのです。
というかコンピューターがやってくれているのです。

わかりやすく流れをみていきましょう。

① google.comというURLにアクセスします。

②「google.comに該当するIPアドレスは何？」と、コンピューターはURLをIPアドレスに変換してくれるDNSサーバというところにメッセージを送ります。

③ DNSサーバは「172.217.175.4だよ！」とIPアドレスを返してくれます。この数字がgoogleウェブサイトのIPアドレスです。

※**DNS（Domain Name System）** はIPアドレスとURLに含まれるドメイン名（場所名と捉えてOK、https//から後ろの部分）を相互に変換してくれるプロトコルです。

④ あなたのパソコンはもらったIPアドレス（googleウェブサイトの住所）を使って、
インターネット上のGoogleウェブサーバに **「検索ページをください！」とリクエスト(要求)**  を送ります。

この時に、パソコンは、このリクエストに**Port番号**を付けてGoogleウェブサーバに送ります。
通信はこのPort番号を介して行われる仕組みで、Port番号はコンピューター内のプログラムやサービスなどの処理を特定する役割を担っています。
例えばこの場合は、**「ウェブページを表示するために使用する番号** 」になります。

もっと簡単に考えましょう。Portの意味は**港**でした。
いろんなリクエストを積んでくる船を「このリクエストはこのポート番号を使ってね！」という具合に働いてくれるといった感じです。

⑤ そしてGoogleウェブサーバはこのPortを介して **「はい、これが検索ページだよ！」というレスポンス(応答)** を返します。

⑥ パソコンはもらった検索ページを画面表示して、あなたは検索を行うことができる！

このような流れになります。

ここで**リクエスト**と**レスポンス**が出てきましたね。
英単語の意味の通りの役割を果たしていると思います。
HTTPプロトコルで行われるので**HTTPリクエスト**や**HTTPレスポンス**とも言います。

## 用語5,6,7 Stateful, Stateless, Cookie
この3つは関係しているので繋げて説明します。

インターネットを使っているときを思い出してみてください。
ウェブサイトはあなたがそのウェブサイトを使ったときの情報を覚えてますよね。

例えば、**ログイン情報**や**お気に入りの設定**などです。
このような以前の状態を維持しているプロトコルを**Stateful（ステートフル）プロトコル**と言います。

しかし、最初に出てきた通信に使われるHTTPプロトコルは**Stateless**なプロトコルです。
つまり、状態を維持しないので毎回ログインをしたり、設定をしなければいけません。
これをStatefulな状態にしてくれるのが**Cookie**という仕組みです。

冒頭の英単語の意味でも解説した通り、このIT用語におけるCookieの語源を調べてみると、
開発者が**ビスケットのように小さくて一時的に情報を保存する仕組みが必要**だと考えて「Cookie」という名前をつけたとのこと。

つまり、Cookie（クッキー）は**状態を維持しないStatelessプロトコルであるHTTP通信の機能を拡張して、私たちが普段使っている便利なStatefulな状態にしてくれる仕組み**ということです。

「状態を維持する、しない」がわかりづらい！という人は、また人間同士の会話で考えましょう。

①学校で休み時間にAさんとBさんがテストについての会話をします。
②一旦休み時間が終わってそれぞれの授業に行き、また休み時間に会話します
③Aさんが **「さっきのテストの話なんだけどね」と言ったら、Bさんが「何の話？」と返します**
これがStatelssな状態です。想像しただけでめんどくさいですよね。やり取りの記録がない状態ですのでまた最初から会話はやり直しです。



## 最後に
ということで、自分ならこう説明されたらわかりやすい！という説明をさせていただきました。
こういう基本的な知識のあるなしでは全くプログラミングの世界が違って見えるということを、毎日少しずつ実感しています。

わからない言葉や難しい言葉にぶつかった時に、いかに今までの経験をもとに具体例に置き換えて解釈できるか？
がかなり重要だと思いますので、無理やり暗記したりしようとせずに少しずつステップアップしていきましょう。