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

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

いくつかのキーワード: KoNSとサービス転送オブジェクト

クライアント/サーバーシステムで、クライアント側状態の遷移をする際に、「次にどこに遷移すべきか」あるいはむしろ「次に遷移するために何をなすべきか」の知識がいる。この知識を Knowledge of Next Step、略して KoNS と呼ぼう。

問題は、KoNSを誰が持っているか? どう伝えるか? クライアント側がすべてのKoNSを持っていて、サーバー側はRPCエンドポイントの集まり、のような形態も考えることができる。しかし、これはハイパーリンクアプリケーションじゃない。ハイパーリンクアプリケーションでは、KoNSをサーバー側が持っていて、それをその場その場でクライアント側に伝える。クライアントはKoNSを一切持たず、サーバーからの提供に頼る。

これがハイパーリンクアプリケーション、あるいはリンクトサービスの基本だ。KoNSを全体として図示するとハイパーリンクグラフになる。ハイパーリンクグラフを知っているとは、行動のシナリオを知っていることになる。シナリオは、局所的な選択の知識が時間方向に累積される結果として生じる。シナリオの全体が、局所的な情報で定義される。ローカル/グローバル、またはミクロ/マクロ対応がある。

ただし、KoNSの伝達方式(プロトコル)と記述方式(フォーマット)は前もって合意しておく必要がある。これは、KoNSを扱う上でのメタ知識となる。メタ知識は共有しながら、知識を決め打ちでなくてオンザフライでやり取りする。オンザフライでやり取りする分のオーバーヘッドはあるが、その代わりロバストになる。仕様変更でクライアントが壊れるリスクは減る。

KoNSを含めた転送オブジェクトを、以前からサービス転送オブジェクトと呼んでいた。データ転送オブジェクトより情報が豊富で、KoNSが詰め込まれている。ハイパーメディアオブジェクトとほぼ同義だ。