プログラミング教育は何のために?


■プログラミング教育で目指すもの


小学校教育におけるプログラミング教育の指導要領の中では、その中で次の「3つの柱となる」資質・能力を育てるとしています。
【知識及び技能】
身近な生活でコンピュータが活用されていることや、問題 の解決には必要な手順があることに気付くこと。
【思考力、判断力、表現力等】
発達の段階に即して、「プログラミング的思考」 を育成すること。
【学びに向かう力、人間性等】
発達の段階に即して、コンピュータの働きを、 よりよい人生や社会づくりに生かそうとする態度を涵養すること。
 要は世の中の多くの機械がコンピューターによって制御されていて、それらはすべてプログラミングによって動いているという背景から、コンピューターに意図した動作をできるようにするということを通じて、テクノロジーを上手に活用し、社会の課題を解決しようとする意欲を育んでいこうという意図が読み取れます。
 ですから、プログラミング言語を習得するということは目的としていません。どちらかといえば、その前の段階で、プログラミングというものに触れて、考え方を学び、その先にある未来への可能性を想像させることが目的であるとも言えます。


■教室での指導を通じて見えたもの


 さて、プログラミング教育の目的は上記のようにプログラミングに触れて、もっとやりたいという意欲を醸成し、それを活かしていきたいというマインドを育てることであると解釈すれば、まずは楽しくプログラミングをやってみようという導入が良いのだと思います。
 いわゆるプログラミング教室で行われている活動はこれに当たるものが多く、どんなスキル・技能を育てるのか、というよりも触れて、親しむことが重要で、その活動を通じて指導要領的な表現をするのなら「必要な動きを分けて考える(動きを一つ一つ分解する)」「動きに対応した命令にする(動作を実現するための命令を考える)」「組み合わせる(複数の動作を組み合わせて一連の動作を構成する)」という考え方を身につけ、試行錯誤を行ながら改善をしていくという「プログラミング的思考」を養っていこうという趣旨で取り組まれているのではないかと思います。


 これは機械をコントロールするだけでなく、子ども自身が学習者として自己を振り返ったときに、自らの課題を見つけ、自分自身の行動を一つ一つ振り返り、どう改善をしていけば成長・克服できるのかを考えたり、課題解決をしていく際の思考力を育む上での基礎となっていきますので、とても重要な教育であると言えるでしょう。


 そう思ってロボット教室でロボット制作とプログラミングの指導を行なっていましたが、子どもが楽しそうに取り組む姿には満足していたものの、どこかに違和感を感じるようになっていました。
 きっかけは保護者の方がお迎えにいらした際に「うちの子、何ができるようになりました?」と問われたこと。
 そもそも、小学校低学年のロボット教室やプログラミング教室で何かスキルを身につけさせるということを目的にはしておらず、親しみ、触れて、制作したものが動くということを通じて仕組みに興味を持たせることを狙いとしていましたので、「何ができるようになりました?」という問いに答えるのなら、「今日はこのロボットを自分で製作できるようになりました。」「プログラミングでこんな動きをするようにできました。」以外にないのです。
 これはプログラミング教室でも同じで、Scratchプログラミングを教え、マニュアル通りに制作をさせたとして、それは説明書通りにコードを組むことができました。それを少し改造して独自のものに変えることができました。というだけのことであり、Scratchスキルが向上したところで社会に出て活用できる訳でもなく、マニュアル通りに制作した成果物を見せる以外に可視化してこれができるようになりましたというものが見え辛いのです。


