『ルビィのぼうけん』勝手に超訳 Vol.01
とうわけで、『ルビィのぼうけん』の勝手に超訳、を今回からしばらく続けてみます。
※理由はこちら(前回)
ルビィは、とても好奇心旺盛でチャレンジ精神に溢れた女の子
という設定で描かれています。
コンピュータというハードウェア的な物体であったり、世の中にたくさんあるシステムというソフトウェア的なプログラムだったり
こうしたものは、以前と比べればものすごく身近になっています。
私たち大人の世代にとって、なんだか得体の知れないもの、難しいもの、専門家が扱うもの(自分には関係ないもの)というものであっても
生まれたときからスマホやロボットに触れて、ScratchやMinecraftをゲーム感覚で扱う現代の子どもたちにとってはかなり身近です。
それでも、ハードウェアにしろソフトウェアにしろ、単に使いこなすだけでなく、どうやって作られているんだろう?
自分でも作れるかな?
と考えるかどうかは大きな一歩になるはずで、ルビィのように子どもたちの好奇心がその壁を突破するのだと思います。
もちろん大人も同じですが、超えるハードルはきっと、子どもたちの方が圧倒的に低いのでしょうね。
ルビィは、その壁を好奇心やチャレンジ精神だけでなく、もう一つ
「ひみつをひとつ知っている」ことで乗り越えています。
その「ひみつ」というのが、
どんな大きな問題も、小さな問題のあつまり
だという事実です。
第1章では、それをシーケンス(順番に並んだ命令)、小さく分ける、パターンを見つける、といった観点で解説されているのですが
その前に、この「ひみつ」で言っていることが問題だけでなくプログラミング自体にも当てはまるということは理解しておいた方が良いと思います。
複雑で難しそう、自分にはできそうにないもの、と捉えている(かもしれない)プログラミングというのは、実は命令の集まり(プログラム)を(順番どおりに)動かすこと、でしかない、ということにすぎないのであって、
大きくて複雑にみえるプログラムも、単に、小さな命令の組み合わせでしかない
というように捉えてみるだけで、実は誰にでも理解できるもの、ということが分かると思います。
概念的な話ではなく、本当にそうなんです、機械音痴で数学嫌いで物理のまったく分からない私にも理解できたのですから・・・
この概念を現実社会で活用できないものか?ちょっと考えてみました。
たとえば新入社員や子どものように、自分にとっては当たり前だけど、経験や知識が不足していてうまく処理できない人たち
を相手に、何かお願いごとをするときに使えそうです。
子どもを相手に考えてみましょうか。
たとえば最近、我が家の小学3年生の息子は、とりこんだ洗濯物を畳んで各所にしまうお手伝いをしています。
彼に対して、私が最初に出した命令は
「とりこんだ洗濯物を畳んでしまっておいて」
でした。
すると彼は、洗濯物を畳み始めるのですが、まず畳み方がよく分からないことに気づきます。
我が家の場合、タオルの種類によって畳み方が違っているので
「タオルAは2つ折りで、タオルBは3つ折りで・・・」
バスタオルやハンドタオルなど、タオルの種類によって畳み方の説明を加えます。
→これが「パターンを見つける」の1つ
他にも、同じ洋服であっても、ハンガーにかけたままでOKのものや、ハンガーから外して畳むものといった違いがあったり
→これも「パターンを見つける」の1つ
畳み終わったら、次は各所にしまいに行くわけですが、はじめは、どれがどこにしまわれているのかが分からないので
またもや1つずつ教えることになります。
お兄ちゃんの服や洋服ダンスの上から2段めと3段め、妹の服は4段めと5段め。
お風呂あがりに着るものやタオル類は洗面所、キッチンで使うものは・・・
と細かくやり方を教えます。
→これも「パターン」の1つ
そんなこんなで、ものすごく苦労して初回のお手伝いを終え、それを何回か繰り返しているうちに彼はだいたい覚えてくれたようで
今では
「洗濯物よろしくね」だけで実行が完了するようになりました!!
これこそがプログラミングの効果ですね。
「洗濯物よろしくね」
という大きな単位では理解できないのであれば、それを細かく分けていきます。
→ これが「小さく分ける」
1. 洗濯物を畳む
2. 畳んだものをしまう
それでも分からなければ、さらに細かくします
1. 洗濯ものを畳む
1.1. 畳むものと、畳まないものを分ける(パターン)
1.2. 畳むものは、種類に応じて畳み分ける(種パターン)
1.3. 畳まないものはそのまま何もしない
2. 畳んだものをしまう
2.1. しまい先ごとに分ける(パターン)
2.2. しまい先ごとにしまう
といった感じでしょうか。
とても、とても、とても面倒です・・・
でも、気がついたでしょうか?
この面倒なことは1度(もしくは人間相手なら何度か)考えて伝えるだけで、あとは実行ボタンさえ押せば結果が出せるのです。
しかも何度でも実行できて(きっと)同じ結果が出る!
これで洗濯物の片付けから解放されるわけですから、お手伝いとは子ども相手のプログラミングと思えば、大人もその思考を楽しめると思いませんか?
誤解のないように補足しておくと、お手伝いのやり方自体(シーケンスやパターンなど)をどこまで細かく指示するかは、各家庭のポリシー次第で変わります。
コンピュータは言われたことしかできないので細かく全てを正確に伝える必要があるのですが、子どもの自主性に期待するのであれば
試行錯誤しながら自分で最適なシーケンスやパターンを見つける方が子育てとしては◎だと思います。
それこそが、いまでいうところのディープラーニングなのでしょうね。
自分で考え、処理を最適化していくプログラム(=子ども)であってくれたら、親としてこんな嬉しいことはありません。
子ども自身も、自ら最適化しようと考える思考が育つのですから
まずは私たちも、プログラミング思考を学んで楽になりましょう(笑)