0
0

More than 1 year has passed since last update.

読書研修ーWebを支える技術 第17章リソースの設計

Posted at

3つのリソースの設計方法

  • 関係モデルからの導出
  • オブジェクト指向モデルからの導出
  • 情報アーキテクチャからの導出

関係モデルからの導出

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

郵便番号データのER図

image.png

中心となるテーブルからのリソースの導出

関係モデルからのリソース抽出の一つの定石は、中心となっているテ-ールの1行を1リソースとすることです。テープルの行をリソースに切り出した場合は、そのテープルの主キーを URIに組み込むと実装する。
ただし、今回は郵便番号自体が一意なので郵便番号自身を入れたURIを採用しました。こちらのほうが、クライアントから見たときのURIの可読性が向上し、URIが変わりにくくなります。

リソースが持つデータの特定

まず、その中心となったテープル持っている属性をリソースに持たせます。
郵便番号テ-プルが持つ「郵便番号」「町域名」「町域名フリガナ」属性を郵便番号リソースに持たせます。
次に、そのテープルが外部キー参照している別のテープルもたどり、その属性も郵便番号リソースに持たせます。つまり、都道府県テープルと市区町村テープルの正規化を崩し、すべてのデータを郵便番号リソースに入れます。郵便番号リソースは郵便番号、住所(都道府県、市区町村、町域)、住所のフリガナ(都道府県、市区町村、町域)の3つのデータを特定できる

検索結果リソースの導出

検索のような機能は、検索行為をモデル化するのではなく、「検索結果」をリソースとして表現します。
検索結果リソースは、このデータベースから具体的に何を検索したいのか、というユーザの利用シナリオに基づいて導出します。
郵便番号データベースの場合、次の検索条件:

  • 住所の全部または一部による検索
  • 郵便番号の全部または一部による検索

それぞれの検索条件をURIに入れるように設計します。(検索キーワードを一括で受け付けるよう)

階層の検討

関係モデルの隱れた階層構造は別途ドキュメントなどから理解し、必要であればリソースの設計に反映します。

トップレベルリソース

ER図からは直接導出できないリソースとして、トップレベルリソースカあります。これはほかのリソースへリンクする大本となるリソースです。例:検索フォーム

リンクによる結合

リソース間を結合するリンクの設計にはER図の関連が利用できます。

オブジェクト指向モデルからの導出

郵便番号データのクラス図

image.png

主要データクラスからのリソースの導出

まず、主要なデータを表現しているクラスを見つけます。
今回は、郵便番号を表現する Zipcodeクラスが主要なクラスになります。この主要なデータを表現しているクラスのインスタンス一つ一つが、それぞれURIを持ったリソースとなります。

オプジエクトの操作結果リソ-ス

注意しなければいけないのは、クラスのメソッドで表現している処理そのものをリソースとして切り出そうとしないことです。
###階層の検討
PrefectureクラスとCityクラス、CityクラスとTownクラスはそれぞれ1対nのhas-a関係(あるクラスがほかのクラスの一部に属する関係)を持つ。
has-a関係以外にも、is-a関係(あるクラスが別のクラスのサプクラスである関係)やクラス自身の继承関係など、クラス間の構造を表現している場合があります。

トップレベルリソース

関係モデルと同様に、オプジエクト指向モデルにもトップレベルリソースを直接表現するクラスがないので、別途意識して導出する必要があります。

リンクによる結合

リソースそのものを表現するオプジエクト(Zipcodeや検索結果のリストなど)は相互に参照を持ちます。この参照はそのままリンクとして表現できます。

情報アーキテクチャからの導出

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

日本郵便のWebサイトの情報アーキテクチャ

郵便番号検索サイトを例として:
http://www.post.japanpost.jp/zipcode
トップページには検索方法として

  • 全国地図からの検索
    • 全国地図→都道府県名のリンク→市区群のページ(五十音順にが並んだ)→市区町村のページ
    • 市区郡と市区町村のページでは、その地域内の郵便番号か一覧され、それぞれ個別の郵便番号表示ページにリンク
  • 住所での検索
    • プルダウンで都道府県名を選択し、住所の一部を検索フォームに入力
    • 検索結果では条件にマッチした地域の一覧を表示し、町域へとリンクします
  • 郵便番号での検索
    • 郵便番号を検索フォームに入力
    • 検索結果では条件にマッチした地域の一覧を表示し、町域へとリンクします
      が用意されています。

パンくずリスト

市区町村などの各ページには、パンくずリストがあります。これによって市区町村から上位の都道府県に戾れるようになっています。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0