Top > Tips > SAORIの使い方
  トップページへ   [ 一覧 | 検索 | 最終更新 ]   [ 差分 | バックアップ | 凍結 ]

SAORI(SAORI-universal)の使い方

SAORI-universal(dll形式のSAORI)は2種類の返り値(ResultとValue0,Value1...)を持つ。 FUNCTIONEX()自身の返り値はこのResultで、FUNCTIONEX実行後にValue0,Value1...はvalueex0,valueex1...に格納される。 なお、このvalueex*は同名の汎用配列にも格納される。つまりvalueex[0],valueex[1]...としてもよい。

サンプル:

Test{
 _Result = FUNCTIONEX('SAORI\saori.dll',Argument0,Argument1,...)
 valueex0
}

FUNCTIONEXの第一引数はyaya.dllからの相対パスを指定する(上の例ではyaya.dllが置かれているフォルダの中のSAORIフォルダにsaori.dllが置かれている)。 Argument0,Argument1...はsaori.dllの引数。

これにより_Resultにsaori.dllのResultが格納され、Testはvalueex0に格納されている値、つまりValue0を返す。

サンプル

mecabを使って形態素解析を行うSAORI-universalであるkisaragi.dllを使って解説します。

まず解凍後にkisaragiフォルダをghost\master以下に配置してください。複数のSAORIを使う場合はSAORIフォルダを作成し、その中に入れておくと管理し易くなります。以下ではghost\master\SAORIに配置されているとして説明します。

形態素解析を行う関数は

MorphAnalysis{
 _text = "今日はいい天気だ"
 _Rank = FUNCTIONEX('SAORI\kisaragi\kisaragi.dll','parse',_text)
 for _i = 0; _i<_Rank; _i++{
   valueex[_i]+"\n"
 }
}

のように書けます。FUNCTIONEXの第一引数はyaya.dllからの相対パスであることに注意してください。kisaragi.dllの場合、前述した"Result"の返り値は形態素の数、valueexに自動的に格納される"Value"の返り値は解析結果の配列となります。 この関数の場合、実行すると形態素解析結果が改行されて出力されます。

SAORI-basicの使い方および解説

SAORI-basicはコマンドライン引数(main関数がとる引数)を引数とし、標準出力を返す.exeのことを指します。 例えばC++で

#include <iostream>
using namespace std;
int main(int argc,char *argv[]){
 //argv[0]にはプログラム名前(ほにゃらら.exe)が入り、mainに渡す引数はargv[1]からになります
 cout<<"入力は"<<argv[1]<<endl;
}

のようなプログラムをexeファイルとしてコンパイルすれば、これだけでSAORI-basicになります(コンパイル時には静的ビルドなどで依存環境を切っておくことを推奨します)

ゴーストでこのSAORI-basicを使いたい場合はPROXY.DLL(このほかに多少仕様を変更したproxy.dllとして proxy.dll、および.exeファイルでuniversalと同じ仕様をするようにしたproxy2.dllがある)を通して使います。

SAORI-basicの場合、FUNCTIONEXの返り値はmain関数の標準出力のみとなります。(proxy2.dllではSAORI-universalのような形式も可能です)使い方は

_結果 = FUNCTIONEX('SAORI\proxy.dll', 'ほにゃらら.exe', Argument0, Argument1,...)

このようになりますが、第二引数はyaya.dllではなくproxy.dllからの相対パスであることに注意してください。この例では両者が同じ階層に置かれていることを想定しています。

※注:ここでのArgument*はsaori.exeのコマンドライン引数(すなわち前述のC++の例ではargv)を指します

サクラスクリプト再生中にSAORIを使う

こちらのページに解説があります。
音を鳴らす