Closed8
RestfulWebAPIパターンとプラクティス
はじめに
- 下記書籍の学習内容をまとめる予定です
- 「Restful Web API Patterns and Practices Cookbook(RestfulWebAPIパターンとプラクティスクックブック)」
- 【書籍概要】いい感じに マイクロサービス を構築するためのAPIパターン6種の解説
- 2022年3月30日時点で作成途中(2022年10月刊行予定)
- 本文中の🤔から始まる文は書籍には無い内容(私による考察・補足文)です
RESTfulWebマイクロサービスの紹介(第1章)
- そもそも「RestfulWeb マイクロサービス 」とは何なのか?
基本となる4技術とその特徴
- まずは重要な4技術をおさらいする
- REST(ロイT.フィールディング)
- RESTの概念は1998年に初めて提案された
- RESTの利点
- パフォーマンス/スケーラビリティ/シンプルさ/変更可能性/視認性/移植性/信頼性
- Web(ティムバーナーズリー)
- WWWは1989-1990年にCERN内部向けに概念が提案された
- WWWの利点
- 最小限のルール(自由な独自コンテンツの制作&リンク&配布)
- リンクによるネットワークの構成
- マイクロサービス(ルイス&ファウラー)
- 2014年にマイクロサービスの概念が提示された
- マイクロサービスの利点
- 実行システムにおける不要な副作用の制限
- 極端な動的バインディング(=遅延バインディングor動的結合)(アランケイ)
- マイクロサービスのもう1つの重要な側面
- オブジェクト指向(OOP)の概念を広めたアラン・ケイが2003年にOOPを振り返って言及
- Wikipediaより
OOP to me means only messaging, local retention and protection
and hiding of state-process, and extreme late-binding of all things.
(僕にとってのOOPとは、メッセージング、ステートプロセスの局所保持
かつ保護かつ隠蔽、徹底的な遅延バインディング、これだけの意味だった)
(※)原文のコピーはこちら
- OOP同様にWebを「 常に実行されている存在 」と認識する
- 「システム実行中における極端な動的バインディングがシステムの変更を支援する」(=各サービスが常に存在している状態で 必要な時だけ結合状態になる 。そのため、サービスの変更が容易になる)
- これら4技術の利点を達成する共通の技術が「ハイパーメディア」
どうして今更ハイパーメディア???
- ハイパーメディアは情報社会を形成する重要な概念なので改めておさらいする
- 歴史
-
アフォーダンスという概念
- アフォーダンスとは環境が人間に与える意味
- 🤔例
- ドアにノブがついていれば開くタイプのドアだと人間は自然と認識する(=そのような意味をくみ取っている)
- 一方でドアに取っ手(手をひっかけるくぼみ)がついていればスライドするタイプのドアだと認識される
- ドアにノブがついていれば開くタイプのドアだと人間は自然と認識する(=そのような意味をくみ取っている)
- 🤔例
- ハイパーメディアはアフォーダンスに依存してる
- 🤔ここでは具体的な例はあまり例示されていないが、ボタン(押すものという意味を与える)などのコンポーネントやページレイアウトデザイン等、Webデザインにおいてアフォーダンスが重要と言われている事を指している?
- アフォーダンスとは環境が人間に与える意味
- メッセージの価値
- 先ほど引用したアラン・ケイのメールにメッセージングに対する言及がある
- (再掲)「僕にとってのOOPとは、 メッセージング 、ステートプロセスの局所保持かつ保護かつ隠蔽、徹底的な遅延バインディング、これだけの意味だった」
- やり取りするものを(オブジェクト/関数等ではなく)メッセージとした事がWebの発展に寄与している
- なぜなら、制限が少なく、後からいろんなフォーマット(XML/JSON等)を適用できる
- 🤔バイナリフォーマットよりテキストフォーマットの強みが生きた例という事か
- [参照]UNIX哲学「単純なテキストファイルにデータを格納せよ。」
- 先ほど引用したアラン・ケイのメールにメッセージングに対する言及がある
- 語彙の力
- 「情報アーキテクチャ(通称シロクマ本)」の刊行をきっかけにメッセージを介して「情報をわかりやすく伝え」「受け手が情報を探しやすくする」事の重要さが認識されていった
- ここでの語彙とは情報アーキテクチャ(IA)における重要な要素「オントロジー(特定の意味)」「分類法(パーツの配置)」「コレオグラフィー(パーツ間の相互作用のルール)」などの事
- ユビキタス言語
- DDDにおいて「ユビキタス言語(サブサービスにおいてのみ有効な用語・コンテクスト)」が重要視されている事からわかるように、大規模なアプリケーションでいかにコンテクストの差異「セマンティックギャップ」をいかに埋めるかが重要。本書でもそれを目指す
スケーラブルサービスの共通原則
- Webスケーラブルサービスに共通する原則を紹介して第1章を締めくくる
- 基本原則
グローバルなリーチを活用して、会ったことのない人のために考えたことのない問題を解決します。
- 「グローバルなリーチ」
- Webは基本どこへもアクセス可能だが、サービスの作り方によってはそれが制限される可能性がある
- 本書ではできるだけ他のサービスとの接続の参入障壁を下げるようなソリューションを紹介する
- 「あなたが考えたことのない問題を解決します」
- 良く作り込む事により当初想定していなかった応用のされ方に発展することがある
適切に設計されたオブジェクトの価値は、それを使用する人々がデザイナーが想像もしなかったことをそれを使って行うことができるような豊富なアフォーダンスのセットを持っているときです。
ドナルド・ノーマン(1994)
- 「会ったことのない人のために」
- サービスのユーザーとは事前の調整などはできない。一貫性のある一貫した語彙を使用してサービスインターフェイスを慎重かつ明示的に定義することが重要
- 補足「タイムスケールの処理」
- 大規模なシステムの寿命は長い。数十年の規模で存在し続けられるシステムの構築を目指す
🚨注意🚨「すべては変わる」
- 諸行無常 という事を忘れてはいけない
ハイパーメディアデザインパターン(第2章)
- 🚧🚧更新予定🚧🚧
ハイパーメディアクライアントパターン(第3章)
- 🚧🚧更新予定🚧🚧
ハイパーメディアサービスパターン(第4章)
- 🚧🚧更新予定🚧🚧
分散データパターン(第5章)
- 🚧🚧更新予定🚧🚧
ランタイムレジストリパターン(第6章)
- 🚧🚧更新予定🚧🚧
ハイパーメディアワークフローパターン(第7章)
- 🚧🚧更新予定🚧🚧
このスクラップは2022/04/29にクローズされました