見出し画像

料理とプログラミングは相通ずる

2020年にプログラミング教育が小学校で必修化され、ビジネスの世界でも、プログラミングが一大ブームとなりましたね。プログラミング云々以前に論理的な考え方ができるようにならなければ、なかなか修得することが難しいとは思いますが、子供たちは楽しみながら修得できているのでしょうか。そうだといいな、と思います。

コンピューター自体ができることは今も昔も変わりません。

0と1の演算のみです。

人間がそれを容易に使えるよう様々なプログラミング言語が生み出されてはいますが、結局のところどの言語でも書き方、読み方に多少の差異があるだけで、最も基礎となる『基本構文』の種類、数、特性などはほとんど変わりません。

あえていうなら…標準関数として用意されている種類や傾向、量に違いがあるくらいでしょうか。

さらにビジネスになると、そこから人気度やエンジニアの数などから開発可能な言語を特定したり、発注するのでしょう。どんなに優れた言語でも、世の中にエンジニアがほとんどいないんじゃ、プロジェクトチームを構成することも一苦労ですもんね。


そして、コンピューターがプログラムを動かす原理原則は常に「一連の処理手順=アルゴリズム」と言うことも変わりません。

「これからは小学生だってプログラミングを学校で勉強するらしい。
 ビジネスマンたる自分もプログラミングをやらないといけないのでは?
 よくわからないけれど……」

ITとは無縁の業界にいるサラリーマンのおじさんたちの中では、こんなふうに軽い「プログラミング強迫観念」に駆られている人も最近増えているようです。

それもそのはず。

毎日テレビではAIを取り上げた番組をやっていますし、新聞や雑誌にブロックチェーンやIoTに関する記事が載らない日はありません。加えて、子ども向けのプログラミング教室が人気です。プログラミングですごいサービスを創ったり、賞を取ったりすると、すぐさまマスコミが飛びつくほどです。

中にはお子さんの将来のために、「とりあえずやっておきなさい!」みたいなノリで通わせていらっしゃる方や、検討されている方もいるのではないでしょうか。

そうなると、親の立場としてもプログラミングを少しくらいかじっておいたほうが良いような気もしてくるわけで、会社でも最近機械学習の仕組みで顧客情報を分析したりするとか言っていたし、でも…となっているそうなのです。

 「自分が今からプログラミングやって、何になるの?」

という言い訳を言って、目の前の課題から逃げている人も多いと言います。

もともとプログラミングとは、本来は人間がやるべき仕事を「なんとかして楽にできないか?」という人間本性の怠け心が出発点にあります。非常に便利にしてくれる…と言えば聞こえはいいのですが、要は「楽をしたい」を実現するために発展してきたと言ってもいいでしょう。

当然、

 ・いつでも、だれでも同じ結果を安定して行えるように
 ・人を育てる時間を圧縮できる

などの目論見もあったのかもしれませんが、なによりも「自動化」によって楽できるようにと考えられたのがプログラミングだったのではないでしょうか。

人間は皆、実は仕事が嫌いで、やらなくて済むならもう本当にやりたくない。スキあらば怠けたい。ラクして暮らしたいという動物なのだ、という説があります。

 「繰り返し同じことをやるなんて、耐えられない!」
 「どうせやるなら短い時間で終わらせたい!」
 「次の仕事にもこのやり方を適用できるようにしたい!」

実際、私たちが仕事の中でショートカットを駆使したり、Excelマクロを作成したり、ちょっとしたことでもすぐに上記のような意図をもって、日々仕事の改善をすることから考えても、"楽をするため"の原動力には計り知れない力があると言っても過言ではないでしょう。

このような気質や動機は、当然ながらビジネスパーソンだけでなく主婦の方々も持っています。買い物一つとってもそうですし、掃除や洗濯、料理にしてもそうでしょう。ほんの少しでも効率的で再現性が高く、楽な方法を模索しているはずです。

考えても見てください。

一流の料亭やレストランであれば料理法は下働きから始めて、都度盗んで、修行し、反復して学んでいくものかもしれませんが、一般家庭ではそんなことしていられません。

だからレシピがあるわけです。

画像1

これらのレシピは材料の配分だけでなく、具体的な手順まで明記されており、読んだ人、読んだとおりに実施する人であれば「いつでも」「だれでも」「何度でも」再現できるように記述されています。

これによって、一流料亭やレストランと同じかどうかはともかく「美味しい料理法を盗んで修行する」手間と時間を大幅に削減でき、その時間分を楽できたのは言うまでもありません。

掃除にしても、洗濯にしても、そうした「楽をするコツ」というものはたくさんあります。日常生活や家事においても

 ・早く効率良く終わらせたい
 ・次回にも役立つ手法を作りたい

という気持ちが常に働いているのは何も変わりません。むしろ仕事の間だけ「楽したい」と思ってると勘違いする方がおかしいのです。

こういった気持ちから作られた具体的な「処理(作業)の手順」のことを

 「アルゴリズム」

と呼びます。

そして、プログラミングの世界では、どのような場合でも適用できるようこのアルゴリズムをもっと数学的に突き詰めて、一般化していくのです。

数学的にどこまで処理の手順(アルゴリズム)を突き詰めていくかは別として、やっていることとしてはプログラマーもあなたも「早く、効率のよい手順」、つまりアルゴリズムを作ったという点において全く同じであるといってよいでしょう。

そしてこのことは、家事だけでなく、

 ・会社での仕事の進め方から出勤時の通り道
 ・仕事の段取り

にいたるまで、生活全般、いや人生全般において当てはまるといっても過言ではありません。これらすべてにおいてアルゴリズム(プログラミング的思考)を皆、意識・無意識のうちに使っているわけです。

たとえば、野球においてピッチャーやキャッチャーの頭の中も、バッターとの心理戦の他に、セオリー(配球論)と呼ばれるアルゴリズムが多々あります。

たとえば、私たちは、生活の中で「朝起きたらまず着替えて、次に顔を洗って、食事を摂って…」と、型にはめて活動しようとします。これも日々のルーチンワークを効率よくこなすためのアルゴリズムです。

「アルゴリズム」と認識していないだけで、世の中の多くは"楽をするために"アルゴリズム化していることの方が多いのです。

次に、アルゴリズムと判断基準についてですが、先のレシピの例で、

 「自分はもっとゆっくり、いろいろなチャレンジをして
  できあがる料理を楽しみたい派だ」

と思ってる人もいるかもしれません(まぁよほど慣れている方でない限り、メシマズとなるだけでしょうけど)。先ほどは「早さ・効率の良さ」を基準にアルゴリズムを考えたわけですが、「楽しさ」や「多くの経験を得る」、「新しい味を知る」という別の基準で考えてもいいでしょう。

他にも、

 ・材料費の安さ
 ・新しいことを体験できる(自分のスキルアップになる)
 ・レパートリーを増やす

など、さまざまな基準が考えられます。 それらの中から特定の基準を選んで、処理の手順(アルゴリズム)を作っていくことができます。

自分の中に何らかの基準を持ってロジカルな判断をしている人は、プログラミング的思考を持った一本芯が通っている大人、と見られることが多々あります。

そうみられている人たちの多くが「感情よりもロジック」を優先しているように誤解されがちですが、残念ながら人間はそこまで高尚な生き物ではありませんし、なれません。

ロジカルな判断ができる人と言うのは、

 「感情を優先したうえで、その感情に沿ったロジックを構築する」

ことができる人のことです。

アルゴリズムというと難しく感じますが、今まで見てきたように結局のところは「日常生活やビジネス上の判断基準をいかに作るか」ということでしかありません。ビジネスの世界でアルゴリズムに通じるということは、別にプログラミングに長けるというわけではなく、さまざまなジャッジをするための基準を自分の中に持っている、ということになります。

間違いなく判断の速さに直結していることでしょう。それは"常識""一般論"ではなく、自分の知識や経験、好き嫌いなどの感情も含めたうえで、明確な基準となっているはずです。ただその場の思い付きでしか話せない人とはその点で異なります。

たとえば、投資会社が投資先からの撤退基準をどのように作るか、を考えるとよいでしょう。また、基準を持っている経営者のほうが、よりドライで効果的に意志決定ができます。

コンピューターの世界のアルゴリズムの基準の多くは実行速度やメモリの消費容量ですが、日常生活の基準は実に多様です。

 「今月は健康診断があるから、週の半分は休肝日にしよう」

画像2

と言うのも1つの基準でしょう。

 「来月買いたいものがあるから、今月は出費を〇円に抑えよう」

画像3

と言うのも基準になります。プログラムで言えば、if句を使った基礎制御文で柿表すことが可能ですよね。そしてその基準を満たすためにどのように処理(作業や生活)をしていくのかをルール付けしたり、行動内容を決めたりするわけです。

日常生活のアルゴリズムとコンピューターの世界のアルゴリズムを相互に行き来して、お互いのアルゴリズムに落とし込むことができるようになることが重要です。

処理の基準(アルゴリズム)がしっかりあるものは自動化できるので、人間はそれ以外の「人間にしかできない仕事」に集中すべきです。

私はリアルでも、ネット上でも再三再四、

「人の感情にはたらきかけるもの以外、
 すべて再現性の高い仕組みとして確立することができる」

と言ってきましたが、そう考える先にはこれがあります。人が、人でなければできないことに集中しさえすれば、もっと多様なことができるはずで、コンピューターや仕組みに任せておけることをわざわざ人が実施するだけでどれだけ多くの無駄な時間を費やしているのかと思うと残念でなりません(人が実施するからこそ、ミスや漏れが発生するだけだし)。

これからの時代、プログラミング自体はできなくてもプログラミングの考え方を学ぶことで、IT業務に参加したり、IT業務に関連した価値を提供することができるようになります。そのことがプログラミングやアルゴリズムを学ぶ目的の1つでもあり、貴重な過去のスキルや経験を、一般化した形に変えて社会に提供し続けていくための方法となるのではないでしょうか。

いただいたサポートは、全額本noteへの執筆…記載活動、およびそのための情報収集活動に使わせていただきます。