SlideShare a Scribd company logo
1 of 22
``完璧に理解した``
WEB の裏側の仕組み
株式会社coroutine 東川 諒央
自己紹介
株式会社 coroutine
エンジニアメンター
フリーランスプログラマー 東川 諒央
Twitter, GitHub: @biwakonbu
WEB 領域特化
WEB フロント〜インフラまで、ソフトウェア領域は大体やります。
Laravel, Django, Rails, Nuxt, Vue, React 等の
開発実績がメインです。
現在は技術顧問業とメンターなど、エンジニア教育に力を入れています。
新人育成、チームビルディングなど何かあればご相談ください。
雑にキャッチアップする WEB の仕組みをやります
1. TCP/IP による通信の世界
2. ブラウザと WEB
3. でもブラウザって IP アドレス使ってないよね?
4. HTTPS ってなんなん?HTTP でええやろ
5. ところで WEB サーバって何?
6. WEB サーバは作れる
7. CGI って最近聞かないよね
8. WAF (Web Application Framework) のそこはかとなくイケテル感
9. 1 週回って Nginx すら使わなくなった世界
1. TCP/IP による通信の世界
色々な機械と通信するための仕組み
● PC - PC
● PC - ハブ
● PC - ルーター
● PC - インターネット
上記のような発信端末と受信端末間で
ルールに従って届けてくれる
IP アドレスを指定して通信します
パケットの気持ちになれば
宛先分からないと届けられないですよね
1. TCP/IP による通信の世界
IP アドレスを指定とは?
192.168.1.1 の PC から
192.168.1.2 の PC に疎通確認する場合
> ping 192.168.1.2
ICMP のプロトコルに従ってパケットを
投げます
基本は宛先に向かって投げるだけ
ICMP?パケット?
て人はググりましょう!
1. TCP/IP による通信の世界
TCP/IP はバックエンドの話で
重要です
ネットワーク分からない人は
これを読んでみると良いと思います
2. ブラウザと WEB
雑な定義
ブラウザ ・・・WEB を見るもの
WEB ・・・インターネット上でドキュメ
ントを公開
ブラウザに URL を入力するか、
ブラウザ上のリンクをクリックすると WEB ページが
見れたり、データを登録できたりする。
https://www.google.com/search?q=twitter&oq=twitter
URI (Uniform Resource Identifier)
URI の事を URL と呼ばれる事が多いですが大体 URI の事です
詳しくは RFC3986 を読む事を推奨します
2. ブラウザと WEB
scheme authority
userinfo @ host : port
path query
GET http://www.google.com/search
2. ブラウザと WEB
GET http://www.google.com/search の裏側
http:// ・・・ HTTP での通信
authority に port 指定がな
いので標準の 80
www.google.com ・・・通信先のサーバ指定
/search ・・・サーバ内のドキュメント PATH の指定
後は細かな Header を色々ブラウザ (と JS) が良い感じに設定したりします
2. ブラウザと WEB
3. でもブラウザって IP アドレス使ってないよね?
www.google.com (host) が実質 IP アドレス
DNS (Domain Name System) という仕組みによって
サーバ名を IP アドレスに変換してアクセスします
詳しい記事を書いている人がいるので、詳細はそちらで
> Webページがブラウザに表示されるまでに何が起こるのか?
> https://zenn.dev/ak/articles/61d25099295372
4. HTTPS ってなんなん?HTTP でええやろ
HTTP と HTTPS の違い
HTTP ・・・通常のドキュメント転送プロトコル。丸見え。
HTTPS ・・・HTTP を暗号化してドキュメントを転送する。
途中経路で改竄したり、盗聴されたりを防げ
る。
ただし、運営に悪意がある場合は何の意味も
ない。
Google の SEO ではコーポレートやキュレーションサイトのような
データ送信を持たない WEB ページなども HTTPS 化していないと評価が下がる
もはや HTTP の側にメリットなし。証明書不要な点くらい。
4. HTTPS ってなんなん?HTTP でええやろ
証明書と暗号化
5. ところで WEB サーバって何?
なんとなく機械をイメージしてしまいがち
実際は HTTP を話せるソフトウェア
の総称
サーバという名前が分かりにくいですが、
待ち受ける者という意味で覚えましょう。
「HTTP を待ち受ける者」という意味を持つので
待ち受けないとダメですよね?
サーバは一回実行したら終わりではなく、
常駐するソフトウェアである必要があるんです。
常駐するプログラムとは?
誤解を恐れずに言うと「無限ループしているプログラム」
常駐プログラムの事をデーモンとも呼びます。
6. WEB サーバは作れる
チャットシステム
6. WEB サーバは作れる
WEBサーバ
実はチャットとほぼ一緒
HTTP が話せるチャットみたいな感じ
6. WEB サーバは作れる
WEBサーバ
結論:socket プログラミングが入門できれば WEB
サーバは自作できます
詳しくはこの本で勉強できるので興味があれば
オススメです。ちなみに Java です。
7. CGI って最近聞かないよね
CGI って何?
プログラムファイルを WEB サーバから
呼び出し、HTML を動的に出力する仕組み
※ レンサバでは現役です
CGI のメリットデメリット
メリット
- 導入が簡単で Apache とモジュール設定したらすぐ利用可能
- 数点程度の動的なページを作るくらいならレンサバ借りればすぐに動作できる
- フレームワーク使わなくても動作できるので始め易い
デメリット
- URI に .php とか .html とか .jsp とか .do とかダサイ
ダサイだけじゃなく、裏側で実行している言語や環境がバレる (変えて誤魔化せるけど...)
- CGI 利用側に高度なセキュリティを理解、対処するノウハウが求められる問題アリ
- 数点以上の画面とセッションを使うような場合 WAF を使う方が圧倒的に楽
7. CGI って最近聞かないよね
7. CGI って最近聞かないよね
CGI も作れる
WEB サーバから
CGI を呼び出すだけです。簡単ですね。
PATH と拡張子が URI から取れるので
実行する言語も変更できます。
まとめ
● ルールは多いけど、実は結構シンプルな仕組みがほとんど
● 自分で作れるものが多い
● せっかくプログラミングできるから何でも作りたいですね
● 自前 WEB サーバや自前 CGI はセキュリティリスク高いので
勉強用として割り切ってプライベートのみ利用にしてください
● 凝った奴を作りたい場合は OSS を参考にしよう
GitHub とかでよさそうな物を探して写経とかすると良いと思います
おわり
Twitter: @biwakonbu
Twitter やってます。
良ければ交流してください。

