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

InfoPath & SQL Server !

Posts Tagged ‘プログラマー

プログラミング教育の体系化(1) – 「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」を読み解く – プログラミング教育に対する誤解を払拭するために

with one comment

平成28年4月19日、文部科学省の初等中等教育局教育課程課教育課程企画室は、「小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議」を開催することとした。その趣旨は「世界に誇る日本の小学校教育の強みを生かしつつ、次世代に必要な資質・能力を、学校と地域・社会の連携・協働の中で育むことができるよう、小学校段階で育成すべき資質・能力と効果的なプログラミング教育の在り方や、効果的なプログラミング教育を実現するために必要な条件整備等について検討を行うため」としている。

小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議について(文部科学省)>
http://www.mext.go.jp/b_menu/shingi/chousa/shotou/122/houkoku/1370400.htm

この有識者会議は平成28年6月16日に「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」を発表した。これを受ける形で、文部科学省は平成29年3月に新しい小学校学習指導要領(平成29年告示)を発表した。この学習指導要領では新しくプログラミング教育が位置づけられることなり、平成30年度と31年度は移行期間であり、平成32年度すなわち令和2年度、2020年度から完全実施となる。

小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)(文部科学省)>
http://www.mext.go.jp/b_menu/shingi/chousa/shotou/122/attach/1372525.htm

小学校学習指導要領(平成29年告示)(文部科学省)>
http://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2019/03/18/1413522_001.pdf

1.誤解をまねく表現

この「議論の取りまとめ」の冒頭には「有識者会議における議論の視野」と書かれた部分があり、どのような考え方で議論がすすめられ結論を出したかが簡潔にまとめられている。しかしここに誤解をまねく表現がある。それは2段目の文で、正確を期すために引用すると次のように書かれている。

「小学校段階におけるプログラミング教育については、学校と民間が連携した意欲的な取組が広がりつつある一方で、コーディング(プログラミング言語を用いた記述方法)を覚えることがプログラミング教育の目的であるとの誤解が広がりつつあるのではないかとの指摘もある。“小さいうちにコーディングを覚えさせないと子供が将来苦労するのではないか”といった保護者の心理からの過熱ぶりや、反対に“コーディングは時代によって変わるから、プログラミング教育に時間をかけることは全くの無駄ではないか”といった反応も、こうした誤解に基づくものではないかと考えられる。」(小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ) – 有識者会議における議論の視野)より

ここでは「コーディングを覚えることがプログラミング教育の目的ではない」のであり、保護者は子どもにコーディングを教えなければならないと心配する必要はないし、コーディングが時代によって変わっても今やろうとしているプログラミング教育は役に立つものである、と言っている。しかしコーディングを覚えなくもいい、と言っているのではなく、そもそもコーディングをしなくていいとも言っていない。コーディングは小学校でもしなければならないし教えなければならないはずだ。なぜならプログラミングをしなければ「プログラミング的思考」など身につくはずがないのだから。

しかしインターネットで「プログラミング教育」というキーワードで検索すると、いわゆる識者の意見として「プログラミング言語やコーディングを学ぶわけではない」といった誤解をしているものがみられる。プログラミング言語やコーディングそのものを否定的にとらえる考え方になってしまっているのだ。これは間違いである。

この原因の一端は、誤解をまねく上記の文にある。上記の文は、「コーディング」について「覚えること」がプログラミング教育の「目的ではない」と言っている。だから小学生にコーディングを覚えさせてテストで文法的に正しいコードが答えられることを求めることは間違いだし、コードを書けるようになることを目標にしてはいけない、と言っている。しかし授業ではコーディングを覚えさせなければならない。なぜならコーディングを覚えなければプログラムを書けないからだ。

2.授業ではコードを書かなければならない

前述の「有識者会議における議論の視野」には次の段にこう書いてある。「プログラミング教育とは、子供たちに、コンピュータに意図した処理を行うよう指示することができるということを体験させながら、将来どのような職業に就くとしても、時代を超えて普遍的に求められる力としての「プログラミング的思考」などを育むことであり、コーディングを覚えることが目的ではない。こうしたプログラミング教育についての考え方や、小学校段階における具体的な在り方等を、下記3.や4.において示している。」(小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ) – 有識者会議における議論の視野)より

