LjStudio 判断待ち(09-14更新)

規則5 検査記録 · 2026-09-13 →09-14更新 · 司令塔

判断待ちの8件

LjStudio の台帳(324行)を検査で埋めていく中で、こちらで決められず止まっている項目を 画面写真つきでまとめました。台帳のほとんど(決着260件・80%)は自動検査とライブ確認で 埋まりましたが、この8件は「作るかどうか」「繋ぐかどうか」を決める人が必要です。 06・07・08 は本人指示で実装・実機確認を進めましたが、いずれも一部の残作業付きです(下の各項目参照)。 09-14: 本人指示「司令塔側で優先度を決めて進める」を受け、末尾に当日の計画・今後の方針を追記しました。

0 +8解決判断待ちの件
14添付スクリーンショット
324台帳の総行数
80%決着済み
✓ 01

呼び出し元ゼロのダイアログ群 — 14件中2件決着

名前入力ダイアログ9種 / 「Save As #」家族 / TSELECTBGCUEFORM 他 · 2026-09-13

ボタンや入力欄は正しく組み上がっているのに、アプリのどこをどう辿っても 開かれない画面が全部で14件見つかっています。代表例が左の「Add Fixture Group」——器具グループを追加する名前入力ダイアログで、部品としては完成しているのに、 呼び出し元のコードがsrc全体に0件です。 「Select Background Cue」(右・OK/Cancel付きの版)は、本編の sbLoadBGCue ボタンから開く別の画面(ボタン無し・ダブルクリックで選ぶだけの版)とは別物で、 こちらはテストコードからしか呼ばれていません。実機での本当の呼び出し口も 今回の調査では見つからず、正体不明のまま保留です。

Add Fixture Group ダイアログ
TADDGROUPFORM — Add Fixture Group
Select Background Cue ダイアログ(OK/Cancel付き)
TSELECTBGCUEFORM — 呼び出し元ゼロの版

