ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

Posts Tagged ‘教科「情報」

プログラミング教育の体系化(2) – 「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」には中学校や高等学校でのプログラミング教育についても言及されている – 目標は「全ての高校生がプログラミングを問題解決に活用することを学べるようにする」こと

with one comment

平成28年4月19日に文部科学省の初等中等教育局教育課程課教育課程企画室によって開催された「小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議」は、平成28年6月16日に「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」を発表した。これを受ける形で、文部科学省は平成29年3月に新しい小学校学習指導要領(平成29年告示)を発表した。

この「議論のとりまとめ」にはプログラミング教育について、「子供たちに、コンピュータに意図した処理を行うよう指示することができるということを体験させながら」や「プログラミングを体験しながら」という記述が随所にあり、実際にプログラミングをすること、つまり「コーディング」することの重要性が示されている。その一方で、コーディングを「覚える」ことが「目的ではない」という誤解をまねく表現もあることについて、前掲の記事で示したところだ。

プログラミング教育の体系化(1) – 「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」を読み解く – プログラミング教育に対する誤解を払拭するために
https://matsumotoyoshio.wordpress.com/2019/08/01/%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e8%82%b2%e3%81%ae%e4%bd%93%e7%b3%bb%e5%8c%96%ef%bc%88%ef%bc%91%ef%bc%89-%e3%80%8c%e5%b0%8f%e5%ad%a6%e6%a0%a1%e6%ae%b5/

この有識者会議の「議論のとりまとめ」は「小学校段階における」プログラミング教育の在り方についてという題であるが、小学校だけでなく中学校や高等学校のプログラミング教育にも言及されており、体系的なプログラミング教育の必要性を示唆している。

1.プログラミング教育を小、中、高等学校の教育課程全体で位置付ける

「議論のとりまとめ」の冒頭「有識者会議における議論の視野」には次のように書かれている。全文を引用する。

「小学校段階におけるプログラミング教育について議論をまとめるに当たっては、人工知能の進化等にみられる、近年の急速な情報化の進展が教育に与える影響や、そうした中で教育課程全体としてどのような力を育成していくことが求められるのかといった、情報化の進展と教育課程全体との関係について整理しておく必要があった。こうした点については、中央教育審議会における次期学習指導要領改訂に向けた議論も踏まえながら、下記1.や2.において整理している。」(小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ) – 有識者会議における議論の視野)より引用

すなわちプログラミング教育は「近年の急速な情報化の進展」が背景にあり「情報化の進展と教育課程全体との関係」を見直す必要があったことから始まっている。ここで重要なのは「教育課程全体として」という言葉である。この「教育課程全体」という言葉は「2.これからの時代に求められる資質・能力とは」の冒頭に「特に、情報化の進展という社会的な変化の中では、以下のような資質・能力が重要になると考えられることから、こうした力の育成が教育課程全体を通じて実現されることが強く求められる。」とあり、言語能力との関連において「発達の段階に即して系統的に育成されるよう、小・中・高等学校を見通して教育内容の充実を図ることが検討されている。」とある。

すなわち、ここでの「教育課程」という言葉は単に小学校段階の教育を指しているのではなく、小学校、中学校、高等学校と義務教育諸学校を通じた教育課程のことを意味している。

2.中学校と高等学校でのプログラミング教育について

「3.学校教育におけるプログラミング教育の在り方とは」の「(2)学校教育として実施するプログラミング教育は何を目指すのか」には小・中・高等学校を通じたプログラミング教育について書かれている。ここでも「学校教育として」の言葉は小学校だけを指しているのではないことがわかる。以下引用する。

「【知識・技能】(小)身近な生活でコンピュータが活用されていることや、問題の解決には必要な手順があることに気付くこと。(中)社会におけるコンピュータの役割や影響を理解するとともに、簡単なプログラムを作成できるようにすること。(高)コンピュータの働きを科学的に理解するとともに、実際の問題解決にコンピュータを活用できるようにすること。」(小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ) – 3.学校教育におけるプログラミング教育の在り方とは)より引用

