内科(3)-診察

救急室でも、触れていますが、ソースコードにおける検査とはどのようなものでしょう。

病院で初診のときは、アンケートに回答し、その回答から具体的な症状を聞いて、触診したり、レントゲンをとったりします。触診は、実際に動かしてみてどのような症状かを確認し、ソースコードの異常部分を見つける作業で、レントゲンはデバッグというソースコードを動かしながら、使用しているデータがどのように変化しているかを見ていく作業です。

動かした時の異常とは、何か。問題は、異常を定義するところです。救急室ではシステム停止という現象にいたる事を書きましたが、通常ソースコードでシステム停止に至るケースは少ないです。いつもと違うとか、期待した動きではないという症状が一般的です。このいつもの動きと違うというのも、微妙なものがあり、利用者側からは「いつもの行為」の許容範囲だったが、ソースコードでは初めてのケースだったという事もよくあります。ですから、診察では「いつも」の定義を見極めなければいけません。言葉のインパクトとして「いつもと違う、おかしい」と言われると、インパクトが強くより重大な原因を想定してしまい、結局、見る場所を間違えて原因特定までに時間がかかってしまう事につながります。そして、できる事であればかかりつけの医師(技術者)を持つのがベストです。異常の定義は、システムにより異なりますから、システムを理解している医師が見る方が誤診を防げます。

【異常の定義】

では、具体的に異常の定義とはどのようなものでしょうか。あえて、異常の定義としたのは、システムを構築する際、異常の定義をする事は少なく、まず正常の定義を行います。どのように動くかを両者で検討し、決めていきます。では、異常とは正常の反対を指す事になるか。利用者側は正常の反対ととる傾向にありますが、技術者側では、常識(暗黙の了解ともいいます)が、存在します。

例えば、「ログインした人が、管理者だったら、管理画面を表示可能とする」と正常の定義をしたとします。これに対する異常の定義は、ログインしたユーザが存在しない、有効期限を過ぎている、複数の権限(管理者と一般の両方)を有していた、管理者が作業した後に一般ユーザが継続して利用した、エラーを無視して先の画面で操作し続けた。まだまだ、他にもたくさんでてきます。これらは異常と判断すべきですが、実際の運用を考えたとき、考慮してほしい局面があります。複数の権限があるときは、管理者として利用できるのが、当たり前だとして、改修したら、管理者が入力した情報を一般ユーザが見れずに集計表がおかしいという2次障害を生むことがあります。権限は画面の起動時に使用するもので、入力情報に付加するものではないという定義が必要だった事になります。あるいは管理者情報を扱う画面と一般情報を扱う画面と切り分けて情報に権限を付加すべきだった事になります。このような現象は、定義漏れ、定義誤りといって障害原因としては多いものです。設計書は当たり前ですが、言葉で書きますから言葉の意味を取り違える、あるいは書き足りなくて、作り手が勝手に解釈してしまう事が普通にあります。「1から100まで全部言わなきゃだめなのか!」と叱責される事もあります。私は業界としては流通系システムの経験が多いですが、その業務経験も言葉の意味を誤らない為に必要な事です。流通ではとくに数値に対する単位があります。1つの「1」とは、バラ数なのかケース数なのかロット数なのか、この言葉は使う画面で変わります。売上はバラ数、物流ではケース数、発注時はロット数という事を知っているものは画面名から入力値に12バラ数を掛けるのか、12バラ数×3ケースを掛ける事を理解できるものと、できないものがいます。

こういう言葉の定義と時間的な問題あります。システムでは情報管理を楽にする為にマスターという概念があります。これは例えば、組織変更があり、去年のA部署が今年からはB部署に名前を変えたとします。名称がA部署のままでは不都合なので、名前を変えるのですが、マスター管理しておけば、マスター上の名称を変更するだけで、システムで取り扱うA部署の名称が全てB部署に変わるというものです。コード:10、名称:A部署 ⇒ コード:10、名称:B部署。あえて一番面倒な部署を扱ってしまいましたが、一見便利なようで、問題もあります。それは時間です。昨年までは、A部署だったとするには、このマスターにはいつから変わるのかという情報が必要です。昨年の帳票をだしたら、全てB部署になっていたとか、A部署で注文した年度末はA部署としたいが年度初の注文はB部署にしたい。注文時に合わせて名称を変えると、納品時で変わってしまった。この場合の運用回避は、年度末に全ての注文中の全ての納品書を印刷してから、部署名をA部署からB部署に変えるというものだったりします。あと組織でいうと8割はA部署からB部署に移管するが、残り2割はC部署に移管するといった場合もあります。システムではマスター管理してるっていったよね、組織変更の事が考慮されていない部署マスターってなんなのといのと、発注や納品画面では、発注日を年度末(切替日)を見て名称を変えなければいけないが、発注日のわからない納品では何を表示すればいいのか。正常の定義と異常の定義というのは、非常に根が深いものです。人の理解とはなんなのか、正確、確実、きちんと、きっちりと、いろいろ表現があるのですから、すでに正確ではない。情報技術は、日常から離れ言葉の定義を改めて見極める事のように思います。