※21年4月よりWeb系自社開発企業で新卒エンジニアをやらせていただいています。
Vue.jsとNuxt.jsの勉強をしているのですが、API通信や非同期処理など知りたいことが山ほど出てきたので、Webの知識を体系的に学ぶために前から気になってた『Webを支える技術』を買いました。
なんとなく二の足を踏んでいたのですが、結論から言うと初学者の方にもオススメです。と言うか、自分が初学者です。でも、楽しく読めました。
通読したので、これからはリファレンスとして使うのかな、と思います。
情報量が多いので、簡単に内容紹介をします。
▼こちらの記事もあわせてどうぞ
・【エンジニア就活】文系大学生がWeb系自社開発企業に新卒で内定をもらった方法【プログラミング】
・【体験談】レバテックルーキーの評判!文系大学生が実際に使った感想【未経験エンジニア】
内容をざっくり
Webが誕生以来20年以上、ほぼ設計当初のまま安定しているのは、設計がシンプルだから、ということでした。
Webを支える技術がHTTP、URI、HTMLであることは当初から変わらず、
安っぽいことを言うと、最初の設計をいかにしっかりやるかということが大事、ということですね。Webアプリ然り。最初の設計いかんで、将来の安定性や拡張性が変わってくる気がします。
REST
REST : ネットワークシステムのアーキテクチャ。素のクライアント/サーバにいくつかのアーキテクチャスタイルを加えて制約していくことでRESTが実現します。
「いくつかのアーキテクチャスタイル」とは、引用します
・クライアント/サーバ:ユーザインターフェースと処理を分離する
・ステートレスサーバ:サーバ側でアプリケーション状態を持たない
・キャッシュ:クライアントとサーバの通信回数と量を減らす
・統一インターフェース:インターフェースを固定する
・階層化システム:システムを階層に分離する
・コードオンデマンド:プログラムをクライアントにダウンロードして実行する
RailsなんかはRESTfulな思想を重視しているそうなので、これからRailsでアプリを作るときには意識していきたいです。
URI
この章は今回は割愛します。
HTTP
個人的に勉強になった内容をざっくりまとめます。
TCP/IP
TCPとIPは重要なネットワークプロトコルです。そして、ネットワークのプロトコルは階層型になっているので、その階層を紹介します。(基本情報技術者試験の内容と被っています)
下から順に、
・ネットワークインターフェース層
・インターネット層
・トランスポート層
・アプリケーション層
で、TCPはトランスポート層、IPはインターネット層に該当します。
IPがデータを送り出すことを、TCPがデータが送信先に到達することを保証します。
HTTPメソッド
HTTPはTCPとIPをベースとしたプロトコルですが、そのメソッドに関しては全部で8つあります。そして、よく実務で遭遇するのはその中の6つなので、そちらを紹介します。
GET:リソースを取得する
POST:リソースへのデータを追加する など
PUT:リソースを更新もしくは作成する
DELETE:リソースを削除する
HEAD:リソースのヘッダーを取得する
OPTIONS:リソースがサポートしているメソッドを取得する
GETとPOSTはめちゃくちゃ出てくるので知っていましたが、PUTとかは理解が曖昧だったのでここで体系的に学べて良かったです。実務にも活きています。
ステータスコード
この項目も自分にとって有用でした。引用します。
1xx:処理中
処理が継続していることを示す。クライアントはそのままリクエストを継続するか、サーバの指示に従ってプロトコルをアップデートして再送信する
2xx:成功
リクエストが成功したことを示す
3xx:リダイレクト
他のリソースへのリダイレクトを示す。クライアントはこのステータスコードを受け取ったとき、レスポンスメッセージのLocationヘッダを見て新しいリソースへ接続する
4xx:クライアントエラー
クライアントエラーを示す。原因はクライアントのリクエストにある。エラーを解消しない限り正常な結果が得られないので、同じリクエストをそのまま再送信することはできない
5xx:サーバエラー
サーバエラーを示す。原因はサーバ側にある。サーバ側の原因が解決すれば、同一のリクエストを再送信して正常な結果が得られる可能性がある
これがさらに分かれているのですが、3桁の数字の頭の数字を見るとだいたいどこがエラーを吐いているのか見当がつくので開発の時に非常に参考になります。
この5つをとりあえず暗記しました。
HTML
これに関しては、自分にとって特に目新しい情報がなかったので割愛します。
Webサービスの設計
WEBアプリおよびWEB API開発に携わるとき、本章がとても役に立ちます。
自分自身、アプリを開発するにあたってもさらにじっくりと読み込みたいので、この章に関してはまた別に書こうと思います。
最後まで読んでいただき、ありがとうございました!
コメント