リアルタイム
Real Time

先日、数理計画法ツールのベンダーである数理システム(株)の主催するセミナーで、竹内郁夫・東大名誉教授の講演を聴く機会があった。テーマは「射程内に入った実時間ごみ集め」http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/seminar/real-time-gc-in-sight.pdf、LISPのリアルタイム・ガーベッジ・コレクションの話である。ミーハーの私は、竹内先生の書かれた名著「初めての人のためのLISP入門」(今年再版された)を持っていき、サインをお願いした。と、驚いたことに、「じゃあ筆を出すから」と言って、鞄から小さなケースに入った毛筆を出して、さらさらと献辞をしたためてくださった。日本語へのこだわりといい、毛筆といい、なんて粋なんだ! と感心した次第である。

ところで、竹内先生の講演内容は大変面白かったが、『実時間』という概念について、なんとなく無条件に前提されているように感じられた点が、ちょっと気になった。むろん、LISPのごみ集め性能については、セル消費とスイープによる回収の速度の比較として明確に規定され、実験で測定されている。しかし、どうなればリアルタイムと呼びうるのか、それは技術者の常識的感覚に任されていて、そこまでは定義されていない。

LISPに限らず、バックグラウンドで任意のタイミングでガーベッジ・コレクションが走りうる処理系では、リアルタイム性の議論がうるさい。そこで一般的に言われていることは、プロセスが動作するたびにタイミングや時間がばらつかないようにすること、あるいは、開発者が実行タイミングや実行時間を確定的に計算できるようにすること、といわれる。産業用システムや組込系ソフトでは高いリアルタイム性が要求される。だから処理時間の「予測可能性」が重要である、との認識があるわけだ。あるいは、「確定論的(Deterministic)スケジューリング」が可能であること、と言ってもいい。

だが、これは本当なのだろうか?

ERPの覇者、SAP社の「R/3」のRとは、実はReal Timeの頭文字であった(初期にはR Systemという名前の汎用機ソフトから出発した)。でも、R/3はなぜ「リアルタイム」なのだろうか? 開発者は処理時間を確定的に設計できるだろうか? 答えはまったくNOである。あの三層アーキテクチャで非同期処理が走っているのに、確定論が成り立つわけはない。

あるいは、たとえば工場内でICタグとPOPシステムをつかって、ワークの位置情報を「瞬時」に読みとったら、リアルタイムなのだろうか。瞬時性にこだわるならば、DCSで制御弁の開度を1秒周期で制御することは、リアルタイムだろうか。では、スペアパーツを倉庫から払い出して、3分後にその情報を端末から入力したらリアルタイムではなくなるのだろうか。

もう少し続けよう。以前、「リスク」の定義として、「目指すべき目標値ないし理想状態から逸脱する可能性があり、かつ、その影響をリアルタイムに回避・抑制できないような事象(群)」をリスクと呼ぶ、と書いた。その場ですぐに回避可能な事象はリスクではない。自動車を40km/hで運転しているとき、ずっと前方を車いすで横断する老人がいても、ハンドルやブレーキを使ってほぼ実に避けられる。だが小学生が物陰から飛び出してきたら、そうはいかぬ。だからリアルタイム性は、リスクを議論する上で必須の項目である。ではそのリアルタイムとは、一体何なのか?

じつは、答えはたった3文字の漢字で書ける。それは「時定数」である。管理対象の時定数よりも十分速くコントロールが可能であれば、それがリアルタイムなのである。

プロセス・プラントのDCSが1秒周期で制御弁の開度を決められれば、それはリアルタイムだ。中を走っているのは秒速数m~数10mの速度をもつ流体である。秒以内の単位で制御できなければ相手は系から逃げてしまう。しかし、わたしは以前、時定数が150時間もある超多段蒸留装置のフィード・フォワード制御をやったことがあるが、このときは30分間隔でオンライン分析計からあがってくる情報が十分リアルタイムだった。

倉庫の物品払出し作業は、品目数にもよるが数十分単位であり、その手配リードタイムは数日以上である。だから3分遅れの情報でも、十分速いリアルタイム性を持つ。そして本社財務部門にとっては、財務諸表が一日以内で得られれば十分リアルタイムだ。だからSAP R/3はリアルタイムだと主張できたのである。

だから、リアルタイム性を議論するときには、管理しようとしている対象が、どの程度の時間スケールで動いているのかを考えなくてはいけない。従来の議論で抜けていたのが、この時定数の感覚である。各人が分野毎に、無意識に前提して、話をしてきた。だからちょっとでも分野を超えると、さっぱり話がかみ合わなくなる。

応答が何マイクロ秒以内ならリアルタイム、といった閾値は存在しない。確定論的スケジューリングだからリアルタイム、という議論もおかしい。現実の世界で、「確定論」でスケジュール通りに動く物事が一つでもあるだろうか? 生産スケジューリングからコンピュータのジョブ・スケジューリングまで、スケジューリングとはすべからく「近似値」の上に成り立つものだ。その近似値の精度が、制御目的の時定数に比べて十分であるかどうだけが重要なのである。