日々改善ブログ

業務改善や効率化の小技やアイデアを書き留めます

サラリーマン木こりのパラドックス

f:id:rbtgr:20200113143423p:plain

「木こりのジレンマ」という寓話をご存知でしょうか?

ある木こりが、がんばって木を切っている。 通りがかった旅人がその様子を眺めていたが、斧を振るう勢いのわりに、なかなか木が切れていない。 見ると木こりの使っている斧がこぼれしているようなので、旅人は言った。 「斧を研いだほうがいいのでは?」 すると、木こりは言った。 「わかっちゃいるんだけどね、木を切るのに忙しくて、それどころじゃないよ」 引用元 https://webtan.impress.co.jp/e/2017/06/27/26149

いくつかパターンがあり、元ネタがどこなのかはわかりませんでしたが、話の流れは同じです。 そして多くの場合、「斧を研ぐための時間を取った方が、結果的に多くの木を切ることができる」ことを読み手に諭し、改善活動の重要性を説いています。

しかし実際には、こんな話をしても現場には響かないし、改善活動も全然浸透しないということが多いのではないでしょうか? 改善を行った方がより成果が上げられることは、こんな寓話を聞かされなくても、頭ではわかっていることです。

では、なぜ誰も斧を研いでくれないのでしょうか?

木こりの話をもう一度自分たちの仕事にしっかりと当てはめなおしてみましょう。 斧を研いでより多くの木をきった場合、つまり改善して効率を高めより多くの仕事をこなした場合、どうなるでしょうか?

仕事をしている人の多くはサラリーマンです。与えられた仕事が終わったら、次の仕事が降ってくるだけです。 もしかしたら残業が幾分か減るかもしれません。でも残業代がもらえなくなるのが嫌な人もいます。 効率化して、多くの仕事をこなした結果、斧を研いだ人にはメリットがあったのでしょうか?

この矛盾は、木こりが労働時間で報酬を得ているサラリーマンであることに起因しています。

つまり「どれだけ木を切ったか」ではなく、「どれくらいの時間木を切っていたか」で給与が決まってしまうことが原因です。

ようするに、誰も斧を研がないのは、「研ぐ意味がないから」です。 この矛盾を「サラリーマン木こりのパラドックス命名してみました。

サラリーマンに徹している人にとっては、改善はメリットを感じにくい活動です。 改善が現場に広く浸透するためには、実施する人がメリットを感じられなければなりません。

  • 改善そのものに対する報酬を大きくし、明確にする。
  • 成果量と報酬を連動させる。
  • 年俸制を採用するなど

など、対策は大小さまざま考えられます。

改善を推進するならば、斧を研ぐ人の気持ちをよく考えなくてはなりません。

Excelの計算は信用できない?

世の中には、Excelの計算は信用できないから、電卓で再計算させることがあるとか。

阿保かい。

ところが、実はExcelは結構計算間違いすることがあります。

計算間違いその1:小数の引き算にご注意

Excelクイズです。セルA3に表示される結果は?

f:id:rbtgr:20190714185751p:plain

 当然TRUE?試してみましょう。

f:id:rbtgr:20190714185818p:plain

なんとFALSEと表示されているじゃないですか。

どういうこと?Excelがこんな簡単な計算をまちがえるの?

 なぜ0.1同士で等しくないのか?その理由は「本当の値」にあります。

「小数点以下の桁数を増やす」を15回ほど押してみましょう。

f:id:rbtgr:20190714190103p:plain

なんと1.2-1.1は0.1ではなく、0.0999999999999999となっています。

なにこれ?バグ?

いいえ、これは仕様です。ExcelIEEE 754という規格に従って小数を扱っています。

Excel で浮動小数点演算の結果が正しくない場合がある

IEEE 754は、本来は2進数しか使えないコンピュータで、10進数の数値を扱うための規格です。 ここで問題になるのが、小数の2進数変換です。0.1や0.2などの小数は2進数では、循環小数となってしまいます。 たとえば、0.1を2進数に変換すると0001100110011100110011 (以下繰り返し)となります。

無限に桁を使えるワケはありませんから、途中で切り捨てが発生します。結果として、1.2-1.1=0.0999999999999999という、おかしな結果になるわけです。

疑問1 仕様?明らかに計算間違いなんだから修正されないの?

 されないと思います。昔から有名な現象ですが、修正される気配がないです。

疑問2 なんで足し算は大丈夫なの?

 よくわかりませんが、Excelがうまいことやってくれてるみたいです。

計算間違いその2:有効桁数にご注意

再びExcelクイズです。セルA1、A2の計算結果は?

f:id:rbtgr:20190714192728p:plain

どうせ変な結果になってるだろうって? そうだよ。

f:id:rbtgr:20190714192827p:plain

これも、小数の問題と同じく、IEEE 754に基づく仕様動作です。 IEEE 754の規定では、数値を有効桁数15桁の精度で格納するため、15桁に収めるように切り捨てや切り上げが発生しているのです。 このため、大きな桁と小さな桁の計算ではよく誤差が発生します。

科学的な解析や、金利の会計など、非常に大きな数字と小さな数字を正確にあつかうのは、Excelには難しいです。

結論:やっぱ信用できないじゃん。やっぱ電卓だな。

馬鹿なことやってるんじゃありません。 何処に間違いがあるかわからないから、全部計算しなおすなんて、時間の無駄です。

注意が必要なのは、以下のケースです。

  • 小数を含む引き算では誤差が生じることがある。
  • 有効桁数は15桁で、それを超える精度の数値を扱うと誤差が生じる。

単なる整数の足し算の集計なら、まず誤差が出るようなことはないです。

小数の引き算を使うときは、整数にしてから計算し、小数に戻す、などで対処できます。

15桁以上の精度で正確に計算する必要のある、科学計算や会計処理は専用のシステムを使いましょう。 それらをExcelでやろうというのがそもそも間違いです。

Excelの「これだけはやっちゃだめ」 ファイル名に"[ ]" (大括弧)を使ってはいけない

禁忌

神エクセルなど、Excelのよくない使い方は多々ありますが、「これだけはやってはいけない」という禁忌が一つあります。 タイトルにもある通り、「ファイル名に"[ ]" (大括弧)を使ってはいけない」というものです。

"[ ]" (大括弧、または角括弧とも)は、「Windowsのファイル名には使えるが、Excelのファイル名には使ってはならない」という特殊な文字です。

「使えない」ではなく「使ってはならない」というところがポイントです。 Excelからは、大括弧を含むファイル名で保存することはできません。 ですが、エクスプローラーからファイル名を直接編集した場合は、大括弧を含むファイル名にできてしまいます。

たとえば、大括弧を含むファイルでは、読み取り専用のままになってしまうという不具合が発生することがあります。

answers.microsoft.com

ウチのはちゃんと動いてるから大丈夫? いいえ、ダメです。やめましょう。

Excelそのものがファイル名に大括弧を使用しないことを前提につくられているものです。 どんな不具合でるか、全くわかりませんし、いつ壊れるかもわかりません。 ファイル名に大括弧を使ってしまったら最後、正しく動く保証がなくなってしまう、といってもいいです。

Excelを使うなら絶対に守らなければならないルールです。 どうしても大括弧を使う必要があるなら、Excelを使うのをやめましょう。