『Fy Mascot』 - GICP

はじめに

GICPとは『Fy Mascot』で、『思考エンジン』や『オプションプログラム』と通信する際に使用しているプロトコルです。ちなみにGICPという名前は General Incantation Communicate Protcol (汎用呪文型通信プロトコル)の略で、要するによくわからん言葉(呪文)を使った通信というわけです(笑)。 

ウィンドウメッセージやTCP/IPを使った他のアプリケーションとの通信用には、もうちょっと簡単にしたGICP Liteというプロトコルも用意しました。

GICP

・GICPについて

GICPの概要についてです。『Fy Mascot』内外の通信はすべてこのGICPの文字列で行われています。

GICPの概要

外部プログラムとの通信

・メッセージ一覧

『Fy Mascot』に実装されているメッセージの一覧です。これらのメッセージを利用して『Fy Mascot』が動作します。

NOTICE

NOTICEクラスは『思考エンジン』や『オプションプログラム』などに各種イベントを知らせるときに使用するクラスです。

TALK

TALKクラスは、『Fy Mascot』にセリフをしゃべってもらうときに使用するクラスです。

MOTION

MOTIONクラスは、『Fy Mascot』にモーションをやってもらうときに使用するクラスです。

FUNCTION

『Fy Mascot』では、『オプションプログラム』でテキストボックスに入力した言葉で何かをやってもらう機能などで使用するクラスです。

SYSTEM

SYSTEMクラスは、『Fy Mascot』のシステム上の処理を行う際に利用するクラスです。

GICPの概要

『Fy Mascot』では、GICPというプロトコルで定義された文字列をやりとりして動作します。『Fy Mascot』、『思考エンジン』、『オプションプロググラム』間は関数で、『別プログラム』とはTCP/IPやウィンドウメッセージ(WM_COPYDATA)で通信を行います。

・GICPの基本的な構成

GICP文字列はXMLの書式に準拠しています。また、プログラムの作成を容易にし、人に分かりやすくするために以下のルールも追加しています。独自の要素を追加する場合も、わかりやすいというコンセプトは踏襲していただけるとうれしいです。

ファイル名 スタイル
空要素 GICPでは空要素は使わず、必ず開始タグと終了タグで構成します。
空白 タグの中に不要な空白があると処理に失敗するかもしれません。
要素内容 内部処理に使用する英文字のパラメータは大文字に統一してください。※1
要素名 同じ要素名が並ぶと処理に失敗するかもしれないので推奨しません。※2

※1 あくまで内部処理用のパラメータに対してのことで、ユーザー入力やセリフ等はこれに含めません。

※2 属性をもうけて番号をふるのがオススメです。

GICPの文字コード

『Fy Mascot』のGICPで通信される文字コードはUTF-8です

Windowsでプログラムを作ると、この仕様がメンドーなことこの上ないのですが。。。世の中の流れがUTF-8がスタンダードになっているようなので全面的にUTF-8で処理するようにしました。ただ、文字を表示する関数以外は、ほとんどマルチバイト用の関数がそのままUTF-8でも使えます。

GICPの構文

GICPは大きく見ると、『送り手』、『送り先』、『メッセージ』、『メッセージの追加情報』で分類される文字列で構成されます。各要素は入れ子式に要素を分類追加することができるので、汎用性と拡張性を兼ね備えている、と自負しております(笑)。

GICPの全ての内容は<gicp>~</gicp>に納められ、『gicp』には属性としてversionを記述します。『gicp』の中に以下の四つの要素が入ります。

picture

『master』

masterは送り手を記述します。

実際は内部で使われることはあんまりないのですが、返信などがある場合に必要になります。要素には『place』と『detail』があります。

名前 場所
MASCOT 『Fy Mascot』本体。
『detail』には何も記述する必要はありません。
CHARACTER 『思考エンジン』。
『detail』は何も記述する必要はありませんが、『name』を設けてキャラクターを限定することもできます。この情報を利用するかどうかは『思考エンジン』によります(無視されるかも)。
OPTION オプションプログラム。
『detail』に『name』を記述します。
NETWORK TCP/IPを使ったGICP命令を受信した場合。
『detail』にはTCP/IPアドレスとポートを『address』要素に記述します。
MESSAGE ウィンドウメッセージを使ったGICP命令を受信した場合。
必要に応じて『detail』には送信元のプログラムの(受信用ウィンドウの)ウィンドウハンドルを『handle』要素に記述します。。
SOMEONE 誰か。
後述のGICP RETURNで送り先が不要な場合に利用します。 『detail』には何も記述する必要はありません。

