詳しいマニュアルではありません


#contents

#br



*Q&A [#q8b7639f]

-Q.saoriをなんだか理解しているでしょうか?
-A.筆者はあまり理解していません

-Q.返り値と戻り値ってどう違うんですか?同じだって聞いたんですけど
-A.IMEだと「戻り値」で一つの単語として変換できるぞ!

-Q.なんで戻り値を返すんですか?
-A.ごみばこブッ飛ばすsaoriは、成功したかどうか返してくれなきゃゴーストが対応できないでしょうが!

-Q.じゃあ戻り値を返さないsaoriもあるんですか?
-A.あるかもしれません


*華和梨をsaoriとして使う [#hca52d49]

-華和梨で(ミドルウェアを使わずに)ゴーストを作るか、作ろうとした経験があった方がいいかも
-kawarirc.kisってなに?っていう人はまず華和梨ねえさんに手取り腰取り教えてもらいなさい

**saoriの決まりを覚えておこう [#s3ffe189]

-仕様書を読んでみましょう

>SAORIを呼び出す側は返り値のステータスコードによって適切なエラー処理を行う必要がある

-うわーめんどくせー

>200 OK - 正常終了  SAORIモジュールの呼び出しは正常に終了した。 
>204 No Content - 返り値なし  処理は正常に行われたが、結果として返す値はなかった。 
>400 Bad Request - 呼び出しの不備  引数の数、内容の不一致。リクエストの内容が解釈不能など。 
>500 Internal Server Error - SAORI側エラー  SAORIモジュール側でなんらかのエラーが発生した。 

-よーしつまりいつでも200を返せばいいってことだね!
-誰かに配布するわけでなし自分で使うだけだからいいよね!
-ていうかここしっかり作っても労力ばっかりで得しないんだよね!

-作註) 本当はいけないことです。責任のある大人と一緒に遊びましょう



*使うには何が必要なの? [#tfcafbf0]

ズバリこの2つだ!

-kawari.dll
-kawarirc.kis

**kawarirc.kisの中身 [#re89bdc2]

-kawarirc.kisの中身は、しおりこーるばっく?とかそこらへんのは不要!いらないんだぜ
-ただしsatori_conf.txtの@SAORIに kawari,kawari.dll とか、華和梨をさおりとして定義するのは大前提


*超簡単なソース [#qc03073c]

 System.Callback.OnSaoriExecute : $(
 	clear 戻り値;
 
 	# kawari.(R0)にジャンプ。この先で${戻り値}も設定すること。
 	entry kawari.${System.Request.Argument0};
 
 	# 戻り値とステータスコードの設定
 	setstr System.Response.Result ${戻り値};
 	setstr System.Response 200;
 )

>System.Request.Argument0 ... 引数。(paint,あい,いらん)の、「あい」が0。「いらん」が1。
>System.Response.Result ... この変数に戻り値を突っ込め!
>System.Response ... この変数にステータスコードを突っ込め!

-これをkawarirc.kisに書いておくだけでおk。やったね!かんたんだね!
-おいステータスコードいつも200返すつもりk(
-しらn(

***ふろく:正しい(かも知れない)ステータスコードの返し方 [#p7d01095]

順番に条件分岐するんだ

-なんか引数がいろいろ間違って渡されたんだけどぉ?
--$(setstr System.Response 400)にしてから終わらせるんだCJ 作戦失敗だ
-処理したけど ${戻り値} の中身がカラだ
--$(setstr System.Response 204)にしてから終わらせるんだCJ 一応作戦は成功だ
-ここまでの条件に合ってないんだ。これって成功か?
--$(setstr System.Response 200)にしてから終わらせるんだCJ ノープロブレムだ
--$(setstr System.Response.Result ${戻り値})も忘れるなよ

**戻り値を複数返したいんだがどうしたらいい? [#y4902ab2]

-ごめんちょっと待って華和梨のマニュアル読んでくるから


*で具体的に何ができんのさ [#ab145789]

-僕はこんな関数を作ったことがあるんだ

 =kis
 # $(satori_svget ディレクトリ名 欲しい値)
 #
 # 例 $(satori_svget "Iron_Dream" "$起動回数")
 # ゴースト「鉄の夢」のセーブデータから$起動回数の値を得る。
 function satori_svget $(
 	if $[ $(size @arg) != 3 ] $(return "false");
 	setstr @a $@arg[1];
 	textload @b ..\..\..\${@a}\ghost\master\satori_savedata.txt;
 	set @i 0 ; loop $(size @b) $(split @c $@b[${@i}] "	" ; inc @i);
 	return $@c[$[ $(find @c $@arg[2]) + 1 ]];
 );
 =end

-もちろんこのままじゃあ使えない、そこでこいつをコピペして使えるようにする

 # 里々で使う例 (kawari、呼び出すエントリ、フォルダ名、欲しい値)
 # 
 # 実際に使う例 (kawari、セーブデータを読む、Iron_Dream、$起動回数)
 # これでこの括弧はゴースト「鉄の夢」のセーブデータの$起動回数の値に置換される!
 
 kawari.セーブデータを読む : (
 	setstr @a ${System.Request.Argument0};
 	textload @b ..\..\..\${@a}\ghost\master\satori_savedata.txt;
 	set @i 0 ; loop $(size @b) $(split @c $@b[${@i}] "	" ; inc @i);
 	setstr 戻り値 $@c[$[ $(find @c ${System.Request.Argument1}) + 1 ]];
 )

-Q.ディレクトリ?
-A.MS-DOSの名残なんだよフォルダとかって慣れねえよ


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS