1. 料理で考えてみる
入力から出力を料理で考えましょう
プログラムにおいて必須となるのはまず入力と出力、この二つです。
シンプルに考えましょう、あるプログラムを実行すると何かキーを押すことを求められます。そして例えばbを押したとします。次には画面にbという文字がでました。
これはプログラムとして入力を押したキーとして、そのキーの内容をそのまま出力するものとして出来上がっています。画面に表示される文面で入力要求はただの案内であるためなくても構いません。その場合には何かキーを押す必要があることをプログラム実行者が知らなくてはならないというだけです。
ここで認識してほしいのはプログラムを動かす、という際には入力と出力が存在するという事実です。この入力からスタートし様々な計算を繰り返すことにより最終的に出力を得ています。それがどれだけ複雑であっても最初には入力、最後に出力という流れ自体は変わることはありません。
これに少し例え話をします。理解されている方であれば別に良いかと思われるかも知れませんが、のちの工程での説明がしやすいため今一度お付き合い願います。
材料から何らかの調理工程を挟んで、最後に料理出来上がるというのがざっくりとした料理の説明です。ここで近しいのは材料、そして最後の料理です。その間でどのように食材を調理するのかというのがプログラムの処理そのものとも言えます。
ではここで少し見方を変えてみます。外食でも自炊の場合でも構いませんが、料理を楽しむにあたって一番重要な事とは何でしょうか。味、見栄え、様々な要素があることは事実です。
しかしそれは最重要とは異なります。本来料理として口にするのであればその料理は確実に安全でなくてはなりません。料理が原因で体調を崩す、寝込む。最悪の場合は命も、というのは食事として完全なる失敗に他なりません。
身体の維持に関わる以上安全そのものが一番の基礎なのです。しかしこれをプログラムに比較して考えるとどうでしょう。
プログラムの安全とは一体何を指すのでしょうか。現在の世界において非常に多くの分野にプログラムが使われていることを考えるとこの定義は業界やその部署単位でも異なるものとなります。
例えば医療や航空機など人命に直結するような世界と、金融など日々の値動きや取引を膨大に処理する世界では重要な観点というものが異なってきます。
ここではできる限り共通する観点から要素を抜き出して、正しく計算が行われることを安全性と定義します。
この正しいとは何を指すのかという話で色々知らなければならないことがあるのですが、それを次章に回したいと思います。
この章では最後に計算対象と料理の比喩で締めようと思います。仮に料理店を営んでいるとしましょう。
お客さんが豚肉を食べたいと意思を示したとします。この時にトンカツを作るというのはニーズに合っています。
別に生姜焼きや一枚焼きでも構いませんがスキルや用具の準備なども合わせてその選択に至ったとしましょう。ここでの選択とはプログラムで見るとそのまま個人のプログラムスキル、職場や個人のPCのスペック事情だったり扱えるデータのクオリティにも依存します。
では仮に次に訪れるお客さんがチキンカツを要望したらどうでしょう。少し前にトンカツを作ったばかりで材料や工程はかなり流用が効きます。
一方で鶏肉の準備はあるのかという点がネックになります。これは最終的に欲しい出力に対してその材料であるデータが入手可能なのかという話に帰着します。意外とデータというものは無視できない要素であり信頼性があるのか、十分な量であるのかという点で入手性が低く扱えないという事例も起こりえます。
そういったものは飲食店だと通常メニューには載せられず単発で出す程度にしかできないでしょう。プログラムであれば試算程度で定例業務としては組み込めない状態です。
さらに考えるとお客さんの要望は色々あるかもしれません。しかし飲食店のリソースというものは有限です。これがまさしく職場やチームのリソースそのものであり何ができて何ができないのかということから取捨選択を行う際に常に考えるべき項目となります。




