基底イベント

Category:仕様メモ

SSPを中心に、MATERIAからイベントを増やしているゴースト実行環境は多い。 これらのイベントにゴーストが全部対応することは、実行環境が多数ある現在、困難が伴う。 一方で、増えたイベントの多くは、従来からあるイベントと意味・位置づけ・通知内容がよく似ている、「派生型」のイベントが多い。 たとえば、OnGhostChangedイベントに対するOnGhostCalledイベントがそうだ。 こうしたイベントは、元となったイベント(C++のクラス継承の用語に倣い、以後「基底イベント」と呼称)のトーク内容を使っても、 違和感が少ない*1と推定できる。

そこで、ゴースト実行環境が派生イベントを通知する際、基底イベント名を同時に通知することを提案する。 ゴーストは通知イベントを知らなかった場合、BaseIDヘッダで通知される基底イベントを使い、応答することが出来る。*2

例1

#pre(link,number){{
GET SHIORI/3.0
Charset: Shift_JIS
ID: OnGhostCalled
BaseID: OnGhostChanged
Reference0: Emily
Reference1: <略>
Reference2: Emily/Phase4
Reference7: 尭風舜雨
SecurityLevel: local
Sender: SSP
}}

この例では、SSPがOnGhostCalledの基底イベント「OnGhostChanged」を通知している。

例2

なお現在は存在しないが、「派生型イベントの更に派生型イベント」を通知する場合、カンマ区切りで左から継承順にイベント名を列挙することとする。

#pre(link,number){{
GET SHIORI/3.0
Charset: UTF-8
ID: OnGhostMaterialized
BaseID: OnGhostCalled,OnGhostChanged
Reference0: だえ子
Reference1: <略>
Reference2: だえ子と芝やん
Reference7: master
SecurityLevel: local
Sender: DAE
}}

この例では、DAEがOnGhostCalledの派生型イベント「OnGhostMaterialized」を通知している。OnGhostCalledはOnGhostChangedの派生型イベントなので、BaseIDに列挙されている。

派生リスト案

芝やんさん案-1

SSP 1.11.00 Pre17実装(予定)

基本的には芝やんさん案1といっしょです。

DAE 0.2.0 Beta10実装

SSP 1.11.00 Pre17実装 + 日記で書いたものです。

ツッコミ

  • 派生イベントは必ずReference情報が互換にしないとゴースト側での扱いに難がありそう。 -- ぽな@ばぐとら 2005-09-15 (木) 15:51:14
  • ……そうすると、OnGhostChanged->OnBoot / OnVanished->OnBootは難がありますね…… -- ぽな@ばぐとら 2005-09-15 (木) 15:53:58
  • そこは「新たな派生イベント」を主目的ということで。>難あり -- さとー 2005-09-15 (木) 22:49:05
  • いずれは基底イベントの再定義で、既存イベントの整理・階層の明確化が出来れば万々歳ですけどね。 -- さとー 2005-09-15 (木) 22:50:17
  • |・w・).。oO(SHIORI/4.0。いつまでも引きずる必要はない……といっても互換はいるでしょうけどねぇ。) -- ちに 2005-09-22 (木) 21:38:10
  • さとーさんの言うとおり、完全な再定義っていうのもひとつの道だと思うのですよ。なかなか難しいでしょうけど;; -- ちに 2005-09-22 (木) 21:40:31


*1 皆無とは言わない。気になる人は当然気になる。これは「表現」には不可避の問題であり、今回は許容する。
*2 必須ではない。表現上違和感があると思えば無視することも可能な実装を推奨する

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-12-09 (土) 22:52:00