『follower』

followerには送り先を記述します。この内容は送り先の特定に使われます。masterと内容は同じで、送り返す際はmasterの内容をそのままfollowerに記述することで送信することが可能です。送り手が存在しない場合はGICPの失敗として処理されます。

『witchcraft』

witchcraftには送信するメッセージの種類を記述します。要素の内容には『class』と『order』があり、『class』にはそのメッセージのクラスを、『order』にはそのクラス内で有効なオーダーを記述します。クラスとオーダーを分けたのは、分かりやすくするためです。(なのでSOMETHINGクラスとか作らないでください)

オプションプログラムと『思考エンジン』など、『Fy Mascot』が対応する必要がないものに関しては、『class』と『order』ともに自由に定めることができます。※同じオーダーでもクラスが異なれば別々のものとして認識されます。

『incantation』

incantationはwitchcraftによって要素内容が変化します。メッセージに関するパラメータやデータなどが記述されます。

『incantation』には『userdata』要素を追加することができ、ユーザーが任意の追加情報を付加することができます。また『userdata』要素は、不要な場合省略することもできます。

・GICP RETURN

GICPは通信が完了した際に結果をGICP文字列で返します。これをGICP RETURNと呼びます。すでに接続されているので送信元(master)も送信先(follower)も必要ないと思いますが、一応省略はしない方針なので完全なGICP文字列にして返信するようにして下さい。

※いちいち送り先を作るのが面倒な場合はplaceにSOMEONEと記述すると便利です。

『result』

GICP RETURNの内容はメッセージによって異なりますが、『Fy Mascot』では全てのメッセージのGICP RETURNに『result』タグを作り、そこに結果を入れて返すようにしています。

パラメータ コード 場所
OK 200 成功
BADREQUEST 400 パラメータに不備がある、間違っている
ERROR 500 エラー
NOTSUPPORTED 501 未サポート

※コードは後述のGICP Liteの際に利用されるリターンコードです。

ユーザーを待つ返信

GICPは受信後すぐにGICP RETURNを返信します。ユーザーの入力待ちや処理に時間がかかる場合などは、GICPを受信した時点で受信した旨だけを返して、返信内容が確定した時点で受け手側から再度GICPを送信します。このようなメッセージは『follower』の情報を間違えないよう記述する必要があります。

外部プログラムとの通信

『Fy Mascot』はTCP/IPやウィンドウメッセージを使って、他のアプリケーションとGICPの通信をすることができます。この場合はGICPの機能を限定して簡単に実行できるGICP Liteを送受信するようにしています。

・GICP Lite

GICPは文字列でGICP RETURNをする必要があるため、送り手が送信と受信の両方ができる必要があります。WM_COPYDATAを使ったウィンドウメッセージの通信では、文字列は片方向にしか送信できないので一手間です。そこでGICP RETURNを一つの数値のみを返すようにし、送り手『master』の情報も限定したものがGICP Liteです。

※もともとウィンドウメッセージでもフルスペックのGICPを実行できるようにしていたのですが、対応アプリケーションを作る方もメンドーなことになるので機能を限定したGICP Liteを策定しました。

GICP Liteの構成

GICP Liteの送信データはGICPとほぼ同じで、GICP Liteは<gicplite>~</gicplite>に納められます。『master』の『detail』の内容は引き継がれますが、『place』はサーバーによって置き換えられます。『Fy Mascot』からの通信を不要とする場合は『detail』要素は必要ありません。(宛先不明として処理されます)

picture

サーバーはGICP Liteを受信したらGICPに変換して『Fy Mascot』に送り、GICP RETURNの『result』のパラメータに対応するコードを返します。逆に『Fy Mascot』からサーバーに送られたGICPはGICP Liteに変換して送り先に送信され、戻り値のコードに対応するパラメータを『result』に入れてGICP RETURNを返します。

このような仕様になっているので、『Fy Mascot』側のプログラムは、どこから送られてきたか意識することなく、単にNETWORKやMESSAGEから送られてきたものとして処理することができます。

GICP Liteの戻り値

GICP Liteの戻り値はGICP RETURNの『result』に対応するコードです。

