Top / YAYA as SAORI
  トップページへ   [ 一覧 | 単語検索 | 最終更新 ]   [ 差分 | バックアップ ]

*YAYA as SAORI [#o02c2104]

**概要 [#v6559840]
摂理氏作、yaya.dllをSAORIとして呼び出すモジュールです。~
YAYA以外のSHIORIからYAYAの機能を使う事が可能になります。~
~
デフォルトの状態ではYAYAのビルトイン(システム)関数のみ利用できます。~
追加モジュールを導入することにより更に用途が広がります。YAYAの文法がわかる人はこの追加モジュールを自分で作成することができます。~

**ダウンロード [#s8da38b1]
-&attachref(./yaya_as_saori_2015_12_30.zip);

**追加モジュール [#x4604829]
-[[calendae>http://gallnuts.webcrow.jp/etc/etc.shtml]]
-[[calendae>http://gallnuts.webcrow.jp/dump.shtml]]
--暦に関する計算機能モジュール。
-[[sub-edittext>http://gallnuts.webcrow.jp/etc/etc.shtml]]
-[[sub-edittext>http://gallnuts.webcrow.jp/dump.shtml]]
--テキストファイルの編集機能モジュール。
-[[ssu.aym>http://rabbitbike.oh.land.to/nicky/log200803.html]]
--ssu(里々同梱SAORI)と同じ動作をさせる。
-[[Reta>http://navy.nm.land.to/post/]]
--テキストファイルやインストールされてるゴーストのシェル名、文/里々/華和梨/美坂のセーブデータを読み取る。

**解説サイト [#x29fb7ef]
-[[外部関数/yaya - 里々Wiki>http://soliton.sub.jp/satori/index.php?%B3%B0%C9%F4%B4%D8%BF%F4%2Fyaya]]
--里々から利用する方法の解説。
-[[AYA as SAORI里々向け簡易解説>http://navy.nm.land.to/post/a_a_s.html]]
--AYA as SAORIの方の解説ですがYAYA as SAORIでも利用可能(ただしYAYAから追加された関数は無し)

**デモゴースト [#f42bf566]
-[[紺野さやめ>http://navy.nm.land.to/post/]]
--里々用デモゴースト。同梱されているSAORIのバージョンが古いため、入れ替え推奨。

**モジュールの自作 [#g9f48a79]
-通常の辞書と同じように、[[yaya.txt>1.基礎設定]]に追記することで自由に追加できます。
~慣習上「.aym」という拡張子(※aya moduleの略)にする事が多いですが、それ以外であっても動作に影響はありません。
-SAORIの引数は、モジュール内でREQ.ARGS[*]という配列に格納されています。
~Argument0はREQ.ARGS[0]で、それ以降も同様です。
-SAORIの戻り値は、モジュール内でRES.RESULTおよびRES.VALUE*という変数に代入する事で返却します。
~単数戻り値ResultはRES.RESULTに、複数戻り値Value*はそれぞれ一つずつRES.VALUE*に返却します。
~RES.VALUE*は''配列ではない''事に注意してください。代入にはシステム関数[[LETTONAME]]が便利であるかもしれません。
-もし引数が不正等の理由から、SAORIとしての機能が正常に実行出来なかった場合には、関数の戻り値として(SAORI戻り値ではなく)数値-1を返却します。
~YAYA as SAORIシステム部が戻り値として-1を受け取ると、不正な呼び出しとしてエラーを通知します。
~この時、YAYAのシステム関数[[LOGGING]]を利用して、エラーが発生したSAORI関数名とエラーの説明をログに残す事が推奨されます。
-関数名は自由に設定して構いませんが、「モジュール名.関数名」といった組成にすることには少なくとも二つ意味があります。
--一つは、そうした組成の関数名について、YAYA as SAORIはモジュールのロード・アンロード用の仕組みを提供していることです。
~モジュール名.関数名というピリオドを含む関数名が呼び出された時、YAYA as SAORIはモジュール名の部分を記憶します。
~そして、同一のモジュール名を持つ関数が始めて呼ばれたときに、''モジュール名.Load''という関数がないかを探し、あれば実行します。
~また、yaya.dllがアンロードされるとき、''モジュール名.Unload''という関数がないかを探し、あれば実行します。
~モジュール全体にわたって共通のグローバル変数を利用するような場合には、初期化・後始末にこうした仕組みを利用できるでしょう。
--もう一つは、このようにモジュール名を関数名の前に冠しておくことで、いくらか関数名が重複しにくくなることです。
~モジュールは異なる複数人が作成した物が共存することがありますし、当然一人で複数のモジュールを個別に作ることもあります。
~そうした場合を想定してこのように命名しておけば、関数名が重複するリスクをある程度低めることができるでしょう。