7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[TouchDesigner] 複数のアプリをRestart on Crashで死活監視するシンプルな方法

Posted at

本記事はTouchDesigner Advent Calendar 2025の3日目の記事となります。

はじめに

死活監視にあまり馴染みのない方向けに前置きすると、展示などにおいて、アプリを不測の事態(クラッシュ、フリーズ etc.)が起きても稼働させ続けるため方法のお話です。

Restart on Crash(以下RoC)とは

登録したアプリケーションのプロセスを監視して、対象のアプリが応答しない場合に自動的に復帰させてくれるWindows用の定番&古参ソフトウェアです。

常設展示など、開発者の手を離れて運用するインスタレーションなどにはほぼ必須で使っています。主に下記の用途に使うことができます。

  • PC起動時のアプリ自動起動
  • アプリがハングアップした時のプロセスキル&再起動
  • アプリがクラッシュした時の再起動

基本的にはめっちゃシンプルなソフトウェアですが、TouchDesignerのような実行ファイルへ書き出しができないアプリと組み合わせて使う時にはひと工夫必要です。

TouchDesignerで使うときの問題点

RoCは実行ファイル(.exe)の名称でプロセスを識別・監視します。
しかし、TouchDesignerで複数のアプリ(.toe)を立ち上げると次ような状態になります。

image.png

image.png

プロセスの名称としてはどちらもTouchDesigner.exeなので、RoCでは同一のプロセスとして監視されます。このままだと、例えばapp_01だけがクラッシュした場合でも、app_02TouchDesigner.exeは生きているので、app_01の再起動が実行されないという状況が発生します。

1つのTouchDesignerアプリの死活監視

簡単な使い方の説明も兼ねて、まずは1つのTouchDesignerアプリだけを監視する場合の設定方法です。

パス指定などを含むので、今回テストしたディレクトリ構成も合わせて書いておきます。

.
├── Downloads
    └── 1202
        └── RoC_test_app01.toe

RoCの設定は次のようになります。

スクリーンショット 2025-12-02 152644.png

ポイントは3つです。他の設定は本筋ではないので割愛します:zipper_mouth:

  1. Monitor this application : TouchDesigner.exeのパスを入力します
  2. After a crash > Execute a command : 1で指定したアプリからの応答がなくなった時に実行するコマンドを入力します。今回は.toeのファイルパスを直接指定すればOKです
  3. After a crash > Working directory: (optional) 2のコマンドを実行するディレクトリを指定します。入れておくと見やすいです。省略する場合は、2の内容を絶対パスに変更すれば、同じ状態になります

設定を入力し、OKを押すと、RoC_test_app01.toeが自動的に起動します。アプリを落としてみて、再起動することが確認できれば、死活監視の完成です:clap:

複数のTouchDesignerアプリの死活監視

本題です。

.
├── Downloads
    └── 1202
        └── RoC_test_app01.toe
        └── RoC_test_app02.toe

先ほどの設定からも分かる通り、Monitor this applicationで監視できるのはexe単位なので、このままでは2つのTouchDesignerアプリを個別に管理できません。

とある現場で、poweshellかpythonで死活監視プログラムを別で用意するか...思っていたところ、ふと思いつきました。

実行ファイルが1つしかないのが問題なら、増やしてしまえばいいのでは...

image.png

TouchDesigner.exeを同じディレクトリに複製して、名称を変えています。

RoCの設定は、

  1. RoC_test_app01.toeTouchDesigner_Instance01.exe
  2. RoC_test_app02.toeTouchDesigner_Instance02.exe

とそれぞれ別のexeで起動するように設定します。

肝心のExecute a commandの内容が見切れているので記載しておきます。

"<binディレクトリへのパス>/TouchDesigner_Instance01.exe" "RoC_test_app01.toe"

引数として.toeファイルを渡す形で、複製したTouchDesignerを実行するという記述です。
(※ここでもWorking directoryを指定しているので.toeは相対パスでOK)

それぞれの設定を完了すると、自動的に2つのアプリが起動します。
プロセスの状態を見てみると、アプリごとに別のexeが起動していることが分かります。

image.png

片方のアプリだけ落とした時に、無事に復活してくれれば完成です。

おしまい

年末にしては内容が地味か...? と思いましたが、現場で役立つと願って備忘として残しておきました。なかなか共有されない部分なので、皆さん普段どう対処しているのかなども気になるところです。

ここまで読んで頂きありがとうございました!良き年末を~

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?