つまり小学校で育成する「知識・技能」は、中学校と高等学校で発展的にコンピュータに関する教育を学ぶ系統的な学習プロセスの過程にあるということだ。また「知識」だけでなく「技能」として育成すること、すなわちプログラミングによる問題解決を実践的に身に付けることが求められている。そして「思考力・判断力・表現力等」には次のように発達の段階に応じたプログラミングを学ぶことを指摘している。

「【思考力・判断力・表現力等】発達の段階に即して、「プログラミング的思考」(自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力)を育成すること。」(小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ) – 3.学校教育におけるプログラミング教育の在り方とは)より引用

ここも回りくどい表現であり隔靴掻痒たる感が否めないが「意図する一連の活動を実現」するために「記号の組み合わせをどのように改善」すればいいかを「論理的に考える」ことは、まさに「プログラミング」そのものであり、たとえどのような言語を使おうが、それがテキストであれブロック型であれ、実際にコーディングして試さなければ「より意図した活動に近づく」かどうかを理解できないだろう。つまり発達の段階に即した「プログラミング」を学ばなければならない。

3.中学校と高等学校の学習指導要領について

「議論のとりまとめ」の「(3)発達の段階に即した資質・能力の育成」には、次のように中学校や高等学校の学習指導要領についても言及されている。以下引用する。

「中学校及び高等学校では、それぞれの学校段階における子供たちの抽象的思考の発達に応じて、構造化された内容を体系的に教科学習として学んでいくこととなる。中学校では技術・家庭科において、高等学校では情報科において学ぶこととなるが、現在、中央教育審議会においては、中学校及び高等学校におけるプログラミング教育の充実についても議論されている。」「具体的には、中学校技術・家庭科技術分野の『情報に関する技術』において、計測・制御に関するプログラミングだけではなく、コンテンツに関するプログラミングを指導内容に盛り込むことによって、プログラミングに関する内容を倍増させること、高等学校情報科に共通必履修科目を新設し、全ての高校生がプログラミングを問題解決に活用することを学べるようにすることが検討されている。」(小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ) – 3.学校教育におけるプログラミング教育の在り方とは)より引用

小学校でのプログラミング教育は特定の教科にまとめられないが、中学校では「技術・家庭科」で、高等学校では「情報科」で「構造化された内容を体系的に」学ぶことをふまえ、中央教育審議会でプログラミング教育を検討していることに言及している。そして中学校では従来からあった「計測・制御」だけでなく「コンテンツに関するプログラミング」が指導内容に盛り込まれると書かれており「倍増」という表現まである。高等学校では「全ての高校生がプログラミングを問題解決に活用することを学ぶ」と検討されている。

すなわち、この有識者会議は「小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議」であるが、「議論のとりまとめ」に書かれていることは中学校、高等学校と義務教育諸学校の体系的なプログラミング教育を視野に入れた中で、小学校でのプログラミング教育について示されていると理解するべきである。

2019年8月6日

松本 吉生(まつもとよしお)

Microsoft MVP Data Platform
京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。2015年から2017年まで兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行い、現在は兵庫県立神戸甲北高等学校に勤務する。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在16回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在4回目の連続受賞。

令和元年度兵庫県私学教育情報化研究会第一回研修会の内容と資料 – 神戸学院大学附属中学校・高等学校 – 20190723

leave a comment »

令和元年(2019年)7月23日に「令和元年度兵庫県私学教育情報化研究会第一回研修会」で、「情報教育におけるプログラミング教育の現状と課題~学校現場の視点から~」の題で講演をさせていただき、Micro:bitとArduinoを使ったプログラミング実習について実習研修を行った。

講演の内容をかいつまんで説明すると、学習指導要領の改訂により「プログラミング教育」が注目されているが、本来は2000年の教科「情報」の導入からプログラミング教育が必要であったはずだということ、産業のあらゆる分野でプログラマーが必要となり、社会のあらゆる場面で情報機器が使われる現代において、すべての人間がプログラミング力を身に着けておくべきであること、そして今回の学習指導要領の改訂では、小学校では実際にプログラミングをする「体験」を通じてプログラミング的思考を育成すること、中学校では「ネットワークを利用した動的コンテンツの作成」すなわち動的Webページの実習など高度な内容が想定されていること、などをお話しした。

