[Squeak-ja: 2626] Re: はじめまして
Mitaro Namiki
namiki @ cc.tuat.ac.jp
2005年 9月 9日 (金) 12:18:16 JST
農工大の並木です。
> おおしまです。
>>はじめまして、東京農工大学の並木と申します。
> こんにちは。PTTに参加していたころにはお世話になっていました。
その節はどうもです。PTTメモをgrepしてみたのですが、かなり懐かしい、
という頃ですね。
>>文部科学省主催のITスクールで、この2年にわたり、
>>Squeakを利用させていただきました。Squeakの開発メンバの
>>皆様のおかげと心の中で感謝しております。
> もしかしたら僕も「皆様」の中に入れていただいているのかも知れませんの
> で^^;
はぃ〜、当然です:-)
> 高校生も大したものだ、と感心していました。
並みの大学生よりも全然書けるかと思っています。ITスクールの場合は、
指定校+公募、という選りすぐりなので、あそこまでできるのだと
思っています。ただし、これがフツーのC/C++/Javaでは、あの短期間で
ここまで作るのはおそらく無理で、Squeakの良さがあります。
去年は、C/C++/Javaの経験者がほとんどなく、今年は10名程度
C/C++/Javaの経験者がいましたが、残り数名以外はプログラミングの経験
が何らかの形でありました。で、Squeakだと、
- 分散が大きい参加者のバックグラウンドの違いを適度に吸収できる
おそらく、C++やJavaではここまでは絶対に無理
- 何より、昨今の生徒さんは(大学生もそうですが)、鳴り物・光り物・動き物が
好きですし、最初に興味を持ってもらい、楽しくやりながら何かを学ぶ、
でないととても立ち行かないので、SqueakのeToyはうってつけなわけです
- だから、最初にeToyで、「へえ、こんな風に作れるんだね」とやってから、
次はガリガリとディープな虎の穴に引きずり込むわけです。
さすがに、この短期間で虎の穴に引きずり込めるのは、上澄みに限られていますが。
- 講義をやりながら実習をするのですが、
与えられた問題だけをやって後はぼーっとしている子がたまにいますが、
この種の人は後もあんまり駄目で、与えられた問題を自分で少しずつ
変えていく子は伸びるし、すごいものを作っています。Squeakだと、
自分で新しい問題を作りながら自主性と知恵を発揮するために
比較的とっつき易いのはいいかな、と思います。もっとも指示待ち族、
参考書べったりには何でやっても駄目なのかもしれません。
- 後半は自由課題なのですが、ここに一番生徒さんのキャラが出ます。
「これを作れ」とはやらずに、自分達で作りたいテーマを提案してもらって、
そのテーマについてシステム設計を講師・TAで詳細化していきます。
ほとんどはゲームなのは仕方ないのですが、よく考えています。
生徒さんたちに聞いてみると、このように自分でテーマを作って、
という経験がほとんどないので、最初はとまどいますが、やらせれば
できます。大学でもそうなのですが、知識ばかりを詰め込んでいると
どうも、頭は悪くなるようで、どこにも書いてないことをやらせる、
ということは必須だったりします。
- もっとも出てきたテーマについて、すぐに実装イメージが浮かび、
適度に対処できる、というのは教える側もそれなりに大変で、
TAの人選は(計算機の能力だけではなく、教育者としての適正も
含めて)頭が痛い内容です。
- で、自由課題で実装に入るのですが、
- 最初は、モーフベースで行う
- しかし、モーフ中のタイルスクリプトをタイルではなく、
どうしても駄目なところは、Smalltalkで書いてもらう
くらいは例年1,2チーム以外のほとんどのチームがここまで行きます。
実は、最初からトップダウン設計にしたい衝動にかられますが、
システム設計初学者にいきなりトップダウンは結構危険で、
try and error しながら、は当然かと思っていたりします。
- で、ほとんどのチームが志として、ネットワーク対戦、などを考えます。
ネットモーフも考えたのですが、「中身を知る」という観点から
使っていません。生ソケットで書かせています。講義でSmalltalkで、
HTTPクライアントとHTTPサーバの例を示しています。
- で、ここで、モーフとの連携、にはた、と気付くわけです。
MVCを口にしなくても、MVC的な考え方をどこかに入れないと駄目だよね、
ということがわかるわけです。ここの書き方は千差万別です。
まぁ、普通に、C&UNIX、C++&Win32API、Javaで書いても釈然としない部分が
残るわけですが、いろいろ議論しながら適当なところで解を見つけて
もらうわけです。今年は最終的に10チーム程度がネットワークを
プログラミングしました。
- 実は、去年は、ネットワーク系は「すべてSqueakでクライアント・サーバ」
でした。これはさすがに厳しいので、今年は、別途、Lindaもどきの
簡単な仮想共有空間モドキの機能を提供するサーバを立てて
(TAの長さんがJavaで書いて、Linuxで動かしたものでした。
余力があれば、Smalltalkで書いてLinux版Squeakで作ればいいのですが、
さすがにそこまでは時間不足でした)、
生徒さんたちはクライアント機能に専念させました。
いくつかのチームがこのサーバを使って作っていました。
ちなみに、兼宗さんに伺うとドリトルもこの種のサーバを立てて初等中等で
ネットワークプログラムを作らせたそうです。
- すごいことに、上記のようなこちらで用意したサーバを使わず、
自分でサーバまで書いたチームが数チームありました。
- いずれにせよ、ネットワークまで含めて、綺麗にすっきり書かせるには
まだまだ検討しなくてはならないと思っています。
- ちなみに、ネットワークを使わなくても、考えさせられることも
ずいぶんとあります。例えば、ネットワーク上で
マインスィーパーを作ったチームがあったのですが、最初、
マスの一個一個をモーフで作ろうとするのですが、考えればわかりますが、
こんなのはダサいやり方なので、マスの一個をクラスとして定義して
インスタンス作れば、と言ってもすぐには理解してくれません。
また、個々のマスの計算も近傍でメッセージを投げ合って計算させたく
なるのですが、全体を統括するオブジェクトでやらせた方が簡単よ、
と言っても、生徒さんによっては見えてるものがすべてで、
そこからもう一段ブレークしてくれるかはそれなりの工夫が要ります。
おそらく、理工系情報学部の大学生でも微妙なところかもしれません。
- TAの長さんはtonyuやnigariと言ったシステムを作っているのですが、
(彼はCE研究会でproGrepという学習システムでこの前、賞をもらいました)
眼に見えるものと、プログラミング言語で書くべきところの適切な
切り分けが必要だな、と再確認させられるわけです。過去にもあまたの
ビジュアルプログラミング言語ってあったわけですが、Sqeuakは
eToyの世界とSmalltalkとの世界を橋渡しできるところがいいと
思っているのですが、やはり、どのような解がベストなのかは、
僕もまだなかったりします。このようなニーズは、Squeakが
目指しているものと違うのかもしれません。なお、ドリトル、
tonyu、nigariは処理を書くところはプログラミング言語ベースの立場、
設計・開発者もその方針でやっています。ただ、使ってみると、
eToyのようなものは魅力なのも事実です。
- 5泊6日ですが、おおっぴらには書けませんが、毎晩遅くまで午前
1時過ぎまで、僕やTAや開催側の人間がつきあっていました。
生徒さん全員ではありませんが、毎晩30人中20人近くいました。
この集中力はすさまじいものがあります。若人の特権かと
思いますが、集中力を持たせ、持続させる機会を若い頃から持たせる
ことは大事だと考えさせられます。
- 指定校+公募で上澄みだからこの短期間、と書きましたが、
ごくごく普通の高校生、教科「情報」でも半期にすれば
十分Squeakで、このようなことはできると思います。
SSS2005では、京大の皆さんと堀川高校さんの事例が報告されて
いましたが(受賞おめでとうございます。シンポジウムには行けなかったのですが、
シンポジウムの論文を査読したので、proceedingsは送られてきました。
実はSSS2005のHPに名前は出てたりします:-)、教科「情報」Bには
うってつけだと思います。eToyはいい選択だと思います。
僕自身の野望としては、eToyだけではなく、本当はプログラミング言語で
書いてほしいのですが、全員に、というクラスでは、1学期でeToy的なもので、
さらにその発展形として、理工系情報学部など進学する一部の子には
プログラミング言語で、とも思っていますが…
まだまだこれからなんだと思っています。
などなど…。
とりとめのないことを書きましたが、
> というわけでどんどん使っていただけるとこちらとしてもうれしいです。い
> ろいろフィードバックをいただけると幸いです。
また、よろしくお願いします。
PS
実は、今度は経産省のITクラフトマンシッププロジェクトで、
高校生に携帯Javaプログラミングを教えることになっています…
どうなることやら…。
//
Squeak-ja メーリングリストの案内