・NETWORK

『Fy Mascot』ではTCP/IPを使ってGICP Liteをネットワークで送受信するサーバーを実装しています。これにより、ネットワーク上の別のパソコンにオプションプログラムのようなプログラムを実行してGICPを通信することができます。

送信する場合はポート番号に55555、IPアドレスはデスクトップ上(ローカル)ならば127.0.0.1、ネットワークならば送り先とする『Fy Mascot』が稼働しているコンピュータのIPアドレスを記述して送信します。さらに接続を維持した状態でGICP RETURNを受信します。

送信時に『master』要素の『detail』に自身のIPアドレスとポートを記述すると、『Fy Mascot』からのGICPの通信を受信することができます。受信した場合は接続を維持した状態でGICP RETURNを返信してください。

NETWORKの『detail』の例
<detail><address>127.0.0.1:55556</address></detail>

※ 送信側のアプリケーションが同一デスクトップ上でポート番号が55556の場合の例。

・MESSAGE

『Fy Mascot』ではウィンドウメッセージのWM_COPYDATAを使ってGICP Liteをアプリケーション間で送受信するサーバーを実装しています。これにより、デスクトップ上の別のアプリケーションと手軽にGICPを通信することができます。

外部プログラムから送信する場合は、FindWindow関数を使って ウィンドウクラス名が"FyMascotSystem"のウィンドウに向けてWM_COPYDATAメッセージをSendMessageで送信します。lParamとして送るCOPYDATASTRUCTは以下のデータを入れます。

COPYDATASTRUCT
ULONG_PTR dwData; //特に使いません
DWORD cbData; //文字列のバッファのサイズ
PVOID lpData; //文字列のバッファのポインタ

SendMessage関数の戻り値でGICP RETURNコードを返します。

※本来WM_COPYDATAの戻り値は処理した場合1、それ以外は0と規定されていますが、細かいことは気にしない方向で(笑)

送信時に『master』要素の『detail』に自身のウィンドウハンドルの値(数値)を記述することで、そのウィンドウハンドルのWM_COPYDATAで『Fy Mascot』からのGICP Liteの通信を受信することができます。プロシージャの戻り値として結果を返します。

MESSAGEの『detail』の例
<detail><handle>123456789</handle></detail>

※ 受信するウィンドウのウィンドウハンドルが123456789の例。

NOTICE

NOTICEクラスは、『思考エンジン』や『オプションプログラム』にイベントを通知するのに利用されるクラスです。『思考エンジン』は、このメッセージをもとにモーションやセリフの反応をします。『Fy Mascot』、『思考エンジン』、『オプションプログラム』は、このメッセージを使って各種情報をやりとりします。

たとえば、起動したら『Fy Mascot』は『思考エンジン』や『オプションプログラム』に『起動』という情報をNOTICEクラスのメッセージで送ります。『思考エンジン』はそれに対して『こんにちは!』というセリフを『Fy Mascot』に送るといった具合です。

NOTICE-EXECUTIONは『Fy Mascot』から『思考エンジン』や『オプションプログラム』に対してイベントを送り、NOTICE-REQUESTが『思考エンジン』や『オプションプログラム』から『Fy Mascot』と搭載されている『思考エンジン』や『オプションプログラム』すべてにイベントを送ります。

NOTICE-EXECUTION 『Fy Mascot』→『思考エンジン』や『オプションプログラム』
NOTICE-REQUEST 『思考エンジン』や『オプションプログラム』→『Fy Mascot』と全体

NOTICE-EXECUTION [from Mascot]

『Fy Mascot』からイベントを送るときに使用されます。

GICP

『event』

『event』の中には『information』と『parameter』があり、イベントの種類を記述します。『思考エンジン』や『オプションプログラム』が独自のイベントを作ることもできます。『information』と『parameter』はそれぞれ半角英数255文字以下です

