伺か Advent Calendar 2023 の18日目の記事です。
昨日は日野さんの トークを読み上げる自作プラグインの紹介 です。
この記事ではGithubに点在するSHIORI達の紹介などしてみます。
2023/12/18時点での情報であることに注意してください。
対象は 開発リンク集 および 目次(開発系):伺か。の略歴 に載ってないもの。
ほぼ間違いなく全部は網羅していないと思います。
なお、基本的に動作確認はしていないので動かないものもあるかも。
トークを書きやすくするための工夫がされているもの。 チェイントークが書けるようになっているとか。
SHIORIの再配布条件などが記されている。 辞書やSAORI、シェルなどには関係ない。 関係ないけど、ライセンスが無いとライセンスマニアが いちゃもんつけてくるかもしれない。
ミドルウェアの有無はオレオレ基準で決めてます。
間違いがあったらごめんなさい。
SHIORI名 | 言語(※1) | ミドルウェア | 備考 |
---|---|---|---|
aktk | mRuby | ※2, ※3 | |
csaori | C++ | ※2, ※4 | |
cshiori | C言語 | ※2 | |
dktrtk | AngelScript | ※2, ※3 | |
D.N.Proxy | C# | ※3 | |
emo-rs | Rust + Lua | ○ | ※2, ※5 |
kagari | Lua | ○ | ※5 |
Kanahebi | IronPython | ※3, ※4 | |
krht | Tcl | ※2, ※3 | |
lib_skeleton | C++ | ※2, ※4 | |
phiori | Python | ○ | |
Rosalind | C# | ○ | ※5, ※6 |
sana | Ruby | ○ | ※6 |
sanajk | JavaScript/TypeScript | ○ | ※5, ※6 |
shioridll-nim | Nim | ※2 | |
shiorigo | Go | ※2 |
-
※1. 辞書を書く時に直接/間接問わずに、使えるであろう言語を記載。
-
※2. DLLは自分でビルドする必要あり。
-
※3. SHIORIプロトコルのパース処理から入る必要あり。
-
※4. as SAORIが楽に出来る。(プロトコルのパース処理などを自動でやってくれる)
-
※5. SakuraScript記述専用の記法がある。
-
※6. shiolinkが必要。
C++ + mrubyなSHIORI。
mrubyは組み込み向けのRubyらしい。
ドキュメントは見つからなかった。 1からSHIORIを作りたい人向け。
ライセンスは不明。
C++のSHIORI。
SAORI/PLUGIN用だけどcsaori.hを参考にすれば cshiori.h、ひいてはSHIORIも作れるはず。
入出力がstring_t(wstring)なので 文字コードを意識せずに済むのが特徴。
ライセンスは伺かゴースト用ライセンス or 修正BSD。
C言語のSHIORI。
動的に生成したSakuraScriptを返すときは static/globalなcharの配列/ポインタを用意してそこに書き込む形になる…のかな? C言語に自信ニキ教えて。
ライセンスはzlib。
C++ + AngelScriptなSHIORI。
AngelScriptはC++ライクなスクリプト言語らしい。
ドキュメントは見つからなかった。 1からSHIORIを作りたい人向け。
ライセンスは不明。
C#のSHIORI。
Visual Basicにも対応しているらしい。
Releaseページの dnproxy.narが参考になるかも。 とはいえこのままだと書きづらい気がする。
ライセンスはCC0。
これを使ったゴーストは クローラ&ロダ がある。
Rust + LuaなSHIORI。
Rustの処理をLua側から呼び出せるようになっているっぽい? 実質2言語使える。すごい。
ドキュメントは見つからなかった。
ライセンスはMIT。
これを使ったゴーストは えも? がある。
C++ + LuaなSHIORI。 作者俺。←コレガヤリタカッタダケー
ミドルウェアは kotori に分離してある。 SAORIも動くおまけ付き。
動作にはlua54.dllが必要。
ライセンスはMIT。
これを使ったゴーストは 盤上の隅っこで がある。
C# + IronPythonなSHIORI。
ukastreamが必要(プロジェクトに内蔵)。
SAORIとして利用する際にPythonの機能を使いたい場合は、 C#からPythonを呼び出す必要あり。
ドキュメントは見つからなかった。
ライセンスは不明(Apache 2.0互換)。
C++ + TclなSHIORI。
ドキュメントは見つからなかった。 1からSHIORIを作りたい人向け。
ライセンスは不明。
C++のSHIORI。 作者俺。
作っておいてアレだけどcsaoriで十分な気がしている。
ドキュメントは無い。
ライセンスはMIT。
C言語 + PythonなSHIORI。
元の配布ページ のものはビルド出来なかったりバグがあったりしたので直した。 元のものとセーブデータの互換性がないので注意。
python3.5からpython3.12へ更新したので Windows7以前のものでは動かないかもしれない。
動作にはpython312.dll他色々必要。
example.pyとphioriモジュールに大体のことは書いてある。
ライセンスはDLLがLGPL-3.0、phioriモジュールがMIT。
C#のSHIORI。
内部で使っている機能の関係で.NET Framework4.6以降が必要。
ドキュメントはREADMEを参照のこと。
ライセンスはMIT。
RubyのSHIORI。
ドキュメントはREADMEに書かれていることがすべて。シンプル。
ライセンスはMIT。
JavaScript/TypeScriptのSHIORI。
create-sanajk-ghost を使うとshiolinkやnodeも揃ったテンプレートを作成出来るらしい。 そのままだと動かないようなので ちょっとした説明 を書いた。参考になれば。
ライセンスはzlib。
これを使ったゴーストは 節美亜シンク がある。
NimのSHIORI。
READMEにも書かれているように、 shioriモジュール を使うと良さそう。
ライセンスはMIT。
GoのSHIORI。
DLLだと終了処理に問題があるらしいので、 shiolink経由にした方が賢明かもしれない。
ドキュメントは見つからなかった。
ライセンスはMIT。
これを使ったゴーストは gohst がある。
- エディタ(Vim,Emacs,VSCodeなど)を用意してsyntaxハイライト機能とlint機能を入れる
絶対にやった方が良い。QoLが向上する。
- C/C++/Rustの勉強
最悪の場合、DLLのソースコードを読むはめになる。どうして…。 Go,Nimはその限りではない。
SAORIは基本的には対応していない。というか、 SHIORIだけで十二分に色んなことが出来るので必要ない、といった方が正しそう。
SHIORIをSAORIとして使う(as SAORI)ことも考えられるが、 (多分)YAYAだと動かない(※)ものがあったりして 一筋縄ではいかないかも。
※ SHIORIのDLLが、依存しているDLLがある場合。LoadLibraryが失敗する。
SHIORIのDLLが配布されていない場合自分でビルドする必要があるが、 もちろん開発環境を用意する必要があるのでアレ。
shiolink/ukastream経由なら関係ないが、 DLLを作る言語=辞書に使う言語なSHIORIの場合、 バグによってはベースウェアが落ちることがある。
SHIORIの説明で2言語の記載があるもの(○○ + ××なSHIORI)は、 理論上2つの言語を利用出来る。 Luaとかmrubyみたいに機能が少ない言語なら2言語をうまく使えるはず。
Q. どれ使えば良い?
A. 好きなの。迷うのであればYAYAなり里々なり華和梨なりで十分なのかも。
Q. どのSHIORIがおすすめ?
A. ミドルウェアがあるSHIORI。
Q. 辞書の書き方わからない。
A. ドキュメントやそのSHIORIを使っているゴーストの辞書を読む。無ければSHIORIのソースコードを、読もう!
Q. エラーが出てDLLがビルドできない。
A. 今ならIssueを立てるかPRを投げるかforkするかが選べるぞ!
これだけあれば気になるSHIORIの1つや2つあるはず。あるよね?いや、あるんですよ。 ぜひぜひ触ってみましょう。
次回はごーとうさんのしらしる!の企画開催準備のこと:後編です。お楽しみに。