「小学校段階における論理的思考力や創造性、問題解決能力等の育成と プログラミング教育に関する有識者会議」の「議論のとりまとめ」には「コーディング(プログラミング言語を用いた記述方法)を覚えることがプログラミング教育の目的であるとの誤解が広がりつつある」や「時代を超えて普遍的に求められる力としての『プログラミング的思考』などを育むことであり、コーディングを覚えることが目的ではない。」といった記述があり、一部に「プログラミングはしなくてよい」といった誤解が生じているが、「子供たちに、コンピュータに意図した処理を行うよう指示することができるということを体験させながら」のように婉曲的表現ながらプログラミングを実際にさせることが必要だと書かれている。ここを見落としてはならない。

小学校でブロック型のプログラミングを体験した子供たちに対して、中学校、高等学校でどのように体系的なプログラミング学習を行うかが焦眉の課題である。

<研修会の資料>

2019年7月29日

松本 吉生(まつもとよしお)

Microsoft MVP Data Platform
京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。2015年から2017年まで兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行い、現在は兵庫県立神戸甲北高等学校に勤務する。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在16回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在4回目の連続受賞。

 

数研出版の情報誌 i-Net に「プログラミング教育に関するアンケート調査の結果とプログラミング教育の課題」の寄稿をしました。高等学校の情報教育あるいは情報教員の現状と今後の課題をアンケート結果から考察しています。

leave a comment »

数研出版は「チャート式」で名のある数学教育で定評のある教科書会社だ。教科「情報」が始まって「情報」科の教科書も出版しており、会社の特徴を反映した科学的、論理的な視点を重視した教科書になっている。この数研出版は情報教育に関して「i-Net」という機関誌を出しており、機に応じて投稿させていただいている。

今回は「i-Net 第53号」に「プログラミング教育に関するアンケート調査の結果とプログラミング教育の課題(松本吉生)」を掲載していただいた。これは平成29年度、2017年度に兵庫県教育研究会情報部会の研究グループとしてプログラミング教育についての研究、主として情報科教員へのプログラミング教育に関するアンケートを実施し、まとめたものについての報告と筆者の私見を書いたものだ。

i-Net53号_Web_mid_640

数研出版「i-Net」
http://www.chart.co.jp/subject/joho/joho_inet.html

i-Net 第53号「プログラミング教育に関するアンケート調査の結果とプログラミング教育の課題(松本吉生)」
http://www.chart.co.jp/subject/joho/inet/inet53/inet53-1.pdf

この数研出版「i-Net」はPDFファイルで公開されているので、興味のある方はぜひご一読願いたい。文部科学省は学習指導要領の改訂で「プログラミング教育」に関する重点を打ちだし、小学校を中心にプログラミング教育の実践が行われている。数年後には新しい「プログラミング教育」を受けた子供たちが高等学校へ入学してくる。そのとき、高等学校教員はどのような情報教育、プログラミング教育をすべきかが問われている。

情報教育、プログラミング教育は国家的な課題でもある。もはやほとんどの産業においてプログラミング力、優秀なプログラマーが必要な時代になっている。とりわけ通信機器の分野では、私たちの生活に書くことができない社会インフラであるネットワーク機器について、プログラマーの育成、産業の充実が欠かせない。ネットワーク機器を自国で作ることができなければ国家の衰退につながるともいえる。

この歳になって歴史を学びなおして、つくづく思うことは、日本という国は奇跡的な発展を遂げた国であるということだ。それは地理的、歴史的、文化的、民族的な様々な側面からそうあるのだが、これからも我が国が発展し続けるためにも、情報教育、プログラミング教育の充実は欠かせない。日本はそのポテンシャルを持っているし、次の世代のためにも教育の充実が急務である。

2019年6月1日

松本 吉生(まつもとよしお)

Microsoft MVP Data Platform
京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。2015年から2017年まで兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行い、現在は兵庫県立神戸甲北高等学校に勤務する。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在15回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在4回目の連続受賞。

オブジェクト指向は宗教ではない。プログラミングを合理的にする重要な手法のひとつである。 – オブジェクト指向は難しくない。ただ、よき学びの環境がないだけだ。

leave a comment »