『information』 『parameter』 意味
NOTICE START マスコット(キャラクター)が起動した。
NOTICE EXIT(※) マスコットに終了コマンドが送られた。
NOTICE STANDBY マスコットがスタンバイ状態になった。
NOTICE WAKEUP マスコットがスタンバイ状態から復帰した。
NOTICE CHAT 何かしゃべって。
NOTICE NOTSUPPORTED 対応していないオーダー・パラメータが実行された。
NOTICE HEALTHCARE パソコンが起動してから一定時間が経過した(休息を促す)。
NOTICE BACKSEAT スクリーンセーバーが解除された(席に戻った=声をかける)。
NOTICE RESOURCE リソースの使用率が高い。
NOTICE INSTALL キャラクター・テーマ・オプションプログラムがインストールされた。
NOTICE CHANGECHARACTER キャラクターが変更された。
NOTICE DROPFILE キャラクターにファイルがドロップされた。
CLICK (アタリ名) キャラクターがツツかれた。
STROKE (アタリ名) キャラクターがナデられた。
TALK START セリフが開始された。
TALK FINISH セリフが終了した。
TALK SCRIPTDATA セリフにスクリプトデータタグがあった。
MESSAGE (任意) キャラクターに情報をしゃべってもらう。

※『思考エンジン』はEXITイベントを受け取ったら、セリフの後に必ずSYSTEM-EXITを『Fy Mascot』に送って終了させてください。そうしないとメニューで『終了』を選んでも終了しなくなってしまいます!

『data』

『data』はイベントによって異なっていて、各イベントのパラメータやデータを記述します。

『event』 『data』
NOTICE-START  
NOTICE-EXIT  
NOTICE-STANDBY  
NOTICE-WAKEUP  
NOTICE-CHAT
NOTICE-NOTSUPPORTED <word>入力された文字</word>
NOTICE-HEALTHCARE <hour>起動してからの経過した時間</hour>
NOTICE-BACKSEAT <minute>席を離れていた時間(分)</minute>
NOTICE-RESOURCE <device>デバイス</device>
・CPU ・・・ CPUの負荷が高い。
・MEMORY ・・・ メモリの使用率が高い。
NOTICE-INSTALL <type>タイプ</type>
・CHARACTER ・・・ キャラクター
・THEME ・・・ テーマ
・OPTION ・・・ オプションプログラム
<name>インストールされたものの名前</name>
NOTICE-CHANGECHARACTER <name>交代後のキャラクターの名前</name>
NOTICE-DROPFILE <path>ドロップされたファイルのパス</path>
CLICK-(アタリ名) <status>クリックのステータス</status>
・LEFT ・・・ クリック
・RIGHT ・・・ 右クリック
<point>
<x>クリック場所のX座標</x>
<y>クリック場所のY座標</y>
</point>
STROKE-(アタリ名) <point>
<x>ストローク場所のX座標</x>
<y>ストローク場所のY座標</y>
</point>
TALK-START <script>セリフのスクリプト</script>
・後述のTALK-EXECUTIONの『script』の中身
TALK-FINISH <status>終了ステータス</status>
・COMPLETION ・・・ 最後まで話した。
・BREAK ・・・ 途中で中断した。
TALK-SCRIPTDATA <scriptdata>スクリプトデータ</scriptdata>
・後述のTalk Scriptの\d[]タグ内の文字列
MESSAGE-(任意) <sender>送り手の名前</sender>
※senderは半角英数255文字以下(全角なら100文字程度)です
<string>しゃべってもらいたい情報(言葉)</string>
<priority>TALK-EXECUTION実行時のプライオリティ</priority>

『userdata』

『Fy Mascot』は下記のイベントに対して『userdata』を追加します。

『event』 『userdata』
TALK-START ・後述のTALK-EXECUTIONの『userdata』の中身
TALK-FINISH ・後述のTALK-EXECUTIONの『userdata』の中身
TALK-SCRIPTDATA ・後述のTALK-EXECUTIONの『userdata』の中身
MESSAGE-(任意) (任意) ※『オモヒカネ』に独自の拡張機能搭載

サンプルのキャラクターには『オモヒカネ』という『思考エンジン』を搭載しています。『オモヒカネ』には『userdata』を使った独自の拡張機能が搭載されており、スクリプトなどを上手に使うことでオリジナルのキャラクターを実現できるようになっています

GICP RETURN

『result』

終了ステータスとしてGICP RETURNの『result』を記述します。

NOTICE-REQUEST [to Mascot]

『思考エンジン』や『オプションプログラム』から『Fy Mascot』経由でNOTICE-EXECUTIONを送ってもらいます。これにより、例えば『音声認識の結果』や『ジェスチャー』などを、標準で対応している他の情報と同じようにNOTICE-EXECUTIONのイベントとして送ることができます。

GICP