■マニュアル指導の限界


 習い事の教室としてプログラミングを教えていると、どうしてもマニュアル通りに作業をさせることが中心となります。それが目に見えて提供できる商品であるからです。ただ、そこには大きな課題がありました。マニュアル通りに作業を進め、それが完成したら活動が一気に停滞してしまうのです。


 せっかく完成させたのに、それをわざわざ改造して動かなくなったり、おかしくなったらもったいない、ということもあるのでしょうが、そもそもは何度もマニュアル通りに作業をしたところで、技能を習得しようという意志がその子になければ、改造にチャレンジできる下地となるスキルが備わらないので「改造にチャレンジすることができない」「何ができるかイメージも湧かない」という状況であるように感じました。


 それなら、とScratchやそのロボットのキットの使い方の技術をもっと指導すればできるようになると考えましたが、そこに子どもとのニーズのギャップが生まれ、マニュアル通りに先に進めてさっさと完成させたい子どもと、しっかり仕組みや使い方を教えたい大人の意識に差が出ていきました。
 それでも、ある程度折り合いをつけて使い方やスキル的な話をしつつ、指導をさせてもみましたが、残念ながら完成した後に積極的に改造にチャレンジして試行錯誤を試みようとする生徒はごくわずかでした。(どう改造するのかまで教えればやる子はいるのですが、改造の仕方を教えるというのは、結局言われた通りに作業をさせただけで、改造させることで試行錯誤をさせるという目的とはかけ離れていました。)


 最終的に感じたのは、マニュアルの流れに沿って完成させることが目的化しており、技術の習得をお互いの目標に設定していないために生まれたギャップなんだということです。


■生徒と目的を共有しなければ成立しない


 「プログラミングに親しみましょう」が生徒・保護者・指導者の間で共有するミッションであれば、こういった課題観は出てくることはなかったはずです。しかし、生徒は「完成させたい、楽しみたい」、保護者は「何らかの能力を向上させたい」、指導者は「楽しませつつ、もっとチャレンジさせたい」という状況ではかみ合わないのは当然のことです。


 ですが、それぞれに接点があり、上手くつなげば良いはずなのです。実際に、プログラミング教室をマニュアル重視ではなく、プログラミング的思考力を育成するために、まずは最低限の技術を習得しましょう。という共通認識を生徒・指導者間でまずは共有し、とりあえずマニュアル通りに完成形を作らせるというのではなく、段階を踏んでステップアップしていく形に変えてみると手応えが変わっていきました。
 そうなると、特定のプログラミングツールの技術の習得が目標のようになっていきますが、そこはプログラミング的思考力を育成するための手段であるというスタンスを変えず、その道具としてそのツールを選択しただけという説明をきちんとしておけば良いのです。


■プログラミングからロボットへ


 そのようなことを意識してプログラミング教育を突き詰めたとき、プログラミングをした結果が目に見える成果として分かりやすいのはロボットだなと改めて感じています。
 ロボット教室で指導をしていた時は、マニュアル通りに完成させることが目的化していて、見えなくなっていたのですが、プログラミングの成果を視覚的に確認でき、画面上ではなく現実の動きに反映されたものを用いて試行錯誤を行なうというのはより多くの学びが得られるものです。
 画面上ではプログラミングした通りに正確に動作するのが当たり前ですが、現実の世界の中でロボットを動かすとなると、重量、摩擦、自重、空気の流れなど様々な現実の条件も含めた上での試行錯誤となり、考えなければならない条件がとても多くなるのです。
 そういう意味でプログラミングツールの技術習得を超えた学びを提供するのなら、プログラミングを通じてロボットを制御するというのはとても良い選択肢だったのです。




■ロボットコンテストという目標設定


 ただ、「プログラミング的思考力を育成するために、まずは最低限の技術を習得しましょう。」と言っても、生徒自身はそれで「やりたい!」とはなりにくいものです。
 ですから、共通の目的をプログラミング的思考でもマニュアルでもなく「ロボットコンテストで勝とう」にすることをお勧めしています。ロボットコンテストで勝つために技術を習得し、工夫をし、試行錯誤を行なって賢くなっていこう。プログラミングスキルは手段であり、あくまでもツールの一つであったはずですので、本来の趣旨に一番近い位置づけになるのではないかと思うのです。
 「何のために?」と問われたら「ロボコンに勝つために」で充分で、そのためにプログラミングを学び、創意工夫をし、試行錯誤を通じてプログラミング的思考を育てる。その経験を基にしてプログラミングロボットを社会にどう生かしていけるのかを考えられる人材を育てる・・・プログラミング教育に関わりながら最終的に行きついた結果です。
 日本ではまだまだロボットコンテストと言っても高専ロボコン以外はそれほど盛んではないように思いますが、探すと小規模ながら意外と開催されているものです。
 我々の活動もロボット制作チームを立ち上げたばかりではありますので実績があるわけではありませんが、そうした教育的な手応えと価値を感じながら活動を行なっています。
 単にマニュアル通りに親しむのもプログラミング教育のあり方の一つではあると思いますが、ロボットコンテストという目標設定も広がっていくことを期待したいと思います。


