Scratchのご先祖様・LCSI MSX-Logo
MSXのソフトの中では顧みられることが少ない、実用ソフトをあえて紹介してみます。
今回は、プログラミング教育の王道であるScratchのご先祖様にあたるLOGO言語、その開発環境であるMSX-Logoを紹介します。
- 全体的には懐古のための記事ですが、「そもそもLOGOとは」と「フラクタル図形」の項目は、少しはお役に立てると思います。
- MSWLogoとは異なります。
- サンプルプログラムをいくつか載せていますが、LOGOプログラミング的に変な書き方をしているかもしれません。ご容赦ください。
- ジャンル:ソフトウェア開発環境・教育用ソフト
- メーカー:Logo Computer Systems Inc.(LCSI)
- 対応機種:MSX1(RAM 32K)
- メディア:カートリッジ
- 価格:9,800円(税別)
目次
そもそもLOGOとは
LOGOの概要
LOGOは、子ども向けの教育用プログラミング言語として、数学者であり計算機科学者であり教育者であるシーモア・パパートによって1967年に開発されました。
wikipedia:LOGO
wikipedia:シーモア・パパート
単純な命令の組み合わせによって画面上のカメを操作することにより、複雑で特徴的な図形を描くことができるというタートルグラフィックスによっても有名です。
LOGOの歴史
それは、まだ個人で気軽に購入できるようなパソコンが存在しない時代のことでした。
コンピュータは大学や研究所などに置かれており、プログラミングは高度な知識を持つ専門家だけが行える世の中でした。
一方で、パパートは、師匠である発達心理学者ジャン・ピアジェの思想を発展させ、「子どもたちは、自ら積極的に何かを構築するときにこそ、効果的に知識を構築することができる」という信念(構築主義 constructionism*1)を持っていました。*2
そこで、子どもたちがコンピュータを利用してものづくりを行えるようにするため、子どもが利用可能なプログラミング言語を開発しました。
それがLOGOです。*3
子どもたちはLOGOという言葉でカメに話しかけることによって、自身の学びを深めることができるのです。
とはいえ、当時は中学校に設置したテレタイプから電話回線を経由してマサチューセッツ工科大学のミニコンに接続してLOGOを利用していたような時代で、後のようにグラフィックスを操作することはできませんでした。*4
代わりに、カメの形をしたロボット(タートル)の動きを制御するために使われるようになりました。*5
タートルの軌跡をわかりやすくするためにペンを括り付けたところ、タートルは、様々な幾何学模様を床に描くようになりました。後のタートルグラフィックスです。
1970年代後半になると、個人でも入手可能なパソコン(Apple II*6など)が普及し、タートルは画面の中で動きながら絵を描くようになりました。*7
1980年代には、世界の数千もの学校によって数百万人の学生がLOGOプログラミングを学びました。*8
パッケージとして販売されたLOGO以外にも、雑誌や書籍などでタイニー版LOGOのプログラムリストが発表されるなどしました。
パーソナル・コンピュータMSXの学習指導への利用―基礎から教室での実践まで
中には、『子どもたちの未来を創ったプログラミング教育』(技術評論社,2022)の著者・戸塚滝登先生のように、かなり早い段階で、LOGOのプログラムを自作して教育現場に投入する先生もおられたようです。*9
子どもたちの未来を創ったプログラミング教育 ~日本最初のプログラミング教育を受けた小学生たちは一世代後にどう育ったか、プログラミングが育てた思考・創造力
しかし、日本では、そのまま定着するには至らなかったようです。
現在のプログラミング教育に及ぶLOGOの影響
LOGOが世界中の学校に広がっていた1983年には、LOGOによってレゴブロックを制御する“LEGO LOGO”が開発され、現在の“LEGO MINDSTORMS”*10に繋がっています。*11
wikipedia:MINDSTORMS
matsun-ri.hatenablog.com
また、パパートが提唱した理念である「低い床(初心者が簡単に始められること)、高い天井(高度なことができる)」には、弟子であるミッチェル・レズニックによって「広い壁(様々なことができる)」が付け加えられ*12、Scratchの理念となりました。
wikipedia:ミッチェル・レズニック
wikipedia:Scratch
MSX-Logoとは
媒体
今回扱うMSX-Logoは、Logo Computer Systems Inc.(LCSI, http://www.microworlds.com/company/profile.html )が開発、販売しました。*13
LCSIはパパートらが設立した会社です。パソコン黎明期には、Apple IIをはじめとした各種パソコン向けのLOGOを開発、販売し、シェアを得ていました。
パッケージ
パッケージには、LCSI社のロゴマークが印刷されています。
パッケージ裏面には、「低い床、高い天井」の理念が、「小学生でもこなせる使いやすさと、大学生にもチャレンジできる奥行きの深さ」という文で表現されています。
各国語版の存在
日本語版以外にも、英語版、ドイツ語版、フランス語版、イタリア語版、オランダ語版、スペイン語版、アラビア語版が存在しました。
MSXという単一機種用のプログラムであるのに、これだけの言語の別バージョンが作られていることは、MSXが国際的に普及していた規格であることを証明しています。
その中でも、スペイン語版はアルゼンチンの学校に大々的に導入され、人気を博したとのことです。
MSXはアルゼンチンで非常に成功したが、これは「教育用コンピューター」として学校教育で国家レベルで導入されたことによる。学校教育の中でMSX-LOGO言語が教えられていた。
https://ja.wikipedia.org/wiki/MSX#%E6%97%A5%E6%9C%AC%E5%9B%BD%E5%A4%96%E3%81%AEMSX
また、LCSIの公式サイトには、次のとおり書かれています。
In 1986, we also prepared the Spanish Logo vocabulary and documentation for a MSX computer, assembled by Telématica S.A. in Argentina.
Based on the MSX-Logo developed by LCSI in Canada, this computer became quite popular in Argentina, where it has been used in many schools.
A Logo Postcard from Argentina - Logo Philosophy and Implementation - LCSI
(きっとこんな意味)
1986年には、アルゼンチンのテレマティカ社が組み立てたMSX用に、LOGOのスペイン語命令セットとドキュメントを準備しました。
カナダのLCSI社が開発したMSX-Logoによって、テレマティカ社のMSXはアルゼンチンで非常に人気があり、多くの学校で使用されています。
今でも、YouTubeにて“MSX Logo”を検索すると、大量のMSXのロゴマークに混ざって、スペイン語版MSX-Logoの動画が見つかります。
画面写真
起動画面
起動直後の画面です。この時点でタートルが表示されています。
LCSI直々の製品であることと、日本語(ひらがな)に対応していることがわかります。
言語の切り替え
上の写真*15の例では、
- 「こんにちは」 という名前の手続きが未定義である
- 「100+20+3」という引数だけで、手続きが指定されていない
- 「へんすう」という名前の変数が未定義である
というエラーメッセージが、日本語で表示されています。
デフォルトでは日本語モードになっていますが、select 0 とタイプすることで英語モードに切り替わります。
先程の例を英語モードで試すと、対応するエラーメッセージも英語で表示されます。
日本語モードと英語モードの違いはメッセージが表示される言語が切り替わるだけで、プログラムそのものは日本語と英語を混ぜて書くことが可能です。*16
なお、日本語モードに戻すには、select 1とタイプします。
日本語のコマンドと英語のコマンドの対照です。
戻し値がない指示を「コマンド」、戻し値がある指示を「レポータ」*17と呼びます。
ちょっとだけ残念なのは、英語のコマンドは小文字にしか対応していない点です。子どもたちに触れてもらうに際して、一般的なキーボードには大文字しか書いていませんし、そもそも小さな子は小文字が読めない、というのが図書館での経験則です。*18
ダイレクトモードによるプログラムの実行
ダイレクトモードで、図形を描くプログラムを入力してみました。
このプログラムを実行すると、次のとおり表示されます。
MSXはテキスト画面とグラフィック画面が独立していないにもかかわらず、テキストとグラフィックが混在して表示されている様子がわかります。この部分は、後ほど詳しく見ましょう。
なお、このプログラムは、英語で書くとこうなります。*19
make “a 1 repeat 117 [ fd :a rt 88 make “a :a + 1]
フラクタル図形
LOGOといえばタートルグラフィックスである、と言われています。
また、LOGOといえば再帰処理である*22、と言われています。
ということは、LOGOといえばフラクタル図形である、ということになります。
ここでは、『Scratchで楽しく学ぶアート&サイエンス 改訂第2版』(日経BP社)の第4章「フラクタル図形を描いてみよう」にて扱われている図形を、MSX-Logoで描いてみます。
本をお持ちの方は、MSX-LogoとScratchのコーディングにおける表現の違いを、ぜひ比較してみてください。
シェルピンスキーのギャスケット
シェルピンスキーのギャスケットは、三角形の中に三角形の入った三角形が入っている…という図形です。*23
wikipedia:シェルピンスキーのギャスケット
日本語のプログラムは、次のとおりです。
解説
再帰処理を繰り返す回数によって、図形の複雑さが変化します。
回数が1回だと単なる三角形ですが、回数を増やすにつれて、複雑な三角形になっていきます。
なお、このプログラムは、英語で書くと次のようになります。
to sierpinski :rep rg setbg 4 penup setc 2 lt 90 fd 160 / 2 lt 90 fd 160 / 2 seth 90 pendown triangle 160 :rep end to triangle :len :rep if :rep = 0 [] [ repeat 3 [ fd :len lt 120 triangle :len / 2 :rep - 1] ] end
コッホ曲線
コッホ曲線は、直線の一部にツノを作り、そのそれぞれの直線の一部にツノを作り、そのそれぞれの直線の一部にツノを作り……といった図形です。
wikipedia:コッホ曲線
日本語のプログラムは、次のとおりです。
解説
再帰処理を繰り返す回数によって、図形の複雑さが変化します。
回数が1回だと単なる直線ですが、回数を増やすにつれて、複雑な図形になっていきます。
また、この線を3つ組み合わせると、雪の結晶のような図形になります。
なお、このプログラムは、英語で書くと次のようになります。
to koch :rep cs setbg 4 setc 2 penup lt 90 fd 120 lt 90 fd 80 lt 90 pendown line 240 :rep end to line :len :rep if :rep = 1 [fd :len] [ line :len / 3 :rep - 1 lt 60 line :len / 3 :rep - 1 rt 120 line :len / 3 :rep - 1 lt 60 line :len / 3 :rep - 1]
樹形図
枝分かれを繰り返すと、複雑な樹木ができあがります。
日本語のプログラムは、以下のとおりです。
解説
再帰処理を繰り返す回数によって、図形の複雑さが変化します。
回数が1回だと単なる直線ですが、回数を増やすにつれて、複雑な図形になっていきます。
なお、このプログラムは、英語で書くと次のようになります。
to tree :rep cs setbg 4 setc 2 pu bk 80 pd branch 30 :rep 25 end to branch :len :rep :deg if :rep = 0 [] [ fd :len lt :deg branch :len * 0.9 :rep - 1 :deg rt :deg * 2 branch :len * 0.9 :rep - 1 :deg lt :deg bk :len] end
余談
懺悔
プログラミング歴は短くないつもりなのですが、LOGOという言語を知ったのは、プログラミング教育に関わり始めたここ数年のことです。
というのは、僕がパソコンに触れ始めた頃は、当時唯一の情報源であった雑誌などでは既にLOGOが取り上げられることがなくなっていたのです。
その後、大学に進学して図書館を覗くと、まとまった数のタートルグラフィックスについての本がありました。
その頃は、パソコン関連書籍の陳腐化の速度が凄まじかったので、ほんの6,7年前に出版されたと思しきそれらの本を見ながら
「古い本があるなぁ」
と思ったものです。
1回生の時のプログラミング実習はMS-DOS版のQuickBASIC ver.4.5で、タートルグラフィックスに触れることはありませんでした。
そこで、仲間内で先生に
「タートルグラフィックスってなんですか?」
とたずね、LOGOとタートルグラフィックスについてざっと教えてもらいました。
しかし、中にめんどくさい学生がいて
「それ、BASICでいいんじゃないですか?」
とか主張し始めるわけです。
教育の観点からLOGOの意義について説明する先生も、ついには呆れ果てて
「君はちゃうけど、そういうのが必要な人もおんねん……」
はい、めんどくさいとは僕のことです。ごめんなさい。
あの時の先生には大変お世話になったので、お会いすることがあったら、(他にもやらかしはいっぱいあるのですが)まずそのことを懺悔したいと思います。
突然のMSX3ネタ
鳴り物入りで学校教育に投入された、いわゆるGIGAスクール端末は、国の補助金が1台あたり5万円以下に限られていたこともあり、家庭での宿題の際には、重いOSの割に合わない低いスペックに悩まされている子どもと保護者の話も聞きます。*24
そんなGIGAスクール端末も、数年後には更新時期を迎えることが予想されますが、その際には国の補助制度がないと言われています。
零細自治体にとっては頭の痛い問題となりそうです。
この記事を書いている現在、MSX3が発表間近と言われています。
発売がいつ頃になるのか、現時点では予想できませんが、コアは書き換え可能なFPGAで実装され、時代によって進化していくマシンであるようです。
GIGAスクール端末が更新時期を迎えるころには、品質が安定していると思われますので、ぜひ学校教育特化型バージョンで日本の教育現場に殴り込み、平和と安寧をもたらしていただきたいと思います。*25
なにしろ、MSXには、かつてアルゼンチンやソビエト連邦で教育用コンピュータとして一世を風靡したという実績があるのですから。
*2:『ライフロング・キンダーガーテン 創造的思考力を育む4つの原則』(日経BP社,2018)p.77
*4:『子どもたちの未来を創ったプログラミング教育』(技術評論社,2022)p.251-253
*6:GIGAZINE『プログラミング言語「LOGO」のApple II向けソースコードが公開される』 https://gigazine.net/news/20181005-apple-ii-source-code/ これはMIT版であり、LCSI版とは異なります。
*9:『子どもたちの未来を創ったプログラミング教育』p.20-22
*10:MINDSTORMSの名前自体が、パパートの著書のタイトル『マインドストーム☆〔新装版〕☆: 子供,コンピューター,そして強力なアイデア』に由来しています。
*12:『ライフロング・キンダーガーテン』p.118-119
*13:“MSX-”という接頭語から、最初はアスキーの製品だとばかり思っていました。アスキーのMSX向け製品群が“MSX-DOS”, “MSX-C”, “MSX-Write”などのように“MSX-”がつくどころか、他機種だと“Multiplan”というソフトがMSXだと“MSX-PLAN”だったりしたからです。matsun-ri.hatenablog.com
*14:『子どもたちの未来を創ったプログラミング教育』p.255 なお、世間的にはパパートの名著『マインドストーム』の日本語訳者として有名です(が、僕はまだ読んだことがありません……)。
*15:画面写真のモアレを抑止するため、背景色を暗い青(カラーコード4)に変更しています。
*16:というより、日本語に対応していないコマンドがあるので、必然的にそうなります。
*17:Scratchの拡張機能をJavaScriptで作成する際に、値を返すタイプのブロックであることを示す定数の名前は BlockType.REPORTER だったりします。
*18:今なら、小文字がわかる歳の子はScratchを使っちゃいます。
*19:いかにはてなブログといえど、LOGOのソースコード表示には対応していなかったので、LISPで代用しています。
*20:我ながら、ちょっと言っている意味が分かりません。
*21:MSX2+以降のBASICで漢字モードにし、ワークエリアをごにょごにょすれば実現できた……気がします。
*22:ガイドブックでも、通常ならループを使いそうな処理を再帰で書いていたりします。
*23:プログラミング実習室の子どもたちにこれを見せたところ、口々に「トライフォース…」「トライフォースだ…」と言っていました。僕が小学生の時の同級生に見せても同じように言うと思います。
*24:そもそも家に持ち帰って活用できている時点で勝ち組かもしれません。持ち帰りできない学校も多いらしいので…
*25:その際は、いかに教師にとって扱いやすい管理コンソールを用意できるかがキモかと思われます。
実習室で使っている教材:教育版LEGO MINDSTORMS EV3
プログラミング実習室で使っていたり、要望があれば使えるようにしている教材のうち、教育版LEGO MINDSTORMS EV3について書いてみます。
※「子ども向けプログラミング環境にはどのようなものがあるか」、また「そのプログラミング環境がどのようなものであるか」については、既にネットに情報があふれていますので、あくまで身の周りでどのように使っているかを書いています。
目次
概要
レゴブロックで有名なレゴ社と、Scratch(子ども向けプログラミングワークショップでScratchを選択する理由)で有名なミッチェル・レズニック教授のタッグが送る、テック好きな親御さん垂涎の的のロボット教材です(なにせ、品質なりに高いので)。
これで何ができるのかを確認したいなら、YouTube あたりを“MINDSTORMS”で検索するのが一番でしょう。ロボットを理解するには動いているところを見ることです。
MINDSTORMSシリーズは、やる気とパーツ次第で本当に何でも作れます。
例えば、阪大レゴ部が自動紙飛行機折り機*1を作った際には、ニュースに取り上げられました。
www.youtube.com
こういった機械を思いつきで作ろうとしても、かつては高専生や工学部生が学校の設備で金属を切断するところから始めなければならなかったのですが、MINDSTORMSの登場によって、プロトタイピングがずっと身近になりました。
開発環境
利用できるプログラミング言語は、ブロックプログラミングのほか、C, Java, C#, mrubyなどのテキストプログラミングに対応しています。
当初のブロックプログラミング環境は『EV3ソフトウェア』*2でした。
これはScratch Jr.のように、文字の書かれていないアイコンブロックを右方向に連結することでコーディングするものでした。
ブロック(コード)に文字が使われていないので、利用者の母語にあまり左右されない利点がありますが、慣れないと理解しづらくもあります。
その後『EV3 Classroom』がリリースされ、プログラミング環境が Scratchのようなテキストブロック形式になりました。
Scratch経験者なら EV3 を簡単に動かせるようになるでしょうし、EV3 Classroom がはじめてのプログラミング環境であったなら、Scratch もじきに使いこなせるようになるでしょう。*3
とはいえ、少し残念な点もあります。
- EV3ソフトウェアにあった機能の一部が EV3 Classroomでは削られている(教育版EV3ソフトウェアとEV3 Classroomの比較 | (株)アフレル|レゴ エデュケーション正規代理店)
- 一部の漢字が簡体字っぽく表示されるため、読みづらい
- そもそも日本語が不自然*4
上の例では、特に「位置」「直進」「刃」が読めません。
オンラインテキスト
プログラミングに関する紙の教本は、ユーザーガイド(取説)くらいしか附属しません。
代わりに、EV3アプリやEV3 Classroomなどの開発環境に、これでもかというくらいの量のオンラインテキストが提供されます。しかも、生徒側のテキストだけでなく、教える側にとっての授業のためのヒントも提供されます。
オンラインテキストは更新されることもあるのですが、EV3は既にサポートが終了しているため、将来的にはパソコンを買い替えた際などに EV3 Classroom がインストールできなかったり、インストールができてもテキストがダウンロードできなくなることもありえるのが気がかりです。
EV3 Classroomのチュートリアル
EV3 Classroom には、数多くのレッスンプランがオンラインテキストで用意されています。
はじめにというチュートリアルでは、
- EV3本体 と EV3 Classroom(をインストールしたパソコン)の Bluetoothによる接続
- モーターとセンサーをプログラミングによって制御(ソースコードが例示されます)
- ドライビングベース(左右の車輪が別々のモーターに繋がっている車)の組立と制御(ソースコードが例示されます)
といった、EV3を操る最初の一歩を知ることができます。
続いて、ユニットプランというレッスン集では、ロボットトレーナー、エンジニアリングラボ、スペースチャレンジといったレッスンが用意されています。
ロボットトレーナーでは、EV3に含まれているモーターや各センサーを、順を追って実際に利用していきます。
途中までは、ソースコードが例示されます。
- 直進と回転(モーターの使用)
- 物体と障害物(超音波センサーの使用)
- つかんで離す(電動アームの作成。ただし、掴むというよりは引っ掛けるというほうが正しい)
- 色と線(カラーセンサーの使用によるライントレース)
- 角度とパターン(ジャイロの使用)
- 工場で働くロボット(ブロックを移動させる、線に沿って進むなど、ロボットとしての具体的な動作を実現します。ここからはソースコードが例示されません)
- FIRST LEGO League(世界規模のロボット競技会)への誘い
エンジニアリングラボでは、動作の精度、ギアチェンジ、摩擦係数、重力加速度を考慮したギミックを作成します。ソースコードが例示されます。
スペースチャレンジでは、火星探査ミッションの実現のため、探査車や探査衛星、ロケット発射機を作ります。ただし、ソースコードは例示されません。またレゴ マインドストーム教育版に入っていないパーツを利用します。
他に、基本セットモデルでは、以下の組み立て方と制御用のソースコードが例示されます。
- ジャイロボーイ(ジャイロによって、セグウェイのように2輪だけで直立する車)
- カラーソーター(ブロックの色を認識し、選り分けるアーム)
- パピー(ロボット犬)
- ロボットアームH25(ブロックを持ち上げるアーム)
ここまで試すころには、EV3で思った通りのものが作れるようになるのではないでしょうか。
MakeCode for EV3
以前、micro:bit(実習室で使っている教材:BBC micro:bit)や MakeCode Arcade(実習室で使っている教材:Microsoft MakeCode Arcade )で紹介した Microsoft MakeCode は、EV3にも対応しています。
MakeCode for EV3 では、ブロックプログラミングでプログラムを作成し、USB接続でMINDSTORMS EV3へプログラムを転送できます。
ただ、上に示したコードのとおり、EV3の醍醐味であるモーター駆動系の命令が、なぜか日本語化されていません。*5
ロボットコンテスト
EV3を利用して作られた自律型ロボットによる国際的なロボットコンテストが定期的に開催されています。
www.wroj.org
既定の競技フィールドの上を、モーター制御や各種センサーを駆使して、荷物をルールに従って移動させ、ゴールまで到着する、といった内容で、様々な部門が用意されています。*6
ロボットの機種は、EV3の他、前世代のNXT、次世代のSPIKE や Robot Inventorで参加が可能です。
状況
パソコン本体にお金を掛けなかったのが認められたのか、予算を通してもらえました*9。
最初に試しに作ったロボットは、チュートリアルの通りに作ったもので、左右の車輪をそれぞれ独立したモーターで動かすことができるものでした。
その後、見様見真似でロボットアームを追加し、薬の空き箱くらいなら掴めるようになりました。
そこで、以下のようなプログラムを作ってみました。
- 起動直後に360度回転し、自分の周囲にある空き箱を探す
- 最も近い空き箱の方向に向く
- 空き箱に向かって走る(最初は速く、近づいたら遅く)
- ちょうどいい距離になったら止まる
- 開いていたアームを閉じ、空き箱を掴む
- そのまま180度回転する
- 少し走る
- アームを開いて空き箱を離す
- 少しバックする
このプログラムがうまく動くと、EV3で作ったロボットが、自律的に空き箱を探して走り、持ち運ぶように見えます。
プログラムの作りこみが甘く、うまくいくときもあればいかないときもありますが、そこが子どもに人気の理由かもしれません。
うち特有の問題としては、EV3の開発環境はWindows,Mac,iOS,Android,Chromeと幅広く対応しているものの、うち最大派閥のUbuntuには対応していないため、利用できるパソコンが限られる点が挙げられます。*10
現在の常連である4・5年生は、ロボットよりもScratchプログラミングに夢中*11なのですが、新たに中学生たちがロボット作りに参加することになり、今後が楽しみです。
Tips
Raspberry PiのMicrosoft MakeCode for EV3にてプログラムを作成した場合、USB接続でEV3に流し込むことになりますが、USBケーブルを繋いだだけだとEV3が書込禁止ドライブとなり、せっかく作ったプログラムが書き込めないようです。
書込可能にするには、ターミナルにて次の操作が必要です。
$ sudo mount -o remount,rw '/media/pi/0042-0042'
(下線部は環境に依るかも)
なお、流し込む度に一旦切断されて再接続されるので、その都度操作が必要です。
*1:この名前は、完全ではありません。折るだけではなく自動的に発射までできてしまうからです。
*2:途中で『EV3 Lab』という名前に変わったようですが、その後すぐにEV3自体が販売終了になってしまったので、この名前はあまり見かけません。
*3:そもそも、Scratch開発者のレズニック教授が早くからMINDSTORMSの開発メンバーだったので、こうなることは必然だったのではないでしょうか。
*4:外国製アプリによくあるパターンですが、Scratchは、このあたりが丁寧に作られています。
*5:2022年2月現在。
*6:YouTubeで“WRO”を検索すると、公式による動画を観ることができます。
*7:EV3には本体の液晶画面を利用し、本体だけでプログラミングができるという、びっくりするような機能があります。
*8:外国でも似たような主張がされているようで、そういう人に向けて「新型がEV3より優れている理由」といった動画が作られています。
*9:そりゃ、本当ならノートパソコンが10台くらい欲しいところを、捨てられかけてるデスクトップパソコンを全部自分でキッティングして済ませたわけですし……。ああ、空からChromeBookが降ってこないかなあ。
*10:C言語などでの開発はできるようですが、MINDSTORMSを触りたい小学生全員にC言語を書かせるのは現実的ではないでしょう。
*11:こないだロボットを卒業したばかりだから、だったりして。
実習室で使っている教材:IchigoJam
プログラミング実習室で使っていたり、要望があれば使えるようにしている教材のうち、IchigoJam について書いてみます。
※「子ども向けプログラミング環境にはどのようなものがあるか」、また「そのプログラミング環境がどのようなものであるか」については、既にネットに情報があふれていますので、あくまで身の周りでどのように使っているかを書いています。
目次
概要
電源オンですぐスタートできる、日本生まれのプログラミング専用パソコンです。
見た目は単なる小さなマイコンボードですが、IchigoJam は別途パソコン類を必要とせず、単体でプログラミングができます。
キーボードを使ったテキストプログラミング
IchigoJam は、長年にわたり使われているプログラミング言語“BASIC”を内蔵しており、電源を入れるだけでプログラミングを始めることができます。
ところで、BASICはテキストベースのプログラミング言語なので、キーボード入力が必要です。
対象が子どもの場合、キーボード入力の速度やアルファベットへの慣れは個人差が大きいだけでなく、そもそも小文字を知らない場合も多いのです。一般的なプログラミング言語は小文字を多用しますが、キーボードには小文字が刻印されておらず、どのキーを押せば入力できるのかがわかりません。このため、キーボード入力は通常であればネックとなります。
しかし、IchigoJam BASIC の命令は大文字だけ*1なうえに短めです。つまり、小文字を知らない参加者でも、大文字だけならキーボードの刻印を見れば入力できるのです。
むしろ、IchigoJam BASIC でテキストプログラミングを始めてもいいかもしれないくらいです。*2
『学校を変えた最強のプログラミング教育』(くもん出版)によりますと、ある公立小学校では、4年生でIchigoJam BASICの入力に挑んだところ、子どもたちは一人で入力したり、友達と教えあいながら入力するなどして、完成したプログラムの動作を見届けたそうです。
電子工作への活用
IchigoJam は電子工作用の端子を備えています。そして、IchigoJam BASIC には、端子を制御するための強力な命令を持っています。ですから、電子工作との相性は抜群です。
IchigoJamの他に、LEDの1本でもあれば、その場でLチカ*3が試せます。
端子として5V出力を備えているため、3Vでは動かない電子部品が利用できることもメリットです。
IchigoJam自体は消費電力が少ないため、電子工作に載せてモバイルバッテリーや電池で動かすことに適しています。
ワークショップ用として
IchigoJam本体は、完成品が2,200円、はんだ付けが必要な組立キットであれば1,650円*4から入手できます。
このため、特にワークショップではんだ付けを含む組立から行う場合は、受講生に本体代を負担してもらいやすく、その場合はそのまま自宅に持ち帰って活用していただくことすら可能です。*5
かなり極端な例だと思いますが、米子高専の IchigoJam ワークショップに参加したところ、終了後になんと完成品の IchigoJam をもらってしまいました。
「家で使ってもらった方が啓発になるし、いっそ広告宣伝費だと思って配ってしまえ!」ということができる程度の価格であることも、主催側としては大きな魅力の一つであると思います。
用意するもの
IchigoJam本体のほかに用意するものは、以下のとおりです。
- 家庭用のテレビ(ビデオ入力端子で接続します)
- USB接続のキーボード(利用できるものとできないものがあります。手持ちのキーボードを試してみて、使えないときは公式が動作保証をしている機種を購入するとよいでしょう)
- USB充電器(出力はそれほど必要ないので、家庭で余っているもので充分です)
状況
自動運転車
はじめてのプログラミング教室を実施した際には、まず、ロボット掃除機の再現と称して、Scratchでプログラミングを行いました。
具体的には、
- 画面に大量のクローンをばらまく
- ロボット掃除機と称したバスケットボール*6が画面内を動く
- クローンに当たったらクローンを消す(←掃除っぽい)
- もし端についたら、跳ね返る(←ロボットっぽい)
のようなことを行いました。
画面中のリンゴとエレクトーンは、掃除中に障害物となることを想定して配置しました(ロボット掃除機が当たると跳ね返ります)。
その後、IchigoJam と超音波センサー、タミヤのギヤボックスなどを組み合わせて作った自動運転車を持ち出して、みんなの前で動かします。
障害物や壁をよけたりよけなかったりする様子に、子どもたちは興味津々です。
そこで、自動運転車に積んだままの IchigoJam にプロジェクタとキーボードを接続し、中のプログラムリストを表示します。
「これ、コンピューターなの!?」と興奮する子どもたち。
あとで「自分でもやってみたい」と言われたものの、まだこの頃にはいい教材を知らなかったので、近隣のロボットプログラミング体験会を案内しました。
今ならタミヤのマイコンロボット工作セットなどを勧めるのですが……。
自動運転プラレール
その後、自動運転車の制御は micro:bit(実習室で使っている教材:BBC micro:bit)に譲り、プラレール車両と組み合わせて追突しないプラレール車両を作ってみました。
ループ線を敷いて、スピードが遅めの通常の車両を走らせ、その後ろにスピードが速い自動運転車両を走らせます。
IchigoJamと超音波センサーで作った追突しないプラレール。ラッシュ時に前を走ってる普通のせいでノロノロ運転する特急みたいになってしまいました…。センサーの微妙な角度で動きがかなり変化します。 pic.twitter.com/7IIMebq71h
— まっつん総研@図書館プログラミング実習室 (@matsun_research) 2020年11月1日
試したところ、割とうまく動き、ラッシュ時に前を走っている各駅停車がジャマになってノロノロ運転を強いられる特急を再現できました。
ただ、環境やセンサーの微妙な角度で動きがかなり変化するようです。
実習室に持ち込んだところなかなかうまくいかず、先行車両にゴツゴツ当たってしまいました。ちょっとでも超音波センサーに引っ掛かりやすくするため、先行車に折り紙で作った猫のお面をつけたりなどと努力はしたのですが。
子どもたちに興味を持ってもらえたので、いずれリベンジしたいです。
サンプルコード
ウェブサイト“IchigoJam web”でIchigoJam BASICでのプログラミングを試すことができます。
fukuno.jig.jp
ラインアートのサンプルコードを用意しました。
上のリンクをクリックしてIchigoJam Webのサイトを開き、真っ黒画面の2つ下にある黒枠の中に、下のソースコードをコピペしてください。
その後、真っ黒画面の下にあるIMPORTボタンを押すと、真っ黒画面にプログラムが入力されます。*9
念のため、Enterを2~3回押してから、F5キーを押すと、実行されます。
100 'LINE DEMO 110 SRND 0 120 P=RND(2)*2-1 : Q=RND(2)*2-1 130 V=RND(2)*2-1 : W=RND(2)*2-1 140 R=10 : S=8 : X=50 : Y=30 150 @MAIN 160 A=P:B=Q:C=R:D=S:GOSUB @SUB 170 P=A:Q=B:R=C:S=D 180 A=V:B=W:C=X:D=Y:GOSUB @SUB 190 V=A:W=B:X=C:Y=D 200 DRAW R,S,X,Y 210 WAIT 5 220 DRAW R,S,X,Y,0 230 GOTO @MAIN 240 @SUB 250 C=C+A : D=D+B 260 IF C<0 THEN C= 0 : A= 1 270 IF 63<C THEN C=63 : A=-1 280 IF D<0 THEN D= 0 : B= 1 290 IF 47<D THEN D=47 : B=-1 300 RETURN
余談
IchigoJam は、ひとつのCPUで、プログラムの実行から画面表示用の信号の生成、キーボード入力の管理などすべてを行っています。
この仕組みを使って、MSX1マイナスくらいのスペックを実現することが技術的に可能かどうか、気になっています。
具体的には、MSX BASICで書かれたものは何でも動き、カラー表示に対応、スプライト機能も搭載、ただし機械語プログラムは動かない、といったものです。
現在、MSXシリーズ数十年ぶりの新機種・新規格であるMSX3の登場が期待されています。
2000円で購入できるMSX1マイナスとの2本立てなんて、おもしろいのではないでしょうか。
※IchigoJam開発者の福野泰介さんへのインタビューによると、IchigoJamは子どもの手にちょうどいいものにしたいため、あまり複雑なものにはしたくないようです。
weekly.ascii.jp
*1:昔のBASIC開発環境では、小文字で入力しても強制的に大文字化されましたが、IchigoJamは小文字で入力するとそのまま実行されるようです。
*2:いつの時代も、なぜかBASICを下に見る人(いわく「古い、遅い、インタプリタで動いてる」)はいます。 たしかに IchigoJam BASICは古典的なBASIC(行番号が必要だったり、構造化されていない)です。 しかし、そもそもメモリ容量が小さく、あまり大きなプログラムは作れないので、構造化プログラミングができないことが大きな問題になるとは考えにくいです。 なお、IchigoJam BASIC は単に古典的なだけのBASICでは決してなく、例えば強力なI2C操作ができる命令を備えています。
*3:マイコンの端子につないだLEDを、マイコンからの出力によってチカチカさせること。
*4:税別だと1,500円。つまりイチゴ00円。
*5:受益者負担にうるさい役所だと、現金の取扱が面倒なので大変だと思います。おそらく (1)前年度の予算編成時期から参加者数の上限を設定して購入予算を確保する (2)イベントの参加人数が確定したら、人数分の IchigoJam を購入する (3)調定決定書を起票し、納付書を作成する (4)当日のイベントで参加者に納付書を手交し、銀行窓口で納入してもらう(イベントの日は休日だと思うので後日) (5)当日のイベントで欠席者が出たら、減額調定を起票する (あるいは欠席でも払ってもらう)(6)もともと参加人数が少なく予算が余ったら、減額補正を議会に諮る……といった、昔から「ドッグイヤー」と呼ばれるICTの世界には似つかわしくない運用になるはずです。なので、自分では現金負担のあるイベントを実施したことはありません。
*6:とりあえず丸いものにしたかったのです。
*7:BASICではなくJavaScriptでプログラミングできる環境。
*8:ドラクエ風のコマンド選択式でコーディングする、ちょっとかわった環境。
*9:本来は真っ黒画面にキーボードでプログラムを入力をするのですが、IMPORTボタンを押すと、黒枠の中の文字列がキーボードから入力されたことになります。
実習室で使っている教材:BBC micro:bit
プログラミング実習室で使っていたり、要望があれば使えるようにしている教材のうち、BBC micro:bit について書いてみます。
※「子ども向けプログラミング環境にはどのようなものがあるか」、また「そのプログラミング環境がどのようなものであるか」については、既にネットに情報があふれていますので、あくまで身の周りでどのように使っているかを書いています。
目次
概要
イギリスで100万人の子どもに配られた、ワンボードマイコンです。
イギリスの公共放送であるBBCが作ったこの micro:bit は、電子工作用の端子のほか、各種センサー(温度・光・加速度・方角)と 25個のLEDランプによるマトリックスを備えており、プログラミングによって利用することができます。
プログラミングはパソコンで、以前に紹介した MakeCode Arcade でも使用した Microsoft MakeCode を利用します。
MakeCodeには micro:bit のエミュレーション機能があるため、ある程度は micro:bit の動きを試しながら、プログラムを作成することができます。
MakeCodeを利用するので、ブロックプログラミングの他、プロが使っている JavaScript や Python といった本格的なプログラミング言語が利用できます。
ブロックプログラミングというと、よく知らない人が下に見ることがありますが、MakeCode と micro:bit の組み合わせは、ミリ秒単位の超音波センサーを制御するために充分な精度が出せます。
みんなが大好きな Scratch でもプログラミングができます。ただし、別途ソフトを事前にインストールするなどの事前準備が必要です。
MakeCodeで作成したプログラムは、USBケーブルを経由して micro:bit に流し込むことで、実行することができます。*1
いちどプログラムを流し込めば、パソコンがなくても単体で動く*2ので、手作り工作と組み合わせることができます。
教本は割と多く出版されています。
『micro:bitプログラミング 手づくり工作をうごかそう!』(翔泳社)など、工作と組み合わせた事例を扱っている本が多く、楽しめると思います。
また、micro:bitのハードウェアを詳しく知りたい方は、『ビジュアル図解 micro:bitではじめるプログラミング&マイコンボード入門』(技術評論社)をご覧ください。micro:bitのハードウェアについて、メモリマップに至るまで細かく解説されています(たぶんワークショップで普通にプログラミングを楽しむためにはそこまで必要ないと思うのですが……*3)。
v1.5とv2
購入した micro:bit の世代はv1.5でしたが、後にバージョンが上がり、2021年現在では micro:bit v2が出回っています。
表面的なバージョンアップとして、v2にはタッチセンサー、マイク、スピーカーが追加されており、 micro:bit 単体でできることが増えました。*4
内部的にも、Bluetoothの安定性向上や電子工作で利用できる電力の向上(90mA→190mA)、メインメモリが8倍(16kB→128kB)、処理速度がかなり(少なくともクロック周波数は16MHz→64MHz)向上するなど、かなりパワーアップしています。*5
どうも、AIや機械学習をmicro:bitに応用することを見込んでいるようです。*6
定価は変わりませんので、今から購入するなら、v2を選ぶべきでしょう。
状況
最初は、試しに micro:bit単体と、micro:bitで使えるLED, マイク、ブザー、人感センサーなどがセットになったキットを別々に購入しました。
その後、距離センサー、micro:bit用モーター制御基板、タミヤのギヤボックスなどを買ってきて、寄せ集めでロボットカーを作りました。
目の前の障害物を、自動的に避けて走る車です。
モーターを動かしながらだと、距離の計測がうまくいかない*7ので、止まってから計測しています。
計測に失敗したときはしばらく待機するように作っているので、そんな時に「もしも~し」とセンサーの前で手を振ると突然動き出したりするあたりが、子どもたちに人気の秘訣かもしれません。(たぶん)
ワークショップの予算では、ソフトバンク系の会社が販売している『micro:bit アドバンスセット』を購入しました。
micro:bit本体、本体を保護するカバー、単体で動かすための電池ボックス、スピーカー、距離センサーなどのほか、それらを活用するためのテキストがセットになっています。
距離センサーが不要な場合は、省略されている『micro:bitはじめてセット』も販売されています。
購入したセットに含まれている micro:bit は古いv1.5ですが、現在はv2にバージョンアップされている*8ほか、新たに温湿度センサーが追加されています。
距離センサーとスピーカーを組み合わせれば、手を近づけたり話したりすると音階が変わるテルミンもどきや、いわゆる母ちゃん接近警報器が割と簡単に作れます。
同梱されている距離センサーは、より正確には、ワニ口クリップやブレッドボード、はんだ付けなどが必要だったセンサー類の接続を、簡単にコネクタに差すだけで済むようにしたGroveシステムという規格(?)があり、それに対応した距離センサーと、micro:bitにGroveシステムのセンサーを接続するためのシールドのセットです。
センサー、シールドともに、もともと電子工作パーツのショップなどで販売されている既製品なのですが、このシールドさえあれば、別途Groveシステムに対応した様々なセンサーを購入し、micro:bitで使うことができそうです。*9
アドバンスセットは2台購入し、1台は主に展示用(テルミンでデモをしたりなど)とし、1台はその場で触ってもらえるように空けています。
サンプルコード
MakeCode for micro:bitで落ちゲーを作ってみました。
micro:bitを左右に傾けることで上から落ちてくるドット(明/暗)を左右に動かし、同じ明るさのドットに重ねると消えます。
消すとスコアが増え、スピードが上がります。
ドットが上まで積みあがるとゲームオーバーで、得点が表示されます。
スピーカー対応。ぜひ実機でお試しください。
*1:Bluetooth接続を使えば、スマホやタブレットのアプリでプログラミングし、micro:bitに流し込めることになっているのですが、個人的にはつながらなくなるなどのトラブルがあったので、勧めていません。Bluetoothの機能が安定したといわれる micro:bit v2なら、うまくいくかもしれません。
*2:電源は必要です。100均で売られているような、単3乾電池2本で動くモバイルバッテリーで動きます。
*3:昔の『Inside (機種名)』とか『(機種名)テクニカル・ハンドブック』とかが楽しめる人は、読んだら楽しめると思います。僕はメモリマップなんて20世紀以来ぶりに見ました。
*4:v1.5では音を出すために、100均からスピーカーを買ってきてワニ口クリップで接続するひと手間が必要でした。それが工作感があってよかった、という意見もありそうですが……。
*5:『ビジュアル図解 micro:bitではじめるプログラミング&マイコンボード入門』によると、v1.5世代では LEDマトリックスを表示するためのCPU負荷がかなり高かったものが、v2では処理速度の向上で無理なく表示できるようになり、I/Oが余ってしまったそうです。
*6:https://microbit.org/new-microbit/
*7:micro:bit のせいではなく、モーターからのノイズ(モーター動作中は micro:bit のLED表示が激しく乱れます)と、センサーの選定を誤ったせいだと思います。電子工作で距離センサーとして使われる定番のセンサーである HC-SR04 は 5ボルトの電圧が必要ですが、micro:bitは3ボルトしか供給できません。5ボルトが供給できる他のワンボードマイコン(IchigoJam)ではうまく動いていました。この記事を書いている現在は、互換品でもっと低電圧でも動く、US-100というセンサーが届くのを待っているところです。
*8:v1.5のセットは、おそらく在庫処分のため、ビックカメラの通販で一瞬だけ500円(!!)で売られたことがあるのですが、気づいた時にはもう売り切れていました。
*9:現行製品の『micro:bit アドバンスセット v2対応版』で追加された温湿度センサーは、Groveシステムに対応したセンサーのようです。
実習室で使っている教材:Microsoft MakeCode Arcade
プログラミング実習室で使っていたり、要望があれば使えるようにしている教材のうち、MakeCode Arcadeについて書いてみます。
※「子ども向けプログラミング環境にはどのようなものがあるか」、また「そのプログラミング環境がどのようなものであるか」については、既にネットに情報があふれていますので、あくまで身の周りでどのように使っているかを書いています。
目次
概要
Microsoft MakeCodeは、コンピュータソフトウェアの大手であるマイクロソフトが提供しているプログラミング学習のためのプラットフォームで、7種類のプログラミング環境が用意されています。
MakeCode Arcadeはその中の一つであり、いわゆるレトロゲームのようなプログラムを作ることを得意としています。
想定されている画面の解像度は160×128ドットです。
いにしえのゲームボーイカラーの画面解像度が160×144なので、だいたい同じくらいです。
キーボードやプログラミングに慣れていない場合は、マウスを使ったブロックプログラミングによってゲームが作れます。
ブロックプログラミングに対応している点は、Scratchで育った子どもへの訴求力があるでしょう。
教本は『10才からはじめるプログラミング MakeCode Arcadeで自分だけのゲームを作ろう』(技術評論社)がおすすめです。
先程の画面のシューティングゲームは、本を参考に、すぐに作れました(写経*1ではありません)。
いにしえの80年代には、パソコン雑誌に掲載されている読者投稿プログラムを手で入力しながらノウハウを覚えた方もたくさんいらっしゃると思いますが、そういった雑誌数ヶ月分の効果がありそうです。
キーボードを使えば、プロが使っているJavaScriptやPythonといった本格的なプログラミング言語でゲームが作れます。
また、マウスで作ったプログラムを、JavaScriptやPythonに変換することができます。
ブロックで作ったプログラムをJavaScriptに変換すると、JavaScriptを使いこなせるような気がするかもしれませんね。……というのは極端としても、ブロックとテキストの類似性に気づいてもらうことができそうです。
実行環境
MakeCode Arcadeで作ったプログラムは、画面上で実行できるほか、URLをスマホに送ることで、スマホのブラウザ上でそのまま遊べます。
さらには、別途販売されている専用のハンディゲーム機で動作させることができます。
実機は、MakeCode Arcadeの世界では『コンソール』と呼ばれ、複数種類存在します。
写真は Meowbitという製品です。
上下左右とABの各ボタンがあります。
別売のリチウムイオンバッテリーは買っていないので、携帯機ながらUSBケーブルによる電源供給が必要な状態です。
また、micro:bitとのピン互換があり、おそらくMakeCode Arcadeのコンソールとして以外にも多用途に対応できるよう作られているようです(が、使いこなせていません)。
ブラウザ上のMakeCode Arcadeだときちんと動くプログラムでも、作りこみが甘いと、実機で動かしたときに重くなったり、メモリ不足で落ちたりすることがあります。バーチャルと実機の違いを理解することにつながりそうです。
自分でゲームを作ったら、ゲーム専用機で動いているところを見たくなるのではないでしょうか。この点も訴求力があると思われます。*2
Meowbitの箱です。
パッケージに、わりとのんきものの王子様っぽい御仁が描かれているのも愛嬌です。
MakeCode Arcadeをはじめるには、対応ブラウザでMakeCodeの公式ウェブサイトにアクセスし、「Arcadeでプログラミングを始める」をクリックします。
www.microsoft.com
サンプルコード
MakeCode Arcadeで作ってみたシューティングゲームです。
ぜひ、エミュレータとコンソール(実機)の両方でお試しください。エミュレータだと不具合が起こらない場合でも、コンソールだと処理落ちする様子が見られるはずです。