はじめに

Sqeuakは,それをつかって遊べば遊ぶほどいろいろなことを発見できる不思議なおもちゃです. しかし,Squeakを起動しても,最初は何もない画面が出るだけです. テレビゲームのように,遊ばせてくれるおもちゃではありません. レゴブロックのように,自分で組み立てて遊ぶおもちゃです. ゲームを作ることもできるし,世界をシミュレート(模擬実験)をすることもできます. いろいろな遊び方ができる代わりに,おもしろい遊び方を自分で見つけないと使えないおもちゃです.

実は,パソコン自体もそのような機械で,「パソコンはソフトウエアが入っていなければただの箱」などとよく言われます. たとえソフトウエアが入っていたとしても役に立つかどうかは使う人しだいです. 例えばワープロソフトが入っていたとしても,パソコンは文章を自動的に作ってくれるわけではありません. 自分で文章を打ち込む必要があります. パソコンは,使い方によっては自分でソフトウエアを作ることさえできる機械ですが,やはり使い方を自分で見つけないと使えない機械です.

Squeakを作ったのは,パソコンを作った人と同一人物です.アラン・ケイ博士です. ケイ博士がパソコン(個人用コンピュータ)を考えたのは30年以上前で,当時コンピュータといえばプロフェッショナルのための機械で, それだけで部屋が埋まってしまうほど大きく,画面には文字だけが表示されるものでした. 操作するのも難しく,個人がコンピュータを使うようになるとは誰もまだ想像できませんでした. そんな時代に,ケイ博士は子供たちでも使えるくらい簡単な道具になるようにパソコンをつくりました.

今日,パソコンは日常のものとなり様々な場所で使われていますが, ケイ博士は,「パソコン革命はまだ始まっていない」とおっしゃいます. 今日,ほとんどの人はパソコンを用意されたソフトウエアの使い方を学んで利用しているだけです. 不満があってもコンピュータに従うしかありません. しかし,ケイ博士がパソコンを作ったときに想像していたのは, 使う人たちのそれぞれが,自分たちをよりよく助けてくれるようにパソコンを変えたり, 新しいものにしていくような使い方なのです. 人間はパソコンに使われるのではなく,使うことで人生を豊かにしていかなければなりません.

Squeakはケイ博士が想像する使い方が簡単にできるように作られたソフトウエアです. 人間が想像したことであればなんでもシミュレートするソフトウエアを作ることができます. ソフトウエアを作ることをプログラミングといいます. プログラミングというと,プロの人がなにやら文字を打ち込んでいるというイメージがありますが, それはプログラミングのほんの一部分で,実は何かを想像するところがプログラミングの一番面白く,難しいところです. 何をするかを想像することは,コンピュータがいくら進化したとしても人間がやらなければならないことです.

では,なぜ人間はパソコンを使ってプログラミングをしなければならないのでしょうか. それは,人が何かを学習したり,理解したりすることと関係があります. シーモア・パパート博士は,子供にプログラミングをさせながらそのために必要な数学や科学を教えることで, 子供たちが大人でも難しいことを理解してしまうことを発見しました. 現在ほとんどの大人が数学を難しい学問だと考えていますが, それは紙の上で意味のわからない数式を書きつづる,何に役に立つのか分からない数学のことであって, 何かをシミュレートするために使う数学は,役に立つ魔法のようなものになります. 人間は役に立つと分かれば,年齢に関係なく理解することができるのです.

さらに,パパート博士は,子供がプログラミングをする過程で, いままで学校ではあまり教えてくれなかった「大事なこと」を学習していることに気付きました. 例えば,何かものを作ったことがある人は,何かを作り上げるときに, 一回で想像したものが想像通りにできてしまうことはないことを知っています. プログラミングをやってみるとよく分かることですが,作ったものが一回で意図したとおりに動くことはまれです. プログラミングでは,一回で正解を作るのではなく,間違っているところを修正して, 試行錯誤をしながら正しく動いていくようにしていけばよいのです.これはプロでもやっていることです.

このプログラミングの過程は,人が何かを学習する過程に良く似ています. 最初からテストで100点を取れる人はいません. 間違った考えを試行錯誤しながら修正していって,理解にたどりつきます. 最初の間違った考えに「なぜ?」という疑問を持ったとき,初めて学習が始まります. 学校ではいつも間違いは悪いことだと教わりますが,社会ではそうでないこともたくさんあります. プログラミングをすることで,そういった学習の方法も学習していることになります. そして何より,そうしてプログラムが完成したとき,作ったものの仕組みを完全に理解していることになります. これらは,「大事なこと」の一つの例に過ぎません.

ケイ博士は,このようなパパート博士の研究に大きな影響を受けました. そしてそれをより簡単に子供が使えるようにした現代版のソフトウエアがSqueakです. あとはSqueakを使って遊んでみて,いろいろなことを発見してください.作品の出来を楽しみにしています.

Happy Squeaking!

中学生のみなさんへ

このテキストは,大学生が書いたので,多少言葉づかいが難しいところがあるかもしれません. でも,内容は小学生でも理解できることですから大丈夫です. 紙になにやら数式を書くような数学が苦手かどうかも関係ありません. パパート博士は,「フランスで育てばフランス語は完全に学習できるから, 数学ランドで遊べば,数学は完全に学習できる」と言います. Squeakは数学ランドですから,そこで遊べば数学は完全に学習できるはずです. 自分で考えたものを作ることは楽しいことです.小学生に負けないようにがんばってください.

高校生のみなさんへ

高校生になると,数学は急にわけが分からなくなります. 私も,高校の数学で落ちこぼれた部類の人間です. どうしてかというと,急に現実からかけ離れた,何の役に立つかわからない数式になっていったと感じたからだと思います. 特に微分・積分は意味が分からないものの象徴で,やる気も成績も芳しいものではありませんでした. 私自身も大学院生になって,Squeakで遊んでみて,やっと微分・積分の意味がわかってきたような気がします. このテキストにも微分・積分を利用したプログラミングがたくさん含まれています. 実は,最初の車に円を描かせる問題がすでに微分方程式を解く問題なのです. 皆さんにとっても数学がそうした意味のあるものになることを期待しています.

また近年ではSqueakを使って新しい問題を解き,論文を書く高校生もいるようです. Squeakで培ったものづくりの経験を,文化祭などの企画実行に活かしたりする生徒もいます. 自分で考えた世界を構築し,シミュレートして,高度なことを発見し, 現実の生活に役に立つ学習ができることを期待します.

大学生のみなさんへ

EToysをやろうというと,大学生なのだから,JavaとかCなどの実用言語を勉強すべきだという学生がよくいます. 最終的にはそうなるべきです. しかし,プログラミングの初歩的な考え方を学ぶ入門コースは,EToysが適していると私は考えています.

プログラミング教育は,自分の考えをモデル化して,表現できるようになる教育です. コンパイルエラーに悩まされ,コンピュータに従うことを強制される訓練ではありません. プログラミング言語を覚えることはそのうちのほんの一部分でしかありません.

そのための言語は何でも良いのですが,簡単にできるものがよいでしょう. EToysでできることをJavaで書いてみて,比較してみましょう.EToysのほうが簡単にできることがわかるはずです. 大学生なのですから自分の考えをモデル化することに集中し,複雑な問題を解くことを目指してください.

それでもEToysにはいろいろ制限があるよ,と主張する人は,EToysの裏側で動いているSmallTalkという言語とJavaを比較してみると良いでしょう. Squeakは裏側でうごいているSmallTalkの美しさでも評価されています. Squeakは教育用で,裏側で動いているSmallTalkのすべてのソースコードを見ることができ, 改造もできるように設計されています.プログラミングが得意な人にとっても面白い教材となるはずです.

このテキストの使い方

Squeakは基本的に遊んでいれば学習できるように設計されています. しかし,Squeakは前にも指摘したように,遊ばせてくれるものではありません. 最初は遊び方のガイドが必要です.このテキストはそのガイドを務められるように設計しました.

人の学び方ははそれぞれ異なります. つまずくところも,理解にかかる時間も,理解する内容ですら人それぞれです. ですから,自分なりにテキストを進めてください.面白いことを発見したら寄り道をしながら進んでみてください. 基礎的なカリキュラムを追っていくのが性に合わない人は作品製作から始めてみて, つまったら必要なカリキュラムをつまみ食いする,という方法もあるかもしれません.

第二版の作成に当たり,大幅に練習問題を増やしました. 例題から発展する「やってみよう」や「考えてみよう」という小さな問題も作ってみました. 「やってみよう」よりも「考えてみよう」のほうが難しく,少し深い考えが必要な問いになっています. 余裕がある人は挑戦してみてください.友達と議論してみても面白いと思います.

興味を引く面白い問題が人を学習へと導きますが,すべての人が面白いと思う問題を作ることはできません. そこで,なるべくいろいろな種類の練習問題を用意するよう努力しました. しかし,それでもみなさんの興味の範囲をとてもカバーし切れません. 是非自分で面白い問題を考えて,解いてみてください. テキストの練習問題をすべて解くよりも,自分で考えた問題を一つ解くほうが価値があります. いい問題ができたら,是非教えてください.(連絡先: crew-info@sfc.keio.ac.jp)

最後に,どのように進めるかを考える参考として,めやすの時間を示します. 初心者を対象とした実験では,練習問題をすべて解き,例題も何故そう動くのかを考えながら進むと, Project7まで25時間くらいかかることが分かりました. 一番早く進みたい人は,例題だけをテキストどおりに進めてください. そうすると2,3時間で終わります. でも例題を追っていくだけでは,ただ作業をしているだけで,考えないで作業をすることになります. 勘のいい人はそれで分かってしまいますが,そうではない人もいると思います. お勧めの方法は,例題に加えて,すべての「やってみよう」と各Projectの練習問題を1,2問解いてみる方法です. 8時間前後で,EToysを使ってなにができるかがわかると思います.