More Related Content

Similar to ``完璧に理解した``WEB の裏側の仕組み.pptx

Service workerとwebプッシュ通知
Service workerとwebプッシュ通知Service workerとwebプッシュ通知
Service workerとwebプッシュ通知zaru sakuraba
 
BootstrapとRailsで、 高速にWebサイトを作ってみた
BootstrapとRailsで、 高速にWebサイトを作ってみたBootstrapとRailsで、 高速にWebサイトを作ってみた
BootstrapとRailsで、 高速にWebサイトを作ってみたBeMarble
 
Webエンジニアのサバイバル英会話
Webエンジニアのサバイバル英会話Webエンジニアのサバイバル英会話
Webエンジニアのサバイバル英会話Jumpei iwamura
 
WebRTCでリアル店舗を作ってみる
WebRTCでリアル店舗を作ってみるWebRTCでリアル店舗を作ってみる
WebRTCでリアル店舗を作ってみるJunichi Okamura
 
The First React on Rails
The First React on Rails The First React on Rails
The First React on Rails Kohei Ito
 
LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25
LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25
LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25Isao Ebisujima
 
Web開発の 今までとこれから
Web開発の 今までとこれからWeb開発の 今までとこれから
Web開発の 今までとこれからShinichi Takahashi
 
はじめてのモバイルウェブアプリ 1
はじめてのモバイルウェブアプリ 1はじめてのモバイルウェブアプリ 1
はじめてのモバイルウェブアプリ 1Taisuke Fukuno
 
