気ままに気ままのエンジニアブログ

定期的に得た知見を気ままに発信中

書籍 "Webを支える技術" 第四部 ハイパーメディアフォーマットの要点まとめ

こんにちは。

今日も朝から始動!ハチマキ行きま〜す!!!!

f:id:hachimaki37:20200516103000j:plain
ガンダムの内容ほとんどわかりません。。こんなゆっくりアムロ・レイは飛んでいるのでしょうか。
どうもハチマキです。

はじめに

前回に続き、入社早々に上長から教えてもらった
エンジニアデビュー3ヶ月後くらいに読むと良さそうな書籍
「Webを支える技術 -HTTP、URI、HTML、そしてREST」の第4部のまとめになります。

1部、2部、3部についてもまとめておりますので、ぜひそちらもご参考にして頂ければと思います。

▼書籍はこちら
www.amazon.co.jp

本日の概要 : 第4部 ハイパーメディアフォーマットについて

  • どんな時にために、この書籍は読んでおくべき?(第1部をご覧ください)
  • 書籍のテーマと目的(第1部をご覧ください)
  • 書籍の構成
  • 第4部 ハイパーメディアフォーマット
  • HTML
    • HTMLとは何か
    • HTMLのメタ言語であるXMLの仕様
    • HTMLの構成要素
    • リンク
    • ハイパーメディアフォーマットとしてのHTML
  • microformats
  • Atom
    • Atomとは何か
    • Atomのソースモデル
    • Atom Publishing Protocolとは何か
  • JSON
    • JSONとは何か
    • データ型
    • JSONの利点
    • ハイパーメディアフォーマットとしてのJSON

書籍の構成

  • 第1部 : Web概念
  • 第2部 : URI
  • 第3部 : HTTP
  • 第4部 : ハイパーメディアフォーマット
  • 第5部 : Web サービスの設計

※今回は、第4部 ハイパーメディアフォーマットについてまとめております。

第4部 ハイパーメディアフォーマット

第4部では、WebサービスやWeb APIを設計するときに利用できる主要なハイパーメディアフォーマットについて解説されております。

HTML

HTMLとは何か
  • タグで文章の構造を表現するコンピュータ言語
  • 2種類のメディアタイプがある
HTMLのメタ言語であるXMLの仕様
  • 要素:開始タグ、内容、終了タグから成り立つ
  • 属性:属性名と属性値の組み。開始タグの中に属性名="属性値"形式で記述する
  • 実態参照と文字参照
  • コメント
  • XML宣言
  • 名前空間:名前の衝突を防ぐ目的で使う。宣言方法は、xmlns:接頭辞="名前空間名"で記述する
HTMLの構成要素

基本的な構成要素はヘッダとボディであり、HTMLの全ての要素はid属性とclass属性を持つことができる。

  • ヘッダ:文書のメタデータを入れる
  • ボディ:文書の内容そのものを入れる
    • ブロックレベル要素:文章の段落や見出しなど、ある程度大きなかたまりを表現する
    • インライン要素:強調や改行、画像埋め込みなどを表現する(ブロック要素の中に入る要素)
リンク

ハイパーメディアフォーマットとしてのHTMLの要素

  • <a>要素:ほかのWebページにリンクをさせる
  • <link>要素:ヘッダでWebページど同士の関係を指定する
  • <img>要素:画像埋め込み
  • <object>要素:それ以外のオブジェクトの埋め込み
  • <form>要素:リンク先のURIに対してGETとPOSTが発行できる

※rel属性:<a>要素と<link>要素が持てる属性で、リンクの関係をプログラムが可読な状態にすることができる

ハイパーメディアフォーマットとしてのHTML

HTTPとURI、そしてハイパーメディアによるリンクを組み合わせて初めてWebが成り立つ。HTMLでリンクを設計する際は、「リンクをたどることでアプリケーションの状態が遷移する」ことを強く意識した設計が重要

microformats