NOTICE-EXECUTIONと同じで、その情報はそのままNOTICE-EXECUTIONとして『思考エンジン』や『オプションプログラム』に送られます。『userdata』がある場合もそのままNOTICE-EXECUTIONの『userdata』として送られます

GICP RETURN

終了ステータスとしてGICP RETURNの『result』が記述されます。

TALK

TALKクラスは、『Fy Mascot』にセリフをしゃべってもらうときに使用するクラスです。

TALK-EXECUTION [to Mascot]

セリフをしゃべってもらいます。

GICP

『priority』

キャンバスへの優先順位を記述します。既にキャンバスにセリフが表示されている場合は、どちらを優先するか判断する必要があります。『Fy Mascot』では双方の『priority』パラメータを比較して、どちらが優先されるかを判定しています。世のお父さんはがんばっています(笑)。

TYPE 意味
WIFE 競合相手がWIFE以外ならば優先されます。
ユーザーの操作によるものなどを想定しています。
DAUGHTER 競合相手がMEならば優先されます。
意味のある通知、伝えたい通知などを想定します。
ME しゃべっている間は容赦なくはじかれます。
ランダムで独り言を発する場合などを想定しています。

優先の場合は、既に表示されていた内容はキャンセルボタンを押されたのと同じ処理をして終了させて、優先された方の内容が新たに表示されます。優先されなかった場合は表示されず、GICP RETURNの『result』要素に『CONFLICT』が入ります。

『script』

セリフを『\(円マーク)』を使ったTalk Scriptで記述します。なお、『\』は文字としての『\』なので、C言語などのプログラム内部では'\\'と記述します

スクリプト記号 意味
\n 改行します。
\w[数字] 次の文字を表示するまで間をおきます。
(数字は何ミリ秒待つかを記述)
\e 表示したセリフを消去します。
\m[モーションセット] モーションセットを実行します。
半角英数字で255文字以内です。
\d[文字列] セリフの表示がこの部分に来たタイミングで[]内の文字列を
NOTICE-EXECUTIONのTALK-SCRIPTDATAイベントで送ります。
音声読み上げ機能との連動などを想定しています。
\\ \(円マーク)を表示します。
(\\を表示したい場合は\\\\と記述)

GICP RETURN

『result』

終了ステータスとしてGICP RETURNの『result』が記述されます。

TALK-BREAK [to Mascot]

セリフを中断してもらうときに使用します。例えば対話などでユーザーが入力を行った場合にまだ表示しているセリフを中断させて次の表示を行うことができます。

GICP

なし

GICP RETURN

『result』

終了ステータスとしてGICP RETURNの『result』が記述されます。

『status』

STATUS 意味
HALT セリフは表示していなかった。
RUN セリフが表示中だった。

『script』

『status』がRUNだった場合、表示中のTalk Scriptが記述されます。

『userdata』

『status』がRUNで、表示中のセリフを送ったTALK-EXECUTIONに『userdata』があった場合は、その内容が記述されます。

MOTION

『Fy Mascot』にモーションをやってもらうときのクラスです。

MOTION-EXECUTION [to Mascot]

『Fy Mascot』のキャラクターにモーションをやってもらうときに使用するメッセージです。

GICP

『motion』

モーションセットを記述します。

GICP RETURN

『result』

終了ステータスとしてGICP RETURNの『result』が記述されます。

FUNCTION

『Fy Mascot』では、テキストボックスに入力した言葉で『思考エンジン』や『オプションプログラム』に何かをやってもらうことができます。

picture

このメッセージは『オーダー』と『パラメータ』の2つで構成されています。上の例だと『LAUNCH』が『オーダー』で、『ペイント』や『メモ帳』などが『パラメータ』になります。『オーダー』はプログラムの方で決められた単語の中から選ぶ必要がありますが、『パラメータ』はユーザーの自由入力も認められます。

『Fy Mascot』は予め、『思考エンジン』と『オプションプログラム』に対してどのような『オーダー』があるのかをFUNCTION-GETFUNCTIONで取得します。ユーザーによって『オーダー』が入力されたら、今度は同じくFUNCTION-GETFUNCTIONで『パラメータ』を取得します。

『オーダー』と『パラメータ』が確定されたら、その機能を持った『思考エンジン』か『オプションプログラム』にFUNCTION-EXECUTIONが実行されます。