ここも婉曲でわかりにくい書き方がされているのだが、「子供たちに、コンピュータに意図した処理を行うよう指示することができるということを体験させながら」というところは、要するに「プログラミングをさせる」ということだ。「コンピュータに意図した処理を行うよう指示する」ことは現時点ではまさに「コーディング」のことであり「ができるということを体験」は実際にコードを書いてコンピュータで実行し動いたことを確かめることだ。つまり小学生にはコーディングをさせ、自分で考えたコードが正しく動くということを体験させなければならない。そのためにはコードの書き方がわからなければならないし、開発ツールの使い方を覚えなければならないし、作ったコードを動かす方法も知らなければならない。

もちろん特定のプログラミング言語の書法を暗記してすらすらコーディングできるようになる必要はないし、そもそもテキスト型のコーディングでなくブロック型のコーディングでもよいだろう。重要なことは、コンピュータにやらせたい処理を自分で考えてプログラミングをし、失敗体験もしながら正しく動くプログラムを作り上げる体験をさせることであり、それにはコーディングを覚えなければならないはずだ。

この「コンピュータに意図した処理を行うよう指示することができるということを体験」という文は随所にみられる。婉曲ではあるが、これは「プログラミングを体験させる」ということである。つまり、小学校の授業では子どもたちにコードを書かせなければならない。プログラミング体験をさせなければならない。

そもそも「プログラミング的思考」はコードを書かずに身につくはずがない。このことはプログラマーなら知っている。当たり前だ。

3.職業プログラマーの養成も期待されている

前述の「有識者会議における議論の視野」の「4.小学校教育におけるプログラミング教育の在り方 – (3)教育課程外や学校外の学習機会とのつながり」には次の記述がある。

「小学校におけるプログラミング教育で、プログラミングに触れたことをきっかけとして、個人的に更に深く学んでみたいと思ったり、プログラミングに携わる職業を目指して学びたいという夢を持ったりする子供たちが増えてくることも期待される。」「プログラミングに興味を抱いた子供が、多様な才能を伸ばしていくことができるよう、民間で実施されている多様なプログラミング教育の機会や、土曜学習等における学習機会を個別に活用できるよう、都市部だけではなく全国を視野に入れ、官民連携して体制を整えていくことが求められる。」(小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ) – 有識者会議における議論の視野)より

これについてもインターネットの識者の意見として「プログラマーの養成を目指したものではない」といった極論がみられるが、「プログラミングに携わる職業」に就くにはプログラミングを知っておかなければならないし、職業プログラマーが育つことを期待しているのだ。これは国家的目標でもある。

他国のリーダーがこぞってプログラミング教育に言及するのも、プログラマーが育たないということは国家的な危機だからだ。これは大げさではない。近年の米中貿易摩擦も広範な通信技術に対する主導権争いである。日常生活において家電製品の多くはプログラムで制御されている。プログラムが必要ないのは単純な電熱器や扇風機のようなものくらいだろう。プログラマーがいなければ家電製品すら製造することが不可能になる。ましてや通信インフラを自国で開発、制御できないとなれば、もはや国家が破綻する。

もちろん直接的に職業プログラマーにならなくとも、およそ社会の各層での意思決定者たる人材はプログラミングのことを知っていなければならない。コンピュータやプログラミングを知らなければ意思決定を誤ることになるだろう。

令和2年、2020年の4月まであと9ヶ月であり、小学校の先生は教材研究などの取り組みをすすめていることだろう。各地でプログラミング研修会が開かれており筆者も呼ばれることがある。小学校では Scratch、Micro:bit、Minecraft などを使った実践が定着してきているが、今後は教材の作りこみに工夫が必要だろう。筆者の考えとしては、人感センサのような体感的なもの、サーボモーターなど動くものの制御を体験させることを推奨したい。そして今後は、小学校で基本的なプログラミング体験をした子どもたちが中学校や高等学校で発展的な学習をどうするのかが課題となるだろう。それは、もう、目の前にやってきている。

