このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

ハイパーhogehoge、関連する概念・用語、ものすごく雑多 (2)

JSONスキーマRFC候補にハイパースキーマって言葉が出てくる。なんかカッコツケスギ、ハイパーリンクスキーマのほうがいいと思う。

RESTの本のなかで、接続性って言葉が出てくるが、これはハイパーリンク接続性がいいと思う。そのほうが分かりやすい。

情報担体(information bearing object)って言葉が気に入っている。例えば、http://d.hatena.ne.jp/m-hiyama/20050820/1124512522 。「体」がobjectの訳語だが、これは情報担体オブジェクトと言った方がいいだろ。データ転送オブジェクトとかデータアクセスオブジェクトと大差ない概念だが、「担っている」のだ。アクセスにも転送にも使える。

サービスリクエスタ、サービスリクエスタオブジェクトってのもいいと思う。サービス機能自体を運ぶのではなくて、サービスのインターフェースを運ぶのがサービスリクエスタオブジェクト。情報担体オブジェクト(データ転送オブジェクト)+サービスリクエスタオブジェクトが分散アプリケーションの肝だ。

肝といえば、アプリケーション状態がクラアントにより保持されるっても肝だ。それで、アプリケーション状態の変更はサーバーが行う、ってのも変な話だが、そうなっている。そうなっているんだからしょうがない。

結局、転送されるオブジェクトの一般形は:

  1. データプロパティ群(情報担体として)
  2. ハイパーリンク群(関係記述として)
  3. 問い合わせ群(副作用のないサービス要求)
  4. アクション群(副作用のあるサービス要求)

と、これだけの構成要素。ハイパーリンクと問い合わせの違いは微妙で恣意的だが、それでも区別したほうがいいと思う。ハイパーリンク、問い合わせ、アクションは戻り値(応答)を持つが、それがまた転送オブジェクト(transfer object?)となる。転送オブジェクトを受信・受理すると、クライアント状態が変更されう。

リクエスト処理中にサーバー状態は変更され、レスポンス受理処理中にクライアント状態が変更される。よって、リクエスト+レスポンスをトランザクションと考えると、トランザクション処理が双方の状態(直積空間)を変更する。

トランザクションとはいえ、サーバ側状態遷移の後でクライアント側状態遷移が起きるので、この時間順制約は外せない。