歌ってプログラミングを考えよう - ロボットにお願いするとしたら? –
歌いながら、コロッケは作れるの?
キテレツ大百科というアニメを知っていますか?藤子不二雄さんの生み出したアニメです。発明が大好きな小学生とその子が発明したコロ助という話せるロボットとのお話です。そのアニメの中で流れていた、コロッケを作る歌、ご存知ですか?「お料理行進曲」という曲名でしたね。
https://plaza.rakuten.co.jp/chichionin/diary/201212020008/
子どもの頃、アニメを見ながら流れていた曲なのですが、この通り作ればコロッケ作れるんだ!と覚えておこうと思った記憶があります。私の大好物がコロッケだったからです。この曲の1番は、コロッケの作り方です。この間、これを実践したら、本当にコロッケが作れるの?という企画のテレビ番組を目にしました。曲に合わせて、人が同じスピードで、実践していておもしろかったですが、実際何とか作れていました(笑)
歌のレシピを思い出そう♪ロボットでも作れるの?
下記が歌詞になります。(曲は、カバーがyoutubeやニコニコ動画にもありましたので、ご参照ください)
– キテレツ大百科「お料理行進曲」より –
「いざ進めやキッチン めざすはジャガイモ ゆでたら皮をむいて グニグニとつぶせ
さぁ勇気を出し みじん切りだ包丁 タマネギ目にしみても 涙こらえて
炒めよう ミンチ 塩・コショウで 混ぜたなら ポテト 丸く握れ
小麦粉・卵に パン粉をまぶして 揚げればコロッケだよ キャベツはどうした?」
では、この曲の歌詞通りに、ロボットに実行してもらうとなったら、うまくコロッケが作れると思いますか?
1. まずはキッチンに行く! → これはできそう
2. ジャガイモをめざす → これもできそう
3. ゆでたら皮をむく → ジャガイモをめざしたけど、ジャガイモを手には持っていない。ゆでるためのお湯も沸かしていない。ゆでるのは何?って迷いそう・・・
4. グニグニとつぶせ → ジャガイモをつぶすとして、何でつぶそう?フォーク?マッシャー?グーの手で?
:
:
この辺でロボットは大混乱しそうですよね・・・(笑)
具体的に書いてみよう
プログラムを書くということは、お料理や他何かを作ったり、実行したりするための手順を書いていくという作業になります。ロボットに命令する手順、それがプログラムです。手順は、人間ならこの歌詞を聞いて、例えば、茹でるのはジャガイモだなとか、茹でるのならその前に、お湯も沸かしておかないといけないなと、頭の中で考えて補いながら実行することができます。でも、ロボットであれば、そこまで具体的に細かく、「誰が何をどうする」をはっきりと書いてあげなければ、混乱したり、間違えたりします。茹でたら、茹でた時に使ったお湯を捨てて、一度ジャガイモを取り出すとか、細かい指示も必要ですね。そうしないとジャガイモもお湯と混ざったりしてしまうかもしれません・・・。
効率よい方法を考えよう
そして、もしコロッケを作るのに数をたくさん作るのであれば、”ボテトを丸く握って、小麦粉→卵→パン粉に付ける”という作業を、作れる数の分だけ繰り返し行うのが良さそうですね。すべてのジャガイモが数の分だけ作れたら、全部揚げて出来上がり!もし、一つ作って、一つ揚げたらおしまいであれば、ジャガイモが残ってしまうし、一つずつ丸めて、揚げてを繰り返していたら、時間もガス代もかかってしまって効率がよくないですよね。そうならないように、全部ポテトを丸めて作ってから、お鍋や油の温度から、3個ずつ揚げるのがいいかなとなれば、3個ずつお鍋に入れて、なくなったらおしまいという命令を出すのが良いですね!
https://recipe.rakuten.co.jp/recipe/1210006231/
プログラミングに必要な考え方
お料理をするときに、自然に人はいい方法を考えて動いています。無駄にならないように、早くできるように、そしておいしくできるように。そのような考え方で、ただ手順を並べるだけではなくて、具体的にかつ、効率の良いやり方を指示して、何かを作り上げたり、目的を果たしたり、問題を解決すること。それがプログラミングを組むときに必要な考え方になります。
初めてコロッケを作る時に、この歌を思い出しながら作ったりしました。この曲の手順は、全くその通りで、人間にとっては楽しく、ためになる曲です♪でも、ロボットに命令するとしたら?と考えた場合には、もう少し細かく書いてあげる必要があって、早く的確にできるようにできることを加えてあげると、ロボットでも美味しいコロッケが作れるようになりそうです。目的を果たすために、どんなやり方がいいのかなって考えるのが、プログラミングをするときに、まずは必要な考えになります。答えは一つではないので、いろいろ試してみて、失敗したら、変えてみたり。いい方法が見つかったら、変更してみたり。それもプログラミングの楽しさだと思います。