SHIORI Callback

うかべんでも散々強調したのが、

「本体からイベントを与えられないとSHIORIは行動できない」

ということ。SHIORIから自発的に何か行動を起こすのは無理、
本体からイベントを与えられて、さくらスクリプトを返すしか
本体の機能(普通のトークも含めて)を使う方法は無い、と。


これは間違ってはいないのですが、正確には少し例外があります。
それが SSTP EXECUTE の存在で、これを使うと任意のタイミング*1
本体にリクエストを送ることができます。


これ、要するにSHIORI→本体という逆リクエストなのですね。
現在は本体から情報を得たり、本体側の変数(プロパティ)を読み書きしたり、
ということに利用されています…と書きたいところですが、
あまり利用されている例は無いようです。


SSTP EXECUTEにもっと本体側の機能を色々載せても面白いかもしれません。
トレイアイコンのバルーンチップを出せるようにすると
id:hinoharu:20070823:1187850840 は解決したり。


そうなると、本体側の機能を動作させるために、

の2つの方法が存在することになるのですが、同じ機能にばらばらの
名前が付いているのは気持ち悪いですね。
\![] 系のスクリプトはすべてEXECUTEでも同名でコールできるように
したりすると統一が取れていいかもしれません。
(勿論本体の構造等によって、スクリプトでは可能だけどEXECUTEでは無理、
 或いはその逆など出てくると思いますが)


SSTP EXECUTE があまり使われていないのは、現在のところ特に必要な機能が
無いというのの他に、実際使うために DirectSSTP などを制御しなければ
ならないという面倒さがあるかもしれません。


というのは、DirectSSTPは高速ですが制限の多い方法で、実装は面倒ですし
キューイングもされませんし、何しろWindowsでないと使えない。
SSTP、DirectSSTP、に代わる第三の方法、実装が簡単で、キューイングされて、
各OSで使えるような方法があれば便利かもしれません。
送受する内容はSSTPと同じでよいでしょう。


となると候補となるのはメールスロット、名前付きパイプ、あたりですね…
メールスロットはWindowsにしか無いから、UNIXとかだとPOSIXキューあたりを
代替に使うことになるでしょう。ネットワーク越しのメールスロットはうまく
動作しない事例を聞いてますが、ローカルマシン内であれば問題ないみたい。
名前付きパイプはWindowsでもUNIXでも動くのですが、いかんせんWindows95
98、Meが切り捨てられちゃうのが痛い…
なかなか悩みどころではあります。

*1:といってもSHIORIが動作可能なタイミング