オブジェクト指向が語られるとき、ときに「宗教論争になる」と言われることがあるが、そうではない。宗教論争においては他の宗教を認めず自分の宗教の正しさのみ主張し、相手の宗教を否定する。しかしオブジェクト指向は他のプログラミング手法を否定するものではなく、ただ単にプログラミングを合理的にする手法のひとつである。そしてそれは現代プログラミングにおいては重要であり、かつ広く実際に利用されている。そして一般的なパソコンユーザーが利用するアプリケーションのほとんどがオブジェクト指向によって作られている。

すべてのプログラミングをオブジェクト指向によって作る必要はない。またオブジェクト指向ではないプログラミング言語もあり、それらも当然意味がある。またオブジェクト指向プログラミングにおいても手続き型の考え方が不要なわけではない。ただ、プログラミングを合理的にするためにオブジェクト指向は極めて有効である。

オブジェクト指向を説明するときに、動物や物に例えられることがある。だが、たいていの場合それは、なんとなく説明になっているようでなっていない。それはオブジェクト指向というものが、そもそも現実世界をプログラミングに持ち込むために考えられたのではなく、プログラミングという抽象的な世界で効果的に機能するために考え出されたものだからだ。オブジェクト指向は抽象的なプログラミングの世界をさらに高度に抽象化したものといえる。

したがって現代プログラミングにおいてオブジェクト指向を知らないことは損である。知っていて使わないことと知らないから使えないことは意味が違う。オブジェクト指向を用いると圧倒的に合理的にできるプログラミングが、知らなければその恩恵にあずかることはできない。そもそも言語体系がオブジェクト指向を前提としているにもかかわらず、それができないことは圧倒的に不利であると同時に、言語の持っている潜在能力を生かせないことになる。

言語仕様がオブジェクト指向であるとき、プログラミングではオブジェクトを操作することになる。しかし、ただ単にオブジェクトを操作するだけでは、たとえ動くコードを書けたとしても、それはオブジェクト指向のプログラミングではない。求める機能を実装したオブジェクトを設計し、全体のコードの中で効果的に使うことができてはじめてオブジェクト指向プログラミングをしたといえる。

オブジェクト指向は難しいと言われる。確かに筆者もオブジェクト指向を理解し、自然に使えるようになるには時間がかかった。またプログラマーを自任している人でも、実際のところオブジェクト指向を理解し、使いこなしている人がどれだけいるか、いささか疑問に感じることも多い。というのも、世にあふれる初心者向けのプログラミング解説書を読んだとき、どうやらオブジェクト指向を理解していないのではないかとおもわれるふしが多々あるのだ。

だがオブジェクト指向は難しくない。ただよき学習の機会が少ないからだ。それは書籍でもWebの記事でもそうである。クラスやインスタンスを説明しても、なぜ、そうするのか、どこがオブジェクト指向なのかが説明されていない。オブジェクト指向でプログラミングした場合と、そうでない場合とを比較し、だからオブジェクト指向でやるのだ、というような明確な解説が少ない。オブジェクト指向を理解することは、例えば自転車に乗る、跳び箱を飛ぶ、鉄棒で逆上がりをするといったようなものだ。こつがわからなければ何度やってもうまくいかない。いくら練習しても一生できないのではないか、と子どもなら思うところだが、一度できれば忘れない。

子どもは、自転車に乗る、跳び箱を飛ぶ、鉄棒で逆上がりをする、といった体験をしながら達成感を得て成長する。すぐれた教育者は、どの子も自転車に乗れ、跳び箱を飛べ、鉄棒で逆上がりができるようなメソッドを身につけて指導する。オブジェクト指向も高度に抽象化されたプログラミング手法であるが、高校生レベルなら身につくはずである。教科「情報」の教員なら、まず自らオブジェクト指向を身につけ、すぐれた教育メソッドを開発すべきである。

2018年3月8日

松本 吉生(まつもとよしお)
Microsoft MVP Data Platform

1961年京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。現在は兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行う。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在14回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在3回目の連続受賞。

プログラミングのできない学者や有識者がプログラミング教育をねじ曲げる – プログラミングの「プ」の字もなかった教科「情報」迷走の轍をふまないために – プログラミング教育の体系化が緊急課題

