![見出し画像](https://assets.st-note.com/production/uploads/images/23269662/rectangle_large_type_2_1e6f33b95f253f4fdc4a4b8cc26d126d.png?width=1200)
ど文系の私がプログラミング的思考を学んでみる②(分解)
こんばんは。
あおはるです。
ど文系の私が、新しい概念を学びながらその過程を公開していくというコンセプトで始めてみた企画。
前回からの続きもので、プログラミング的思考についてです。
前回はこちら(プログラミング的思考とはなんぞやの概要です)
プログラミング的思考とはモデル化をすること。
モデル化するにあたって、ベネッセさんのサイトでは、
・分解
・抽象化
・一般化
・組み合わせ
に分けて考えてみましょうと書かれておりまして、今回は分解について学んでみます。
最後まで読んで頂ければ幸いです。
分解とは?
以前に、分解についてはこんな記事を書いてみました。
プログラミング的思考でいう分解も概ね同じ意味合いかと思いまして、大きな事象を理解するために、小さな構成要素に切り分けましょうという考え方です。
↓
なぜ分解する必要があるの?
いま私はこのブログに文字を書いていますが、文字を書くという行為に対して裏側ではたくさんのプログラムが動いています。
細やかなところは端折りますが、例えばプログラムで文字を表示させようとした場合、以下のような文章が必要になります。
有名な「ハローワールド」。
プログラミングをする際に、最初に学ぶプログラムです。
<!DOCTYPE html>
<html>
<head><!-- 裏設定エリアの開始 -->
<meta charset="utf-8"><!-- 文字化け防止 -->
</head><!-- 裏設定エリアの終了 -->
<body><!-- 画面に表示されるエリアの開始 -->
Hello World!
</body><!-- 画面に表示されるエリアの終了 -->
</html>
(参照元:https://www.sejuku.net/blog/107984)
コンピューターの良いところは文句を言わないこと。
悪いところは曖昧な表現を汲み取ってくれないことです。
コンピューターに何か行動をしてもらうためには、具体的に指示をださなければなりません。
↓
具体的に指示するためには、工程を分解する必要がある
正確な結果を出すためには、正確な指示が必要です。
「あれやっといて」と依頼して「ん~なんか違うんだよな」という結果になるような、ファジーな指示ではコンピューターは動いてくれません。
「いやいや、『Hello World!』って出してくれるだけでいいんだよ!」
「どの文字フォントですか? どこにですか? 指示してください」
みたいな会話が上記のコードではやり取りされています。
(※厳密には「どこに」はちょっと端折ってますが)
現実で誰かに指示やお願いする時に、文字サイズとかフォントとか文字位置とか細かな話はしないですよね。
相手が察することが上手だと、あうんの呼吸のようなものでも伝わってしまう。
でも、本来的には、正確な結果を出すためには、正確な指示が必要になります。そして正確な指示をするためには、結果を構成する要素を正確に洗い出す必要があります。
これが分解の概念です。
↓
正確な結果を出すために
プログラムに限らず、事象は色々な切り口で分解ができます。
例えば、料理。
レシピをイメージしてみましょう。
必要な食材や調理工程が書かれています。
カレーを分解するとして、にんじんやじゃがいものような食材という切り口で分けることもできますし、野菜を切る→玉葱から炒めるといった調理工程という切り口で分けることもできます。
このレシピがあるからこそ、初めての人もなぞることで同じように作ることができる=つまりこれがモデル化されているということになります。
食材や調理工程に抜け漏れがあると完成品(=結果)にならないので、完成品を構成する要素を網羅的に抜け漏れなく抑える必要があります。
何となく分解が掴めてきました。
では、次の抽象化や一般化や組み合わせはなぜ必要なのか。
次回以降にさらに考えていきたいと思います。
以上、最後まで読んでいただきありがとうございました。
続きはこちら
ど文系の私が、新しい概念を学びながらその過程を公開していくという企画はこちらにまとめております。
他にもビジネス系はこちらにまとめております。
もしよければあわせて読んでいただければ幸いです。