HTML5 によるロボット制御
HTML5 によるロボット制御HTML5 によるロボット制御
HTML5 によるロボット制御Honma Masashi
 
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクションTakahiro Okumura
 
ON HTML5 FIELD で書き尽くせなかったこと
ON HTML5 FIELD で書き尽くせなかったことON HTML5 FIELD で書き尽くせなかったこと
ON HTML5 FIELD で書き尽くせなかったことMasakazu Muraoka
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座DIVE INTO CODE Corp.
 
スマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTCスマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTCNatsuki Yamanaka
 
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」Takashi Endo
 
Windowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろうWindowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろうkeitasudo1
 
LaravelとNuxt.jsを業務で取り入れる際に得た知見
LaravelとNuxt.jsを業務で取り入れる際に得た知見LaravelとNuxt.jsを業務で取り入れる際に得た知見
LaravelとNuxt.jsを業務で取り入れる際に得た知見ssuserb6dacf
 
Webページが表示されるまで
Webページが表示されるまでWebページが表示されるまで
Webページが表示されるまでMasataka Suzuki
 

Similar to ``完璧に理解した``WEB の裏側の仕組み.pptx (20)

Service workerとwebプッシュ通知
Service workerとwebプッシュ通知Service workerとwebプッシュ通知
Service workerとwebプッシュ通知
 
BootstrapとRailsで、 高速にWebサイトを作ってみた
BootstrapとRailsで、 高速にWebサイトを作ってみたBootstrapとRailsで、 高速にWebサイトを作ってみた
BootstrapとRailsで、 高速にWebサイトを作ってみた
 
Webエンジニアのサバイバル英会話
Webエンジニアのサバイバル英会話Webエンジニアのサバイバル英会話
Webエンジニアのサバイバル英会話
 
9th nov2012 kof2012
9th nov2012 kof20129th nov2012 kof2012
9th nov2012 kof2012
 
WebRTCでリアル店舗を作ってみる
WebRTCでリアル店舗を作ってみるWebRTCでリアル店舗を作ってみる
WebRTCでリアル店舗を作ってみる
 
The First React on Rails
The First React on Rails The First React on Rails
The First React on Rails
 
LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25
LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25
LaravelとNuxt.jsを業務で取り入れる際に得た知見 Laravel/Vue.js勉強会#4 2018/04/25
 
Web開発の 今までとこれから
Web開発の 今までとこれからWeb開発の 今までとこれから
Web開発の 今までとこれから
 
はじめてのモバイルウェブアプリ 1
はじめてのモバイルウェブアプリ 1はじめてのモバイルウェブアプリ 1
はじめてのモバイルウェブアプリ 1
 
HTML5 によるロボット制御
HTML5 によるロボット制御HTML5 によるロボット制御
HTML5 によるロボット制御
 
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
 
Flex入門
Flex入門Flex入門
Flex入門
 
ON HTML5 FIELD で書き尽くせなかったこと
ON HTML5 FIELD で書き尽くせなかったことON HTML5 FIELD で書き尽くせなかったこと
ON HTML5 FIELD で書き尽くせなかったこと
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
スマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTCスマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTC
 
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
 
Windowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろうWindowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろう
 
Walking front end
Walking front endWalking front end
Walking front end
 
LaravelとNuxt.jsを業務で取り入れる際に得た知見
LaravelとNuxt.jsを業務で取り入れる際に得た知見LaravelとNuxt.jsを業務で取り入れる際に得た知見
LaravelとNuxt.jsを業務で取り入れる際に得た知見
 
Webページが表示されるまで
Webページが表示されるまでWebページが表示されるまで
Webページが表示されるまで
 

More from Ryo Higashigawa

TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfTypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfRyo Higashigawa
 
新しいWEBフロントの開拓.pptx
新しいWEBフロントの開拓.pptx新しいWEBフロントの開拓.pptx
新しいWEBフロントの開拓.pptxRyo Higashigawa
 
AWS を始める時に気をつけるべき課金周りの仕組みと設定.pptx
AWS を始める時に気をつけるべき課金周りの仕組みと設定.pptxAWS を始める時に気をつけるべき課金周りの仕組みと設定.pptx
AWS を始める時に気をつけるべき課金周りの仕組みと設定.pptxRyo Higashigawa
 
これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境Ryo Higashigawa
 

More from Ryo Higashigawa (8)

TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfTypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdf
 
新しいWEBフロントの開拓.pptx
新しいWEBフロントの開拓.pptx新しいWEBフロントの開拓.pptx
新しいWEBフロントの開拓.pptx
 
AWS を始める時に気をつけるべき課金周りの仕組みと設定.pptx
AWS を始める時に気をつけるべき課金周りの仕組みと設定.pptxAWS を始める時に気をつけるべき課金周りの仕組みと設定.pptx
AWS を始める時に気をつけるべき課金周りの仕組みと設定.pptx
 
これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境
 
Ml ch10
Ml ch10Ml ch10
Ml ch10
 
Ml ch7
Ml ch7Ml ch7
Ml ch7
 
Ml ch3
Ml ch3Ml ch3
Ml ch3
 
Ml ch2
Ml ch2Ml ch2
Ml ch2
 