with 2 comments

念のため、本文はあくまでも現場の一教員による私見であることを断っておく。

2003年から教科「情報」が高等学校ではじまったとき「教科『情報』はコンピュータを教える教科ではない」と声高に叫ばれ、そこで台頭してきたのは「なになに情報教育学会」といった新興のステークホルダーである。それは、長年日本のコンピュータ教育をけん引してきた情報処理学会とは異にした流れの、教育学や認知科学分野の学者や有識者によるものだった。当時の雰囲気は「情報処理は情報教育学の単なる一分野にすぎない」といった論調が主流であった。おそらくボタンの掛け違いはここに始まった。このために情報教育はコンピュータやインターネットを正面からとりあげず、普遍的なメディア論やプレゼンテーションやディベート、調べ学習、問題解決学習、共同学習、さらには道徳のような「情報モラル」に偏り、プログラミングの「プ」の字もなく始まった。

2003年にはじまり15年間の迷走を続けた教科「情報」は、ようやく小学校のプログラミング教育をきっかけに本来の目標に立ち戻ろうとしている。だが問題は、教科「情報」がはじまったときと似た現象、つまりプログラミングのできない学者や有識者がプログラミング教育のステークホルダーに居座り続けようとしていることだ。そのため、たとえば文部科学省の調査研究協力者会議「小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議」では2016年6月16日に出した「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」にわざわざ「コーディング(プログラミング言語を用いた記述方法)を覚えることがプログラミング教育の目的であるとの誤解が広がりつつあるのではないかとの指摘もある」「時代を超えて普遍的に求められる力としての『プログラミング的思考』などを育むことであり、コーディングを覚えることが目的ではない。」などと書かれている。

めまいがするほどだ。コーディングを覚えずに時代を超えて普遍的に求められる「プログラミング的思考」など身につくなどと本気で思っているのだろうか。

この現状は、おそらく、いわば「外国に行ったことのない学者や有識者が国際理解教育を作ろうとしている」くらいの状況である。

その一方で、主として小学校の現場では、先駆的な教員によって自主的にプログラミング教育の実践が始まっている。子どもたちに扱いやすい教材、わかりやすいカリキュラム、実習をしやすい環境構築を模索している。インターネットを通じた実践交流も活発に行われている。もはや緊急の課題は、初等中等教育を通じたプログラミング教育の体系化である。「プログラミング教育はプログラミングを教えるものではない」などと禅問答をしている場合ではないのだ。

小学校では流れ図に示される構造化、つまり順次構造、反復構造、条件分岐でいいとして、ブロック型プログラミングから始めることがいいだろう。簡単なマイコンボードを使った計測や制御も取り入れるべきだ。ではその次はどうか。中学校では何をするのか、高等学校では何をするのか。

まず何よりもオブジェクト指向を取り上げるべきだ。オブジェクト指向がわからなければ現代プログラミングを理解したことにならない。かく言う私もオブジェクト指向を理解するには時間がかかった。「オブ脳」という言葉があるように、オブジェクト指向は言葉で説明されて理解できるものではなく、例えれば自転車に乗れるようになるようなものだ。子どもが自転車に乗れるようになる瞬間、それは突然やってくる。なんどもなんども失敗を繰り返し、ほんの数センチでさえ動いて倒れる様子を見ていると、はたして本当に乗れる日が来るのだろうかと心配になるが、乗れるようになるのは突然である。そして一度乗れるようになれば、あたりまえのようにすいすいとこげるようになる。

オブジェクト指向を理解するにはオブジェクト指向プログラミングをしなければならない。自分でコードを書き、動かしてはじめてオブジェクト指向は理解できる。「オブジェクト指向はカプセル化、継承、ポリモーフィズム」と暗記するだけでは何の意味もない。なぜプログラミングはオブジェクト指向になったのか、オブジェクト指向の何がいいのか、どこでどうオブジェクト指向を利用すればいいのか、を理解しなければ意味がない。それには言語として C# (C Sharp) がいいと断言できる。かつて BASIC が初心者にとって学びやすい言語であったのと同じくらい C# はオブジェクト指向を学ぶ初心者にとって学びやすい。言語仕様が正確であり、JIS や ISO にも規定されている。ポインタやガーベージコレクションを意識する必要もない。書法は簡潔で美しい。Visual Studio という優れた開発環境もある。

