m-eye blog

ノンプログラマによるVBAとPythonの学習記録

ノンプログラマにとってのヒューリスティクスの重要性

f:id:m-eye:20181006102226p:plain

 

ヒューリスティクスってなに

ヒューリスティクスっていうのは、ひとことでいえば「経験則」、あるいは「臨機応変」のことです。「その場しのぎ」という意味でつかわれることもあります。

わたしのだいすきなマンガに「ドカベン」がありますが、ヒューリスティクスによれば、山田太郎がキャッチャーになるのは当然です。

山田太郎のように太っていればキャッチャーをやらせて、中西球道のようにスリムならピッチャーをやらせるのがヒューリスティクスです。

ふとっているほうがしっかりボールを受けとめてくれそうだと思いますよね。それに山田太郎にはピッチャーはむりだろうと思いますよね。

 

また、「激変する環境変化に柔軟に対応し、生き残る能力」のことを指すこともあります。

山でけものに襲われたら逃げるのがふつうですよね。それが経験則です。わたしたちは生き残るための知恵としてヒューリスティクスを身につけています。

 

ヒューリスティクスには、判断がただしいかどうか保証はありませんが、すぐに判断できるというメリットがあります。

飛行機は落ちたら死ぬから自動車で移動しよう、というのもヒューリスティクスです。本当はきちんとデータを検証し、過去の事例から死亡率を算出しないと正解はわかりません。

でも、すぐに飛行機の予約をとるかどうか決めるしかないときは、ヒューリスティクスにたよるしかありません。

 

また、月に10日勤務する予定のアルバイトの方から来月の勤務予定表をもらったときに9日分しか勤務予定がはいっていなかったら、「ああ、1日分予定を書きわすれたんだな」と判断します。これもヒューリスティクスです。

 

専門的な用語をつかうと

専門的にいえば、かならず正しい答えを導けるかどうかわからないけれど、ある程度のレベルで正解に近い解をもとめることができる方法で、答え(正解とは限らない)にたどりつく時間が短いという特徴があります。

ヒューリスティクスはコンピュータの世界と心理学の世界の両方でつかわれます。

どちらも同じ意味でつかわれていて、どちらもノンプログラマにとっては重要です。

 

コンピュータの世界では

プログラミングの方法(戦略)を指します。

プログラミングの戦略には、3つあるとおもいます。

 

1つめは、アルゴリズム(手順の言語化)にもとづいて、正解を導きだす「超最適化戦略」。

これが理想です。というかふつうです。プログラミングをするひとは、まずこれをめざします。

 

2つめは、近似アルゴリズムにもとづいて、答えをあるていどの誤差の範囲内におさめる「近似解戦略」。

プログラムの種類によっては、正解ではなくても近い答えでじゅうぶんなことがあります。ふつうは超最適化戦略か近似解戦略をとります。

 

3つめは、ヒューリスティクスにたよった「その場しのぎ戦略」です。

とにかくはやくプログラミングをおえなければならない状況で有効です。ノンプログラマは(専門家でも?)納期が10分とか15分とかいうときはあります。「とりあえずforループでまわしとけ」とか、そういうことです。

 

とくに重要なのは

 

「その場しのぎ戦略」の重要性と有効性です。ノンプログラマには「本業」があります。それを助けるためにプログラミングをおこないます。逆はありません。

 

本業をおこたってプログラミングに没頭するようでは、いくら難解な問題をエレガントな解法で解決したとしても、評価はされません。

上司は30分後に答えがほしいのに、完璧な答えにこだわって3日後に答えをだしてもまったく意味がありません。

本業をがんばって、上司の期待にこたえるための1つの方法として、ノンプログラマはプログラミングをするのです。

 

一般に、「その場しのぎ戦略」は「近似アルゴリズム戦略」よりも正解に近いことが多いのです。それを知らないと、「近似アルゴリズム戦略」で(その場ではむだとわからないが)むだな努力をしたり、よけいな時間をくったり、しなくてもいい遠回りをしてしまうことになります。

 

ヒューリスティクスの重要性は

 

ここですべてを伝えきるのは不可能ですが、むだなことをしないためヒューリスティクスを知っておいたほうがいいのはたしかです。

「経験則」にしたがって「臨機応変」にその場その場をしのぎましょう。

 

Copyright 2018 m-eye blog All Rights Reserved.