対ユーザーインターフェース用ゴースト、「それはあなたです!」に関する仕様書。
関連URL
- 配布場所

参考:メイン辞書
※このゴーストの主要機能は、この辞書1つにまとまっています。見る人が見れば、この仕様書を見るよりも理解しやすいかも知れません。
- 動作デモ動画
ゴースト概要
- ゴースト間コミュニケート機能を利用して、ゴーストとユーザの間のコミュニケーションの仲立ちをします。
- ゴーストと言う「ソフトウェア」の「ユーザインタフェース」としてのゴースト。
ユーザインタフェースとしてのゴーストなので、ゴースト側からは、ユーザと同じ物として扱われることを想定しています。
逆に、ユーザ側からは、ユーザの分身(Miiやネトゲのプレイヤーキャラクターのような存在(アバター))として扱われることを想定しています。
やってること
- ユーザが選択したキーワードを、該当のゴースト(拡張コミュニケート使用時は、起動中のすべてのゴースト)へ、ゴースト間コミュニケート機能を使って送信しています。
- 台本コミュニケートを受信して選択肢などを表示し、その結果を、台本コミュニケートを送信してきたゴーストに返信しています。
こんなことができます・こんなメリットがあります
- ユーザーは……
- 今までよりも簡単にゴーストに対して呼びかけを行うことができます。
- 話しかけられるキーワードがあらかじめ示されているため、何を呼びかけたらいいか分からない、と言うことが無くなります。
- 話しかけられるキーワードが限定されているため、「ごめん、分からない」などと言われる確率が下がります。
- ゴーストの実装次第では、今までよりもゴーストとの対話が増え、更にゴーストを身近な存在として感じられるようになります。
- ゴースト作者は……
- 今までよりも簡単にユーザからゴーストに対して呼びかけてもらえるようになります。
- 反応できるキーワードをあらかじめ示しておくことにより、せっかく実装したのに全然呼びかけられない、と言うような、努力の無駄を無くすことができます。
- 反応すべきキーワードが限定されているので、コミュニケート機能の実装が簡単になります(サンプル辞書の内容をゴーストに合った内容に書き換えるだけで実装できます)。
- 反応すべきキーワードが限定されているので、ユーザからの呼びかけに対して、ゴーストがとんちんかんな反応を返してしまう確率が下がります。
- 選択肢やインプットボックスを表示するようなイベントを、「それはあなたです!」に丸投げすることにより、ゴースト自体のトークを中断することなく、ユーザ側に入力を求めることができるようになります。
- 今までよりもユーザとゴーストの対話を増やすことができますので、更にゴーストを身近な存在として感じてもらえるようになります。
- メニューを開くアクションを「それはあなたです!」に丸投げすることにより、マウスのダブルクリックでメニューを開くようにする必要が無くなるので、マウス反応の自由度が高まります。
こんなことはできません・こんなデメリットがあります
どんなことも、うまい話だけ、なんてことはない訳で……
- あらかじめキーワードが示されているので、「ネタバレ」が避けられない。ネタバレ避けに「隠しキーワード」を作った場合、今まで以上に気づかれにくくなる(むしろそれを狙う、と言う手もありますが)。
- 一部の機能の実装には多少手間が掛かる(と言っても、デメリットにもならない程度の僅かな手間ですし、サンプル辞書にも記述されているので、それをアレンジすれば済みます)。
- 入力機能を「それはあなたです!」に代行させる場合、「それはあなたです!」がインストールされ、同時に起動していなければならない(ただし、ゴーストの存在チェックと、NARの自動インストール、ゴースト呼び出しを使用すれば、自動化は可能であると思われます)。
- 「それはあなたです!」自体も独立した汎用コミュニケート用ゴーストですので、選択肢などを丸投げされても、あまり複雑なことはできません(対象となるゴースト内部の実装次第でどうにでもなりますが、「それはあなたです!」から、直接、対象となるゴースト内のイベントを呼び出す(\![raiseother])、と言うようなことはできませんし、意味がありません)。
- \0名が特殊(本来は環境変数である%username)なので、ゴーストやベースウェアによっては、通常のゴーストよりも対応に手間が掛かったり、場合によっては予期せぬ動作をする可能性があります。
対応ゴースト(2010-05-24 (Mon) 02:26:53現在)
送信側
受信側
組み込み済みキーワード(2010-05-24 (Mon) 02:26:53現在)
| キーワード | トークID |
| おはよう! | DEFAULT_TALK_000 |
| こんにちは! | DEFAULT_TALK_001 |
| こんばんは! | DEFAULT_TALK_002 |
| おやすみ! | DEFAULT_TALK_003 |
| 元気? | DEFAULT_TALK_004 |
| 行ってきます | DEFAULT_TALK_005 |
| ただいま~ | DEFAULT_TALK_006 |
| 可愛いね! | DEFAULT_TALK_007 |
| 大好き! | DEFAULT_TALK_008 |
| 綺麗だね! | DEFAULT_TALK_009 |
| 愛してるよ! | DEFAULT_TALK_010 |
| 結婚して! | DEFAULT_TALK_011 |
| なでなで | DEFAULT_TALK_012 |
| つんつん | DEFAULT_TALK_013 |
| ぎゅ~ | DEFAULT_TALK_014 |
| さわさわ | DEFAULT_TALK_015 |
| もみもみ | DEFAULT_TALK_016 |
| ちゅっちゅ | DEFAULT_TALK_017 |
| うるさい | DEFAULT_TALK_018 |
| 黙れ | DEFAULT_TALK_019 |
| 帰れ | DEFAULT_TALK_020 |
| メニュー出して | DEFAULT_TALK_021 |
※部分一致でキーワードを判定するSHIORI(里々など)の場合、トークIDで判定すると、反応の誤爆を避けられます。
※このほか、ゴーストごとに独自に設定されているキーワードもあります。
※アクション選択メニューはタイムアウトしません(何かアクション(キャンセルを含む)を選択するまで開きっぱなしです)。
ゴースト側で対応させるには?
- このゴーストからのコミュニケートに対し、上記キーワードに対する反応を記述してください。
汎用反応の中に上記キーワードを含めておけば、そちらで反応するので、このゴースト専用に特別に反応を用意しなくても大丈夫な場合もあります。
各SHIORI用のサンプル辞書
このサンプルを参考に、それぞれのゴースト用の反応を記述してください。
「それはあなたです!」からゴーストに通知されるゴースト名は?
%username
- 「え?これが?」と言うゴースト名ですが、こうしないと、ゴースト名を取得して汎用コミュニケート反応するゴーストで不自然な反応になるので、あえてこうしています。
- ゴースト名が特殊なので、ゴースト間コミュニケートのSender特定や、切り替え反応などで問題が出る可能性があります。ご注意ください。回避策が関連URL内のまとめリストにありますので、そちらも参照してください。
「それはあなたです!」からゴーストに通知されるコミュニケートスクリプトの書式
\_q###<<呼びかけ内容>>###\c\_q\1\s[10]\0\s[0]<<ゴースト名>>、<<呼びかけ内容>>。\e
- ヘッダ(\_q~\c\_qで囲まれた部分。以下同じ)と本文の「呼びかけ内容」の中身は基本的に同じですが、本文はトランスレートされている可能性があります。
キーワードとして使用する場合は、ヘッダ部分を調べる方が確実です。
- 現時点での仕様では、呼びかけ対象のゴーストをユーザが認識しやすいように、ゴースト名は必ず呼ぶようにしています(拡張コミュニケートにを使った一斉同報送信時は、「みんな」と呼びかけてます)。
このため、一部のゴーストでは想定通りの動作をしない(たとえば、名前呼ばれ反応が優先される、など)ことがありますのでご注意ください(上記のまとめリストも参照してください)。
- ヘッダ部分に###で区切った物を配置することで、キーワードの抽出と条件分岐がしやすいようにしてみました。
- ヘッダ部分は、バルーン上では瞬間的にクリアされるため、ベースウェアの実装やマシンの処理速度にもよりますが、基本的にユーザの目に触れることはありません。
台本コミュニケートへの対応
台本コミュニケートを使用したときの返信
\_q###(トークID):(喋らせたい内容)###\c\_q\1\s[10]\0\s[0](喋らせたい内容)。\e
- 台本コミュニケートの内容を上記の仕様通りに記述した場合、ユーザが選択肢を選んだときに、このフォーマットで、台本コミュニケートを投げてきたゴーストにスクリプトを投げ返します。
- 本文の「喋らせたい内容」は、トランスレーターの影響で、内容が変化する可能性があります。
ヘッダ部分を見てキーワードを調べる方が、確実にキーワード反応させられます。
- トークIDなどを使用してキーワード反応したい場合に備え、OnDaihonCommunicateExecuteには、reference1で任意の値を設定できるようにしています(デリミタとして使用されている"###"と":"の使用は推奨しません)。
- 返信スクリプト内でのトークIDとキーワードは、ヘッダ内部で半角コロンで区切っています。
- こちらからは単純に台本コミュニケートで設定されたキーワードを投げ返すだけです。こちらから台本コミュニケートを発動させるようなことはしません。
キーワードに対する反応は、それぞれのゴースト内で制御・記述してください。
- トークIDを設定していなくても、台本コミュニケートからの返信は必ずこの形式になります(半角コロンが必ず含まれます)。
いちいち選択肢を書くのが面倒な人向けの手抜き記述仕様
はっきり言って、\q[~~]を何個も書き並べるのは面倒です。なので、手抜きできる方法を用意してみました。
インプットボックスを使う
- 名前覚えイベントなどを「それはあなたです!」に簡単に代行させられます。
- reference8に設定された値が、インプットボックスで入力が行われたときに、トークIDとして戻ります。
- インプットボックスに入力された内容は、キーワード部分に入って戻ります。
- reference5にデフォルト文字列、reference6にキャプション、reference7でタイムアウト時間を指定できます(いずれも省略可)。
選択肢やインプットボックスを出すときに、具体的に質問や説明を書けたら便利かも?
と言う訳で、reference6に設定した物を、選択肢の前に表示するようにしました。reference6を省略すると、いきなり選択肢が表示されます(reference6を設定した場合の実行例
)。
使用できない文字
"'#$&()*+,-/:;<=>?@[]`{|}~
reference4、reference5、reference8では、上記の文字は使用できません。仮に使用しても'_'(アンダースコア)に置換されますのでご注意ください(デリミタとして使用される'###'と','を除く)。
また、\![vanishbymyself]などの"危険な"タグはエスケープされます。
リファレンスの優先順位
高い:reference8(インプットボックス)>reference4(かんたん選択肢書式)>reference3(普通の台本コミュニケート書式):低い
つまり、reference3やreference4を記述していても、reference8が記述されているとその内容は無視されます。
台本コミュニケートまとめ
| リファレンス番号 | 内容 | 優先度 | 説明 | 備考 |
| reference0 | %username | - | スクリプトの宛先 | 「それはあなたです!」の\0名(%username)を指定してください |
| reference1 | ゴーストが喋ったスクリプト | - | 送信元ゴーストが喋ったスクリプト | 自動的に追加されます*1 |
| reference2 | ECHO/1.0 | - | 台本コミュニケート識別子 | 省略不可。 詳しくは台本コミュニケート仕様書参照 |
| reference3 | 「それはあなたです!」に表示させたいスクリプト | 3 | 「それはあなたです!」のバルーンに表示したい内容を、さくらスクリプトで記述します。 | reference4が設定されていた場合は無視されます*2 |
| reference4 | 列挙された選択肢の項目 | 2 | 「それはあなたです!」で表示したい選択肢の項目を、カンマ区切りで列挙します | |
| reference5 | 「キャンセル」のキャプション インプットボックスのデフォルト文字列 | - | 「キャンセル」ボタンに表示したい文字列を設定します。 reference8が指定されている場合は、インプットボックスのデフォルト文字列を指定します。 | 省略可。 省略した場合は、ボタンには「キャンセル」と表示されます。 インプットボックスは未入力状態になります。 |
| reference6 | 選択肢の前に表示される文章 | - | 選択肢やインプットボックスの前に表示したい文章を指定します (選択肢に対する説明など)。 | 省略可 さくらスクリプト使用可 |
| reference7 | タイムアウト | - | 選択肢やインプットボックスのタイムアウトを指定します(単位:ミリ秒) | 省略可*3 |
| reference8 | インプットボックスを表示させる場合のトークID | 1 | インプットボックスで入力が行われると、ここで設定した値をトークIDとして、 入力内容をキーワードとして返します。名前覚えなどに利用できます。 | |
その他
- キーワードの追加などについて
- 今後も要望や思いつきによってキーワードを追加していく予定です。
- ゴースト名による分岐を利用して、ゴーストごとの専用キーワードを追加することもできますので、「このゴーストにはこういうキーワードに対する反応をさせたい」ということも柔軟に対応できます。
ご要望がありましたらお気軽にご相談ください。
既知の問題点
- ゴーストが呼びかけに反応しません
- 該当ゴーストがゴースト間コミュニケートに対応していません。作者さんに依頼して、ゴースト間コミュニケートに対応してもらってください。
このゴーストの仕様に合うように対応してもらうのがベストですが、汎用の「おはよう」とか「おやすみ」などの反応があるだけでも違ってきます。
- 一斉同報送信したら、他のゴースト間で勝手にコミュニケートが始まった
- シェルがキモい
- 不特定多数の「ユーザ」という存在を記号化した結果です。ご了承ください。
なお、追加シェルの作成は自由です。ネトゲなどのキャラメイクのノリで、「俺(私)はこんな感じのキャラとして、ゴーストと接したい!」と言う方は、ガンガン作っちゃってください♪
- YAYAゴーストで台本コミュニケートを使用すると意図したとおりの動作をしてくれない
- YAYAのシステム辞書が古い場合、リファレンスの記述を途中で省略すると、省略したところ以降のリファレンスがセットされず、意図したとおりの挙動にならないことがあります。
この現象は、最新版の紺野ややめ
のシステム辞書を導入し、リファレンスの書き方を、referenceXと言う形式から、reference[X]と言う形式の物に変更すれば回避できます。
システム辞書の移行には多少手間が掛かりますが、移行した方が何かとメリットが大きいので、古いタイプのシステム辞書を使用されている方は、この機会に移行してしまうことをおすすめします。
- サンプル辞書は、最新版のシステム辞書が導入されている前提で記述されています。旧形式のシステム辞書では正しく動作しません。
- この問題点は、現時点ではYAYAのみで発生しています。他のSHIORIでは特に問題ありません。
コメント
- 「古い形式のファイル」とかいわれてインストできません -- 人間です?
- 再インストールしたら直りました。お騒がせしました。 -- 人間です?
- こちらの手違いでinstall.txtが抜けていたようです。現在は修正済みです。不具合のご連絡ありがとうございました。 -- せきやひろし