探究型プログラミング学習(探プロ)

プログラミングの考え方を学んで、未来を創る力を手に入れる

プログラミングの考え方を学んで未来を創る力を手に入れる

プログラミングを学習すると問題解決力が身につくって本当??

我が家の8歳になる息子が暇そうだったので、週末にiPadを使ってScratchJrを触らせてみました。

画面UIは、以前にQremoの体験講座でレゴのWeDoを触ったときのものに似ています。

アイコンを組み合わせてプログラミングするイメージですね。

さすがに、すぐ使いこなしてしまったのでScratchの方も引き続き見せてあげました。

 
子ども向けのプログラミング学習といえばScratch、なのはもちろん分かっているのですが、私は子どもにパソコンを積極的に触らせたいと考えていないので、これまで見せたことがありませんでした。
ちなみに、あまりパソコンを触らせたくないのは、目的がないうちは使ってほしくないからです。
キーボードも使いこなせない今の年齢だと、テレビやゲームと同じレベルにしかならないですし。
 
彼がScratchを触っている姿をみても、わたし自身は全くワクワクする感じがありませんでした。
よく、子どもがプログラミングに夢中になる姿をみて素晴らしいと思った!
などという感想を見かけるのですが、ちょっと共感できないというか...
 
ずいぶん昔、私が社会人になりたてのころに受けた新入社員研修では、プログラミング(当時はCとJava)の講座を受けました。
自分の書いたプログラムを動かす、という初めての経験でしばらくは楽しめたことを思い出します。
最初にScratchを与えられた子どもたちも、きっと同じような感じでしょうね。
 
ブロックを使ってネコを動かしている姿を見ながら、これはプログラマーが最初にやるHello Worldと同じレベルだなぁ、と考えていました。
要は、どんな機能があって、どうやって使えるのかを確かめているにすぎないのです。
 
Scratch環境を与えられて、ほら、好きなようにプログラミングしてごらん
と言われても、所詮はその閉じた世界の中で、覚えた機能を組み合わせているだけですよね。
 
これでモノづくりの楽しさを体験させる、というのは、ずいぶん乱暴だなぁ、という印象を受けました。
確かに、物珍しさから楽しめたり、他の子の作った複雑なプログラムを見て奮起したり、アルゴリズムを組みながら思考力をつけたり、自分の作ったものを見せて称賛されることでやる気になったり、など良い効果がたくさんあることは分かります。
でも同じようなことは、別にプログラミングじゃなくても体験できるはずですよね。
プログラミングでなければ体験できないこと、というものがありません。
 
そして、よく言われるような、未来を生きる子どもたちに必須である問題解決力をプログラミング学習で身につけよう!
という話には、どうやったら辿りつくのだろう?
と疑問に思いました。
 
これもよく言われるように、プログラミングは手段です。
問題解決のための1つの手段です。
だから、当たり前のようにICT環境に生きる今の時代には、「問題」を「解決」するためにプログラミングを学習することは有効だと思います。
 
但し、その「問題」は、プログラミングによって解決することが最善である、という前提があるときのみ、という条件が付きます。
 
そもそも問題解決にあたって重要なことは、「問題」を発見したり、それを解決すべき対象(課題)と認識したり、解決するための手段を判断したりというプロセスのはずで、実際に解決するプロセス自体は、あまり重要ではありません。
(もちろん、難易度の高い解決に挑むなど解決自体に価値があるケースもあります)
 
なぜなら、解決すべき「問題」を捉え間違えていたら、解決すること自体に意味がなくなってしまうから。
 
Scratchを使ってアプリやゲームなどを作ることは、最後の解決するプロセスを実現するためのスキルを一生懸命磨いていることと同じだと思っています。
実際に、我が子がScratchのブロックを操作しているのを見たときに、そこに創造性とか、発想力、といったものを伸ばす余地が全く感じられず
こんなことをさせるくらいなら、むしろ段ボールで自由に工作したり、自分の欲しいものを手に入れるために友だちや親を説得したり、野球やサッカーを通じてチームワークの難しさを体験したり、する方がよっぽど今の彼にとって価値があると思いました。
 
もちろん、自分の作りたいテーマを課題として設定し、それを実現するための手段を考え試行錯誤することだって問題解決の一つであることは確かです。
ただ、そこで見えている範囲がすごく狭いことが気になります。
 
パソコンの前に座りながら、何を作ろう?
と考えていることが問題発見であり課題定義だというのだとしたら、本当にそこに違和感がないかどうか、もう一度考えてみてほしいと思います。
 
このままだとScratch批判になってしまいそうですが。。。
私はScratchに魅力を感じていないわけではありません。
 
一つ、文法の習得時間を短縮できる、というメリットがあると思っています。
小学生がいきなりプログラミングの文法をテキストベースで覚えるのは難しいですが、ブロック言語なら理解しやすい。
なので、ブロック言語ではない一般的なプログラミング言語を習得するためのステップとして、まずScratchをやってみて、そこで文法の使い方を覚えて、別の言語に置き換えることで学習時間をショートカットできるのではないか、と期待しています。
たとえば、この記事を読んでGoogleのblocklyなんかは良いなぁ、と思いました。
blocklyで書いたプログラムをJava Scriptなど他の言語に置き換えて表示することができます。

 

プログラミングを学習することで問題解決力を高める、というのであれば

やはり従来の学習スタイルを見直さなければならないと考えています。

 

ではどうやって見直すのか?

 

これから少しずつ書いていこうと思います。

@tanpro-lab