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

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

ハイパー呼び出し

Webアプリケーションは、HTTP上のRPCアプリケーションとみなすことができる。ただし、単なるRPCではなくて、ハイパーRPCだと言える。ハイパーオブジェクトが介在する点が特徴的。

一般的なRPCは次の形をしている。SPは、セマンティック処理(Semantic Processing)で、目的とする本来の処理。その他のマーシャリング/アンマーシャリングは、データを転送するときの手段であって、意味的に本質的ではない。

マーシャリング/アンマーシャリングは本質的ではないし、決まりきった手順だから省略して、右の絵のように描くことにする。AとBは、セマンティック処理の入出力の型である。

ハイパーオブジェクト(ハイパーメディアオブジェクト)はハイパーリンクを含むデータのことだが、次のように図示する。毛が生えたように見えるのはトリガーで、ハイパーリンク(矢印)の根本となる。

いくつかあるトリガーのなかで、特に選ばれたもの(chosen trigger)があるときはそれを黒マルで示す。

1本のハイパーリンクは、クライアント側にいるユーザー(アクター、人間かプログラム)とセマンティック処理を結び矢印で描く。このとき、ユーザーはハイパーオブジェクトの選ばれたトリガーと向き合っていることに注意せよ。リンクは必ずトリガーを経由する。

ハイパーリンクは、ハイパー呼び出し(hypercall, hcall)の半分であり、残る半分を描きたすと次のようになる。

SPはセマンティック処理、HOGハイパーオブジェクトの生成処理(hyperobject generation)である。ハイパー呼び出しの結果(戻り値)はハイパーオブジェクトとなる。

ハイパー呼び出しは同期呼び出しなので、呼び出しは行ったユーザーは戻り(レスポンス)を待つことになる。結果のハイパーオブジェクトが戻ると、ユーザーが適当なトリガーを選び、さらにハイパー呼び出しを続ける(かもしれない)。1つのハイパーオブジェクトに複数のトリガーがあることから、選択の余地があり、ハイパーリンク/ハイパー呼び出しの全体は有向グラフ構造を持つ。この有向グラフをハイパーリンクグラフと呼ぶ。

現在のCatyは、モジュールごとのハイパーリンクグラフを描くことができる。複数のモジュールを繋いだ(バインディングした)全体はまだ描けない。