■プログCLUB


東京都江東区で活動するロボット制作チームです。 小中学生、および高校生ロボコンを目指してトレーニングロボット開発を行なっています。まだ始まったばかりの団体ですが、「より早く、より賢く、より効果的に」を合言葉ロボットコンテストに向けて取り組んでいます。また、「ロボットの技術を学ぶだけではない、総合的なマネジメント能力を学ぶ機会を作りたい」というミッションを持って活動中です。現在新規メンバー募集中です。
プロCLUBホームページ
https://moroedu.com/progclub/
誰もがロボコンを目指せる場を作ろうとクラウドファンディングに挑戦中です!
https://camp-fire.jp/projects/view/323330




(出典 news.nicovideo.jp)


<このニュースへのネットの反応>

haskellと圏論必修化で行こう


人生や社会づくりにおいて、「プログラミング的思考」というのがどのように役立つのかわからない。他者と交流する場面で感情的じゃなく理論的に判断できるとかかな。スタートレックのMr.スポックみたいなの。


お偉いさん方及びその下僕衆が、なんとなく仕事した気分になるためのカリキュラム変更だろ?


プログラミングが必要なのかはわからないが、本来の意味での情報処理、つまり情報をどういう風に扱うかを教える方が良い気もする。多数の情報を、並べ替えたり、分類したり、比較したり、包含や相関などの関係性を見てみたり、といった基本的な情報の扱い方を学んだり、実際に活用してみたりするような感じの授業。


プログラム的思考で身につくのは結果的考え方、10という数字を導き出すのに1+1+…とするまた5+5とするなど10と言う結果を導き出す色々な思考が生まれるのだが、当然無くなる思考もある道徳的思考が身につかなくなる10を導くで考えるならより多くの人が安全に楽しみ効率的に10を導き出せる方法が無くなってしまう皆それぞれの最効率を求める為に


資本家様がIT奴隷欲しいだけ


LOGOを数時間ほど授業で習ったが、あれをやるよりはアルゴリズムの勉強したほうが理論は身につくと思うよ。ただ、そういう事をするよりはSQLでもぶっ叩いたほうが良いね。んで、そういう思考を身に付けるには長期継続+実践による活用が必要だから学校でやるのは難しいと思うよ。


まずは数学をきちんとやれよ プログラミングに関係性は無いように思えるかもだが数学的思考ができないSEなんて*の役にも立たないからな


こういうのは子供にとっては「完成後の余韻に浸る時間」も必要。そういうのが無いとそもそも挑戦することを忌避するようになる。図工だって小中の義務教育でやるが、そこから発明コンテストに進む子供が何割いるのか考えれば当然。


あ、SQL叩かせるよりももっといい方法あったな。物流、医療(介護)、会計の用語と基本的な知識を身に付けろ。のちに社会に出た時に役立つよ。もうプログラミング関係ないなw


プログラミング的思考っていうけど、結局物事を分けて道筋立てて考えるってだけだからね。人と待ち合わせするなら、場所と時間をあらかじめ相手に通知してなきゃいけないよねとか、そうゆうレベルならいくらでも役に立つからね。


いんとめいんぼーいど! フローチャートも役に立つよ。特にADHDとか頭とっちからかっちゃう人は苦手だろうけど小さなうちに考え方として身に着けると人生を生きやすくなる。ファミコンより生産的なゲームと思えばええんじゃよ


プログラミング的思考は教育にも役立つぞ。プログラムも教育と同じで教育内容が全くない人にそう動くように教育するんだから。機械に当たり前なんて通用しないし”既に知ってるでしょ?””わかるでしょ?”なんてのも通用しない。しっかり1~10まで教育を行ってやっと教育者側の目的通りになってくれる。俺は社会に出てからこれを一番活用させてもらってるかな


完全な勘違いだと思います。「プログラミング的思考」などという”特別”な思考はありません。大学院や研究所での最先端情報工学でない限り、「プログラミング」は「論文やレポートを書く」行為と大差ありません。「結果」を得るために、「必要な情報」を集め「正しい手法」で記述するだけのことです。故に学ぶ意味があり、実生活でも生かせる能力となると愚考します。


