プログラミング初学者のための簡単プロトコル!
「ひまじんプログラマーでございます埼玉よりはいおこべておはようございますというわけでこのラジオはひまじんの中級エンジニアが送る駆け出しエンジニアをキャリアアップさせるラジオになってます頑張ってほしいというわけで今日は何をやるんですか今日はですねじゅんぺいくんがエンジニアになった頃によくわからなかったというプロトコルというものについて解説していきたいと思いますお願いしますプロトコルさあ」
「じゅんぺいくんまずはあなたのプロトコルの認識を教えてください今の段階なんですけど僕の」
「認識だと調べてパッと出てくるのがルール規約みたいな感じでルールはルールなんだろうなっていう感じでなんていうんですかその場その場のルールと言いますか伝わりますかね例えばアメリカみたいな州によって法律違うじゃないですかそんな感じで場所によってそれぞれそういうプロトコルっていうルールがあるんだなっていう」
「っていう認識ですなるほどね法律的な法律ねコンピュータ法律だそうですねコンピュータ同士の法律だなるほどなるほど穴勝ち間違ってないありがとうございますあっていると言っても過言ではない最初は本当に全くこれが分かんなくてHTTPっていうのがいわゆるプロトクなんだな具体的なことで言うと」
「これがプロトコルなんだなぐらいでしたなるほどねじゃあここで問題ですなぜプロトコルは必要なんでしょうかえーとですねそれぞれそれぞれの州でやりとりをする際におかしなことが起きちゃうんじゃないかなっていうおかしなことが起きちゃうんじゃないかとなるほどなるほどそれぞれでルール決めてちゃんとやろうよっていうことじゃないですかおー」
「50点かな遠くはないのに方向性は合ってますねちなみに今のは真実というか真食ってるなと思うのはプロトコルっていう単語の意味として国際儀礼とか外交儀礼っていう意味なんですよそうなんだだからそういう意味だと合ってると思いますありがとうございます君合ってるありがとうございます終わりですかね今回は」
「終わりませんあくまでプロトコルという単語の意味だったからねそうですなんでプロトコルが必要かっていうと要はコンピューターとコンピューターって通信するじゃないですかその時に一定のルールがないと通信できないんですよ例えば私日本人あなたロシア人言語が違いますよね言語違ったらコミュニケーション取れなくないですか取れないですねそういうことです」
「つまり僕は日本語プロトコルを実装してるんですけどあなたはロシア語プロトコルを実装してますと故に違うプロトコルになっちゃってるんで通信できないんですよ確かにでコンピューターってそれぞれ別の機械じゃないですか別にWindowsとMacも通信できるしいろんな通信がありますよねそういう通信の時に」

「プロトコルっていうのがあって決まってるとここってこういう風なルールでやってるから通信できるよねみたいなそういう共通ルールが出来上がるんですよそれがプロトコルでございますわかりやすい言語に依存せず通信のルールを共通で持っておいてるから通信できるようになるといろんな場所別々の機器でも通信できるようにするためには一定のルールないとダメだよねこっちはこのルールで送ったけど相手は違うルールで動いてるよってなったら」
「なんか暗号送られてきたなみたいな気持ちになっちゃうじゃないですかそういうことですねなるほどですねはいわかりやすいではプロトコルが何なのかわかったところで代表的なプロトコルを紹介していきますかお願いしますじゃあまずは一番ウェブエンジニアがよく使うであろうHTTPそれしか知らない」
「それしか知らないですそれしか知らない解説していいよじゃああれそれはまずいな知ってるならそれはまずいなプロトコルですねプロトコルプロトコルですねHTTPの最後のPがプロトコルなんですよねじゃあHTTはそこはまた次回ということで次回はいすいませんHTTはですねはい」
「ハイパーテキストトランスファープロトコルですハイパーテキストって何でしょう超すごいんですよ単なるテキストじゃなくて」
「もっといろんな情報が入っているテキストだぜってことですよねそういうことちなみにHTMLはHyperTextMarkupLanguageですよねそういうことですこれで分かりましたねなんか繋がりましたねHTMLで作ったあの文書ファイルがHyperTextって言うんですよねはい普通の文書にリンクが張り巡らされているやつ」
「ハイパーテキストって言うんですけどそれをトランスファー移行とか交換するためのプロトコルなのでブラウザとかで開くときに絶対ウェブサイトのURLにhttpとか始まってますよねすごいこれがhttpですありがとうございますバコーン入ってきましたバコーン入ってなさそうなやつ他のやつ抜けてそうです代わりにどっか行ってますもん」
「いやでも分かりやすいですなるほど教えるのうまいなあとはHTTP-Sっていうのもよく見るよねあれの違いは」
「えっとー調べ僕の調べた感じだとそのhttpよりよりなんかこう情報が守られている状態みたいなあーそうだねっていうのは認識あるんですけどそれぐらいですねそれまでですこれはでもちょっと知っておいたほうがいいですねセキュリティ的に例えばですけどかいちくんはいもし」

