コンテンツにスキップ

SSTPの対応状況

外部のアプリからゴーストへ話しかけるSSTPについて、使える通信方式と命令をまとめています。基準はUKADOCのSSTP/1.xです。

UtataneはSocket SSTPとSSTP over HTTPを扱います。WindowsのWM_COPYDATAを使うDirect SSTPは、macOSでは対象外です。

調査日: 2026-09-24(中断通知・予約再生を追記) 調査結果: ✅ 18 / 🟡 2 / ❌ 0 / ➖ 3

項目 状況 Utataneの対応
Socket SSTP ✅ localhostのTCP 9801で待受。リクエストごとに切断
SSTP over HTTP ✅ POST /api/sstp/v1、text/plain、Content-Length、HTTP 200内のSSTP応答
文字コード ✅ Charset必須。UTF-8とShift_JISを受理し、UTF-8で応答
version ✅ SSTP/1.0以上3.0未満を受理。不正範囲は400
サイズ制限 ✅ 1MiBを超えるリクエストは413
セキュリティ ✅ リスナー自体を127.0.0.1へ限定。HTTPはlocalhost Originのみ受理
Direct SSTP ➖ WindowsのHWND/WM_COPYDATA依存のためmacOS対象外
メソッド 状況 Utataneの対応
SEND/NOTIFY ✅ Script、Event、Reference0〜255、Event応答なし時のScript fallback
COMMUNICATE ✅ Sender/SentenceをOnCommunicateのReference0/1へ、SSTP ReferenceをReference2以降へ転送
GIVE ✅ DocumentをOnCommunicate、SongをOnMusicPlayへ変換
EXECUTE ✅ 下記portable commandを実行。未知commandは501

SEND/NOTIFYはGhostまたはReceiverGhostNameで起動中ゴーストを選択できます。IfGhostと直後のScriptの組を出現順に評価し、該当しなければdefault Scriptを使います。Option: nobreakは現在の再生完了後へキューイングします。nodescriptはUtataneに専用SSTPマーカーがないため結果に差はありません。notranslateは、SSTPで受け取ったScriptを現在のMAKOTO経路へ渡していないため、指定の有無で差はありません。

新しいSSTPが再生中のSSTPを中断する時は、OnSSTPBreakへその時点のスクリプト・話者・タグ込みの文字位置を渡します。nobreakの予約内容を中断対象と取り違えないようにし、新しい会話へ置き換えたり再生をキャンセルしたりした時は、残った予約も取り消します。

Option: strictの解釈エラーログは未対応です。Parserは元スクリプトの位置情報を保持できますが、不正な引数や存在しないサーフェスなどを診断して記録する処理は別途必要です。

command 状況 備考
GetName/GetNames ✅ 起動中キャラクター名、インストール済みゴースト名
GetGhostName/GetShellName/GetBalloonName ✅ 選択対象の現在値
GetVersion/GetShortVersion ✅ Utataneのbundle version
GetGhostNameList/GetShellNameList/GetBalloonNameList/GetHeadlineNameList ✅ 認識済みコンテンツ一覧
GetPluginNameList ✅ 認識済みプラグイン名を改行区切りで返します
Quiet/Restore ✅ 16秒またはRestoreまで通常SSTP再生を409で抑止
SetCookie/GetCookie ✅ Sender単位の実行中メモリ保存
SetProperty/GetProperty ✅ Property Systemへ接続。読み取り専用値への書込は420
CompressArchive/ExtractArchive 🟡 ghost/master配下に限定した安全なZIP操作。SSP管理下全フォルダや暗号化ZIP完全互換は未対応
DumpSurface 🟡 現在の本体側surfaceをPNG出力。SSPの全scope・crop・prefix引数は未対応
GetFMO/ReceiverGhostHWnd ➖ WindowsのFMO/HWND依存のためmacOS対象外
MoveAsync/SetTrayIcon/SetTrayBalloon ➖ macOSに同等のSSP tray/HWND機構がないため対象外

Command[param1,param2]とReference0以降の両方の引数形式を受理します。レスポンス追加データはUKADOCどおりヘッダー後の空行に続けて返します。