JF6DEU blog

舞台技術情報

本番環境

2024年10月15日 作成
思い切って書くことにしました。ここの続きです。

本番環境で求められることは?
そもそも本番環境で求められることは何かを考えてみる。
  1. Windowsの画面を表示しない
  2. もしWindowsの画面が表示されてたなら演劇にのめり込むことができないよね。ちゃんとタスクバーとかは消さないと。
  3. 素早い立ち上げと撤収
  4. 立ち上げや撤収をすぐ行わなければならない。リハーサルの時間は限られているし、そこで時間食ってたらどうにもできない。
  5. 適切なエラー処理
  6. 例えば文字を流してる途中でいきなりブルスクとかなったらもう終わり。劇自体の進行が止まったり、まずお客が逃げていく。本番できちんと動作するものを作らないといけない。
  7. システムの設計を確実にする
  8. 不確定事項がある中での設計はリスクを伴う。仕様は絶対に確実に決めておき、それから動かさない。追加とかで切り貼りされたシステムはたいていバグを含んでいる。
  9. なにかあったらすぐにwarning
  10. 接続できなかった場合など、何かが起きたらすぐにwarningを送る。console.warnとかでもいい。とにかくすぐわかるようにする。そして、絶対に表示している内容など劇に関わることは変えない。たとえトラブルが起きても自律して動作するようにする。
  11. try...catchを使う
  12. JavaScriptはエラーが起きると全体が止まる。だから、try..catchでエラーを捕捉する。そして、エラーが起きた原因をe.typeであらかじめ予測して決めておく。こうすればバグチェックも簡単。
  13. kioskモードの活用
  14. キオスクとは、公共の端末など決められた操作以外をしてはいけないシステムのこと。適切に設定すれば不適切な操作が少しは防ぐことができる。特にGoogle Chromeの場合はポリシーを定めておくと便利。というか絶対的に推奨。
  15. 落ちない
  16. 基本的なこと。絶対に途中で止まってはいけない。適切なエラー処理の項、なにかあったらすぐにwarningの項と被るけど本当に止まったらいけない。
...だいたいこれぐらい。
まとめると、止めない、見せない、不確定にしないということ。
もちろんローカルで動かすとかフェールセーフやバックアップの用意、人的ミスの軽減も必要。
一例としては...
「うちの父、かします!」で作ったプログラムたちを例にしてみる。
まず、操作画面は極力シンプルにした。

作ったボタンは、「再生!」、「停止」、「exp_disp()」の3つのみ。
ソースも1kBしかない。
やってることは単純で、
  • 再生だとffplayをシェルから呼び出す。(PHP)
  • 停止だとffplayをtaskkillする。(PHP)
  • exp_disp()だとexplorerをtaskkillする。(PHP)
たったこれだけ。
カーソルは最初に右端に置いておく。
これでも立派な組み込みシステムになる。
仕様も1ヶ月ぐらい前に決めておき、操作方法、操作端末も完全に決めておいた。

時は流れ、第二世代になる。
最初の頃はApacheの立ち上げで本体に触る必要があった。
それをレジストリのRunで(今更)自動化した。
だが、どう試してもffplayがスクリーンを取得できずに音だけが流れる状況になる。
よって第二世代の案は破棄になった。