「無線LANつないでカフェの無線LANつなぎましたそこでクレジットカード入力するサイトがありましたとそのサイトがhttpだったらどうしますかぶち切れます叩き割ります何を叩き割るかはさておきカフェだからいろんなクッキーかもしれない暗号化なんですよCDPSっていうのは暗号化するときにSSLとか」
「TLSTLSかトランスファーレイヤー違うなちょっと忘れたわTLSとかSSLってものを使って暗号化してるんですよ通信を実はこの公衆Wi-Fiとかって適当なソフトを使ったら他の人の通信内容見れちゃうんですよ」
「なるほどだけどその中にクレジットカード情報とか入れたらやばいじゃないですかやばいですねなんでそういうのを防ぐためにSSLっていうのを使うとその通信ごと暗号化されるので望む気味はされるんですけどされても読み解けないよねみたいな状態になるんですねなるほどなので基本的に入力フォームに入れて送るよって時はhttpsになってるなってないってのはめっちゃ大事なんですよなるほどですねはい」
「今だともちろんそういう入力する場面だと普通そのSついてるのはもちろん当たり前もう常識になってるよねでも5年前とかはなってないのも普通5年前はもうなってたかいや分からんあんま見たことない10年前とかはなんかでも10年前とかはなんか普通にあったような気がしてるそうなんですね」
「どうだろうね意識してなかったなブラウザがどんどん厳しくなっていって世の中が対応していったみたいなあとは無線LANとかフリーワイファイとかが普及していったのもあるとは思いますけどねなかったですからねあとあれもでかいかもねレッツエンクリプト」
「要はhttpsで暗号化するときって第三者がこのドメインOKですみたいな感じでこのURLOKですよみたいな感じで暗号化するための認証みたいなのをしてるんですよでもそれって実は高くて金額的に僕のサイトhttpsにしたいですって認証局に言うんですけど結構普通に何十万とかあるよね」
「結構高いんですよあれ高かったんだけどレッツエンクリプトっていう世の中にHTTPSというか暗号化された通信を普及しようという団体が現れて無償でその認証を提供し始めたのでそれで結構普及したのかなって思いますねそれありそうだっていうのがHTTPとHTTPSです」
「そのhttpsのsの何が略されてるかっていうとそれはSSLとはまた別ですか一緒じゃない?なんだろうねセキュアとかそんな感じなんじゃないって勝手に思ってたけどあんまりそういえば調べたことないなセキュアですねセキュアでした多分SSLのsのセキュアですどうせまあそうだよねという感じですねはいわかりやすいです続いて」