決定 TSAVEASCUEFORM(Save As Cue#)・TSAVEASCUELISTFORM(Save As Cuelist#) は繋がないと決定しました。同じ機能はすでに本編の Save ボタン自身(bSaveAs) で動いており、別窓を新設する価値が薄いためです。画面内部の配線自体はもともと正常 (テストで確認済み)——呼び出し元を追加しないと決めただけです。

未完成 残り12件のうち2件は、調べ直した結果見積もりを訂正しました。 TGETPAGEINFOFORM(Add New Cue Page)はページ追加の書き込みロジック自体が 丸ごと未実装で、実機DFMにも「Add」ボタンが無く呼び出し口が不明。 TMEGAGROUPCREATEFORM(Create Channel Group)は「チャンネルグループ」という ファイル形式自体が読み書きとも未解読(項目4の.Pre形式と同種の解読案件)。 どちらも「配線するだけ」ではなかったため保留に戻しました。

残り12件、どうしますか?

保存しました

✓ 02

DMX リンクの指定 — 実装完了(説明を訂正)

TLINKCONFIGFORM3 · sbl1〜4 · 2026-09-13 実装・裏取り済み

訂正 この項目の元の説明は誤りでした。「押したリンク番号でプロファイル一覧の ツリーを絞り込む」機能ではなく、公式ヘルプ(046_Fixture configuration.txt)どおり 選択中の器具がどのDMXリンク(1〜4)に繋がっているかを指定する機能でした。

Fixture Configuration 画面右上の「DMX Link」1/2/3/4ボタン。上げ下げ(押し込みの 切り替え)自体は元から配線済みでしたが、正しい役目(選択中の器具のリンク指定) への書き込みは未実装でした。今回、選択行の DMX リンクに合わせて押し込み状態を同期し、 押すと 「プログラム済みデータが無効になる場合がある」旨を確認したうえで DMX アドレスのリンク部分を書き換えるところまで実装しました(Channel は保持)。 追って本人指示でアドレス帯の重複チェックも追加しました (LjUserLibrary.OwnerSlotOf で移動先が他の器具と重ならないか書く前に確認し、 重なる場合は相手の枠番号・型名を文面に足します。実機の Save 時警告と同じくブロックは せず、OK すれば重ねたまま進められます)。試験4本を追加し、 全走3360 pass/37 fail(既知分の範囲内・回帰なし)。

Fixture Configuration 画面。右上に DMX Link 1/2/3/4 ボタン
TLINKCONFIGFORM3 — 右上「DMX Link」が対象

完了 この項目に残った論点はありません。

✓ 03

まっさらな未実装画面が4つ — 1件完了

TAUTOARRANGEFORM 実装完了 · 残り3件は保留 · 2026-09-13

DFM(見た目)は描けていますが、動かす仕組み(enricher)が一切ない 4画面でした。Auto-Arrange Icons(TAUTOARRANGEFORM)だけ実装しました—— 整列ロジック自体(FixtureAutoArrange.Pack)は既にコードにあり、View メニュー 「器具アイコンを詰める」から実際に動いていたので、公式ヘルプどおりの入口 (デスクトップ右クリック→Icons→Auto Arrange)を新設してそこへ繋いだだけです。 新しい書き込みロジックは要りませんでした。 残り3画面は調べ直した結果、見た目より大きな仕事でした。Copy Fixture はヘルプの機能自体は本物ですが、コピーする書き込みロジックが5つの別ファイル形式に またがってどこにも存在せず、呼び出し口(右クリックメニュー)もありません。 Exporting User profileは出力形式(.udf/.udo)が 完全未解読。RGB Valueはダイアログ自体は簡単ですが、値の書き込み先が 実機データのどこにも見つかっていません。

Copy Fixture ダイアログ
Copy Fixture — 器具設定のコピー元を選ぶ画面(保留)
Auto-Arrange Icons ダイアログ
Auto-Arrange Icons — 実装完了
Exporting User profile ダイアログ
Exporting User profile — 器具プロファイルの書き出し(保留)
RGB Value ダイアログ
RGB Value — RGBのクイック入力(保留)

未完成 残り3件(TCLONEFORM・TEXPORTFIXTUREFORM・TQUICKRGBDEFFORM)は いずれも新規の書き込みロジックか実機解読が要り、保留のままです。

✓ 04

Presets(.Pre)形式 — 「未解読」も「パネルが無い」も誤り、全面決着

TSAVEPRESETFORM / TSAVEPRESETFORM2 · 2026-09-13

訂正×2 「.Pre形式が未解読」は古い情報でした(payloadは実機書き込みdiffで 確定済み)。さらに「ライブ位置パネルが無い」も誤りでした—— MovementControlContent(Fixtureバー Panel2「Position/movement」)が まさにそれで、「pan/tiltポジションコントロール」という逐語一致で探していたために 見つけていなかっただけでした。

「Preset#」「Preset Name」を入れて Save Preset / Save New Preset を押す画面です。 LjPresetFile/LjAttributePresetFileに読み書き両対応の Save/CreateNew/Payloadを新設したうえで、MovementPresetSaveTarget (ILibrarySaveTarget)を新設し、MovementControlContentに Presetボタン→TPRESETFORM.bSave→この画面→LibrarySaveDialogという 経路で実際にMovement.Preへ書き込むところまで配線完了しました。 選択中の器具(Master/Selected/All)のpan/tiltを現在のScene値から読み、新規保存はスロット 全体を空にしてから焼く・既存上書きは触れたアドレスだけ書き換えます(公式ヘルプ071どおり)。 試験10本追加(MovementPresetSaveTargetTests 4・LjLibraryWriterPresetTests 3・ LjPresetFileTests.NextFreeSlot 3)、全走3371 pass/38 fail(既知分の範囲内・回帰なし)。 in-process検査のみで、live実機での最終確認はまだです。

Save Preset ダイアログ
TSAVEPRESETFORM — Save Preset

未完成 live実機(検証機/i8)での最終確認がまだです。in-process検査は全部緑ですが、 実際にMovementControlContentのPresetボタンから保存してMode/位置が正しく再現されるかは 未検証です。

✓ 05

BG Cue 再生モードの書き込み先 — 実機実験で4候補を除外

TBGCUESEQUENCEMODEFORM · Audio Trigged / No Loop · 2026-09-13 r5実機実験

訂正 「実データが手に入るまで保留」は成立しない前提だと確定しました。 原本219本(data\original+data\work+実機コピー全量)を数え直しても、 解読済み領域以外は1バイトも非ゼロがありません——待っても実データは出てきません。

「Audio Trigged」「No Loop」のチェックが .hcu ファイルのどのバイト位置に 対応するのか、まだ特定できていません(以前疑っていた +0x9A は既に「違う」と 判明済み)。今回、+0x9Aを否定したのと同じ実験道具 (tools\lj_exp_cueflags.ps1 -Target bgcue)がr5で非対話実行できると分かり、 4つの候補へ実機で書き込み実験をやり直しました。 候補①(Sequence ID配列の直後 +0x5E)・候補②(On/Offフラグの直後 +0x9F)——どちらも既存の解読済み配列に隣接する、最も構造的に自然な位置。 続けて、この2配列の間にある60Bの空白が「5スロット均等割り(12Bずつ)」という仮説のもと、 候補③(空白の中間 +0x66)・候補④(空白ブロック末尾 +0x69)も 試しました。4つとも陰性(値1を書いてもMode列は空のまま)—— この4か所は除外できましたが、残り約490Bのどこかは依然不明です。

BG Cue - Sequence Mode ダイアログ
TBGCUESEQUENCEMODEFORM — Seq 0087「SPOT WARIKOMI」
実機のBackground Cue画面。+0x5Eへ書いてもMode列が空
候補①(+0x5E)実機実験 — Mode列は空・陰性
実機のBackground Cue画面。+0x9Fへ書いてもMode列が空
候補②(+0x9F)実機実験 — Mode列は空・陰性
実機のBackground Cue画面。+0x66へ書いてもMode列が空
候補③(+0x66)実機実験 — Mode列は空・陰性
実機のBackground Cue画面。+0x69へ書いてもMode列が空
候補④(+0x69)実機実験 — Mode列は空・陰性

決定 本人指示(2026-09-13): 今回はここまでで保留。残り約490Bの総当たりはやらない。 r5側の一時タスク(LJ_Exp_CueFlags)と作業用ライブラリは片付け済み。 次に再開するときのために、除外済みの4候補と道具の使い方(lj_exp_cueflags.ps1の -FlagBaseOverride/-FlagStride)を台帳・構造解析ログに残した。

(参考・再開する場合の選択肢)

保存しました

✓ 06

機能不明の孤立ボタン群 — 大半解決

TBGCUEFORM / TCURRENTCUE / TCUEMACROFORM · 2026-09-13「6 再調査」(コミット 5ee71185)

Hint(ツールチップ)もキャプションも一切無い孤立ボタン群でしたが、公式ヘルプ (#097/#103/#119/#137)・DFM実物の座標/OnClick確認・実機スクショ (旧機体の実機スクショ)を突き合わせてほぼ全件を決着 させました。 実装・テスト済み: sb1〜sb5=Background Cue のスロット単位 on/off(既存確定済みの LjBackgroundCueFile.SetSlotDisabled +0x9A に直結・r5実機で赤/緑を確認済み)。sbLoad=一覧 cb1 で選んだ BG Cue を読み込む(cb1 自体は選ぶだけで 読み込まないため New/Save/Delete と同じ「押して初めて効く」形に統一)。 SpeedButton4=DFM上 Panel1 に座標が完全に覆われ OnClick も無く、実機でも押せない・見えない(silent、配線対象外)。 sbBGCue(Current Cue)=公式ヘルプ097の言い回しが sbCueMacroControl と同一のため同じOpenScreen(TBGCUEFORM)。
残り2件は意味は判明・実装は保留: sbChaseMan (ヘルプ103=手動trigの間隔でチェイスへ切り替える機能。ShowPlayerHost に間隔計測の土台が要る)・TCUEMACROFORM の sbFreezeMacro (ヘルプ137=このフォーム自身のSpeedフェーダーを0%相当にする。土台となる Ampl./Speedフェーダーの書き戻し自体が未実装)。どちらも「土台となる仕組みを 新たに作るか」という別枠の判断で、もう「正体不明」ではありません。

Background Cue 画面
TBGCUEFORM — sb1〜5・SpeedButton4・sbLoad
Current Cue 画面
TCURRENTCUE — 下段に「BGCue」「Chase Man」
Cue Macro Control 画面
TCUEMACROFORM — 「Freeze」ボタン

未完成 sbChaseMan(手動trigの間隔でチェイス切替。ShowPlayerHostに 間隔計測の仕組みが無い)と sbFreezeMacro(Speedフェーダーを0%にする。 TCUEMACROFORM自身のフェーダー書き戻しが未実装)は、意味は判明した だけでまだ何も動きません。土台を新設するかどうかは未着手のまま。

残った論点: sbChaseMan/sbFreezeMacroの土台(間隔計測・フェーダー書き戻し)、作りますか?

保存しました

✓ 07

Macro Editor のつまみ・Setボタン群 — 一部実装完了(12/21件)

TCUEMACROCONTROLFORM · 2026-09-13 実装・r5実機同等の環境で確認完了(残り9件は未着手)

Base Value・Speed・Amp+・Amp− を書き込む先のバイト位置は 2026-08-24 に実機確定 済みだったため、12 件のボタン(Set×4・増減×6・Off・Keep Amplitude Symmetrical)をまとめて実装しました。実機はドラッグ式の手描きバーですが、 WPF でその見た目まで再現するのは大工事になるため、増減ボタンで値を貯めて Set で 確定する簡略 UI に置き換えています。 検証機で実際のマクロデータを使い、Base を 128 に Set → 選んだ行だけ変わる、 Off → その行が「off」表示になる、Speed を 3 段階上げて Set → Time 列が 14.4 秒から 1.0 秒に変わる、Keep Amplitude Symmetrical を入れて Amp+ を −5 に Set → Amp− が自動で 5(鏡合わせ)になる、をすべて確認しました (右の写真がその瞬間の実画面)。単体テスト 14 本も新規に追加し全て緑です。

Generic Macro Editor 実機確認時の画面。Base=128・Keep Amplitude Symmetrical有効・Amp+=-5/Amp-=5
実際に Base/Speed/Amp+/Amp− を動かした直後の画面

未完成 今回の12件とは別に、Auto Delay 系5件・sbNewMacro/sbLoad・sbRestart/sbUpdate の計9件はまったくの未着手。Auto Delayは入力欄自体は同じ数値欄パターンで配線できそう だが、遅延の配分アルゴリズムが未解読。sbRestart/sbUpdateは汎用マクロを回す仕掛け自体が無い。

残り9件(Auto Delay系5件・sbNewMacro/sbLoad・sbRestart/sbUpdate)、作りますか?

保存しました

✓ 08

再生機走行中の挙動 — 一部解決

TCUELIST2FORM sbGo/sbBack · 2026-09-13 実機同等の環境で確認完了

実際に Show Player を走らせて確かめました。sbGo/sbBack は正しく動きます——ただし「1行進む/戻る」ではなく、次/前の Cue Fire 型の行まで探して飛ぶ設計でした(Wait Elapsed 型の行は 素通りする)。手元のライブラリの多くは Wait Elapsed ばかりでしたが、 別の CueList(愛称 LAPUTA・Cue Fire 型の行 39 本)を見つけて読み込み、 実際に行き来できることを確認しました。 副産物で新しい小さな論点が1つ: 再生中は sbBack ボタン自体が画面から消えます(sbStop と場所が重なるため隠す設計)。 この「隠すべきか」という判断自体は実機で確かめられておらず、コードの注記も 「こちらの解釈である」と認めています。
また、同じ枠に入れていた TSEQUENCEFORM の再生 fwd/rev(sb3/ sb4)は、調べ直すと「未テスト」ではなく実装そのものが無い ことが分かりました——項目03・06と同じ「作るかどうか」の判断が別途必要です。

Cuelist 画面。再生中の操作列
TCUELIST2FORM — Go!/STOP の並び
Sequence 画面
TSEQUENCEFORM — 再生 fwd/rev のアイコン列(実装なし)

未完成 再生中に sbBack を隠す設計が正しいか実機で未確認(コードの注記も「解釈」と 自認)。加えて TSEQUENCEFORM の sb3/sb4(再生fwd/rev)は「未テスト」ではなく 実装そのものが無い——作るかどうかを含め、両方とも手つかずのまま。

残った論点2つ: ① 再生中も sbBack を出したままにするか ② TSEQUENCEFORM の sb3/sb4(実装なし)を作るか

保存しました

計画

司令塔の計画と今後の方針

本人指示「司令塔側で優先度を決めて進める」を受けて整理 · 2026-09-14

9/13 時点で 8 項目のうち技術的に閉じているものは進め、残りは「作るかどうか」「見た目の 設計をどうするか」という本人にしか決められない分岐として保留にしてあります。 9/14 はこちらでその分岐を仕分けし、技術的な答えが実験や公式ヘルプの読み込みだけで 白黒つくものを先に進め、新規サブシステムの新設や見た目の設計判断が要るもの は号令が出るまで着手しないという優先度を立てました。

今日進める分(呼び出し口が明確・技術的に閉じている)

項目01の残り12件のうち9件は根が1つだと分かっています—— TADDGROUPFORM・TMEGAGROUPCREATEFORM・ TPROFILENAMEOLDSTYLEFORM・TGETUSERLIBNAMEFORM・ TRENAMEFILEFORM・TGETSTATICSPAGENAMEFORM・ TSTATICSLOTNAMEFORM・TBEZNAMEFORM・TGETPAGEINFOFORM の9種は、部品自体はNameDialogCatalogに登録済みなのに、共通の呼び出し口 NameInputDialog.Create がsrc全体に0件という同じ穴です。 このうちTMEGAGROUPCREATEFORM(形式未解読)とTGETPAGEINFOFORM (書き込みロジック丸ごと未実装)はすでに「配線だけでは済まない」と判明済みなので対象外 —— 残るTADDGROUPFORM・TPROFILENAMEOLDSTYLEFORM・ TGETUSERLIBNAMEFORM・TRENAMEFILEFORM・TBEZNAMEFORM の5件を、Auto-Arrange・DMX Link・Presetsで効いた「公式ヘルプで本来の入口を 確かめてから足りない配線だけ足す」手順で1件ずつ片付けます。 TGETSTATICSPAGENAMEFORM・TSTATICSLOTNAMEFORMは「到達経路も 別途無い」と記録済みで確度は落ちますが、入口の有無を先に確かめます。 TSAVEASMACRODIALOG(Save As Macro#)は9/13に決着した TSAVEASCUEFORM/TSAVEASCUELISTFORMと同型の「Save As #」家族と 分かっているため、同じ結論(本編のbSaveAsと重複=繋がない)で良いか確認だけ 先に済ませます。TSELECTCUELIST2MODALFORM(Startup Cuelist)も入口の有無を 同じ手順で確認します。

保留のまま進めない分(本人の号令待ち)

TSELECTBGCUEFORM(正体不明の呼び出し元)はヒントが尽きており着手しません。 項目05(BG Cue Mode 残り約490Bの総当たり)は9/13に本人指示で保留と決定済みのため触りません。 項目06のsbChaseMan(間隔計測の土台)・sbFreezeMacro (フェーダー書き戻しの土台)と、項目07のsbRestart/sbUpdate (汎用マクロ再生の仕組み自体)は、いずれも新規サブシステムの新設が要る 規模のため着手しません。項目08のTSEQUENCEFORM sb3/sb4 (再生fwd/rev)も同様に新規実装で、作るかどうかは本人判断のままです。 項目08の再生中にsbBackを隠すかどうかは技術的な余地ではなく 見た目の設計判断そのものなので、こちらでは決めません。 項目07のAuto Delayの配分アルゴリズム解読は、項目05と同じ「r5実機で バイト位置を絞る」実験で白黒つく性質のため、上の5件が片付き次第、時間が許せば着手します。

今後の方針

① 「部品は組めているが呼び出し元が無い」系は、まず公式ヘルプで本来の入口を探してから 足りない配線だけを足す——新規ロジックが要ると分かった時点でその項目だけ保留に戻す (Presets・Auto-Arrangeで実証済みの手順をそのまま横展開)。 ② 実験でバイト位置が白黒つく解読案件(BG Cue Mode・Auto Delay等)と、新規サブシステムの 新設が要る案件(チェイス間隔計測・フェーダー書き戻し・汎用マクロ再生エンジン)は 別枠として扱う——後者は号令が出るまで着手しない。 ③ BG Cue Modeの総当たりは今回も再開しない。次に扱うのは本人が「続ける」と言った時のみ。 ④ 新しく配線した画面は必ず試験を追加し、可能な範囲でr5実機同等の環境で裏取りしてから 「完了」と記録する(in-process検査だけで完了扱いにしない・項目04のPresetsが唯一の例外 として live未検証のまま残っている点は次回持ち越し)。

再確認

司令塔の再確認(実データ照合)と再計画

上の計画を実データに当てて検証した結果 · 2026-09-14

上の計画を、着手前にソースと台帳へ当てて確かめました。根拠は裏が取れましたが、 前提が2点ずれていました。

裏が取れたこと

NameDialogCatalog に9種すべてが登録済み(TGETUSERLIBNAMEFORM・ TRENAMEFILEFORM・TGETSTATICSPAGENAMEFORM・ TSTATICSLOTNAMEFORM・TBEZNAMEFORM・TGETPAGEINFOFORM・ TADDGROUPFORM・TMEGAGROUPCREATEFORM・ TPROFILENAMEOLDSTYLEFORM)。NameInputDialog.Create の呼び出しは 試験からのみで、製品コード(LjStudio.App)には1件も無いことを確認 ——「9件は根が1つ」は正しい。

ずれ1: 「全て未コミット」はもう古い

9-13 分はすべてコミット済みです(項目ごとに分割した6本+別セッションの 積み残し3本)。HANDOFF の段階0(コミット方針の確定)は解消済みなので、 以後の計画からこの前提は外してください。

ずれ2: 狙う5件のうち「配線だけで済む」のは2件だけ

項目3・項目4で「配線だけで済む/済まない」を分けたのは書き込み側(バックエンド)の 有無でした。同じ物差しを5件に当てると、次のように割れます。

ダイアログ 書き手 判定
TPROFILENAMEOLDSTYLEFORM LjFixtureProfileWriter あり(09-10 で新設・実績あり) ◎ 配線だけで行ける
TRENAMEFILEFORM 形式の書き手は不要(ファイル改名+参照更新) ○ 参照更新の範囲だけ要調査
TBEZNAMEFORM LjBezierShape.ToBytes() はあるが LjBezierShapeSet に保存経路が無い △ 保存経路の新設が要る
TADDGROUPFORM LjGroupInfo は所属フラグの書き込み API を 意図的に持たない(用途未確定のため読むだけ、とコード自身が明記) ✗ バイト層が先
TGETUSERLIBNAMEFORM ライブラリ新規作成に当たる口が存在しない (LjLibraryWriter は既存フォルダ前提) ✗ 新設が要る

TADDGROUPFORM・TGETUSERLIBNAMEFORM は、 TGETPAGEINFOFORM/TMEGAGROUPCREATEFORM を保留に戻したのと 同じ理由(書き込み口が無い)に当たります。計画が避けたいと書いている 「配線するだけの小物ではなかった」を、着手前に2件分先に潰せました。

再計画

段階A(最優先):新しい配線を足す前に、項目02・03・04 の3件を 実機でまとめて裏取りします。3件とも in-process 検査だけで「完了」にしてあり、 未検証の実装が3件たまっています(「直したら必ず実機で確認」は 2026-09-05 に常設と決めた縛り)。コミット済みなので、配布物を1回作れば3件同時に確認できます。

段階B:項目01 は5件でなく2件に絞る (TPROFILENAMEOLDSTYLEFORM → TRENAMEFILEFORM の順)。 TBEZNAMEFORM は保存経路の見積もりを取ってから可否を決め、 残り2件は保留へ差し戻します。

段階C:上の計画の保留判断(BG Cue Mode の総当たり・新規サブシステム系・ sbBack を隠すかの見た目判断)はそのまま同意。触りません。

参考(判断ではなく技術的な持ち越し):検証機リモートで実マウス操作 (mclick)が途中から不安定になった件と、TLJMAINFORM の アイコンドラッグ・タブ切替の実マウスでの最終確認。これらは次にツール側を 直してから対応します。

← LightJockey 関連資料 目録に戻る