Status: Draft / Ourin (macOS 10.15+ / Universal 2)
Updated: 2025-07-28 (JST)
互換方針: UKADOC「プロパティシステム」の語彙・意味を尊重し、OS 依存点のみ macOS ネイティブ(M‑Diff)として置換。
対象: ゴースト作者・SHIORI実装者・Ourin(ベースウェア)実装者。
参考: UKADOC のプロパティシステム本体/操作タグ(![get,property], ![set,property])を正とする。
本仕様は macOS差分と実装ガイドラインを追加したもの。
1. 目的と適用範囲
- 目的:SSP のプロパティシステム互換の語彙を維持しつつ、Ourin(macOS)で同等動作を保証する。
- 非目標:Windows 固有 API 値(HWND 等)や Win32 カーソルそのものの完全再現。
2. 利用方法(環境変数/タグ)
- 環境変数:
%property[<name>]で 値を埋め込み。 - 取得タグ:
\![get,property,<event>,<name1>,<name2>...]で 任意イベントを発生させ、reference0..に値群が入る。 - 設定タグ:
\![set,property,<name>,<value>]で 書き込み(対象が[SET有効]のみ)。
3. M‑Diff(macOS置換点)
- 文字コード:既定 UTF‑8。互換のため CP932/Shift_JIS を受理し内部 UTF‑8 へ正規化。
- パス:
path系・各*.filenameは POSIX 絶対パスまたはfile://URLを標準。相対は「シェル→ゴースト」順で探索。 - 座標(screen/rect):仮想デスクトップのグローバル座標、原点(0,0)はメインディスプレイ左上。Cocoa座標との差は Ourin が吸収。
- カーソルファイル:
*.mousecursor*は surfaces.txt のcursorセクションと同じ指定。.cur/.ani相当は Ourin が内部でデコード(macOS NSCursor へ変換)し、相対パスは「シェル→ゴースト」。 - 時間:
system.*の時刻は OS 現地時刻。
4. プロパティ一覧(完全)
4.1 system.*
system.year/month/day/hour/minute/second/millisecond/dayofweeksystem.cursor.pos:X,Y(ピクセル、グローバル座標)。system.os.(type|name|version|build|parenttype|parentname):macOS ではtype=macOS、name例:macOS 14、versionは Darwin カーネル等。parent*は互換層がある場合のみ。system.cpu.(load|num|vendor|name|clock|features)system.memory.(load|phyt|phya)
4.2 baseware.*
baseware.version/baseware.name
4.3 ghostlist.* / activeghostlist.* / currentghost.*
ghostlist.count、ghostlist(<名前/相方名/パス>).汎用プロパティ名、.icon、.index(ID)、.current。activeghostlist.*:起動中のゴーストの列挙。currentghost.汎用プロパティ名、currentghost.status(Status ヘッダ互換:talking|passive|induction|timecritical|nouserbreak|online|choosing|minimizing|opening(...)/balloon(...))。
4.4 currentghost.shelllist.*
currentghost.shelllist(<シェル名/パス>).汎用プロパティ名/.index(ID)/.current/.count。
4.5 currentghost.scope(*) / surface / rect / name
currentghost.scope.count:最大キャラ数。currentghost.scope(ID).surface.num:表示サーフェスID。currentghost.scope(ID).seriko.defaultsurface:既定サーフェス。currentghost.scope(ID).surface.x|y:サーフェスのローカル座標。currentghost.scope(ID).x|y:スクリーン座標の基準点(通常はサーフェス中央下)。currentghost.scope(ID).rect:ウィンドウ矩形(left,top,right,bottom)。currentghost.scope(ID).name:スコープ名(0=さくら、1=相方、2+=char*)。
4.6 currentghost.seriko.cursor.* / tooltip.*
currentghost.mousecursor(.*)/currentghost.balloon.mousecursor(.*):相対パスは「シェル→ゴースト」探索。空文字をSETで定義削除。currentghost.seriko.cursor.scope(ID).mouse????list(<当たり判定>).(path|name)、.index(ID2).(path|name)、.count。currentghost.seriko.tooltip.scope(ID).textlist(<当たり判定>).(text|name)、.index(ID2).(text|name)、.count。
4.7 currentghost.seriko.surfacelist.*
.all:有効なサーフェスIDの全て(カンマ区切り)。.defined:surfaces.txt 内で 定義ありのもの(カンマ区切り)。
4.8 currentghost.balloon.scope(ID).*
.count(画像数)、.num(ID)、.validwidth(.initial)、.validheight(.initial)、.lines(.initial)、.basepos.x|y、.char_width。
4.9 balloonlist.* / headlinelist.* / pluginlist.*
<list>(<名前/パス>).汎用プロパティ名/.index(ID).汎用プロパティ名/.count。
4.10 history.(ghost|balloon|headline|plugin).*
- それぞれ
<list>(<名前/パス>).汎用プロパティ名/.index(ID).汎用プロパティ名/.count。
4.11 rateofuselist.*
(name|sakuraname|keroname|boottime|bootminute|percent)とindex(順位).<同名>。
4.12 汎用プロパティ名
name / sakuraname / keroname / craftmanw / craftmanurl / path / thumbnail / update_result / update_time / homeurl / username / shiori.<変数名> / index / menu / sakura.bind.menu / kero.bind.menu / char*.bind.menu
5. 書込可能(SET有効)一覧
- カーソル:
currentghost.mousecursor(.*)、currentghost.balloon.mousecursor(.*)、currentghost.seriko.cursor.scope(ID).mouse????list(...).path、.index(ID2).path。 - ツールチップ:
currentghost.seriko.tooltip.scope(ID).textlist(...).text、.index(ID2).text。 - シェル/着せ替えメニュー:
currentghost.shelllist(...).menu、currentghost.(sakura|kero|char*).bind.menu。
6. 例:参照・取得・設定
参照(環境変数)
%property[baseware.name] ver. %property[baseware.version]
取得(イベントで受け取り)
\![get,property,OnGetSakuraName,ghostlist(Emily/Phase4.5).keroname]
// → SHIORI側 OnGetSakuraName の reference0 に値が入る
設定(メニューからシェルを非表示)
\![set,property,currentghost.shelllist(ULTIMATE FORM).menu,hidden]
設定(当たり判定ヘッドのツールチップ)
\![set,property,currentghost.seriko.tooltip.scope(0).textlist(Head).text,頭をなでる]
7. 互換性・注意事項
- 相対パス探索:シェル→ゴーストの順で探索。空文字
SETは定義削除。 - スクリーン座標:Windows と同じく メインディスプレイ左上(0,0) を起点とする 仮想デスクトップ座標に統一。Ourin 内部で Cocoa/CG の差を吸収。
- SJIS受理:
get/set受信で CP932 を受理、内部は UTF‑8 に統一。 - 未知要素:将来拡張のため読み取りは透過、書込は無視+警告ログ。
8. 変更履歴
- 2025-07-28 (JST): 初版(1.0M for macOS)。
出典と編集について
Ourin / Furin Lab・contributors。文書はCC BY-SA 4.0(第三者の個別表記を除く)。Web版は見出し・リンクの整備とローカルパスの一般化を行っています。更新基準日: 2026-10-30。
元資料: docs/PROPERTY_1.0M_SPEC_FULL_ja-jp.md
ソース SHA-256: 7ca1062175fa6de873e5a3eb937fc0407fd3fdfdbac09b1adc4078ee94a8a9f2