【Webを支える技術】第5部 Webサービスの設計 学習メモ

 

目次

はじめに

この記事は「Webを支える技術」を読んで自分なりにまとめた学習メモです。

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

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

 

第5部 Webサービスの設計

第15章 読み取り専用の Web サービスの設計

 リソース設計

リソース設計とは、クライアントとサーバの間のインタフェースの設計、つまり Webサービスや Web APIの外部設計です。

設計とは、システムをどのような構成でどのように開発するのかを検討し、図や文書に残す作業です。設計図、設計書を作る作業とも言えます。

リソースを設計する際に大切なことは、Webサービスと Web API を分けて考えないことです。

 

リソース指向アーキテクチャのアプローチ

  1. Webサービスで提供するデータを特定する
  2. データをリソースに分ける
  3. リソースにURIので名前を付ける
  4. クライアントに提供するリソースの表現を設計する
  5. リンクとフォームを利用してリソース同士を結び付ける
  6. イベントの標準的なコースを検討する
  7. エラーについて検討する

 

第16章 書き込み可能な Web サービスの設計

 設計のバランス

  • なるべくシンプルに保つ
    • 設計が複雑になってきたら、機能が無駄に増えてきたら、1段階メタな視点で全体で考え直すこと。
    • 不要な機能や、やり方を変えることで削除できる機能があるかもしれない。
    • 全体をシンプルに保つことで、設計バランスを考えるうえで最も重要である。
  • 困ったらリソースに戻って考える
    • HTTPメソッドでは実現できない機能があると感じたら、それが独立した別リソースで代替できないかを考える。
    • 検索機能を実現するSEARCHメソッドをHTTPに追加するのではなく、「検索結果リソース」をGETする、と考えることが重要である。
  • 本当に必要なら POST で何でもできる
    • 更新にはPUTを用いるべきだとしても、たとえばバッチ処理のように複数リソースが対象となった時点で、PUTを使うのはあきらめてPOSTを用いるほどが賢明である。

 

第17章 リソースの設計 

関係モデル 

関係モデル(Relational Model)は RDBMS の基礎となっているデータモデルであり、数学的基盤を持っていることが特徴です。データの冗長性を排除するための正規化の手法が確立されており、効率的なデータベース設計ができます。

 

関係モデルからリソースを導出する場合は、

  • データの持つ階層構造を考えること
  • トップレベルリソースの存在を忘れないこと
  • リソースを設計する際は正規化を崩してすべての情報を含めるようにすること

 

オブジェクト指向モデル

オブジェクト指向設計は対象システムの分析モデルをオブジェクト指向言語のクラスとインスタンスに対応付けます。

 

成果物

  • クラス図
  • シーケンス図

 

オブジェクト指向モデルからリソースを導出する場合は、

  • クラスの持つメソッドを操作結果リソースへと変換すること。
  • これにより、クラスの持つ豊富なメソッドをHTTPの限定されたメソッドに置き換えられる。

 

情報アーキテクチャ

情報アーキテクチャ(Information Architecture)は、知識やデータの組織化を意味し、「情報をわかりやすく伝え」「受け手が情報を探しやすくする」ための表現技術です。

 

 

リソース設計で最も重要なこと

  • リソース設計するときはWebサービスとWeb APIを分けて考えないこと