「IPIPIP大事ですねネットワーク屋さんネットワーク屋さんどうですかネットワーク屋さんかどうかは気がどいですけどどうですかネットワーク屋さん的にどうですかIP大事大事大事かどうかできたIP何でしょうインターネットプロトコルそうインターネットプロトコル何してますかイメージIPアドレスその」
「住所っていうイメージですねそれぞれのパソコンとかにも割り当てられてますかねいいところに気づきましたねそれぞれのもののある場所を表しているのがIPアドレスっていう認識ですいいですね住所っていうのは的を得ていていてますねありがとうございます得てか的を得て得てますねありがとうございます」
「まあ要は我々ってインターネットにアクセスするときにIPアドレスとか使ってアクセスしないですよねしないです普通にGoogleだったらGoogle.comって打つしYahooだったらYahoo.co.jpって打ちますよねそのドメインとIPアドレスって言われてる住所を紐づけるやつっていうイメージ」
「違います違った違った紐付けてるのはDNSサーバーですねそうだDNSですねってことはIPは普通にあれか住所です住所でしたありがとうございます住所です住所です世の中にいっぱいサーバーがありますとはいでもどこに送るかなんていちいちねあれですよね分かってないと送れないですよねめちゃくちゃありますちょっとごめんIP自信なくなってきたわでそれがIPですとただよく見る」
「IPって数字3桁ドット3桁ドット3桁ドット3桁みたいに並んでるじゃないですかあれIPv4っていうバージョン4のIPなんですよあれって所詮255の4乗分ぐらいしか数字がないのでご察しの通り足んないんですよ50億弱しかないんだよ確かにもっとあるじゃんサーバーとかパソコンって人以上にそうそうそうそう」
「っていうので今どうにかしてるっていうので言うとグローバルアドレスとプライベートアドレスの2種類を使ってるんですよどういうことかっていうと例えば人間で言うと」
「何々県何々市っていうグローバルIPアドレスがあってそっから下の何々町何番地何番何々の何号っていうのはそれぞれプライベートIPが振り分けられてるんですよはいはいなんでグローバルとプライベートを駆使しながらなんとか一個の端末に紐づけてるっていうのが今のIPv4なるほど」
「部屋番号とかのがしっくりくるかも部屋番号かもしれない住所はパブリックに決まってるじゃないですか部屋番号ってその家作った人のさじ加減じゃん確かにそれが要はプライベートIPこのIPv4の今数字で表されてる部分はそこの」

「部屋番号の部分だけですか全部を表していますで2種類あるって言ったじゃないですかはいだいたいグローバルipなんですけどプライベートipはこの番号体を使ってねっていうのが決まってて192.00で始まるやつはプライベートなんですよ見ますよく見るんだよね192.なんとかってねそれはプライベートipだからなんですよなるほど」
「あともう一個なんかあったけど忘れた。178とかじゃなかったっけ?あ、8だっけ?なんか170番台だった気がする。はい。調べてください。調べてください。調べます。そこはふわっといきましょう。ありがとうございます。IPv4足らんと言うことで、IPv6ってのが出てるんですよ。こいつはすごいぞ。すごい」
「IPv4は10進数でアドレス決まってるんですよ10進数っていうのは0123456789で表されるんですけどIPv4は16進数でアドレスが振られてるんですよはいはい9ABCDEF6が16進数なんで全部にアドレス当てれるっしょ」
「今後永久にかはわからんけどっていう桁違いに増えた50億って結構多く感じるけどでも別にさ普通に我々ってPCを持ってるしスマホも持ってるし例えばiPad持ってるとするじゃないですかそしたらもう一人で3台持ってて人口70億人って考えたら全然足りないんですよそれ以外に普通にサーバーとかもいっぱいあるしでもV6だと何系だっけあれめっちゃあるよねめちゃくちゃある」
「16の16乗です。全くわかんなくなる。ここまでは知識で、実践的に話をするとIPv6の方が早いです。なんでお家のWi-Fiとかでたまにあるんですよ。IPv6対応シリーズとか。そういう時はIPv6使うと早いよ。早いんだあれ。V6の方が早い。なぜならV6の方が使ってる人少ないから」
「なるほどね今ではないんだ今はだからそちらが早いって言われてますねよくあるもちろん会社によるんですけどビジネス会社向けのネットワークサービスとかで早いよって言ってるのはV6使ってる場合がありますね例えばその家のWi-FiがそのIPV6のアドレスの携帯を対応してるというかそういう意味合い」
「家のWi-Fiの会社かなプランなるほどルーターがじゃなくてネットワークサービスプロバイダーがそういうのを提供してくれてるかなるほどV6でいうと安倍博士の公式サイトがIPv6対応してるってのがたまにニュースになりますそうなんだなるほど」
「別に軽量だからいいだろすごい軽量なサイトでしかもねちょっとなんか2000年前後のホームページみたいな見た目してるんだけどもう見たことありますでもIPv6対応してるっていうなんか結構性的なページですよね確かに多分さ安倍博士の友達のエンジニアが楽しんでやってるもうほんとねこれは話題になるぞ多分安倍博士と仲良い誰か以上IPの話でしたありがとうございます」

「あとちょっと雑によくあるやつだけ言ってるよSMTP」
「わからないですこれに関してはセンドメールトランスファープロトコルさっきhttpはハイパーテキストをトランスファーしてましたよねこっちは送信するメールのトランスファーですねメールとhttp間違えたhtmlじゃないハイパーテキストってちょっと形式違うので送信の仕方違うみたいな」
「感じですねなので別のプロトコルがありますよありがとうございますTCPこれもこれ逆に普通にトランスミッションコントロールプロトコルらしいこれはなんかあれですねネットデータって実はパケットっていう単位で分化されて送られるんですけどはい」
「そのパケットよく携帯とかでなんかあったよねパケット懐かしいですねガラケーそうそうそうそうでも通信って実はパケットで送ってるんですよ確か基本的にはもうでTCPっていうのはすごい信頼性の高い送り方で相手に届いたかどうかもちゃんとチェックしてるんですよ」
「手紙で言うとなんだっけ書き留めじゃなくて追跡できるやつ届いたかどうかも分かるやつ丁寧なやつですねなのでデータが欠損とかあったらやり直したりするんだっけとかしてくれるからすごい情報をかけずに送れるよみたいなそういうプロトコルです対してUDP」
「なんだろうねこれ何の略なんだなんとかデリバリーですか違うユーザーデータグラムプロトコル全然違った全然違ったなデータグラムこれはなんでこの略かちょっと分かんないですけど送りましたなるほどさっきのと比べるとTCBと比べると雑だけど早い確認しないから手続きが少ないなので例えば動画」
「動画のストリーミングとかって多少フレーム飛んでもあんま分かんないじゃん音声とかもなのでよくそういうのに使われますよね動画とか音声とか一方的に提供するような多少かけてもあんま支障ないとか例えばウェブサイト一部かけてたらパンチじゃん困りますねすぐ暴力くる俺らパンチだよね俺らって言う」
「だけど別にさYouTubeでさ1フレームパンって飛んだところでさ気づきもしないじゃんそうですねなのでUDPの方が早いしいいよねなるほどですね感じですねそんなもんかい?そんなもんだ他にもいっぱいいろいろあるんですけど今日はこのぐらいにしといてあげましょう結構撮りましたね撮りましたねなんか分かりづらい理由として今思ったのが略されてるじゃないですかHTTPとかそれが」

「それがなんだろうなってなっちゃうなって思いました今思っててそれが何の力か分かれば結構イメージしやすくてバンって入ってきましたねマジで英語力ですよねこの辺はいやそうだねこれを単語として捉えるか間違えたただの文字列として捉えるか単語としてちゃんと意味で覚えるかはすごくプログラミングには関係あるよね僕大学の時とかもアルファベット3文字でカッコでフルネーム書くじゃないですか先生とかあれ」
「あれは僕最初はあれ全部覚えたらかっこいいっていうかっこいいぞって教授が書いてるんだと思ってたんですけど覚えた方が意味わかりやすいぞってことで書いてたんだっていうのに最近気づきました僕はそうだよね絶対覚えた方がわかりやすいBTV用液とかもブロモチモルブルー用液っていう」
「何それ何それこれはこれ覚えたらかっこいいぞなんですけど覚えたらかっこいいぞで当時の理科の先生が書いたのでその調子で大学の授業受けたのが悪かったです僕はそれは確かに良くないですねちゃんと覚えた方がいいイメージしやすくなりましたということで今日は」
「最初は分かりづらいプロトコルのお話でしたありがとうございますこれを聞いたらねアルファベットを覚えようという気になりますかねなってほしいね」
「同時ですウェブレイヤーアプリケーションレイヤーだけじゃなくてこういうネットワークレイヤーの話も理解しとくといいアプリが書けると思うのでそうですね引き続きちょこちょこ喋っていきましょうあと普通にAWS触るときとかに生きると思います違えねえ違えねえよな違えねえプライベートIPの設定とかしなきゃいけないシェアした記憶ありますお」
「お疲れ様でしたありがとうございました」