「プログラミング」は究極の「シミュレーションゲーム」です。自分の選択が結果を変える。それが「Lチカ」でも「サーボモーターの動き」でも、実際に目の当たりにすることで、子供達は興味が湧くのです。「座学」から始めることは「興味を削ぐ」だけで、無意味です。


「ロボットコンテスト」などという、自称教育者の「自分の実績を誇りやすい」身勝手な目標設定など止めましょう。「子供と一緒にガジェットで遊ぶ」というスタンスで行うべきです。


自称”教育者”の「教えてやる」という、”上から目線”は、もう、止めにしましょう。


何かをするときに要素に分けて、それをどう実現してくか組み立てられるようになることだよ。要素ごとなら考えがまとめやすいから、作りやすく改良しやすく、新しく想像したものを付け加えやすい。そういう考え方ができると、人間関係だろうが、ここが邪魔してるんだな、とか、ここを直していくべきかな、とかこういう人を加えるとこのグループうまくいくんじゃないかな、とかできる


意味もなく私はどんくさいから嫌われるんだとか悩まなくて済む。どんくさいならそう言う人を受け入れてくれそうな場所を探す作る、他の要素を高める、諦めるwいろいろ解決がある


詐欺師に騙されにくくするよう、物を分けて考えられるよう因果などの論理思考は確かに大事 国語や数学教育の一環としてもっと学ぶべき事柄だ だが利権や様々な企みの為に降って湧いた演算命令書の学校教育は適正がかなり大きい事項なので他の大切な教科を押しのけて全員がやる内容では全く無い 必要なら適正ある子供をしっかり金を出して別途育てる機関を作れ それが政治というもの


情操教育に偏ってたからこういう動きは必要。特別視する必要もなく当たり前のことって意見があるけど、その当たり前の具体性をちゃんと考える頭をつくるんだよ


いちゃもんつけてる人いるけど、論理的思考の訓練は早くから始めたほうがいいと思う。 予定が立てられない、手順が考えられない、みたいな人の助けになるよ。


子供の成果なんていくらでも言いようがあるだろうに。ただ口下手なだけやん。


プログラミングが必要なのか分からないとか言っちゃってる奴がいる時点でプログラミングの授業は必要だと思うけどな。今の社会でどれだけプログラムが根付いてると思ってんの?訳も分からず使ってるのばっかだからそんな言葉が出る


マイコンBASICマガジンでも読ませよう(休刊)


学校でやったからと言って、必ず子供の身について社会の役に立つ訳ではない。やりたがっている子供がいても、誰かが金を出すわけではないからね。腐った社会の自己責任論を振り回すだけ


プログラミング的思考が無いから4連続コメントになってるんだろうね・・・


目的を決めて、材料を整えて、手段を組み合わせて、欲しい結果を得る。このこと自体は日常のどんなことにも共通している。


方程式も数列も習わないのにプログラム、ロジカルシンキング?小学生ならITアレルギーにならないようにマイクラで回路でも作らせてPC面白いと思わせるレベルでいいと思うけどな。


これから先、あらゆるものがセンサーで感知されて、記号や数値として可視化されるんだから、プログラミングは必須。何より、早い段階でそういう方面のオタク率が上がるのもプラスだ


数学と同じで論理的な思考を身につけるためだろ。


↑ ゲラゲラ^^ なんか、自分が*にされたみたいに錯覚して発狂してる、コンプレックスつよつよ人間がキーキー囀ってらっしゃる^^


マイクラで回路作れとか論理演算に対する知識の下地ができてりゃいいけど出来てなければただの「やり方が理解できないからできないことに対する苦痛」になる 楽しいと思えるのはそれが理解できる下地ができてからの話 それまではポケモンでいいぞ


ポケモンの勝ち方を考えるのも頭を鍛えることにはなる(攻略は自分で考えないとだめだが


小学校教育に何を求めてるんだ。可能性や足がかりを示せれば十分だろうに。選択肢を増やすためにいろいろな経験をさせることに意義がある


面倒くさそうな教科が増えて可哀想。


この子達が全員。SEやPGになるわけじゃないだろうけど、知識があれば応用もできるし、確実に事務は減るんだろうなと思う。




この記事へのコメント

人気記事