また、『思考エンジン』や『オプションプログラム』は、FUNCTION-LISTを使って『Fy Mascot』に搭載されている『思考エンジン』と『オプションプログラム』の『オーダー』の一覧や『パラメータ』の一覧を取得することができます。

そして、FUNCTION-REQUESTによってテキストボックスに入力されたのと同じように任意の機能を実行することができます。

FUNCTION-GETFUNCTION [from Mascot]

『Fy Mascot』から『思考エンジン』と『オプションプログラム』に対してどのような『オーダー』や『パラメータ』があるのかをFUNCTION-GETFUNCTIONで取得します。この結果はテキストボックスの入力支援や、他の『思考エンジン』や『オプションプログラム』が利用するためのFUNCTION-LISTに使われます。

GICP

『type』

『type』 意味
ORDER 『オーダー』を取得します。
PARAM 『パラメータ』を取得します。

『order』

『type』要素がPARAMの場合のみ追加され、どの『オーダー』のパラメーターを取得するのかを記述します。

GICP RETURN

『result』

終了ステータスとしてGICP RETURNの『result』を記述します。

『function』

対応しているならば『オーダー』か『パラメータ』の一覧を記述します。『パラメータ』の場合は『order』要素が追加され、要求された『パラメータ』が何の『オーダー』の『パラメータ』なのか記述します。一覧は『items』の中の『item』で、項目は1から1つずつ増やしていきます。

『function』
<incantation>
   <result>OK</result>
   <function>
      <order>パラメータ場合はそのオーダー</order>
      <items>
         <item no="1">(オーダー/パラメータ1)</item>
         <item no="2">(オーダー/パラメータ2)</item>
         <item no="3">(オーダー/パラメータ3)</item>
      </items>
   </function>
</incantation>

 

picture

『パラメータ』で任意の文字で対応する場合は、no=1に『*』を記述し以下のような形になります。WEB検索や対話などに使うことができます。

『function』(任意入力)
<incantation>
   <result>OK</result>
   <function>
      <order>オーダー<order>
      <items>
         <item no="1">*</item>
      </items>
   <function>
</incantation>

FUNCTION-EXECUTION [from Mascot]

『Fy Mascot』のテキスト入力にリストにある『オーダー』と『パラメータ』が入力された際に、当該の『思考エンジン』や『オプションプロググラム』に対して送られます。

GICP

『order』

入力されたオーダーが記述されます。

『param』

入力されたパラメータが記述されます。

GICP RETURN

『result』

終了ステータスとしてGICP RETURNの『result』を記述します。

FUNCTION-LIST [to Mascot]

『思考エンジン』や『オプションプログラム』から『Fy Mascot』に『オーダー』一覧や『パラメータ』一覧を取得するために使います。GICPとGICP RETURNは共にFUNCTION-GETFUNCTIONと同じです。

FUNCTION-GETFUNCTIONは、『Fy Mascot』が『思考エンジン』や『オプションプロググラム』などに『オーダー』や『パラメータ』を問い合わせていたのに対して、FUNCTION-LISTは『思考エンジン』や『オプションプロググラム』などが、現在実行中の『Fy Mascot』で使うことができる『オーダー』や『パラメータ』の一覧を問い合わせるイベントです。

GICP

FUNCTION-GETFUNCTIONと同じです。

GICP RETURN

FUNCTION-GETFUNCTIONと同じです。

FUNCTION-REQUEST [to Mascot]

『思考エンジン』や『オプションプログラム』から『Fy Mascot』経由でFUNCTION-EXECUTIONを送ります。これによりテキストボックスに言葉を入力したのと同じように『思考エンジン』や他の『オプションプログラム』に対してFUNCTION-EXECUTIONを送ることができます。

GICP

FUNCTION-EXECUTIONと同じで、その情報はそのままFUNCITON-EXECUTIONとして『思考エンジン』や『オプションプログラム』に送られます。『userdata』がある場合もそのままFUNCTION-EXECUTIONの『userdata』として送られます。

GICP RETURN

終了ステータスとしてGICP RETURNの『result』が記述されます。

SYSTEM

『Fy Mascot』のシステム上の処理を行う際に利用するクラスです。

SYSTEM-EXIT [to Mascot]

『Fy Mascot』を終了させるイベントです。

GICP

『command』

『command』 意味
EXIT 終了

GICP RETURN

『result』

終了ステータスとしてGICP RETURNの『result』が記述されます。