Open5

伺か

DonDon

筆者が伺かについて説明する際に参照するためのページです。
主にソフトウェアエンジニアの人を対象としています。

この記事が対象としている読者

  • 2024年の伺かの最新事情について知りたい人
  • 独自言語を作りたいまたは作っている人で、ドメイン固有言語(DSL)が実用されている界隈に興味がある人
  • SSTPの最新事情について知りたい人、作者が異なるアプリケーション同士が独自規格で通信を行う場合の運用について知見を得たい人

この記事が対象としていない読者

  • 伺かのゴーストの作り方が知りたい人
  • 伺かのおすすめゴーストが知りたい人
DonDon

伺かの仕様

UKADOC

https://ssp.shillest.net/ukadoc/manual/
UKADOCはSSPの公式仕様書であり、メンテナンスが続いている。
一次情報としてあたるならここ。

大八洲.NET

https://www.ooyashima.net/db/
資料としては古いが、伺かの仕様が広く網羅されている。

本家 materia の仕様書

http://usada.sakura.vg/contents/specification.html
現代の開発者が参照するものではない。歴史的な編纂を追いたい考古学者向け。

DonDon

ベースウェア

伺かの本体となるプログラム。ゴーストを起動し、シェルを描画し、バルーンにトークを表示し、SSTPサーバーとして振る舞う。

SSP

https://ssp.shillest.net/
事実上の伺かコミュニティの中心的存在。Windows専用であるが、Wine互換環境で動作する。
非オープンソース。

materia

http://usada.sakura.vg/
本家伺か。Windows専用。更新は停止している。現代の開発者が参照するものではない。SSPが完全上位互換と考えてよい。
非オープンソース。

ninix-kagari

https://github.com/Tatakinov/ninix-kagari
Linux環境で動作するオープンソースのベースウェア。

ikagaka

https://ikagaka.github.io/Ikagaka.demo/
Webで動作するオープンソースのベースウェア。近年更新が停滞している。

なーコミックス

http://umeici.onjn.jp/
変わり種として紹介したい。ゴーストを漫画風に表示する。Windows専用。更新は停止している。
非オープンソース。

DonDon

SHIORI

ベースウェアからのゴーストに対するイベント通知に対し求められるレスポンスを返す。リソース情報や再生すべきSakuraScriptを返すことが主な役割となる。
ここではメンテナンスが続いているオープンソースな栞のみ紹介する。

里々

https://github.com/ukatech/satoriya-shiori
ゴースト作者に最も利用されている栞。日本語で直感的にトークを記述できるため人気が高い一方、複雑なプログラミングには向いていない。

YAYA

https://github.com/YAYA-shiori/yaya-shiori
C言語ライクな記法でプログラミングに覚えがあるゴースト作者に人気がある。

kagari

https://github.com/Tatakinov/kagari_shiori
Lua栞。

DonDon

SSTP

外部アプリが伺か(SSTPサーバー)に対してメッセージを送信することができる。ゴーストにトークを再生させたり、情報を与えたりすることが主な役割である。
近年その仕様が大きく拡張されたため、ここに紹介したい。

X-SSTP-PassThru-*

NOTIFYなどゴースト側との通信の際に、SHIORIから直接返されてきたヘッダ。
文字コード変換等最低限の処理が行われるだけで、(任意の文字列)の部分や中身はそのまま中継される。
UKADOC Project SSTP/1.x

つまり、ゴーストが外部アプリに対して情報を追加で返すことができる。一方向の情報通知でなく双方向の情報のやり取りができようになった。

SSTP over HTTP

HTTPリクエストメッセージボディにSSTPリクエストをそのまま突っ込み、HTTPレスポンスボディにSSTPレスポンスがそのまま返ってくるきわめて単純な仕組みです。
UKADOC Project SSTP/1.x

つまり、WebページのJavaScriptから直接SSTPを投げられるようになった。

ライブラリ

jsstp

https://github.com/ukatech/jsstp-lib

GUIツール

DirectSSTPTester

https://github.com/nikolat/DirectSSTPTester

内部で使われているSSTPLibはC#でDirectSSTPを扱うライブラリである。

運用例

https://ssp.shillest.net/ukadoc/manual/list_shiori_event_ex.html

イベントは好きなように投げてよい。他と被らなければ誰も怒ったりはしない。どんどん投げよう。