フクチ@プログラミングと釣り好き大学生のブログ

プログラミングと釣りと、ときどき日常生活

プロになるためのweb技術入門を読んで 2-1

 HTTPのお話

さて、久しぶりの投稿になりましたが、

今回はHTMLのやり取りに使われる HTTPについて二回に分けて書いていきます。

 

1回目は

の流れで書いていきます。

 

っとその前に、そもそもHTTPってなんだっけ?

HTTPはWWWの世界でHTMLのやり取りをするために定められた通信プロトコルの一つです。通信プロトコルはやり取りする。情報の「伝達手段」と「意味付けの役割」を果たします。

 

よしよし、ではいきましょう。

 

IPアドレスTCP/IP

 

まずはIPアドレス! 二言で言うならば、「コンピュータに割り当てられるインターネット上の住所」です。 (一言では難しかった。)

 

例として、前回の記事より、http://www.pizaya.jp/special_menu/index.htmlをあげます。これでインターネット上のコンテンツを指定します。しかしスキームやホスト名やパス名で構成されているこのURLは人間には何が書いているのかわかりますが、コンピュータはそうはいきません。そこでコンピュータにもわかりやすくするために出てきたのがIPアドレスです。

実際に見てみると、こんな感じ→193.234.0.1。 うん。何を意味してるのかわからない。コンピュータすごいなおい。これでコンピュータを識別しています。

 

IPアドレスの種類で「グローバルIPアドレス」と「プライベート IPアドレス」があります。簡単に言うと

  グローバルIPアドレス:世界目線でのインターネット上の唯一のアドレス

  プライベートIPアドレス:オフェスや家庭内など一定の範囲で使われるアドレス

前者は「固定電話」後者は「内線」で例えると分かりやすいです。

固定電話は知っての通り、国別(日本は03-)番号から始まり、都道府県や市町村ごとに振られていて被る事はないですよね!グローバルIPアドレスも同じような考えです。

一方で内線1番や2番などはどこの会社でも意味は違うけど同じ番号が使われています。プライベートアドレスも重複しても良いアドレスの事です。

 

IPアドレスの内容と種類をお話しましたが、実際にこの IPアドレスを運ぶ運び屋が

 TCP/IPです。現実世界で言う「郵便屋さん」です。僕らが宛先(コンピュータ上で言うならIPアドレス)を指定して相手に手紙(コンピュータ上の情報)を届ける際の届け役ですね。TCP/IPはブラウザから受け取ったHTTPリクエストを小さな単位に分割してwebサーバにたどり着いた後に再構築します。

 

DNSサーバとポート

 

 DNSサーバ---通訳的な存在

IPアドレスはわかったけど、実際のURLを入力するアドレスバーにはIPアドレス使ってないじゃんと思いましたが、なんと裏で中継してくれる奴がいるんです。

それがDNSサーバです!

DNSサーバがURL→IPアドレスに変換してクライアントにに届けてくれます。それをクライアントはwebサーバに届けて私たちはインターネットを利用できています。

ここまでで、宛先のコンピュータを探し出す流れは掴めました。

 

ポートとは---情報の待ち受け桟橋的な存在

インターネットの世界ではHTTP以外でも様々なプロトコルで情報がやり取りさています。ex.電子メールやwebサイトの更新など

TCP/IPではその中でどの情報をどこのホスト内で処理していいのかわからないままです。そこでコンピュータの中で各アプリケーションが情報を待っていいます。イメージは港町のたくさんのそれぞれの桟橋の上に職人(アプリケーション)が立っている感じです。

これで各職人さんが情報を処理してくれます。

ちなみにHTTPのプロトコル番号は80で、普段はホスト名の中で省略されています。

 

 POSTとGET

 

今までで、大体のHTTP通信からwebページの表示までの流れでしたが、webアプリケーションへ私たちが情報を流すにはまだ足りません。そこで出てくるのがPOSTとGETメソッドです。これでクライアントがパラメータ(入力した値のようなもの)をwebサーバが受け取る際に使うメソッドです。POSTと GETは渡し方の違いです。実際に見て見ましょう。

 

GETメソッドでの例:

https://www.kakezan.jp/webtext/do_calc_get.php?num1=50&num2=20

(ちなみに下線部がパラメータ=値)

 

POSTメソッドでの例:

https://www.kakezan.jp/webtext/do_calc_post.php

 

 

この二つ、何か違いますね。…..そうです。パラメータが見れるか見れないかの違いですね!

これでわかると思いますが、

GETメソッド=パラメータが見える=セキュリティ弱

POSTメソッド=パラメータが見えない=セキリュティ 比較的 強

 

ん?なら全部POSTメソッド使えばいいじゃんってなると思いますがGETも POST良いところと悪いところがあります。

 

  GETメソッド POSTメソッド
セキュリティ 低い 比較的高い
パラメータの長さ ソフトウェアによっては255文字以内 制限なし
パラメータの保存・再現 しやすい しにくい
副作用が発生しない 期待される 期待されない

 

って感じです。

同じ処理を繰り返す場合はGETが良さそうで、使い分けが必要ですね。

 

てことで HTTPのセクションは以上です!!

次から本読む時は重要な点を付箋紙で抑えてそこをまとめると楽になりそう。

 

プロになるためのWeb技術入門を読んで 1-2

Webを支える技術について

こんばんは、本日2回目の投稿です。1回目の投稿では結構長くなってしまったので今回から要点をまとめてガンガン書いていきます。

ってことで今回はこんな流れで

  • WebクライアントとWebサーバ
  • URLについて
  • 通信のお約束ごと ~通信プロトコル~

早速、入っていきましょう!

 

WebクライアントとWebサーバ

簡単いうと

Webクライアント:私たちが一般的に使っているPC側のこと。

Webサーバ:Webページなどを管理しクライアントに提供するコンピュータ。

 

私たち(=クライアント)がWebページを閲覧する際にはWebサーバに「このページくれ」と送り、Webサーバが「ほらよ」と渡しWebページを閲覧しています。

この「ページくれ」を「リクエスト」(たまにPCの左上くらいに「リクエストを要求」していますという文字出ますよね!)   「ほらよ」を「リスポンス」といいます。

ちょうど、私(=クライアント)がピザを電話で頼んでピザ屋(=サーバ)がピザを届けるのをイメージすると理解しやすいですね!

 

URLについて

クラアントとサーバの話に戻りますが、さすがのWebサーバも「このページくれ」と言われても、「え? どこのどのページだよ」ってなるんです。

さっきのピザ屋の例でいくとピザ屋に「あのピザくれ」って言っても「どのピザだよっ」てなるのと同じです。

そこで登場するのがURLです!

実際に見てみましょう。

http://www.Pizaya.jp/special_menu/index.html

これを3つに分解します。

①http スキーム これはリソースを取得するための手段です。(詳しくはまた次章)

 

②www.Pizaya.jp ホスト(=コンピュータ)名 これは"jp"→日本の、"Pizaya"→ピザ屋という組織の、"www"→wwwというコンピュータ。

 

③special_menu/index.html パス名→これがリソースの位置になります。ここではspecial_menuというディレクトリの下にあるindex.htmlというファイルを示しています。

 

こうやって特定することによって、Webサーバも「あ、special_menuのindex.html」が欲しいんだなとなります。

 

通信のお約束ごと ~通信プロトコル~

最後に通信のお約束ごとについてです。

URLによってインターネット上の様々なコンテンツが特定できるようになりました。

インターネット上で繋がっているのは全て同じコンピュータではないので、それぞれのコンピュータの中での通信のお約束ごとを事前に決めないと通信が行われないのです。

そこで、インターネット上の通信の取り決めが誕生しました。それが通信プロトコルです。

例えば、昔の話でいくと「狼煙」があります。

 

狼煙の意味として、

・狼煙で仲間同士に合図を送る

・狼煙が上がったら「敵襲」の合図

・狼煙をみたら、自分も狼煙をあげて仲間に伝える

 

上記の取り決めの中がなかったら、「なんだ、アイツ煙あげてるぞ。バカなのか」ってなります。これは人間同士の話ですが、それをコンピュータ同士にしたのが「通信プロトコル」です!

 

今回はこんな感じで終わります。

しかし、時間かかるなー。もっと要点抑えよう。。

 

プロになるためのweb技術入門を読んで 1-1

WEBの起源と普及について

こんばんは。

今日から本格的に学んだことをアウトプットしていきたいと思います。

 