<次の記事>
プログラミング教育の体系化(2) – 「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」には中学校や高等学校でのプログラミング教育についても言及されている – 目標は「全ての高校生がプログラミングを問題解決に活用することを学べるようにする」こと
https://matsumotoyoshio.wordpress.com/2019/08/05/%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%92%ef%bc%89-%e3%80%8c%e5%b0%8f%e5%ad%a6%e6%a0%a1%e6%ae%b5/

2019年8月1日

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

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回目の連続受賞。

広告

マイクロソフトは世界中の人々をみなプログラマーにする。プログラミング革命。世界が変わる。

leave a comment »

このタイトルを見て、同意できない人もいるだろう。テクノロジーやプログラミングに習熟している人ほどそう思うかもしれない。しかし間違いなくプログラミングは身近なものになっており、その速度は加速度を増している。そしてこのことが、世界を大きく変えるに違いない。そしてそれはもはや始まっている。

思い出してみよう。私の世代はコンピュータの誕生とともに歩んできたといえる。中学生のとき、私は初めてコンピュータに出会った。それは当時「マイコン」と呼ばれることが通常で、今から比べると貧弱で扱いにくく弱弱しいものだった。しかし私はそのコンピュータに出会ったとき、生まれて初めてのBASICプログラミングを夢中でやり、気が付けば空が明るくなり朝を迎えたという経験をした。

高校生の頃、ウォークマンが世の中に出た。それはカセットテープを使った持ち運びのできる、しかしスピーカーを持たない、イヤホンで自分だけが聴くためのマシンだった。ロックに目覚めた私はウォークマンの初代機を買い、ヘッドフォンをつけて町に出て音楽を聴いた。両親は嘆いた。そんなおかしな恰好をして外に出るな、と。だが今はどうだ。誰もが町で自分だけの音楽を聴いている。

大学生の頃、ようやく実用的なパソコンが庶民にも使える時代になった。就職したとき、勤務先の学校には NEC の 9800 シリーズのマシンがあった。しかしそれは予算がついて購入されたものの、誰も使える人はいなかった。使おうと考える人もいなかった。そこで私は Multiplan の表計算ソフトで成績処理のコンピュータ処理をはじめた。当時パソコンで表計算をすることは、特別な技能を持った人間のすることだった。

就職してしばらくし、ノートパソコンを買った。それは今のように軽量で小型のものではなく、バッテリーの持ちも極めて悪かったが、うれしくて毎日持ち歩き電車の中で物を書いたりした。周囲から奇異な目で見られた。あの人は何をやっているのだ、といったかんじだ。会議でもノートパソコンを使い始めた。ある教育セミナーに出席したとき、講演をノートパソコンでメモしていると隣の席の人から「キーボードの音がうるさいのでやめてくれ」と言われた。ノートパソコンを持ち歩き外出先で何かする、ということは変人のすることだった。今ではどうか。誰もがノートパソコンやタブレット、スマートフォンを外出先で使っている。

ウォークマンで外出先で音楽を聴いたり、表計算ソフトを使ったりモバイルデバイスを使うことは、最初はマニアックな変人のすることであったかもしれない。しかしそれが便利なものなら、必ず真似をする人が出てきて、そのうちに当たり前のことになってくる。プログラミングはどうか。確かにプログラミングは敷居が高い。しかし今では、デスクワーカーのほとんどが Excel の表計算ソフトウエアを使い、多くの人がマクロプログラミングをやっている。なぜか。マクロを使うと定型業務あ楽になるからだ。それがわかると人はマクロを学ぼうとする。マクロを教えるセミナーもある。

Excel でマクロを組めるようになれば、もはや一般のプログラミングも、ほんの目の前にある。Microsoft Visual Studio のようなプログラミングツールは革命的に進化し、とても簡単にプログラミングができる時代になっている。誰もが自分に必要な、仕事上の、家庭の、ホビーでのプログラミングをカジュアルにする時代になるだろう。それは、自動車の運転のように私たちの生活に浸透するだろう。今でも車の運転をしない人がいるが、ほとんどの人が運転免許を取得し、マイカーを運転して買い物へ、職場へ、旅行に行く。それと同様のことがコンピュータやプログラミングの世界でおこるに違いない。

