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:その際は、いかに教師にとって扱いやすい管理コンソールを用意できるかがキモかと思われます。