microformatsについて
  • HTMLの中でさらに意味のあるデータを表現するための技術で、リンクの細かい意味やイベント情報などの表現が可能になる
microformatsの分類
  • elemental microformats:リンク関係を使ってメタデータを表現するフォーマット ※下記代表的なフォーマット
    • rel-license:Webページのライセンスを記述するためのフォーマット
    • rel-nofollow:スパム行為を解決するためのフォーマット
  • compound microformats:class属性を使って階層構造のあるメタデータを表現するフォーマット ※下記代表的なフォーマット
    • hCalender:カレンダー情報、イベント状況を記述するためのフォーマット
    • hAtom:Atomが持つ、メタデータをHTMLに埋め込むフォーマット(メタデータを、プログラムから処理可能な形で埋め込める)
microformatsとRDFa
  • microformats問題点
    • 同じ属性を持ったWebページがあった場合、プログラムが誤判断を起こしたり、同じ属性値を持った別のmicroformatsが作れなくなる可能性がある
  • RDFaの問題点
  • 総論
リソースの表現としてのmicroformats
  • 既存のWebページをそのままWeb APIとして提供できる
  • 必要最低限のコストでWebサービスをWeb API化できる

Atom

Atomとは何か
  • タイトル、著者、更新日時といった基本的なメタデータを揃えたリソース表現のためのXMLフォーマット
  • ブログだけではなく検索エンジンや写真管理など、さまざまなWebサービスのWeb APIとして利用可能
Atomのソースモデル
  • メンバリソース:最小のリソース単位を指す(ex. 一つ一つの記事や画像など)
    • エントリリソース:メタデータがまとまったテキストやXMLで表現するリソース <entry>要素で表現する
    • メディアリソース:画像や映像などテキストでは表現できないリソース。メタデータはメディアリンクエントリという特別なエントリで表現する
  • コレクションリソース:複数のメンバリソースを含むリソース(階層化できない) <feed>要素で表現する
Atom Publishing Protocolとは何か

Atomと兄弟のような仕様で、エントリをCRUDするためのプロトコル

  • Atom:データフォーマットの規定
  • AtomPub:Atomを利用したリソース編集プロトコルの規定
  • 利点
    • 独自に設計する必要のある部分が大幅に削減(基本的なリソースモデルとリンク機構を提供してくれるため)
    • フレームワークやライブラリを利用することで、実装工数の削減
    • 標準化されたプロトコルを用いることで相互運用性が高まる

JSON

JSONとは何か
  • JavaScript Object Notationの略で、データ記述言語(JavaScriptの記法でデータを記述できる)
  • 軽量なデータ表現のフォーマット
データ型

JSONには以下の6つのデータ型が用意されている。

  • オブジェクト:名前と値の集合(オブジェクトの名前は常に文字列)
  • 配列:順序を持った値の集合(0個以上の値を持てる)
  • 文字列:ダブルクォーテーション(”)で囲む
  • 数値:表記は10進法に限る(整数と浮動小数点型が含まれる)
  • ブーリアン:true(真)とfalse(偽)(全て小文字で書く必要がある)
  • null:「null」と小文字で書く
  • 日時:組み込み型としての日時がたはないので表現するときは開発者側で規定を用意する必要がある
JSONの利点
  • XMLと比べてデータ表現の冗長性が低い
  • JSONPを使うとクロスドメイン通信(※1)が可能になる

※1
セキュリティ上の制限からJavaScriptファイルを取得した同じサーバとしか通信ができないため、HTMLの<script>要素を用いることで複数サイトからファイルを読み込めるようにすること

ハイパーメディアフォーマットとしてのJSON

JSONをハイパーメディアフォーマットとして使うためには、リンクを表現するメンバをきちんと入れ、ほかのリソースとの関係を考慮して、リンクをしっかり入れた設計にすることが重要

                                            • -

次回は、最後の部 Webサービス設計についてまとめて行きたいと思います。
まだまだ理解を深める必要がありです。。

以上、ハチマキでした。