(・・・続く)

yocface_MVP_SQLserver_936_936.png

片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(1) – テーブル接続一対一の一般的な業務アプリケーションは30秒でできる。

with one comment

Microsoft のVisual Studio はアプリケーションソフトを簡単に作れるように進化してきた。とりわけ初心者に対するサポート意識は強く、プログラミングのすそ野を広げることに注力しているように思える。コンピュータが進化するとともに、とりわけインターネット環境が普遍的なものとなった今日では、コンピュータで処理できること、言い換えれば処理しなければならないことが多様化し複雑化しているが、Visual Studio を使えば高度なアプリケーションをますます簡単に作ることができる。

書店にいくと Visual Studio を使った初心者向けの解説書が山ほど目に入る。しかしその多くは、Windows Form を作り、電卓やメモ帳、あるいは簡単なパズルゲームなど、Windows Form で完結する単体のアプリケーションを開発するまでであり、データベースに接続してデータを操作する一般的な業務アプリケーションを作ることは、やはりそれほど簡単なことではなかった。振り返ってみれば2003年に俺は現在の勤務校に異動になり、学校の学籍管理システムを運用することになったが、当時はまだ Visual Studio を使ってもクライアントサーバー型の業務アプリケーションを作ることは難しかった。そこでデータベースを SQL Server とし、まずはデータベースの構築手法を身に付け、クライアントには InfoPath を使うことでクライアントサーバー型のシステムを構築した。教員としての本業の傍ら、いわゆる「片手間プログラマー」として、この選択肢は間違っていなかった。このシステムは極めて低コストでシステムを構築でき、現場のニーズを反映し、かつ柔軟に追加変更可能な学籍管理システムとして今でも順調に動いている。

だが Visual Studio 2010 あたりからデータベース接続の処理が簡単になりはじめ、Visuak Studio 2013 では極めて簡単に SQL Server に接続するデータベースアプリケーションを構築することができる。SQL Server にテーブルができていれば、そのテーブルに対して一対一でデータ編集をするような簡単なクライアントアプリケーションは、たった30秒で作ることができる。まったくもって驚くべき時代になったものだ。俺のような専門職でない「片手間プログラマー」でも業務で使えるクライアントアプリケーションを簡単に作ることができる時代になったのだ。

IMG_2461_mid_640_480

<fig.1 : Visual Studio 2013 を起動し「新しいプロジェクト」をクリックする>

IMG_2458_mid_640_480

<fig.2 : Visual Studio 2013 で「新しいプロジェクト」をクリックした瞬間からストップウォッチを動かす>

IMG_2460_mid_640_480

<fig.3 : SQL Server のテーブル「生徒」に接続し、生徒情報を編集するアプリケーションを作ってビルドした>

IMG_2459_mid_640_480

<fig.4 : ビルドが完了した瞬間にストップウォッチを止めた>

あっという間に SQL Server に接続するアプリケーションができた。まったくノンコードである。もちろんこのアプリケーションには余計な工夫が入っていないので、 SQL Server に接続するとテーブルのデータを全部取得し、単純にデータを変更して送信することや新しいデータを手作業で加えることなど、基本的な操作しかできない。しかし、これほど簡単にクライアントアプリケーションができるということは驚愕である。

Microsoft 社は開発者を支援する視点を大切にしており、常により簡単に、より効率よくプログラミングができる環境を提供することに努力を怠らない。プログラミングは今後もますます身近なものになり、俺のような「片手間プログラマー」が活躍する時代になるだろう。焦ることはなく、いまできないことも、いつか必ず Microsoft が実現してくれることを信じて、目の前の技術に真摯に向き合っていればいい。Microsoft 社は Visual Studio 2013 でデータベースアプリケーション開発の革命を成し遂げたと言っていいだろう。

<次の記事>
「片手間プログラマーの復権 – Visual Studio 2013でクライアントサーバー型データベースアプリケーションをあっというまに作る(2) – テーブル接続一対一アプリケーションの作成手順」