Skip to content

Instantly share code, notes, and snippets.

@Tatakinov
Last active December 21, 2023 12:48
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Tatakinov/cbaabd07069161e316a690b0e1ccbb69 to your computer and use it in GitHub Desktop.
Save Tatakinov/cbaabd07069161e316a690b0e1ccbb69 to your computer and use it in GitHub Desktop.
伺か Advent Calendar 2023 18日目の記事

これは何?

伺か 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が必要。

aktk

配布ページ

C++ + mrubyなSHIORI。

mrubyは組み込み向けのRubyらしい。

ドキュメントは見つからなかった。 1からSHIORIを作りたい人向け。

ライセンスは不明。

csaori

配布ページ/ドキュメント

C++のSHIORI。

SAORI/PLUGIN用だけどcsaori.hを参考にすれば cshiori.h、ひいてはSHIORIも作れるはず。

入出力がstring_t(wstring)なので 文字コードを意識せずに済むのが特徴。

ライセンスは伺かゴースト用ライセンス or 修正BSD。

cshiori

配布ページ

ドキュメント

C言語のSHIORI。

動的に生成したSakuraScriptを返すときは static/globalなcharの配列/ポインタを用意してそこに書き込む形になる…のかな? C言語に自信ニキ教えて。

ライセンスはzlib。

dktrtk

配布ページ

C++ + AngelScriptなSHIORI。

AngelScriptはC++ライクなスクリプト言語らしい。

ドキュメントは見つからなかった。 1からSHIORIを作りたい人向け。

ライセンスは不明。

D.N.Proxy

配布ページ

C#のSHIORI。

Visual Basicにも対応しているらしい。

Releaseページの dnproxy.narが参考になるかも。 とはいえこのままだと書きづらい気がする。

ライセンスはCC0。

これを使ったゴーストは クローラ&ロダ がある。

emo-rs

配布ページ

Rust + LuaなSHIORI。

Rustの処理をLua側から呼び出せるようになっているっぽい? 実質2言語使える。すごい。

ドキュメントは見つからなかった。

ライセンスはMIT。

これを使ったゴーストは えも? がある。

kagari

配布ページ

ドキュメント

C++ + LuaなSHIORI。 作者俺。←コレガヤリタカッタダケー

ミドルウェアは kotori に分離してある。 SAORIも動くおまけ付き。

動作にはlua54.dllが必要。

ライセンスはMIT。

これを使ったゴーストは 盤上の隅っこで がある。

kanahebi

配布ページ

C# + IronPythonなSHIORI。

ukastreamが必要(プロジェクトに内蔵)。

SAORIとして利用する際にPythonの機能を使いたい場合は、 C#からPythonを呼び出す必要あり。

ドキュメントは見つからなかった。

ライセンスは不明(Apache 2.0互換)。

krht

配布ページ

C++ + TclなSHIORI。

ドキュメントは見つからなかった。 1からSHIORIを作りたい人向け。

ライセンスは不明。

lib_skeleton

配布ページ

C++のSHIORI。 作者俺。

作っておいてアレだけどcsaoriで十分な気がしている。

ドキュメントは無い。

ライセンスはMIT。

phiori

配布ページ

ドキュメント

C言語 + PythonなSHIORI。

元の配布ページ のものはビルド出来なかったりバグがあったりしたので直した。 元のものとセーブデータの互換性がないので注意。

python3.5からpython3.12へ更新したので Windows7以前のものでは動かないかもしれない。

動作にはpython312.dll他色々必要。

example.pyとphioriモジュールに大体のことは書いてある。

ライセンスはDLLがLGPL-3.0、phioriモジュールがMIT。

Rosalind

配布ページ

C#のSHIORI。

内部で使っている機能の関係で.NET Framework4.6以降が必要。

ドキュメントはREADMEを参照のこと。

ライセンスはMIT。

sana

配布ページ/ドキュメント

RubyのSHIORI。

ドキュメントはREADMEに書かれていることがすべて。シンプル。

ライセンスはMIT。

sanajk

配布ページ

ドキュメント

JavaScript/TypeScriptのSHIORI。

create-sanajk-ghost を使うとshiolinkやnodeも揃ったテンプレートを作成出来るらしい。 そのままだと動かないようなので ちょっとした説明 を書いた。参考になれば。

ライセンスはzlib。

これを使ったゴーストは 節美亜シンク がある。

shioridll-nim

配布ページ/ドキュメント

NimのSHIORI。

READMEにも書かれているように、 shioriモジュール を使うと良さそう。

ライセンスはMIT。

shiorigo

配布ページ

GoのSHIORI。

DLLだと終了処理に問題があるらしいので、 shiolink経由にした方が賢明かもしれない。

ドキュメントは見つからなかった。

ライセンスはMIT。

これを使ったゴーストは gohst がある。

おすすめすること

  • エディタ(Vim,Emacs,VSCodeなど)を用意してsyntaxハイライト機能とlint機能を入れる

絶対にやった方が良い。QoLが向上する。

  • C/C++/Rustの勉強

最悪の場合、DLLのソースコードを読むはめになる。どうして…。 Go,Nimはその限りではない。

Note

SAORIは基本的には対応していない。というか、 SHIORIだけで十二分に色んなことが出来るので必要ない、といった方が正しそう。

SHIORIをSAORIとして使う(as SAORI)ことも考えられるが、 (多分)YAYAだと動かない(※)ものがあったりして 一筋縄ではいかないかも。

※ SHIORIのDLLが、依存しているDLLがある場合。LoadLibraryが失敗する。

SHIORIのDLLが配布されていない場合自分でビルドする必要があるが、 もちろん開発環境を用意する必要があるのでアレ。

shiolink/ukastream経由なら関係ないが、 DLLを作る言語=辞書に使う言語なSHIORIの場合、 バグによってはベースウェアが落ちることがある。

SHIORIの説明で2言語の記載があるもの(○○ + ××なSHIORI)は、 理論上2つの言語を利用出来る。 Luaとかmrubyみたいに機能が少ない言語なら2言語をうまく使えるはず。

FAQ

Q. どれ使えば良い?

A. 好きなの。迷うのであればYAYAなり里々なり華和梨なりで十分なのかも。

Q. どのSHIORIがおすすめ?

A. ミドルウェアがあるSHIORI。

Q. 辞書の書き方わからない。

A. ドキュメントやそのSHIORIを使っているゴーストの辞書を読む。無ければSHIORIのソースコードを、読もう!

Q. エラーが出てDLLがビルドできない。

A. 今ならIssueを立てるかPRを投げるかforkするかが選べるぞ!

おわりに

これだけあれば気になるSHIORIの1つや2つあるはず。あるよね?いや、あるんですよ。 ぜひぜひ触ってみましょう。

次回予告

次回はごーとうさんのしらしる!の企画開催準備のこと:後編です。お楽しみに。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment