更新日: 2026-10-30
位置付け: SHIORIランタイム選択・ロード・障害隔離の正本。仕様語彙はUKADOC SHIORI/3.0およびghost descript.txtに従う。
状態定義
- 実装: 通常のGhostManager起動経路へ接続済み
- 自動試験: 実バイナリまたは注入可能なfixtureで継続検証済み
- 実ゴースト: 配布ゴーストで起動・会話・終了を確認済み
- 隔離: ハング/クラッシュがOurin本体へ波及しない
ランタイム
| 対象 | 選択規則 | 実装 | 自動試験 | 実ゴースト | 隔離 | 備考 |
|---|---|---|---|---|---|---|
| YAYA | yaya.dll, libyaya.*, yaya_core |
済 | 済 | Emily4回帰あり | 済 | helper障害時は終了し、次要求前にロード文脈を復元 |
| 里々 | satori.dll, satoriya.dll, satori_core |
済 | 実辞書+外部SAORI fixture | 9-1で済 |
済 | 固定版SATORIをUniversal 2 helperとして同梱 |
| Native Bundle | その他の*.bundle/*.plugin |
済 | Fake loader | 未 | 既定で済 | XPC Service内でC ABIをロード。明示的inprocess設定時のみ直接ロード |
| Native Dylib | その他の*.dll/*.dylib/*.so |
済 | Loader単体+embedded XPC | 未 | 既定で済 | macOSではWindows DLLを除外し、XPC Service内で代替moduleをロード |
| Native XPC | 既定。OURIN_SHIORI_ISOLATION_MODE=inprocessでのみ無効 |
済 | 実fixtureの別PID往復 | 未 | 済 | 接続単位session、load/request/unload、5秒watchdog |
| SHIORI 2.x | Native backendを互換ラッパーで変換 | 済 | 済 | 未 | backend依存 | Shiori2CompatBackendを使用 |
2026-10-30 開発版のSHIORIエンジンプラグイン
追加エンジンは、実行環境を含む .plugin として導入する。Finderで1項目として選択でき、ZIPの展開は不要。YAYA・里々・KAGARIの既存内蔵経路は維持する。以下は開発中の作業ツリーの結果であり、配布中のアプリへの収録状況はリリースノートで確認する。
生成済み22パッケージは、実行用17と開発用サンプル5。 外部公開は行っていない。通常のSHIORIエンジンと、PLUGINイベントAPI用プラグインは別に扱う。
| パッケージ | 接続・実行環境 | 今回の成果物・制限 |
|---|---|---|
| 公式YAYA Tc607-2 | Native / XPC、C longのmulti-instance ABI | Universal2・macOS13以降。導入時はyaya.dllを公式エンジンへ、未導入時は既存の独自互換VMへ接続 |
| AYA5互換(公式YAYA Tc607-2) | Native / XPC、aya.dll / aya5.dll |
Universal2・macOS13以降。AYA5設定名探索とCP932往復。原本AYA5やAYA1〜4の実装ではない |
| なし栞 1.0.4-alpha系(macOS移植) | SHIOLINK、1ゴースト1子process | Universal2・macOS13以降。許諾済みmainの実interpreter、ghost.json / nashi_save.json。版応答1.0.0は上流のまま |
| 華和梨(KAWARI) | Native / XPC | Universal2。実エンジン、保存・再ロード。GUIで導入・割当・自動選択復帰・ダブルクリックを確認 |
| Aosora | Native / XPC、instance-ID ABI | Universal2。終了時保存のPOSIX境界を修正。ローカル個人利用用 |
| aktk / dktrtk / krht | SHIOLINK、mruby / AngelScript / Tcl同梱 | arm64。追加言語runtimeのインストール不要 |
| emo-rs / emo-rs-lua54 | Native / XPC、LuaJIT / Lua 5.4 | arm64。emo.dllはLua 5.4版を自動選択、LuaJIT版は明示割当 |
| D.N.Proxy / Kanahebi / Rosalind | SHIOLINK、.NETと依存同梱 | arm64、今回のBrotli依存によりmacOS 26.0以降 |
| MiyoJS / SanaJK | SHIOLINK、Node.js同梱 | arm64、macOS 13.5以降 |
| Sana / phiori | SHIOLINK、Ruby / Python同梱 | arm64、今回のruntimeはmacOS 26.0以降 |
| cshiori / shioridll-nim / shiorigo / csaori / lib_skeleton | コンパイル済み開発用サンプル | 任意のWindowsゴースト向けには自動選択しない。NimのみUniversal2、他はarm64 |
今回の関連6suiteは 46 test PASS、skip 0。実行用17パッケージすべてで、実際の.plugin導入から通常Factory、要求、終了、再ロードを確認した。新3種はGUI導入と実キャラクターのダブルクリックから期待応答・スクリプト再生tokenまで確認。バルーン文字画像そのものは別途取得していない。公式YAYA上流の未改変smokeはarm64/Rosetta各110項目、なし栞上流のbehaviorは81項目が成功。Intel実機・最低OS実機・全第三者ゴースト・任意SAORIの網羅検証は未実施。
ゴースト自身のmacOSモジュールと明示的なSHIOLINK.ourin.iniを優先し、曖昧な自動選択は行わない。Ourin側での割当・解除は元ゴーストの辞書やdescript.txtを書き換えない。許諾未確認のものを再配布可能とは扱わない。
導入・生成・利用条件はSHIORIエンジンプラグイン、最新の検証は追加3種の記録、以前の19パッケージの検証は初期プラグイン記録を参照。
2026-10-25 開発版での追加検証(当時の記録)
以下は初期の同梱方式とその時点の検証記録。現在の追加プラグイン方式・GUI確認は前節を参照する。
公開版 v0.0.1.21 には以下の新しい同梱エンジン・SHIOLINK拡張は含まれない。
| 対象 | 実装・配布物 | 確認済み | 残件 |
|---|---|---|---|
| 華和梨 | 固定上流をUniversal 2 dylibとして同梱、macOSモジュールの無いKAWARI辞書を解決 | 実エンジンのin-process/XPC、LOBOの起動・会話・終了・保存・別process再load | Ourin GUI上の実ゴースト操作と広い辞書網羅 |
| KAGARI | 固定上流+Lua 5.4.4、instance-ID ABI、Universal 2同梱 | 実エンジンのin-process/XPC、最小Lua lifecycle・load失敗 | もすはmacOS版saori_universal.native不足。実ゴーストの保存・再起動は未完 |
| SHIOLINK / MiyoJS | 外部processアダプターを通常factoryへ接続、Node.jsは別途必要 | 実子process fixture、MiyoJS 2.0.3実エンジン+最小辞書の起動・日本語/絵文字・終了 | MiyoPreview NARは配布元timeoutで未入手。実配布ゴースト・追加フィルタ・画面操作は未確認 |
| 灯 / ese-shiori / 偽栞 / 忍 / 翡翠 / 結奈 / 美坂 | MITの独立したmacOS互換実装を固定ソースからUniversal 2同梱、結奈は実験的 | 7製品のarm64/x86_64・最低OS13.0を確認。実同梱dylibのin-process/XPC/通常factory・保存再load成功。6種は別process再loadを両CPUで確認 | 全配布ゴースト・全構文・Windows保存形式の移行は未検証。同一栞の複数同時起動に制限 |
| 里珠 (Rishu/Proxy) | rishu_proxy.dll から隣接する rishu_remote.pl をPerlで起動し、loopback TCPで接続 |
公式1.1.32未改変サンプル+実adapterでLOAD/GET/NOTIFY/UNLOAD/EXIT・日本語・子process回収 | Perlと依存モジュールは別途必要。人格ゴースト・画面操作は未確認 |
| Aosora(任意導入) | 利用者が用意したmacOSライブラリを OURIN_AOSORA_ENGINE で指定。通常配布へは非同梱 |
64bit instance ABI、実ライブラリのin-process/XPC/通常factory・保存再load。実配布2件の詳細は個別記録 | 会話・ゲーム・GUI全体、Intel実機、ソース由来ライブラリの再配布許諾 |
KAGARIのLuaSocket/luautf8/luachild/lua-iconvは検証用にmacOSビルドしたが、配布ゴースト固有の追加依存まで同梱したものではない。Windows DLLやLinux ELFはmacOSで直接実行しない。
資料: 追加対応の検証結果、追加栞7種、里珠、SHIOLINK/MiyoJS、macOSモジュール指定。
証拠: 実ゴースト検証、もすの検証(公開向け概要)、エンジン導入。既知の問題と報告手順も参照。
P0受け入れ条件
- [x]
GhostShioriRuntimeにload/request/unloadとロード状態がある - [x] 通常起動と
execute load shioriが同じdescript.txtのshiori.macos優先・shiorifallback規則を使用する - [x] load成功後だけGhostManagerとEventBridgeへruntimeを公開する
- [x] unload/reload時にEventBridgeが旧runtimeを保持しない
- [x] Native SHIORIが共通ワイヤCodec経由で構造化応答を返す
- [x] YAYA/里々のIPC timeout時にhelperを終了し、直列readタスクを残さない
- [x] Windows DLLとmacOS moduleが併存した場合にmacOS moduleを選択する
- [x] timeout後に同一runtimeがhelperを自動再生成し、ロード状態を復元する
- [x] Native SHIORIを実在するXPC Serviceへ隔離する
P0は2026-07-13に完了。強制終了直前の未保存VM変数やSAORI副作用は復元できず、最後に永続化された状態から再ロードする。
P1受け入れ条件
- [x]
ukatech/satoriya-shioriをtag/commit固定し、BSD-2-Clause本文とローカルpatch記録を保持する - [x] SATORIのPOSIX ABIを
arm64/x86_64Universal 2 helperへ静的リンクする - [x] JSON Lines境界をUTF-8、SATORI内部ワイヤをCP932として変換する
- [x]
SatoriAdapterを通常のGhostManager起動・終了・timeout復旧へ接続する - [x] graceful unloadでSATORIの終了処理とsavedata保存を完了してからhelperを終了する
- [x]
shiori.version/encoding/forceencoding/escape_unknownをNative境界へ反映し、里々のescape_unknownを往復復元する - [x]
sakura.name2、makoto、scope別balloon.defaultsurfaceをGhostConfigurationへ保持する - [x] 実SATORI fixtureでOnBoot、日本語応答、Unicode escape、savedata生成を自動試験する
- [x] Xcodeビルドで
satori_coreを署名・同梱する
P1は2026-07-13に完了。
P2受け入れ条件
- [x] 表示直前に環境変数展開 →
OnTranslate→ ghost MAKOTO → shell MAKOTOの順で変換する - [x]
MAKOTO/2.0のTRANSLATE SentenceとStringヘッダをNative XPCのraw backendで往復する - [x] SSTPの
notranslateを尊重し、sstp.alwaystranslate=1の場合だけSSTP表示を強制変換する - [x]
OnTranslateへ原因、元イベントID、元Reference群を仕様の区切りで渡す - [x] SSTP由来の
Sender、SecurityLevel、SecurityOriginをOnTranslateへ継承する - [x]
shiori.cache=1のゴースト切替でruntimeをbounded LRUに保持し、Suspend/Restoreを通知する - [x]
shiori.cache=0、明示unload/reload、アプリ終了、LRU evictionではOnDestroy後にunloadする - [x] SATORI/YAYAがゴーストローカルと共通のSAORI検索パスを使用する
- [x] 配布物中のWindows SAORI名を
.dylib/.soへ安全に代替する - [x] 実SATORI+外部SAORI native fixtureの呼び出しを自動試験する
- [x] 第三者配布の里々ゴーストで起動・会話・終了を確認する
P2は2026-07-14に完了。第三者配布ゴースト9-1の複製上で、OnBoot、ダブルクリック会話、SAORIメニュー、Windows SAORI呼び出し時の安全な継続、OnClose、unload、savedata生成を確認した。
P3受け入れ条件
- [x] FMOレコードをゴースト固有の32文字IDで公開し、
modulestateをUKADOCのモジュール名+状態形式で出力する - [x] Owned SSTPのIDを通知済み
uniqueidまたはFMO IDと照合し、対象ゴースト一致時だけlocalへ昇格する - [x] 外部OriginからのOwned昇格を拒否し、TCP待受を設定したloopbackアドレスへ実際にbindする
- [x] 欠番を含むSSTP
ReferenceNを添字を崩さずSHIORIへ渡す - [x] SSTPのNOTIFY種別とSHIORI応答ヘッダを完全応答ブリッジで保持する
- [x] 翻訳後の実再生スクリプトとSSTP応答
Scriptを一致させ、マルチゴースト時の応答対象を固定する - [x] Native SHIORI dylibの実fixtureでload/request/unloadを継続試験する
- [x] 同じNative fixtureを埋め込みXPCの別PIDで実行する(
nativeDylibFixtureRunsThroughEmbeddedXpcService) - [x] SHIORI 2.x実fixtureで3.0写像と応答ヘッダ保持を継続試験する
P3は2026-07-15に完了。FMO/Owned SSTP境界、疎なReference伝播、翻訳応答整合、Native/SHIORI 2.x実fixture、およびembedded XPCの別PID実fixture往復まで確認した。XPCサービス側の公開protocol不一致は修正済み。
P3最終検証記録
xcodebuild -project Ourin.xcodeproj -scheme Ourin -derivedDataPath [local-path] CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO -only-testing:OurinTests/ShioriLoaderTests test を実行し、** TEST SUCCEEDED **。nativeDylibFixtureRunsThroughEmbeddedXpcService()、Native dylibのload/request/unload、SHIORI 2.x写像テストを確認した。
ワイヤ応答
| 項目 | 状態 | テスト/実装 |
|---|---|---|
| GET / NOTIFY、CRLF+空行終端 | 済 | ShioriWireCodec |
| Charset / Sender / ID / ReferenceN | 済 | ShioriRuntimeTests |
| Value / ValueNotify | 済 | ShioriRuntimeTests |
| Reference0以降の複数応答 | 済 | ShioriWireCodec, SSTPDispatcher |
| Marker / Age / BalloonOffset / ErrorLevel | 実装済・回帰拡充待ち | SSTPDispatcher.mapShioriResponse |
| CP932強制・未知文字escape | 済 | Native全境界、SATORI実fixture |
ライセンス境界
- ninix-kagariは挙動・構造の参照および差分試験に限定し、GPL実装をOurinへコピーしない。
- YAYA/里々等の上流を取り込む場合は固定リビジョンとLICENSE/NOTICEを同時に保持する。
出典と編集について
Ourin / Furin Lab・contributors。文書はCC BY-SA 4.0(第三者の個別表記を除く)。Web版は見出し・リンクの整備とローカルパスの一般化を行っています。更新基準日: 2026-10-30。
元資料: docs/SHIORI_RUNTIME_COMPATIBILITY_MATRIX_ja-jp.md
ソース SHA-256: 7477b14793e4cc6f9b256cc947125a0e158ea8745760d3345a7127eba0a7bc8b