今回は

  • そもそもインターネットって?
  • WWW誕生
  • WEBブラウザの祖先 NCSA Mosaic

の流れで書いてきます。 

 

ってことでWEBの歴史を簡単に書いていきたいと思います。

個人的に大学に入ってから物事の起源を知ることが好きになったので、読んでいて楽しかった〜

 

そもそもインターネットって?

インターネットを一言でいうならば「世界中のコンピュータを相互に接続し、通信できるようになったネットワーク網」ということ。

ポイントは「相互に接続」「ネットワーク」

相互接続は電話をイメージすると、わかりやすかったです。お互いに電話回線で繋がっているおかげで音声のやりとりできます。コンピュータも似たような形で繋がっていて互いに情報のやりとりができます。

そしてネットワークは英語にすると「network」この意味として「網目状のもの」があります。これでイメージできたと思いますが、要は、インターネットというものは「コンピュータ同士の繋がりを網目状のように広げていったもの」なのです。

それに、インターネットも英語に変換すると「internet」。このinterは「〜の間に」、「相互」という意味があります。先ほどの「net」の意味も合わせるとまさに名前で意味を表してますね。わりと、英単語になおして分解したらわかりやすいかもしれません。

 

WWWの誕生

 そもそもはじめにインターネットの原型ができたのが1969年(もっと古いと思ってた。)それから20年の間は大学の研究機関でしか使われなかったそう。というのも理由が二つあり、

一つ目が「インターネットの利用コストが高かったこと」

二つ目が「利用用途がメール交換やファイル共有など地味だったこと」

例えば、10万円の全然吸わない掃除機があったとして、誰も買いませんよね? 100均でホウキを買いに行くと思います。ということで、あまりコンピュータに縁のない人にとっては縁のないものでした。これを変えるきっかけにとなったのが「WWW」と「NCSA Mosaicです。

「WWW」正式名称:World Wide Web。僕らが「Web」と言っているものですね。

 まずは「WWW」から、

これは意外にも素粒子物理学研究所からできたもので、当時、研究者同士が実験結果を世界中で共有しようとしましたが、既存の電子メールなどでは凄く効率が悪い。そんな中で「もっと良い方法がないのだろうか」と考えた結果、欧州原子核研究機構のティム・バーナーズ=リー博士が開発したのが「WWW」でした。

じゃあ、具体的な仕組みはなんなのかということですが、主な仕組みとして「HTML」,「Hyper Text」,「Hyper link」があります。

「HTML」: 正式名称 Hyper Text Make up Language.  簡単にいうと、文章や写真や図などをテキストファイルで表現できるようにしたものです。これで僕らがいつも見るwebページは作られています。

「Hyper Text」:  これは文字通り、「高機能なテキスト」です。具体的にいうと、テキストの中にリンクを埋め込むことにより別のページへ移動することが可能になりました(これがHyper link)。

 

そしてネットワーク上でリンクされたHyper linkの繋がりがあたかも蜘蛛の巣(Web)のように見えることからWorld-Wide-Webと名前がつけられました。

 Webブラウザ「NCSA Mosaic

普及のきっかけとなったもう一つのものとして「NCSA Mosaic」と呼ばれるWebブラウザがあります。

WWW登場によって、情報の相互伝達速度は上がりましたが当初のWebブラウザは今のように画像や動画がある華やかなものではなく、テキストだけで表されたもので、まだ地味なものでした。

それを現代のように文字や画像を混在したWebページの表示ができるようにししようと、イリノイ工科大学の米国立スーパーコンピューター応用研究所に所属していたマーク・アンドリューセンらによって1993年に開発されたのがNCSA Mosaicです。

さらに1990年代後半から2000年前半にかけて、コンピュータの性能の向上と低価格化やネットインフラの向上によりどんどん普及していきました。

そして Mosaicをベースにして改良を重ねて今のIE(Internet Explorer)が登場してきました。

 

いやー、これはもっと詳しく調べられそう。

次回はWEBを支える技術について書いていきます!

 

www.amazon.co.jp

 

GIANT KILLINGをおこそう! ~isuconに出ます~

           GIANT KILLING」をおこそう!

                        ~ISUCONに出ます~

 

こんばんは。

人生21年と1ヶ月にして初めてブログを書くことになった福地です。

