あけましておめでとうございます。今年もよろしくお願いします。
例年、1月の最初の月曜は祭日ということが多く、私の原稿は15日くらいに掲載されるので、年始の挨拶文が浮いてる感じがありました。今年は、その点バッチリです。来週は成人の日で、早くもお休みですが。
さて、今回はブロックを使ったプログラミングについて少し書きます。ブロックを使った代表的なものと言えば、Scratch(スクラッチ)があります。マイクロビットでも、ブロックを使ってプログラムを作ることができます。
・Scratch(スクラッチ)
https://scratch.mit.edu/
・micro:bit(マイクロビット)
https://microbit.org/ja/
ブロックを使わないタイプのビジュアルプログラミングもあります。例えば、macOSに搭載されているAutometor(オートメーター)もそうです。
・macOS Autometor(オートメーター)
https://support.apple.com/ja-jp/HT2488
・ビジュアルプログラミング言語
https://ja.wikipedia.org/wiki/ビジュアルプログラミング言語
プログラムを目に見える形で表現するというのは、古いところではフローチャートがあります。
・フローチャート
https://ja.wikipedia.org/wiki/フローチャート
小学生の頃にプログラムを作りたいと言ったら、やることを順番に書いてから、それをフローチャートに書けと言われました。子供心としてはフローチャートなんか書くよりも、実際に動くプログラムが作りたかったのですが。
まあ、何を作りたかったかと言えばゲームで、具体的にはnamcoのパックマンです。ゲームセンターとかデパートの屋上で遊ぶと100円取られるので、自宅で遊べれば無料で遊びたい放題ということです。
結局、動くプログラムは作ることなく、二回ほどフローチャート書いて終わりました。実際にゲームが目の前で動くわけでもないので駄目です。動かないとつまらない。
フローチャートの後に出たUMLとかもあります。
・UML(統一モデリング言語)
https://ja.wikipedia.org/wiki/統一モデリング言語
20年くらい前には、絵を描くようにプログラミングできるという謳い文句だったと思いますが、Prograph CPXというのもありました。
・Prograph CPX
https://ja.wikipedia.org/wiki/Prograph_CPX
Prograph CPXは期待して買ったのですが、絵を描くようには作れませんでした。なぜかというと、Prograph CPXを使うには基礎となるオブジェクト指向とMac OSに関する知識が必要だったからです。これらを知った上でないと使えません。
さらに、分かりにくかったのが、パラメーターを受け渡す際の方法が、入出力を線で描いてつなぐだけだったからです。
入出力の出し口と受け口は同じ○になっているため、入出力のデータの型が見た目に分からないというのもありました。これでは、どことどこをつなげばいいかわかりません。そうなると、結局リファレンスを見るハメになります。
これならコードを書いた方が早いのではないか。多分、多くの人がそう見てしまったのか、Prograph CPXはヒットすることなく消え去りました。
あれから数十年、スクラッチに代表されるブロックでは、ブロックそのものの形状を変えることで、分かりやすく表現しています。また、ブロック同士をはめ込む際に、形状が違えばはまりません。これなら小学生でもわかります。
小学生でも分かるブロックを使ったプログラミングですが、プログラミングとは言えないシロモノが作られている事もあるようです。プログラミングというよりもパズル。
https://twitter.com/abee2/status/1065618587287580673
プログラミングは、ブロックをはめ込むようなシロモノではありません。ジグソーパズルのように当てはまるブロックを探すようなものが出てくると、本来のプログラミングではないものになってしまいます。
これでは学校教育でありがちな、正解を探すパズルになってしまいます。こうなるとプログラムとパズルの区別が付いていない、付かない人も結構いるのでは? と思ったりもしてしまいます。
パズルと言えば、数独/ナンプレという有名なものがあります。9×9の全体のマスが、さらに3×3で区切られ、そのマスの中に1~9までの数値を入れるというパズルです。
・数独/ナンプレ
https://ja.wikipedia.org/wiki/数独
マスにはあらかじめ数がいくつか書かれていて、残りの空白のマスを全部埋めるればクリアしたことになります。空白のマスに数字を入れる行為はパズルです。この空白のマスに数字を入れるためのロジック(考え方/方法)がプログラムです。
パズルをどう解くかを表現するのがプログラムとも言えます。解き方は一つだけでなく、いろいろあるはずです。その発想こそが大事なのですが、穴埋めパズルではうまくいかないでしょう。
来年2020年には授業でプログラム絡みが必修になるようですが、パズルにならないようにしてもらいたいところです。
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
数年前から子供達にプログラムを教える講座(&手伝いも)をやったり、児童館で謎の天文学講座やったりしてます。気になるのは、こういう教育関係の話になると、実際に教えた人とそうでない人の乖離が激しいなあと。
教えている人には妄想はないけど、そうでない人(外野)は妄想が多い感じ。子供にプログラムを教えるには結構な力量もいるので、いろいろ勉強していないと会心の一撃を食らったりしますf(^^;
・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram
・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/
・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605
・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591
・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/
・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/
・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/
・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/