2007年9月23日

新社会人にあなたならまず何を教えるか? -7- Automation の種類 - 文具型

Automation にはいくつかの種類があります。あるものは簡単ですし、あるものは実装が難しい。あるものは効果が絶大ですし、あるものは効果があまりありません。そして何よりも 何を自動化するのか で効能が変化します。

そこで、まずは Automation の種類を見てみましょう。ここではイメージしやすいように、例として電化製品やソフトを例に挙げてみたいと思います。ただし、分類方法は定番の方式をちょっとはずして、私の方法で行ってみたいと思います。

まず、Automationは大きく「文具型」と「補助頭脳型」に分かれます。


文具型というのは…大抵のPCのソフトがそうですね。特に Office Suite と呼ばれる類のソフトは完全に「文具型」です。あなたが手を動かしている間は動作してくれます。あなたが手を止めると、ソフトも仕事を止めてしまいます。鉛筆などと同じ性質を持つわけです。

たとえば、MS-Office のソフトで英語を打つと、1 word 打つたびにスペルミスをチェックして自動的に直してくれます。たまに固有名詞を直してくれて、えらい迷惑だったりしますが。これが文具型 Automation です。技術的には on demand 型と呼ばれるものの大半がこれに当たります。

文具型は「ミスの低減」を目的とする場合に効果があります。スペルミス、あいまいな文章の発見、計算の不一致など、その場で発見すればワケも無く直せるが、後で間違いがあると言われるとどこが間違っているのか全体から見つけ出すのにすごく苦労する種類の間違い をその場で直すのに効果があるわけです。機械の場合ですと、プログラミング環境を統合環境にすると typo を見つけてくれたりするエディターがついてきますが、あれなんかも良い例です。

文具型の Automation について、人間の場合の例ですと…そうだな。マクドナルドなどで、高額紙幣を出すと
「1万円、入りまーす」とか
「8千円、確認お願いしまーす」とか
レジを打つオネーチャンが、他の人にチェックしてもらっているシーンが良くあると思います。あれなんかが、文具型 Automation に近いと言えます。
他には、プログラミングスタイルの一種にペアプログラミングと言うのがありますが、あれも文具型 Automation の一種でしょう。プログラマがペアを組む事で、相互に間違いをチェックし合い、単純な打ち間違いからロジックの間違いに至るまで、様々なヒューマンエラーを減らしていこう、と言うわけです。

しかし、文具型 Automation はやはり、機械に任せた場合圧倒的な効果をもたらすようです。レジスターの中にはおつりを自動的に必要なコインとお札で出してくれるものがありますが、あれですとヒューマンエラーはなくなります。機械の間違いはもちろん発生しますが、一般的に機械がお札やコインを数え間違える確率は、人間が間違える確率の何千分の一、という値です。
逆に言うと、機械に任せてもあまり効果が無い場合、文具型 Automation には向いていない、と言えるかもしれません。


文具型 Automation …というよりこれは on demand 全般に言えることですが… には、1つ大きな弱点があります。即時性が求められるのです。

「8千円、確認お願いしまーす」
と言われて、3時間後に
「さっきの8千円、1万3千円だったわよ」
と指摘されても困るわけです。その場で言ってもらわなくては。

従って、文具型 Automation は複雑な、難しい処理はほとんど出来ません。チェックにかかる時間がほとんど一定で済むような処理…俗に「計算量 O(1)」と言われる類の処理しか出来ないのです。たとえば、先ほどのお札の確認でも、
「千円札で8億円、確認お願いしまーす」
などと言われる事の無いファーストフード店では、手の空いている人を捕まえてチェックしてもらう程度の事しかしません。5千円札、千円札をふんだんに用意する事で、最大でも5枚までしかお札をチェックしなくて良いようにすれば、チェックにかかる時間はほんの数秒で済みます。

しかし、銀行では「千円札で8億円」というケースは無いとはいえません。いや、8億円は無いかもしれませんが、もう少し少額なら店舗が連休のおつり用にと、枚数を多い目に引き出そうとする事は大いにありえますし、逆に一日の売り上げを預ける場合、必要以上に小銭が多くなる事も十分ありえるわけです。
この場合、ちょっと手の空いている人を捕まえる、という方法は危険です。実質お札(やコイン) の枚数に比例して確認にかかる時間は増えるからです。ちょっとトイレに行きたいから…と交代してもらった人をとっ捕まえて80万枚もの千円札を数えさせたら…間違いも増えるでしょうし、そもそもお漏らしをしてしまいます :p

このように、文具型 Automation は適用できる範囲が狭いのですが、その範囲内であれば効果は絶大です。このため、誤り訂正(間違いを見つけて、指摘するあるいは即効で直す)ものには良く使われます。もちろん、訂正率は 100% ではありませんが、そもそもやらなければもっと間違えていたのです。やればやるだけ得、と言う事ができます。


誤り訂正を使って間違える確率を減らすやり方は、より大きな目で見た場合デバッグサイクルを廻す頻度を下げる効果があります。俗に「手戻り」と言われる奴ですね。
「手戻り」の発生は、お客様の信頼を低減させますし、たいていの場合1ターンが結構長い。このため、お客様を待たせる事にもなります。さらに信頼を低減させているため、「次」のチャレンジの際に「重箱の隅までチェックされ」てさらに手戻りを発生させる、という悪循環へと繋がりかねません。もっと言えば、人間は手戻りを食らって何度も同じ事をやり直すと、疲れてきて間違えやすくなると言うおまけまでつきます。

従って、可能な限り誤り訂正が使える所では、使ったほうが良いのです。
実際、これから説明する「補助頭脳型 Automation」を人間に適応する場合、各人が行う処理は可能な限り文具型 Automation による補助と誤り訂正と組み合わせるのが効果的です。


さて、補助頭脳型 Automation ですが…これ以降は次回といたしましょう。