はじめに
Rubyやrailsなどの知識以前に前提のWebに関わる知識を身に付ける必要性を感じるようになってきました。
ということで、おすすめされていた「プロになるためのweb技術入門」という本を読みました。
わかりやすく書かれていたので、内容のアウトプットの意味を込めてここに共有します。
プロになるためのweb技術入門で学んだこと
Lesson1:Webアプリケーションとは何か
・デスクトップアプリケーション
=>代表例はWord,Excel等。主な処理は手元のPCで行われる。画面はOSの機能を使用して表示される。アプリケーションをPCへインストールする必要性がある。
・WEBアプリケーション
=>主な処理はサーバ上で行われる。画面はWebブラウザ上に表示される。アプリケーションをPCにインストールする必要性はない。
Lesson2:Webはどのように発展したのか
・インターネットとは、世界中のコンピュータをつなぐネットワーク網
・1969年にその原型は出来上がっていたけど、コンピュータが高かったことと使われる用途が少なかったため大学や研究機関の一部の人たちが電子メールの交換やファイルの共有などで使用していた。
・WWW(worldwideweb)とNCSA(Webブラウザの原型)の登場で状況が一変。
・もともと研究の結果を共有しやすくするために、学者がWWWを開発した。研究成果をHTMLで表現でできるようにした。
・その中のハイパーテキストをいう仕組みのおかげで、文章間の参照がハイパーリンクで瞬時に参照先の文章を閲覧できるようになった。これによって今まで手作業だった参考文献や関連論文を簡単に閲覧できるようになった。
・WWW登場当時のWebブラウザは文字のみで表現して、画像などは別のウインドウで表示されるのが一般的だった。それを文字と画像が混合で表示できるようになったブラウザがNCSAMosaicというブラウザ。無料で誰でも利用できるようになったおかげでWWWの利用が拡大して一般の人の興味を引くようになった。
・Apache(アパッチ)とは世界中で使用されているWebサーバーソフトウェア(HTTPサーバー)
・IISはMicrosoftが提供しているWindowsのWebサーバーソフト
・nginxは、Webサーバのソフトの一つ。Apacheのライバルでリバースプロキシの機能があり負荷分散できる。
・インターネット上のコンテンツを指定するための仕組みが「URL」。
・URLはスキームとホスト名、パス名の3つに別れる。
例:https://www.example.com/docs/html/example-uri.html
スキーム:https
ホスト名:www.example.com
パス名:docs/html/example-uri.html
・スキームはリソースを取得するための方法。Webアプリケーションにおいてはほとんどがhttps。
・ホスト名はリソースが存在するホスト(コンピュータ名)。ホスト名はローカル名(WWW)と親ドメイン名(example.com)に別れる。親ドメイン名は勝手に決められない。
・ホストで指定されたコンピュータ上のリソースの位置。
・通信プロトコルとは、通信をするときにお互い(自分と通信相手)が守る約束のこと。FTPはファイル転送のためのプロトコル。SMTPはメール転送のためのプロトコル。HTTPはwebサーバと webクライアントが通信するためのプロトコル。
・CGIとは、Webサーバー上でプログラムを使って処理した結果を表示させる機能のこと。これによって動的コンテンツをクライアントに返せるようになった。さらには、webブラウザからの入力を受け取りそれに応じた処理を行うというアプリケーションが作成できるようになった。検索サイトや掲示板、ショッピングサイトなど。
Lesson3:HTTPを知る
・ホスト名は人間にわかりやすいように表現されており、実際はインターネットに接続された全てのコンピュータは「IPアドレス」という数値によって識別されている。例:192.168.0.1
・IPアドレスがわかると宛先のホストが特定できるので任意の情報を届けることができる。その役割を担うのが「TCP/IP」と呼ばれるプロトコル。
・情報はパケットと呼ばれる単位に分割されて送受信されている。
・パケットの送受信はTCP/IPが責任を持って行われる。
・IPアドレスは世界中で唯一の値だから勝手に決められない。
・IPアドレスはインターネット利用に関われずネットワーク機器で情報をやり取りするためには必要。
・ドメイン名からIPアドレスに変換する仕組みが「DNS」。DNSはドメイン名とIPアドレスの対応表を持ったコンピュータ(DNSサーバ)をインターネット上に配置し、DNSサーバに問い合わせればドメイン名に対応するIPアドレスを教えてくれるというもの。ドメイン名の代わりにIPアドレスを指定することもできる。
・URLの?につづく部分をクエリ文字列と呼び、フォームに入力された文字列などをWebサーバに渡すために使われる。
・クエリ文字列の中はさらに&(アンパサンド)で区切られていて、それぞれの部分は「パラメータ名=値」の形式で表示されている。
Lesson4:CGIからWebアプリケーションへ
・最初に要求したURLから違うURLへ誘導することをリダイレクトと呼ぶ。
・FTPなど状態を保つプロトコルをステートフルプロトコル、httpのように状態を持たないプロトコルをステートレスプロトコルと言う。
・本来の処理を行うために余計に必要になってしまう処理をオーバーヘッドという。
・Webブラウザに状態を持たせる技術をcookieという。名前=値の組み合わせで表される。
・cookieを利用した情報のやり取りはhttpのリクエストヘッダーやレスポンスヘッダーで行われるので比較的簡単に覗けるのでセキュリティ上大きな問題がある。
・より安全に多くの情報を保持するために考えられたのがセッションという仕組み。
Lesson5:Webアプリケーションの構成要素」
・できる限り重複した情報を排除することを正規化という。
・業務上まとめて実行するべき一連の処理をトランザクションという。
・webシステムを構成するソフトウェアを大きく3つの役割(webサーバ、アプリケーションサーバ、データベースサーバ)に分けて連携させる構成を三層構成と呼ぶ。
Lesson6:Webアプリケーションを効率的に開発するための仕組み
・フォワードは、転送のこと。
・リクエストスコープは、フォワード元とフォワード先の間で情報(オブジェクトなども)を共有するための仕組み
・アプリケーション開発においてはコンピュータに行わせる処理をロジックという。
アプリケーション特有の処理をビジネスロジックという。
・入力(input)、処理(process)、出力(output)というコンピュータ処理に置ける基本の流れをIPOと呼ぶ。
Lesson7:セキュリティを確保するための仕組み
・webアプリケーションを含む情報システムにおいて守るべき情報セキュリティは、機密性、完全性、可溶性の3つ。
・機密性=>第三者への情報の流出を防ぐこと。
・完全性=>第三者による情報の改ざん
・可溶性=>適切な権限を持った人間が適切な情報を利用できること。