皆さんは「オペレーション・ミス(オペミス)」という言葉に,どんな印象をお持ちだろうか。システム運用を担当するITエンジニアや業務システムを利用する担当者であれば,この言葉に何らかの当事者意識を抱いている人が多いのではないだろうか。

 システム運用担当者なら,「サーバー更新の手順を間違えて,サービス停止を起こしてしまった。あれは大変な失敗だった」などと,いやな過去を思い出すかもしれない。業務アプリケーションの利用者なら,「商品の発注数量を間違えて入力し,危うく損害を被るところだった」といった経験があるかもしれない。運よくオペミスの経験がない人も,「自分もオペミスをする可能性がある。気を付けなければ」と感じているはずだ。

 では,システムの設計や開発に携わるITエンジニアは,どうだろう。「オペミスなんて人ごとだ。オペミスが起こるのは作業する人のせいだ」と思っている人が,意外といるのではないか。日経SYSTEMS 8月号で担当した「オペミスをなくそう」というテーマの特集記事の取材を通じて,筆者はこのことを実感した。

運用設計は後回しにしがち

 システム運用の現場を例にとろう。サーバーの環境設定,プログラムの変更管理や保守,バックアップやリカバリ,データ移行など,運用現場では,さまざまな作業でオペミスが起こり得る。

 その場合の原因は,確認漏れや判断ミス,入力ミスなどいろいろある。結果として用意されたマニュアルや手順書通りに作業を完了できない場合,オペミスが発生することになる。

 オペミスによってシステム障害や業務トラブルが発生した場合,直接の責任がミスした作業担当者にあるのは間違いない。しかし,操作手順が複雑,難しい判断が必要といった理由で,担当者がいくら慎重に作業してもオペミスの可能性が高いケースはどうだろうか。そのシステムを設計,開発した開発者の責任も大きいはずである。

 逆に,担当者がミスをしそうになっても,システムがそれをチェックして回避する機能を備えていれば,トラブルが発生する可能性は低くなる。そもそも自動化によって手作業をなくしてしまえば,オペミスは起こらない。

 チェック機能の実装や作業の自動化は,システム開発の上流工程で考えておくべきものだ。オペミスのリスクを想定し,実際の運用業務を見据えた運用設計を行う必要がある。例えば,オペミスをなくすためにサーバーの稼働監視を自動化しようと思ったら,サーバーをモニターするパラメータやツールを用意しなければならない。これは要件定義の段階で検討すべき項目である。

 特集記事の取材先は,上流工程で運用設計を行う重要性には同意してくれた。だが実践できているかどうかを尋ねると,多くの取材先が「システムがほぼ出来上がってから運用を考えることが少なくない」と答えた。理由を聞くと「開発の上流段階では,ユーザーは機能ばかり気にする。このため,開発担当者は運用をつい後回しにしてしまう」と話す。

 システムの開発部門と運用部門が縦割り組織になっていることが,こういう状況を作り出した一因だろう。開発者はどこかで「後は運用部門に任せればいい」と考え,結果としてオペミスを人ごとだと思ってしまうのではないか。

 要因の一つとして,「オペミスの起こりにくさ」とは何かがあいまいなことも挙げられる。オペミスの起こりにくさは,性能や信頼性,運用性などと同じ非機能要求の一つといえる。性能や信頼性は「レスポンスは○秒以内」「クラスタ構成を必須とする」などと定義しやすいのに比べ,オペミスの起こりにくさは要件を明確にしづらい。

印刷工場の安全対策がヒントに

 だが難しいからといって,オペミスを防ぐ対策を施さなくてよいわけではない。特に,オペミスによって起こる障害やトラブルが大きな損害を引き起こす可能性が高いのであれば,事前に運用時のオペミスのリスクを検討し,リスクをできるだけ軽減するようにシステムを設計,開発すべきだろう。

 特集では,それを実践している現場の工夫を紹介した。参考となるヒントを探るべく,異業種への取材も試みた。大手印刷会社の工場での安全対策を見せてもらったのだ。危険な機械が並ぶものづくりの現場では,ITの現場以上にオペミスは許されない。ここではヒントになりそうなポイントを2点紹介したい。

(1)実際の現場を想定して,事前に危険を洗い出す

 安全対策を作り込むときは,設備導入前の設計時に実際の作業を想定して危険を洗い出し,必要な設備を実装する。例えばこの印刷工場では,機械に標準装備されている非常停止ボタンに加え,実際の現場での作業に合わせて停止ボタンを追加し,押し間違えが起こらないようにしている。

 情報システムの開発に置き換えると,設計時に稼働後のオペミスのリスクを洗い出し,監視用のパラメータを組み込む,システムの操作を単純化する,などの工夫を盛り込むことに通じる。

(2)ミスが起こりようのない環境を作る

 工場では,作業の動作を制限することで,ミスが起こりようもない環境を実現するケースがある。例えばこの印刷工場では,裁断機の作動ボタンを片手で押すことができないようにしている。機械の左右のボタンを両手で押しながら,足踏みのスイッチで裁断する仕組みを設けているのである。

 作動ボタンを片手で押せるようだと,もう一方の手が裁断用の刃にはさまれる危険がある。この工場の仕組みであれば,裁断時に作業担当者が手を出すことは絶対に不可能だ。

 情報システムでいえば,間違った入力や操作ができないように,自動化を徹底したり,操作や入力のチェック機能を強化したりすることに相当するだろう。

 印刷工場とシステム開発の現場では,もちろん事情は異なる。それでも,これらの取り組みはITの現場にも応用できるように思う。

 問題は,工場の安全対策ほどの重大性をどこまで考慮するかである。リスクとコストの兼ね合いで,実現できないことも多いだろう。まずは,オペミスを人ごとと思わず,システム開発の上流で意識することから始めてみてはいかがだろうか。