プログラミング的思考

プログラミング教育

ご存知の方も多いと思いますが、2020年4月から小学校でプログラミングが必修になります。
これは、JavaやCといったプログラミング言語を教えるということが目的ではありません。プログラミング的思考というものを教えるということが目的です。

論理的思考(ロジカルシンキング)というのは、よく聞くと思います。ただ、プログラミング的思考というのは、あまり聞いたことがありません。

ということで、文部科学省のホームページで調べてみました。

自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力

「小学校プログラミング教育の手引(第二版)」から引用

具体的には、どのようなことをやるのかというと、学習指導要領を見ると、以下のようなものがあります。

また,第1章総則の第3の1の(3)のイに掲げるプログラミングを体験しながら論理的思考力を身に付けるための学習活動を行う場合には,児童の負担に配慮しつつ,例えば第2の各学年の内容の〔第 5学年〕の「B図形」の(1)における正多角形の作図を行う学習に関連して,正確な繰り返し作業を行う必要があり,更に一部を変えることでいろ いろな正多角形を同様に考えることができる場面などで取り扱うこと。

「小学校学習指導指導要領(平成29年告示)」から引用

簡単に言うと、分度器と定規を用いて正多角形を作図する代わりに、プログラムを組んで正多角形を描画する。ということです。
他にも理科ではセンサーを用いて判断して次のアクションをおこす。といった内容のものもあります。

「小学校プログラミング教育の手引(第二版)」を読み進めると、使用するプログラミング言語は、ビジュアル型プ ログラミング言語を使うのが望ましいとされています。授業時間を確保してやる場合やプログラミングに強い興味をもつ児童には、テキスト型プログラミング言語を使用することも良いとされています。

ここでいうビジュアル型プログラミング言語は、どのようなものかと言うと、MIT(マサチューセッツ州工科大学)のメディアラボというところで開発されたScratchという言語を指します。他にもいろいろなベンダーが作成していますが、おおよそScratchという言語ににています。
ビジュアル型プログラミング言語というと、古い人はMicrosoft社のVisualStudioなどの先に画面(フォームなど)を作成して、それにイベントを実装していくようが言語を指しそうですが、実際には異なります。

具体的には、以下のような画面です。

Scratc起動直後の画面です。

いろいろなブロッグを積み重ねて、プログラミングをしていくものです。これをプログラム言語か?と思う人もいると思いますが、私は、これで十分だと思います。

今の小学生が社会人になるのは、高卒で働くのは6年後、学卒では10年後です。
現在の主流になっているプログラミング言語を苦労して覚えたところで、その言語が、6年〜10年後も主流であり続ける保証があるでしょうか。例えば、小学生に苦労させてJavaを覚えさせたところで何の意味があるのでしょうか?Javaは、10年以上も主要な言語であり、半世紀以上前に作られたCやCOBOLもいまだに使われていますが、出てから数年で使われなくなった言語も多いのではないでしょうか。
そのようなことを考えると、冒頭に引用したプログラミング的思考を身につけることが大事ではないかと思います。

Apple社のティム・クックCEOがとあるニュース番組のインタビューで、「もし学ぶ言語を2つに限るとしたら、母国語とプログラミング言語であるべきだと思う。」と話しておりました。

この話を聞いて、「なるほど!」と思いました。プログラミング言語も言語のひとつです。言語は「自然言語」と「人工言語」に大別することができ「人工言語」の中に「プログラミング言語」も含まれ、言語の一つです。
外国語に関しては、技術の発達によって誰でも容易に利用できる翻訳機能が充実してきています。将来的には、世界中の人々とそれぞれの母国語で話すということも可能になるのではないでしょうか。そこまで行かなくても、Microsoftやgoogleなどで、既に高水準な翻訳、しかも英語だけに限らず、多くの言語と双方向の翻訳を実現できています。これを考えると、外国語よりもプログラミング言語を覚えた方が将来的には役に立つものというのは納得です。

ただ、児童の成長具合を充分に考慮する必要があります。キーボードの操作に不慣れな子に対して、テキストを入力しないといけないプログラミング言語は、負担かと思います。得意な児童もいるでしょうが、そうでない子もいます。義務教育の一環でやるわけですから、不得意な児童のことも考える必要があります。また、小学校の1時限(45分)の中で授業を進めないといけないという点でも先生も負担かと思います。小学生向けのプログラミング教室の講師をしたことがありますが、予定した時間通りに進めるのは、結構難しいです。また、プログラミング的思考を教える。という目的よりもキーボード操作やパソコンの使い方を教える。という本末転倒なことにもなりかねません。

まずは、Scratchのようなプログラミング的思考をした上で、実装はブロックを積み重ねるだけでできるようなものでやった方が、プログラミング的思考を教えるという本来の目的を達成できるものと思います。

ちなみに、このScratchというプログラミング言語を、子ども向けのものと思って馬鹿にしていると、できることに驚愕されます。
Scratchのサイトで他の方が作ったものを見ていると、テトリスのようなゲームまで作ってしまっている人もいます。

一度、見てみると面白いかとおもます。

コメント

タイトルとURLをコピーしました