ぐってぃのプログラミング日記

競技プログラミングやIT関係の記事を書いていくよ

【読書録】Webを支える技術

新しく学んだことを列挙


webの最も基本的な技術
HTTP URI HTML

HTTP ・・・サーバーとクライアント間でやり取りするプロトコル
URI ・・・リソースの場所を明示するID
HTML ・・・タグで文書構造を表現するコンピューター言語

webのすごいところ
オープンで不特定多数を相手にできるのがweb
特定のデバイスに統一されずに利用できるのはHTTPというプロトコルを固定できたことが理由である

REST
webの設計思想・アーキテクチャスタイル
アーキテクチャスタイルとは作法・流儀・思想 MVCやEventsystemなど

プロトコル・・・対象となる事項を確実に実行するために手順を定めた規定、取決めのこと。

ステートレス・・・サーバがクライアント側のアプリケーション状態を保存しないこと⇔ステートフル
利点 サーバはクライアント側の新しい処理に集中すればいいだけなので単純になる
欠点 毎回必要な情報を送るため、パフォーマンスが低下する

COOL URIURIは変わらないものであるべきだ。変わらない URIこそが最上のURIである」
URIが変わってしまうと訪れた人がアクセスできず、信頼を失ってしまう。
変わらないURIを設計することが重要である

TCP/IP インターネット基盤を構成するネットワークプロトコル

ネットワークプロトコルは階層型

アプリケーション層 ・・・具体的なアプリケーションの実現。HTTP DNS
トランスポート層・・・データの転送を保証する。TCPが担当
インターネット層・・・ネットワークでデータをやり取りする部分 IPが担当 送り出すだけで送り先まで届くかは不明
ネットワークインターフェース層・・・物理的なケーブルやネットワークアダプタに該当する

べき等性・・・ある操作を何回行っても結果が同じこと。

ステータスコード・・・404 Not foundなどのメッセージ。エラーを示すのに有効である。

HTTPヘッダ・・メッセージのボディに対する付加的な情報、メタデータを表現

OpenIDとOAuth・・・webサービス同士でユーザーが持ってる情報をやりとりしたいときに利用する。
OpenIDシングルサインオン。Yahooのアカウントで自分のwebサービスのログインできたりする

OAuthはwebサービス間でデータをやりとりできるようにしたり、認可のため仕様。

json・・・javascriptの記法でデータを記述できる。
Ajax通信におけるデータのフォーマット

リソース設計・・・クライアント・サーバ間のインターフェース設計、webサービスやwebAPIの外部設計
どのようにリソースを分解するか、URIに名前をつけるのか、相互にリンクを持たせるのかが設計の重要部分。

まとめ

簡単なwebサービスを作っていて知らずにおいていた部分が明確になり、評判通り読みやすかった。
個人的に有用性がわからなかったもの(Atomとか)は飛ばしているのでまだ学ぶことはある。

webについての入門書としておすすめ

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)