1日IOT雑文「IT業界とカタカナの乱用」で触れたように、この業界では相変わらず新しい造語が次々と生み出されている。最近の流行語に「IoT」というのがある。(ToT)と書くと顔文字みたいだが、ToTではなくIoTである。Things」の略語で、いろいろなモノがインターネットに接続する近未来像を称したものである。具体例としてよく話題に上がるのが自動車の自動運転である。車に搭載したセンサーからの情報や、インターネットから取得する情報(例えば、道路の混雑情報)を利用して、自動車を人の手を借りずに自動で運転させようという試みである。自動運転が実現するのはまだ先の話だろうが、ITと自動車産業が融合した有望な市場とみてであろう、Googleが参入したことが話題になった。自動車を運転する側からみると非常に便利な話であるが、ソフトウェア開発・システム構築をしている側から見ると、プログラム・バグ(欠陥)に起因する車の誤操作・誤動作や、電源故障によるコンピューターの停止、あるいはコンピューターの判断ミス(センサーからの情報に対してコンピューターが誤った判断をする)、といったようなことが気に掛かる。人命に関わることであるから、非常に稀なケースでしか発生しない不具合であっても許されない。ソフトウェア開発ではバグ(プログラムの欠陥・不具合)を摘出する目的でテストを実施する。テストには幾つかの分類方法がある。プログラムロジックに着目したホワイトボックス・テスト、システムの機能や振る舞いに着目したブラックボックス・テスト、システムを利用するユーザーの観点から実施する運用テストなどである。一般には、テストを沢山行うほど品質は高まるのだが、それだけコストもかかる。「バグが存在しないことは証明できない」とダイクストラ先生も言っているように、どこまでテストを重ねるのかは重要な問題であろう。センサーから取得する情報をリアルタイムに処理する、いわゆるリアルタイム処理系では、特定のタイミングや条件のもとで発生するバグというのがある。このような、特定のタイミングで発生するバグは、再現性が乏しい(あるいは再現する条件が特定し難い)場合が往々にしてある。従って、万が一事故が発生した場合、その原因が人間の操作ミスだったのか、プログラムのバグだったのか区別がつかないケースがあるかもしれない。ハードウェアの故障や、プログラムが判断を迷った場合の対処の考え方にフェイル・セーフがある。自動車のエンジンに異常が生じた場合は、エンジンを停止するのがフェイル・セーフな設計である。車載コンピューターがセンサーからの情報の判断に迷った場合は、どのように対処するのがフェイル・セーフであろうか。車の停止が安全とは限らない。急停車することで後ろの車と衝突する場合もあるだろう。人間の判断に委ねるという考えもありそうだが、人間もブレーキとアクセルを踏み間違えることがあるからあてにならない。そもそも人間の操作ミスや判断ミスに対処するための自動運転である。フェイル・セーフという場合、運転者の生命を優先するのか、歩行者を優先するのか、といった問題もありそうである。脅威はプログラムのバグ(欠陥)やハードウェアの故障だけではない。自動運転のためにインターネットから情報を取得する仕組みを採用した場合は、コンピューター・ウィルスの感染や、悪意を持ったものの侵入、コンピューターの乗っ取り、などの脅威も存在し得る。いろいろなモノがインターネットに接続することで便利さが増すであろうが、情報漏えいや悪意を持った者の侵入などのリスクも増すであろう。執行草舟氏の著書「生くる」に、「便利さについて」という章がある。