これからの時代、プログラミング的思考を身につけることが重要。
といっても難しそうなので、カレー作りを例として、わかりやすく学んでみましょう。
プログラミング的思考の3つの要素
プログラミング的思考には、以下の5つの要素があると言われています。
- 組み合わせ
- 分解
- 分析
- 一般化
- 抽象化
この5つの要素をみていきましょう。
カレーを作ろう
プログラミングと料理は似ている、と言われます。手順立てて行ったりするところですね。
みんな大好き、カレーを作りましょう。以下はバーモントカレーのレシピです。
- 炒める 鍋で具材を炒める
- 水を入れ煮込む あくを取り、具材が柔らかくなるまで煮込む
- ルウを入れる ルウを割り入れて溶かす
- 煮込む 時々かきまぜながら煮込む
はちみつを入れる場合、2.で入れる
これを、プログラミング的思考を使ってプログラミングしてみます。
以下、プログラミング言語として、初心者にもやさしい、スクラッチ を使います。
スクラッチは、子供も学びやすいビジュアルプログラミング言語です。
このように、ブロックを組み合わせてプログラミングします。
ではカレー作りプログラミングを考えましょう。
カレー作りで学ぶプログラミング的思考
「組み合わせ」まずは順番を考えよう
レシピにそってプログラミングしましょう。まずレシピの内容を単純に並べてみます。
さて、おかしいですね。はちみつは煮込む前に入れないといけません。
順番を考えて並べていきましょう。これが組み合わせです。
「分解」やることを細かく分けよう
「はちみつを入れる」ですが、もうすこし細かくいうと「はちみつがあるなら入れる」となります。
「水を入れ煮込む」も、細かくしましょう。あくを取りながら煮込む、となりますね。あくはどれくらい取ればいいんでしょう?1分おきくらいに取るとしておきますか。
このように、やることを細かくしていくことが、分解です。
「分析」つくったプログラムを振り返ろう
カレープログラミングができました!このプログラムで、さっそくカレーを作りましょう。
カレーはおいしかった?もしかして、もうすこしあくを取ったほうが良かったかな?
できたプログラムを振り返り、なおしたほうが良ければ改善していく。これが分析です。
「一般化」ほかのところにも活かそう
さあ、我が家のカレープログラムが完成です。
このプログラムは、ほかにも応用が効くかもしれません。たとえば、煮込むときのあく取りはこれくらい…は、シチュー作りでも使えるかも。
できたプログラムを、他のプログラムでも使えるようにしていく。これが一般化です。
使えるようにするのは、そのプログラム自体でもよいし、そこでの考え方でもOKです。
「抽象化」やることをまとめて単純にしよう
さて、いくつかのブロックで組み合わせたこのカレープログラム、一言でいえば「カレーを作る」プログラム」ですね(当たり前ですが)
このように、「複雑な手順を、要は〇〇」に置き換え、単純にすること、これが抽象化です。
さて、抽象化ができると、なにがよいのでしょう?もう少し説明します。
この「カレーを作る」プログラムを抽象化すると、1つのブロックにすることができます。
そうすると、この「カレーを作る」ブロックを使って、さらに「料理を作る」プログラムもできます。
ルーがあったらカレーを作ろう、なければポトフにしようかな、というように。
さらに、うえで作った「料理を作る」ブロックを使うと「夜ごはんを食べる」プログラムもできるわけです。
このように、抽象化したブロックを組み合わせると、どんどん大きなプログラムを作ることができるわけです。
まとめ
プログラミング的思考を単純にいうと、
あることを行う手順を、
- 細かく分解したり
- 並びの組み合わせを考えたり
- 大きくまとめなおして抽象化したり
- できた結果が良いかどうか分析したり
- よさそうなら他でも使えるように一般化したり
といったこと。
プログラミングは、やることを小さく分けたり大きくまとめたり並べ替えたり…といった考えが大事になります。料理でなれるのも、ひとつの手ですね。
コメント