すぐれた自転車教室にはノウハウがあり、一日やれば必ず乗れるようになるプログラムがある。それと同じように、オブジェクト指向も優れたカリキュラムがあれば誰でも理解できるようになる。中学校段階なら必ず理解できる。オブジェクト指向とともに理解しなければならないことは、イベントドリブンである。サーバーサイドプログラミングも中学校では身につけさせたい。Webサービスのインタフェースなどは中学生段階でも理解できるだろう。

コンピュータの抽象化、クラウドコンピューティングは高等学校の内容になるだろう。機械学習や AI、データ処理を通じてイベントドリブンからデータドリブンのプログラミングを学ぶ必要がある。マイコンボードをネットワークにつなぎセンサのデータを集めるIoTからデータベースを学ぶ必要もあるだろう。近い将来クラウドコンピューティングは革命的に転換しそうなので、関数型プログラミングやサーバーレスといった技術がテーマになるだろう。

数年後には小学校でプログラミングの基礎を身につけた子どもたちが中学校へ、そして高等学校へ進学してくる。必要なことはプログラミングのできる学者や有識者が情報教育をけん引し、プログラミング教育を体系化することだ。現場の教員も口を開けて待つのではなく、自己研鑽と教材研究にいますぐ取り組むべきである。

2018年1月12日

松本 吉生(まつもとよしお)
Microsoft MVP Data Platform

1961年京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。現在は兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行う。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在14回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在3回目の連続受賞。

プログラミング教育の目標はプログラミングを学びながらプログラミング思考を身につけることである。 – 教科「情報」迷走の轍をふまないために

leave a comment »

西暦2000年の政府の「ミレニアムプロジェクト」の「教育の情報化」を受けて新しい学習指導要領で高等学校に教科「情報」が導入されようとしたとき、しきりに「教科『情報』はコンピュータを教えるものではない」という声があった。情報はコンピュータやインターネットを通じてだけで流通するものではないから、テレビやラジオ、新聞などのメディアを総体として取り上げるべきだ、というのである。また「情報」はコミュニケーションであり表現活動であるから、プレゼンテーションやディベートなどを取り上げるべきだ、とか情報モラルこそ重要だと声高に騒がれ「相手の気持ちになってメールを書きましょう」といった道徳のような授業が行われるといった迷走が長く続いた。

当時から俺の考えはこうだ。もしテレビやラジオ、新聞のようなメディア一般を学ぶ必要があるなら、それは1960年代に行うべきだった。21世紀に情報教育を行うなら、それは紛うことなく「コンピュータとインターネット」を正面から取り上げるべきである。しかしようやく、教科「情報」が実施された2003年からから15年を経て「プログラミング教育」が日の目を浴びることになった。感無量である。

だが、ここにきてまた本質から目を背けようとする意見を目にするようになる。「プログラミング教育はプログラミングを学ぶものではない」といった論調だ。いったいこれは何だろう。プログラミングを学ばずに何をどうしようと言うのだろう。他の教科でこの意見をまねてみればおかしなことがすぐわかる。「数学教育は数学を学ぶものではない」「英語教育は英語を学ぶものではない」「国語教育は国語を学ぶものではない」と。これらの意見は空論である。

もう少しひねった言い方では、こんなものもある。「プログラミング教育はプログラミングを学ぶのではなくプログラミング的思考を養うものである。」と。だがこれも意味がない。プログラミングをせずにプログラミング的思考が身につくはずがない。計算せずに数学的思考を養うことはできないし、文章を読んだり書いたりせずに国語的思考を養うことはできない。

なぜこのようにプログラミングを斜めからしか見ない意見が出てくるかといえば、それは教科「情報」が始まったときにコンピュータやインターネットから目を背けようとした流れと同じである。つまりプログラミング教育を含めた広い意味での日本の情報教育について主導権をとろうとしている学者や有識者の多くがプログラミングを知らないからだ。また現場の教員もプログラミングの知識や技術がなく、教育行政も教員のプログラミング力の底上げ責任を放棄して教員の自主性にまかせているだけだからだ。

