基本的に伺かのゴーストを作成するときは里々やYAYAなどのSHIORI及びさくらスクリプトを用いて処理を書く。伺かにはSHIORI以外の汎用言語(例えばCなど)で書かれた処理を実装する機能が存在する。これを「SAORI」サブシステムと呼び、これを利用することでより高度な処理の実装が可能になる。SAORIにはSAORI-basicとSAORI-universalと呼ばれる2種類の規格が存在しており、前者はexe形式、後者はdll形式による実装である。SAORI-basicはコマンドライン引数(main関数がとる引数)を引数とし、標準出力を返す.exeのことを指す。これを.exeとしてコンパイルすれば(コンパイル時には依存環境を切るため静的ビルドを推奨(例えばMinGW(gcc)なら-staticオプションを付けるなど))、これだけでSAORI-basicとして使うことができる。伺かの標準的な文字コードがUTF-8ではなくShift-JISである点に注意。YAYAでSAORI-basicを使うにはFUNCTIONEX関数とproxy_ex.dll(配布元はhttps://github.com/ponapalt/csaori/releases/)を利用する。これはパイプとしてSHIORI(YAYA)とSAORIの間を繋ぐプログラムである。FUNCTIONEXの第一引数はyaya.dllからproxy_ex.dllへの相対パス、第二引数はproxy_ex.dllからSAORI-basic本体への相対パスを指定する。第三引数以降はSAORI-basicに渡す引数である。SAORI-basicの返り値は標準出力であるため、普通は一つの文字列しか返すことができない。YAYAの機能である「デリミタ(区切り文字)による簡易配列」やSPLIT関数を用いることで返り値を配列として扱うことができる。ように変数名[序数,"デリミタ"]とすることで配列であるかのように扱うことができる。デリミタを複数用意することで多次元配列のような処理も可能である。配列のサイズを取得したいときなど、簡易配列でなく汎用配列として扱いたいときはSPLIT関数を用いる。以上の方法を用いれば、SAORI作成時にデリミタを使って文字列を出力するようにすることで出力を配列として扱うことが可能になる。Protocolではない}の知識が必要である。SAORI-basicとは異なり2種類の返り値(ResultとValue0,Value1...)を持つ。(仕様についての詳細はhttp://www.boreas.dti.ne.jp/~sdn/saori.htmlを参照のこと。FUNCTIONEX自身の返り値はResultで、FUNCTIONEX実行後にValue0,Value1...はグローバルな配列であるvalueex[0],valueex[1]...に格納される。これはsaori.dllという名前のSAORI-universalを呼び出している例である。FUNCTIONEXの第一引数「'SAORI/saori.dll'」はyaya.dllからsaori.dllへの相対パス、以降のArgumentはsaori.dllに渡す引数である。Pythonには科学計算やニューラルネットワークなどに関するライブラリが豊富に存在する。インタプリタ型言語であるため実行するにはPC本体にPython環境が必要となり、これはゴーストの処理を実装する観点としてはユーザ側に環境構築を要請してしまうためそのまま配布するのには向いていない。.pyを依存するdllなどを含めて.exeにコンパイルすれば単体で実行可能なプログラムとして配布できる。そこで本節ではpythonで書かれたプログラムをSAORI-basicとして実装する方法を解説する。このままではPython環境があるPC上でないと実行出来ない。後述するPyInstallerを用いればこれをimportしたパッケージも含めて配布可能な.exeにすることができる。py2exeなど)するが、Python3.x系列に対応していて現在もアップデートが行われているのはPyInstallerのみである。インストール可能である。実行した後同フォルダ上に生成された「dist」フォルダ内の「プログラム名.exe」を実行すればPythonで書いた処理を出力できる。することで一つの実行ファイルにまとめて.exeにコンパイルすることができる。--onefileにした方がプログラムのサイズは小さくなるが、動作速度は遅くなる場合があるため、重い処理ではonefileを使用しない場合を推奨する。PyInstallerを実行すると.specという拡張子のファイルが同時に生成される。これはコンパイルの際に参照する設定ファイルであり、基本的に何も指定しなくても自動で最適な設定で処理をしてくれるが、場合に応じてこの.specファイルを編集してもよい(特に無限ループ判定の閾値の部分は処理によっては再定義する必要がある)。この場合は以下のようにspecファイルを渡して実行する。基本的に伺かのゴーストを作成するときは里々やYAYAなどのSHIORI及びさくらスクリプトを用いて処理を書く。伺かにはSHIORI以外の汎用言語(例えばCなど)で書かれた処理を実装する機能が存在する。これを「SAORI」サブシステムと呼び、これを利用することでより高度な処理の実装が可能になる。SAORIにはSAORI-basicとSAORI-universalと呼ばれる2種類の規格が存在しており、前者はexe形式、後者はdll形式による実装である。SAORI-basicはコマンドライン引数(main関数がとる引数)を引数とし、標準出力を返す.exeのことを指す。これを.exeとしてコンパイルすれば(コンパイル時には依存環境を切るため静的ビルドを推奨(例えばMinGW(gcc)なら-staticオプションを付けるなど))、これだけでSAORI-basicとして使うことができる。伺かの標準的な文字コードがUTF-8ではなくShift-JISである点に注意。YAYAでSAORI-basicを使うにはFUNCTIONEX関数とproxy_ex.dll(配布元はhttps://github.com/ponapalt/csaori/releases/)を利用する。これはパイプとしてSHIORI(YAYA)とSAORIの間を繋ぐプログラムである。FUNCTIONEXの第一引数はyaya.dllからproxy_ex.dllへの相対パス、第二引数はproxy_ex.dllからSAORI-basic本体への相対パスを指定する。第三引数以降はSAORI-basicに渡す引数である。SAORI-basicの返り値は標準出力であるため、普通は一つの文字列しか返すことができない。YAYAの機能である「デリミタ(区切り文字)による簡易配列」やSPLIT関数を用いることで返り値を配列として扱うことができる。ように変数名[序数,"デリミタ"]とすることで配列であるかのように扱うことができる。デリミタを複数用意することで多次元配列のような処理も可能である。配列のサイズを取得したいときなど、簡易配列でなく汎用配列として扱いたいときはSPLIT関数を用いる。以上の方法を用いれば、SAORI作成時にデリミタを使って文字列を出力するようにすることで出力を配列として扱うことが可能になる。Protocolではない}の知識が必要である。SAORI-basicとは異なり2種類の返り値(ResultとValue0,Value1...)を持つ。(仕様についての詳細はhttp://www.boreas.dti.ne.jp/~sdn/saori.htmlを参照のこと。FUNCTIONEX自身の返り値はResultで、FUNCTIONEX実行後にValue0,Value1...はグローバルな配列であるvalueex[0],valueex[1]...に格納される。これはsaori.dllという名前のSAORI-universalを呼び出している例である。FUNCTIONEXの第一引数「'SAORI/saori.dll'」はyaya.dllからsaori.dllへの相対パス、以降のArgumentはsaori.dllに渡す引数である。Pythonには科学計算やニューラルネットワークなどに関するライブラリが豊富に存在する。インタプリタ型言語であるため実行するにはPC本体にPython環境が必要となり、これはゴーストの処理を実装する観点としてはユーザ側に環境構築を要請してしまうためそのまま配布するのには向いていない。.pyを依存するdllなどを含めて.exeにコンパイルすれば単体で実行可能なプログラムとして配布できる。そこで本節ではpythonで書かれたプログラムをSAORI-basicとして実装する方法を解説する。このままではPython環境があるPC上でないと実行出来ない。後述するPyInstallerを用いればこれをimportしたパッケージも含めて配布可能な.exeにすることができる。py2exeなど)するが、Python3.x系列に対応していて現在もアップデートが行われているのはPyInstallerのみである。インストール可能である。実行した後同フォルダ上に生成された「dist」フォルダ内の「プログラム名.exe」を実行すればPythonで書いた処理を出力できる。することで一つの実行ファイルにまとめて.exeにコンパイルすることができる。--onefileにした方がプログラムのサイズは小さくなるが、動作速度は遅くなる場合があるため、重い処理ではonefileを使用しない場合を推奨する。PyInstallerを実行すると.specという拡張子のファイルが同時に生成される。これはコンパイルの際に参照する設定ファイルであり、基本的に何も指定しなくても自動で最適な設定で処理をしてくれるが、場合に応じてこの.specファイルを編集してもよい(特に無限ループ判定の閾値の部分は処理によっては再定義する必要がある)。この場合は以下のようにspecファイルを渡して実行する。(プログラム名).specテキスト整形のルールを表示する投稿時にパスワードを問うダイアログが出ます。これはSPAM避けを目的としたものです。アルファベットで、ユーザー名「さくら(6文字)」パスワード「うにゅう(4文字)」です。