熱狂し、そして忘れさられた言語
この連載で、すでに数機種の古いコンピューターについて解説してきました。
80年代前半のコンピューターは本当に千差万別で、共通点はないんじゃないか・・・と思えるくらい違うのですが、たったひとつ、「BASICが使える」という共通点がありました。
この時代、BASICはすべての基本であり、どのような性能のコンピューターであってもBASICが使えていれば一応は格好がついたのでした。
しかし、マニアというのは見慣れぬものへのあこがれをもつものです。BASIC以外の、簡単で強力な言語を使ってみたい・・・80年代の中頃にはパソコンはまだマニアのものであり、マニアの多くが新しい言語を求めていたのです。
そんなところに、海外から見慣れぬ言語の情報が入りました。LOGOという言語です。どんな言語かもよくわからぬまま、みんなが飛びついたのも無理はなかったでしょう。
LOGOとはなんだ?
LOGOの情報は断片的なものでした。いわく「グラフィックに強いらしい」「タートルグラフィックという、変わった方法で絵をかくらしい」「子供でも使えるような簡単な言語らしい」・・・などなど。
BASIC以外の言語を求め、それでいてBASIC以外の言語を知らなかったものたちにとって、LOGOというのは「グラフィックに強く、子供でも使えるほど簡単で」しかも、BASICのようにゲームが作れる言語、というのが想像され、期待されたようです。
しかし、ROMにBASICを搭載し、それ以外の使用法を想定していなかった当時のコンピューターではLOGOを実際に動かして見るのは難しいことでした。
期待だけが高まり、本当の情報が見えてこない、それがLOGOの紹介された直後の状況でした。
ここで、LOGOの生い立ちを紹介しましょう。
LOGOは、数学者で発達心理学者でもあるシーモア・パパートによって、子供のために作られた言語です。発達心理学者が子供のために、数学者としての知識を総動員して作った言語ですから、「子供でも使える」言語なのはあたりまえとも言えます。
LOGOが子供につかえる、という理由の一つに、目的が非常に具体的だということが挙げられます。LOGO言語で命令を出す相手は、コンピューターなどという抽象的な装置ではなく、その動作音から「ゴロゴロ」と子供たちが呼んでいた、車輪で動くロボットです。
子供たちはたった3つの基本命令・・・「前へ」「右へ」「左へ」をつかってこのロボットを動かし、ロボットに取り付けたペンを使って絵を描くことができました。(注:実際の命令はもっとありますが、この3つが基本です)
たとえば、現在の日本語版ロゴ(ロボットがペンで線を引くかわりに、画面に絵を描きます)をつかって正三角形をかいてみましょう。
手順は 三角 前へ 100 右へ 120 前へ 100 右へ 120 前へ 100 おわり |
このプログラムを実行すれば、辺の長さが100、すべての角が60度(曲がる角度は120度)の正三角形ができ上がります。
示した画面では、ロボットは向きを示す2等辺三角形で示されています。
最初は上を向いていますが、今は描き終わった後なので、最後の方向を向いています。
コンピューターで絵を描くのに座標系という概念も使わず、それどころかディスプレイさえもつかわず、「ロボット」に「進む方向」を指定することで絵を描かせる。これならば難しい数学の知識は必要なく、それでいて「正三角形は、それぞれの角と、それぞれの辺の長さが同じ」などという知識を実験で学べます。
また、それがどんなに簡単なものであっても、プログラムを作り、デバッグを繰り返し、自分の望む動作を作って行く・・・というのは、子供の「考える力」を養います。
のちに「ゴロゴロ」はタートル(亀)と呼ばれ、言語の名称はゴロゴロの名前をとって「ロゴ」とされます(「言葉」を意味するラテン語、ロゴスの音も重ねてあります)。さらにディスプレイが発達するとペンと紙はディスプレイに置き換えられました。
現在のロゴでは、「タートル」と呼ばれるカーソルを操作し、その軌跡で絵を描くようになっています。この描画方法を「タートルグラフィック」と呼び、現在ではLOGO以外でも使われることがあります。
タートルグラフィックを使うと、こんな図形も簡単に描けます。 当然タートルグラフィックでなくても描けるのですが、プログラムの作りやすさは格段に違います。 上の図形は「コッホ曲線」、下の図形は「シェルピンスキーのギャスケット」と名前のついている図形で、数学的に非常に面白い特性をもちます。 BASICなどではこの図形をプログラムするのに苦労するのですが、LOGOなら数学の知識がそれ程ない人でもプログラムできます。 | |
このように、LOGOはコンピューターをプログラムする言語、というよりは、コンピューターのプログラムを通じて子供の考える力を養う言語でした。
しかし、日本にLOGOが紹介された頃、まだコンピューターはマニアのものでした。ロゴは有名になり、タートルグラフィックのアイディアはさまざまなところに取り入れられました。
NECのPC-8801シリーズでは、純正のBASIC拡張命令として「タートル命令」があったのを覚えています(しかし、BASICを無理矢理拡張したので、使いにくいことこのうえない)。
また、各地の子供科学館では「LOGO実習」が行われ、雑誌にもBASICで記述したTinyLOGOが数多く発表されました。当時のパソコン業界では、BASICの次の標準言語はLOGOだ、みたいな推測が流れていました。
しかし、言語を使える環境が整うころ、LOGOではゲームが作れないことがわかり、多くのマニアが興味を失ったのでした。
十分に環境が成熟しておらず、言語の生まれたいきさつもわからぬままに紹介だけされた、LOGOの悲しい末路といえます。
その後のLOGO
日本のブームが去った後も、本家アメリカではまともなLOGOの研究が進んでいました。その中で最大の転機は、LOGOが再びディスプレイから飛びだし、ロボットを制御する言語になったことでしょう。
これは知育玩具メーカーのLEGO社と、パパート教授の在籍するMITメディアラボの共同プロジェクトで実現した「LEGO TC logo」(通称:レゴロゴ)というプログラム環境で、LEGOブロックに組みこんだモーターをLOGO言語によって制御しようというものです。
実際に手に触れられるものを対象にすることで、LOGOは当初の「具体性」を取り戻しました。しかもそれは、LEGOという変幻自在なブロックを対象とし、なんにでも応用できるほど強力なものとなって帰ってきたのです。
LEGO TC logoの詳しい説明は今回の「社会の歯車」にゆずるとして、ここで簡単なプログラムを紹介してみましょう。
日本語版のLEGO TC logoでは、ロゴライター2という日本語ロゴが使用されています。ここでは、その命令にしたがって簡単なプログラムを紹介します。
といっても、プログラムでできることは、やはりロゴらしく簡単で具体的なことばかりです。たとえば、コンピューターに接続した「インターフェース」の1番ポートに、レゴブロックのモーターが繋がっていたとします。
このモーターを2秒間動かすには、以下のようにします。
おくるポートは 1
オンのじかんは 120
これだけで十分です。オンの時間の単位は1/60秒だというのがミソですが、別にそれを覚えなくても試行錯誤するうちに丁度良い数値がわかります。
LEGO TC logoにはセンサーもありますが、こちらはなんか変な感じの日本語訳になっています。
たとえば、押しボタンセンサーが押されるまで待つには
ほんとうまでまて [センサーか]
とするのですが、「センサーか」って、どんな日本語なんでしょう? まぁ、これは英語版でも「sensor?」という命令で、やはり意味不明なのですが・・・
LEGO TC logoはLOGOの応用としてはかなりユニークなものですが、ほかにもさまざまなLOGO製品が発表されています。
Macintosh用の製品版LOGOである(そして、私の知る限り唯一のマックでLEGO TC logoを動かす方法でもある)ObjectLOGOでは、無理のない方法でLOGOをオブジェクト指向言語に拡張しています。
知る人ぞ知る話ですが、元々LOGOはオブジェクト指向に影響を与えた言語なので、これは正しい拡張の方向と言えるでしょう。
また、最近アメリカでは「MicroWorld」というLOGO言語が人気だそうです。これは、LOGOのAV面を強化し、「プログラムできるKidPix」という感じのノリに仕上げた言語だそうですが、私は残念ながらまだ見たことはありません。
これもまた、子供の興味を持続させる意味で、正しい拡張だと思います。
また、詳細は不明ですが、最近発売された「インベーダーコンストラクション」というソフトが、LOGOをオブジェクト指向にしたような言語でゲームを作ることが出来るようです。これは、BASIC時代のマニアの夢を実現する形になるのでしょうか?
「インベーダーコンストラクション」で作られたゲーム画面。(MAC LIFE 1996年 12月号の付属CD-ROMより) 詳細は不明だが、個々のキャラクターをオブジェクトとして、オブジェクトの動作をLOGO風の言語で記述することでゲームを作るらしい。 なお、通常のLOGOの動作を「タートルという単一のオブジェクトの動作を記述している」と捕えれば、LOGOをオブジェクト指向に拡張するのが簡単だとわかっていただけるだろう。 |
日本では最初の誤解もあり、LOGOはあまり普及しませんでした。
しかし、コンピューターが十分に普及し、エデュテイメント(遊びながら学べる)ソフトが売れている時代だからこそ、再びLOGOが見直されても良いのではないかと思います。
LOGOでは、亀に教える形でプログラムをします。しかし、なにかを学ぶのは亀ではありません。
LOGOで試行錯誤を繰り返しながら目的を達成するということを覚え、最終的に多くを学ぶのは、プログラムを作った本人なのです。
追記 2003.2.12
記事を書いた時点では、LOGO は「まだ細々使われている」程度でした。
その後のコンピューターの普及に伴い、元々 LOGO が目指していた「子供の教育用」として再び注目を集めているようです。
記事中、「最近アメリカで話題」と書いた Microworld ですが、現在は日本語版の「マイクロワールド」も発売されています。
また、記事を書いた当時には 98/FM 用しかなかった「ロゴ坊」という国産フリーウェアのロゴも、現在はWindowsに対応しています。
もっとも、記事を書いてから6年以上たっているのですでにロゴ坊の開発は終了しているようですが (^^;
Smalltalk と LOGO を混ぜた感じです…といっても、Smalltalk 自体、 LOGO の影響を強く受けているわけですが。
追記 2014.12.22
現在なら、Scratch がお勧めです。
LOGO そのものではないのですが、直系の子孫。LOGO から生まれた Smalltalk の上で動くもの、として最初のバージョンが作られています。
(現在は Adobe Flash 上で動くため、WEB 上で使えます。インストール不要)
ちなみに、LOGO の作者の「弟子」が Smalltalk の作者で、Smalltalk の作者の「弟子」が Scratch の作者。こんな部分も直系です。
Scratch でも、タートルグラフィック機能はあるため、タートルグラフィックで遊べます。
タートルにあたるキャラクターを複数用意したり、絵を変えたり、アニメーションしたり、キャラクター同士の衝突を判定したりも簡単にできます。…これを使ってゲームを作るのも簡単。
子供向けに作られていますが、十分大人の使用にも耐えますし、大人になってからプログラムの勉強を始めるのにも良いかと思います。