``完璧に理解した``WEB の裏側の仕組み.pptx

  • 2. 自己紹介 株式会社 coroutine エンジニアメンター フリーランスプログラマー 東川 諒央 Twitter, GitHub: @biwakonbu WEB 領域特化 WEB フロント〜インフラまで、ソフトウェア領域は大体やります。 Laravel, Django, Rails, Nuxt, Vue, React 等の 開発実績がメインです。 現在は技術顧問業とメンターなど、エンジニア教育に力を入れています。 新人育成、チームビルディングなど何かあればご相談ください。
  • 3. 雑にキャッチアップする WEB の仕組みをやります 1. TCP/IP による通信の世界 2. ブラウザと WEB 3. でもブラウザって IP アドレス使ってないよね? 4. HTTPS ってなんなん?HTTP でええやろ 5. ところで WEB サーバって何? 6. WEB サーバは作れる 7. CGI って最近聞かないよね 8. WAF (Web Application Framework) のそこはかとなくイケテル感 9. 1 週回って Nginx すら使わなくなった世界
  • 4. 1. TCP/IP による通信の世界 色々な機械と通信するための仕組み ● PC - PC ● PC - ハブ ● PC - ルーター ● PC - インターネット 上記のような発信端末と受信端末間で ルールに従って届けてくれる IP アドレスを指定して通信します パケットの気持ちになれば 宛先分からないと届けられないですよね
  • 5. 1. TCP/IP による通信の世界 IP アドレスを指定とは? 192.168.1.1 の PC から 192.168.1.2 の PC に疎通確認する場合 > ping 192.168.1.2 ICMP のプロトコルに従ってパケットを 投げます 基本は宛先に向かって投げるだけ ICMP?パケット? て人はググりましょう!
  • 6. 1. TCP/IP による通信の世界 TCP/IP はバックエンドの話で 重要です ネットワーク分からない人は これを読んでみると良いと思います
  • 7. 2. ブラウザと WEB 雑な定義 ブラウザ ・・・WEB を見るもの WEB ・・・インターネット上でドキュメ ントを公開 ブラウザに URL を入力するか、 ブラウザ上のリンクをクリックすると WEB ページが 見れたり、データを登録できたりする。
  • 8. https://www.google.com/search?q=twitter&oq=twitter URI (Uniform Resource Identifier) URI の事を URL と呼ばれる事が多いですが大体 URI の事です 詳しくは RFC3986 を読む事を推奨します 2. ブラウザと WEB scheme authority userinfo @ host : port path query
  • 10. GET http://www.google.com/search の裏側 http:// ・・・ HTTP での通信 authority に port 指定がな いので標準の 80 www.google.com ・・・通信先のサーバ指定 /search ・・・サーバ内のドキュメント PATH の指定 後は細かな Header を色々ブラウザ (と JS) が良い感じに設定したりします 2. ブラウザと WEB
  • 11. 3. でもブラウザって IP アドレス使ってないよね? www.google.com (host) が実質 IP アドレス DNS (Domain Name System) という仕組みによって サーバ名を IP アドレスに変換してアクセスします 詳しい記事を書いている人がいるので、詳細はそちらで > Webページがブラウザに表示されるまでに何が起こるのか? > https://zenn.dev/ak/articles/61d25099295372
  • 12. 4. HTTPS ってなんなん?HTTP でええやろ HTTP と HTTPS の違い HTTP ・・・通常のドキュメント転送プロトコル。丸見え。 HTTPS ・・・HTTP を暗号化してドキュメントを転送する。 途中経路で改竄したり、盗聴されたりを防げ る。 ただし、運営に悪意がある場合は何の意味も ない。 Google の SEO ではコーポレートやキュレーションサイトのような データ送信を持たない WEB ページなども HTTPS 化していないと評価が下がる もはや HTTP の側にメリットなし。証明書不要な点くらい。
  • 13. 4. HTTPS ってなんなん?HTTP でええやろ 証明書と暗号化
  • 14. 5. ところで WEB サーバって何? なんとなく機械をイメージしてしまいがち 実際は HTTP を話せるソフトウェア の総称 サーバという名前が分かりにくいですが、 待ち受ける者という意味で覚えましょう。 「HTTP を待ち受ける者」という意味を持つので 待ち受けないとダメですよね? サーバは一回実行したら終わりではなく、 常駐するソフトウェアである必要があるんです。 常駐するプログラムとは? 誤解を恐れずに言うと「無限ループしているプログラム」 常駐プログラムの事をデーモンとも呼びます。
  • 17. 6. WEB サーバは作れる WEBサーバ 結論:socket プログラミングが入門できれば WEB サーバは自作できます 詳しくはこの本で勉強できるので興味があれば オススメです。ちなみに Java です。
  • 18. 7. CGI って最近聞かないよね CGI って何? プログラムファイルを WEB サーバから 呼び出し、HTML を動的に出力する仕組み ※ レンサバでは現役です
  • 19. CGI のメリットデメリット メリット - 導入が簡単で Apache とモジュール設定したらすぐ利用可能 - 数点程度の動的なページを作るくらいならレンサバ借りればすぐに動作できる - フレームワーク使わなくても動作できるので始め易い デメリット - URI に .php とか .html とか .jsp とか .do とかダサイ ダサイだけじゃなく、裏側で実行している言語や環境がバレる (変えて誤魔化せるけど...) - CGI 利用側に高度なセキュリティを理解、対処するノウハウが求められる問題アリ - 数点以上の画面とセッションを使うような場合 WAF を使う方が圧倒的に楽 7. CGI って最近聞かないよね
  • 20. 7. CGI って最近聞かないよね CGI も作れる WEB サーバから CGI を呼び出すだけです。簡単ですね。 PATH と拡張子が URI から取れるので 実行する言語も変更できます。
  • 21. まとめ ● ルールは多いけど、実は結構シンプルな仕組みがほとんど ● 自分で作れるものが多い ● せっかくプログラミングできるから何でも作りたいですね ● 自前 WEB サーバや自前 CGI はセキュリティリスク高いので 勉強用として割り切ってプライベートのみ利用にしてください ● 凝った奴を作りたい場合は OSS を参考にしよう GitHub とかでよさそうな物を探して写経とかすると良いと思います