画面の数字を「答え合わせ」に使う方法を確立
本体のとある設定画面には、器具の台数やDMXアドレスの使用数がそのまま表示されます。自作の解析結果とこの画面の数字を突き合わせることで、パッチ(器具の配置)データの構造を確定させました。バイナリを眺めて推測するより先に、まず本体の画面を開いて読む——という、以後ずっと守られることになる進め方が、この日にできあがっています。
終売した照明制御ソフト LightJockey の後継アプリを作るプロジェクトの、はじまりから今日までを日付順にまとめました。工程表や数字は「開発進捗と計画」ページに譲り、こちらは「何が、いつ、どんな順で分かっていったか」という記録に徹しています。
このプロジェクトは、古い外付けハードディスクの中身を調べるところから始まりました。着手前に共有されていた前提は、正直なところかなり悲観的なものでした。
ところが実際に中身を開いてみると、この前提はひとつ残らず外れていました。インストールフォルダは実行ファイルごと丸ごと残っており、そのバージョン専用の公式ヘルプ(4.9MB)まで同梱されていました。バックアップは1部ではなく、同期された2部が別々の場所にありました。
そして何より、そのフォルダを最新の Windows 11 のパソコンに置いて実行ファイルをダブルクリックすると——何の細工もなく、そのまま起動しました。互換モードもエミュレータも仮想マシンも要りませんでした。出たエラーはDMXの出力カードが挿さっていないという1点だけで、中のデータを見たり触ったりする分には関係のないものでした。
この「拍子抜けするほどあっさり動いた」という事実が、プロジェクトの前提を丸ごと変えました。「失われた形式をゼロから推測する」のではなく、「本物を隣に置いて、自分の実装した結果と1バイトずつ突き合わせられる」プロジェクトになったのです。以下の記録は、すべてこの日の午後から始まっています。
本体が起動したその日のうちに、データの中身にも手を付けました。演出データのファイルが決まった大きさで揃っていること、器具の設定を管理する独自形式のファイル群であることなど、最初の手がかりが見つかりました。あわせて、動作中のソフトがDMXの出力値をメモリ上のどこに置いているかを突き止めています。これにより、自分たちが書いたリーダーの読み取り結果を、本物が実際に計算した値と直接比較できる状態が整いました。
本体のとある設定画面には、器具の台数やDMXアドレスの使用数がそのまま表示されます。自作の解析結果とこの画面の数字を突き合わせることで、パッチ(器具の配置)データの構造を確定させました。バイナリを眺めて推測するより先に、まず本体の画面を開いて読む——という、以後ずっと守られることになる進め方が、この日にできあがっています。
ここまでの調査結果を1本の報告書にまとめました。演出データ・タイムテーブル・器具プロファイルなど、主要なファイル形式のほとんどが解読でき、読み込んだデータを書き戻しても元と完全に一致することを自動テストで確認済み、という内容です。
後継アプリの画面まわりを新しく作り直す方針を固めました。暗い配色の構成案を最初に検討しましたが、この段階のものは絵としての完成度が実用に届かず、後で実際に動く画面として作り直すことになります。あわせて、完成を待たずに開発の様子を見てもらい、意見をもらうための、この報告の仕組みそのものを立ち上げました。複数の作業を同時に進められる体制にも組み直しています。
音源の再生位置そのものを時計として使い、照明のキューを音楽とズレなく進行させる再生エンジンの最初の実演です。DMX配線が正しいかをその場で確認するための試験用ツールもあわせて用意しました。
新しい操作画面の実装がまとまった数まで進みました。ボタンの位置は本体の画面定義から座標をそのまま取り出しているため、旧ソフトを長年使ってきた人の手が迷いません。あわせて、本番で照明を出し続ける再生機は専用機材ではなく安価なパソコン+Linuxで走らせ、編集作業は当面Windowsのままという役割分担の方針をここで固めました。老朽化した器具を新しい器具に置き換えてもショーデータを引き継げるようにする、という新しい取り組みの企画も、この時期にまとまっています。
ある現場で実際に使われていたタッチパネルの操作画面を、それを表示していた本来のソフトウェアが手元に残っていない状態から、保存データだけを頼りに1から組み立て直しました。呼び出しボタンは2,600個以上あり、そのすべてを実際に押して照明を呼び出せることまで確認しています。再生機の操作画面も、曲全体の流れをひと目で見せる帯と場面ごとの進行ボタンに作り直しました。器具の置き換え支援の取り組みも、実際に長年使われてきたショーデータで最初の検証に着手しています。
この数日で優先順位がはっきりしました。使用頻度の高い画面から順に、実データが流れる状態まで仕上げていく——その結果、実データの通る画面が数日で大きく積み上がりました。数字を実測どおりの色分けで示す時間管理の画面、変更を保存せずに閉じようとしたときの警告、起動時だけでなく画面からデータの読み込み先を切り替える機能、現場のパネルで2番目によく使われる操作(複数の場面の裏に常時重ねておく明かり)の再生などを、立て続けに実装しています。あわせて、Windows 11 環境で音楽同期用のプレイヤーが起動直後に落ちてしまうという問題の原因を、通信のやり取りを直接読み解いて特定し、同じ手順でやり取りする代わりのプレイヤーに差し替えることで解決しました。本体・ショーデータ・操作手順はいずれも変更していません。
本体に同梱されている公式の説明書は専用の古い形式で保存されており、最新のWindowsでは開く手段が無いまま1か月近く後回しになっていました。この日、その中身を取り出して読める形にしたところ、244項目・80万字を超える一次資料が一気に手に入り、それまで実機を触って確かめるしかないと考えていた複数の未解明点を、机の上の調査だけで解決できました。数値を管理する画面のつまみの値がデータのどこに保存されているかも、この日に特定しています。目標としていた画面のうち、実データが流れる画面は129枚中100枚まで進みました。
後継アプリの開発とは別の取り組みとして、終売したソフトそのものと、発売から約20年が経つ純正のUSB接続DMXインターフェースを、最新のWindows 11上で動かす検証を進めました。ドライバーの電子署名が無い、ライセンスの鍵も無い、という発売当時のままの条件でも、実際に照明が動き、音も鳴るところまで実機で確認できています。手順は導入キットにまとめ、離れた場所にある別の実機でも同じ手順で再現できることまで確かめました。
ここまでは、1枚1枚の画面が単体で正しく動くことを確認する作業が中心でした。ここに来て、複数の画面を同時に開いて連携させる操作——一覧から選んだ項目を別の画面で開く、ツールバーから編集画面を次々呼び出す、保存し忘れたまま閉じようとすると警告する、といった、画面どうしのやり取りを伴う操作を実機で確認できるようになりました。単体の画面が積み上がっていた状態から、ひとつのアプリとして噛み合って動く状態に進んだのが、今日という日です。
残る29画面のほとんどは、値を保持しない実行中の待ち画面や警告画面で、実装というより整理の作業です。よく使う画面に限れば、ほぼ埋まりきっています。
この記録は今後も日付を追加していく形で更新していきます。工程ごとの進み具合や、いま意見を募集している点は「開発進捗と計画」ページにまとめてありますので、あわせてご覧ください。