初投稿は今年最大の目標になるISUCONに出るまでの経緯を

  • 就活解禁日に就活をやめました
  • 面白いことをやろう~プログラミング~
  • ISUCONへの誘い

の流れで書いていきたいと思います。

 

就活解禁日に就活やめました

最近は変わってきてますが、いわゆる「一般的な就活の流れ」として、3月1日に情報が解禁して6月までにもらえる人は内定をもらい就活が終わります。 僕はその3月1日に受けていた選考を全て辞退して、就活をやめました。

元々ベンチャーを見ていて(ベンチャーは早く、12月の冬から選考が始まる)、やめる日までに役員面接も通っていた企業もありましたがその企業も含めて全て辞退しました。

というのも、ある先輩に言われたのがすごくしっくりきているのですが、就活って「航海」のようなもので、航海する上での目的地(=自分自身が成し遂げたい目標)があり、それを達成するための適切な船選び(=企業選び)をするものだと言われました。(ワンピースでいうルフィが海賊王目指して船を出す的な感じです)

そういう僕は、興味がある分野はあるが、その企業に入ってやりたいことがなかった。というより人生を通して何を残したいかが「過去」を振り返ってみてなかったんです。

そう考えた時に、このまま就職しても面白くなさそうだなと思うと同時に、今までにないなら、これから探しに行こうじゃないか」と思いました。そして休学して人生で残したいものを作りに行こうと考え、僕は就職活動をやめました。

 

面白いことをやろう~プログラミング~

その後、ひたすらに悩みました。

探しに行こうとは考えたものの、これからどうしていくか指針が全く立たない。さぁどうしよう。何をしよう、と。(実は、悩みすぎて一時期、精神科にも行ってましたが。笑笑)

そんな中、昨年「逃げ恥」や「恋」で一躍有名になった星野源さんの著書を読んでる中で「自分がやってて面白いと思ったことをやり続けたら仕事になった。」という一説を見て「あ、これだ。」今まで人生に残したいものを考える上で「将来性」だとか「お金になるのか」とか「社会的な評価」とか難しくかつ、思考の方向がズレていた自分がバカらしいなと考え、

「原点に戻ろう。」

自分が面白いと思うものってなんだっけ。と思う中で出会ったのが「プログラミング」でした。

元々数学科で数学が好きなこともあり、まるで数学の問題を解いてるかのように自分の思考を巡らせ、コードを書き、更にその解(=結果)が正しい時の達成感はすごく楽しいのです。(正直、プログラミングの深い段階まで到達してないので生意気だと思うのですが)それでも、この分野にはワクワクしました。

「面白いな。この分野を突き詰めてみよう。」と思い、さらに

「じゃ面白いものそのままやっていくのも良いが、目標を立てたらもっと面白そうだ。

どうせなら今までとは違う環境でこの分野で学んでみよう。そうだ留学に行こう。

ということで、以前から興味があったIT先進国のエストニアにいくことに決めました。(留学の詳しい話はまたいずれ笑)

 

 

ISUCONへの誘い

 留学へ行くことは決めた。ただ全くの技術なしで留学へいくのももったいないなと思い、日本での中間目標が欲しい!!と探している中で、

同じ大学の先輩から

f:id:Yuki-F:20170502005316j:plain

とのご連絡があり、即決。

正式名称:Iikanjini Speed Up CONTEST 通称 ISUCON (いや最初らへん適当じゃねw)

 webアプリケーションの高速化を競争する大会。これは絶対に面白い。元々競争ごと好きだしやりたい。やっと日本での目標ができた瞬間でした。

しかしながら、プログラミング歴は2週間の僕、チームの先輩方も決して長い方ではない。ISUCONに出場するチームは学生といえど、僕らよりも遥かに経験してきた人たちだと思います。

...いやーワクワクしますね 。これは。

元々ベンチャーを目指した理由もそうだけど、できない状態から努力してできる奴らを倒すのが好き!(これは就活で自己分析をしてわかりました笑)で

一言でいうと、GIANT KILLING(訳すと、大番狂わせ)おこしたい!!

さらに、さらに僕らのチームには さぼさん というすごく頼りになるメンターがついてくれる。これはもうやるしかない。

何より、自分が面白いと思った分野で負けたくない!

 

ということで

これからGIANT KILLINGをおこしにいきます!!!