そもそも、なぜプログラミング教育が必要なのか。それは現代の高度情報通信社会においてプログラミングは価値を生むものだからだ。プログラミングによって新しい価値を生み、私たちの社会は豊かになる。狭い意味では国際競争力をつけて日本が発展し続けるためであり、普遍的には世界の人々がより豊かになるための知識や技術であるからだ。だからプログラミング教育が必要なのだ。したがって、もし仮にこのようなことがあり得るとして、プログラミング的思考が身に着いたが実際のプログラミングができない、といった教育をしても意味がない。

誰もがプログラマーになるわけではない、という意見もあるが、しかし誰もが数学者になるわけではなく翻訳者になるわけではないが、数学や英語は必修科目である。考えてみよう。30年前にパソコンがこれだけ社会に広く普及することを想像できただろうか。30年前、俺が中学生だったころはパソコンは物好きのおもちゃだった。25年前、俺が就職したころは学校にパソコンが導入されはじめたころで、表計算ソフトを使うことが特殊技能だった。20年前、パソコン通信をやるのは一部のマニアであり、パソコンをインターネットにつなぐのは素人にはできなかった。15年前にはWi-Fiやルーターの設置などは一般の人には見当もつかない作業だっただろう。10年前には表計算ソフトで簡単なマクロを作って自動処理することくらいは普通の事務処理になった。今はどうだ。パソコンは使えません、表計算ソフトはわかりません、コンピュータをインターネットにどうやってつなぐのですか、などでは仕事にならないだろう。

現代プログラミングを知らない人間がアルゴリズムを語ると、たいて流れ図を使った構造化プログラミングの説明で終わってしまう。つまり、順次構造、反復構造、条件分岐、である。もちろんこれはプログラミング的思考の基礎ではあるが、たとえて言えば数学で加減乗除を教える程度のことである。現代プログラミングにおいては「オブジェクト指向」や「イベントドリブン」を理解しなければ話にならない。今後はクラウドコンピューティングの革命により「サーバーレス」と「関数型言語」、そして「データドリブン」の考え方が必要になる。

小学校の教員を中心に、草の根的にプログラミング教育の実践が積み上げられていること、それも急速にすすんでいることが救いである。これら実践を重ねている先生方は日本のプログラミング教育の希望の星といえる。子どもたちが目を輝かし、楽しみながらプログラミング経験を積み重ねている。高等学校の教員は、この子供たちが数年後に高等学校へ進学したときに、どのようなプログラミング教育をしなければならないのか、今から考え実践を始めなければならない。「プログラミングを教えるのではない」などという甘言に弄されずに。

2018年1月11日

松本 吉生(まつもとよしお)
Microsoft MVP Data Platform

1961年京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。現在は兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行う。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在14回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在3回目の連続受賞。

Minecraft Education 版の新機能(3) – ミュートボタン

leave a comment »

教育版マインクラフトの機能拡張がすすんでいる。新しいバージョンではミュートボタンが搭載された。このミュート機能は、コマンドを使ったときのレスポンス表示をミュートする機能だ。サウンドのミュートではない。マインクラフトではコマンド入力によって世界を操作すると、画面に実行した操作のレスポンスが表示される。たとえば /weather thunder コマンドで天候を雷雨に変更すると、画面にレスポンスが表示される。

MinecraftEducation_007_mid_640

コマンド入力モードでは実行したコマンドの結果が履歴で表示されている。

MinecraftEducation_008_mid_640

コマンド入力モードで右上にある「ミュート」スライダを右にして「オン」にすると、コマンド実行の結果を画面に表示しなくなる。雷雨になったマインクラフトの世界を /weather clear コマンドで晴れにしてみよう。

MinecraftEducation_009_mid_640

コマンドを実行して天気が晴れになろうとしている。しかし実行結果は画面に表示されていない。

MinecraftEducation_010_mid_640

コマンド入力を多用したとき、画面が実行レスポンスの履歴で邪魔になることがある。「ミュート」機能をオンにすると、レスポンスが表示されないので操作の邪魔にならずにすむだろう。