子ども向けマルチメディア開発環境Scratch 19
ストーリー by kazekiri
geekに育て 部門より
geekに育て 部門より
BBC記事より。MIT Media Labは、アニメーションや音声、音楽などを組み合わせたコンテンツを子どもでも優しく作れるScratchというプログラミング環境を作ったと発表した。グラフィカルなコンポーネントを組み合わせることで実装を行う開発チームのリーダーMitchel Resnick教授はLEGO MINDSTORMSにインスピレーションを与えたプロジェクトに携わったこともあるそうで、レゴでロボットプログラミングするように、メディアプログラミングするソフトウェアがあればいいと思って作ったそうだ。Scratchによって複雑なプログラミング言語によらなくても、誰もが創造性を発揮することを学べればいいと教授は語っている。たれこみ人はアクセスできなかったが、サイトにはWindows版およびMac版ソフトがあり、OLPC版も開発中だという。
Squeak なのか (スコア:3, 興味深い)
最近の Squeak は Smalltalk の処理系というより、こうしたマルチメディアや教育用途として頑張っているのは興味深いです。
Re:Squeak なのか (スコア:5, 参考になる)
Squeakなら動くじゃん!と思ってやってみたらやっぱり動きました。
Windows版zipをダウンロード、展開、コマンドラインから squeak Scratch.image するだけ。
これ、なかなか面白いです。
とりあえず猫をぐるぐると回転させて遊んでみましたがとても簡単で誰でも出来そうです。
ただ最初は「when (緑旗) clicked」のブロックを一番上にくっつけておかないといけないのに気付かなくて戸惑いました。
あと個人的には、ブロックの消し方がハサミマークをクリックして、というのが分かりづらかったことくらい。
それ以外はまさに直感通りにプログラムが組めるのでさくさく。
値の型がブロックの形で表現されているのがとても理解しやすいと思いました。
なお、berylを使っていると変なところ(ボタンなど)が透過しちゃって困ります。
今は後ろに黒いの(GNOME端末)を置いて対処していますがいずれ直るといいなぁ。
Re:Squeak なのか (スコア:1)
かなり昔にSGIのIRIXマシンで、ヴィジュアルプログラミングのできる
画像処理系があったはずです。それでデータ型を実際のパズルピース
のように表現していました。そのあたりがルーツかもしれんですね。
#ついでにTrust & Betrayalとか言ってみるテスト。
Re:Squeak なのか (スコア:1, 興味深い)
#昔のMacPower誌によれば
#Mac版パトレイバー2のCD-ROMはこれを多用して作られた(そうな)
Re:Squeak なのか (スコア:1)
Scratchというのがもっと簡単なのであれば、試してみたいと思います。
Re:Squeak なのか (スコア:0)
Re:Squeak なのか (スコア:0)
アランケイの活動を鑑みれば、興味深いも何も当然の結果だと思います。
子供達でも容易につかえるSmalltalkという言語の特性は興味深いですが。
#他の言語と何が違うのか
Re:Squeak なのか (スコア:1)
OpenDoc (スコア:1)
それとは全然違う思想のモノなのかしら?
Re:OpenDoc (スコア:0)
わたしはIntelligent Padを思い出しました。
これもLEGOブロックに刺激されたとか言う話だったはず。
果たして子供向けなのか? (スコア:0)
こういうのにインスピレーションされて、RubyのIDEとか誰か作ってくれないかなぁ。
ブロックとかあるんだし。
Re:果たして子供向けなのか? (スコア:2, 興味深い)
結局のところ実際的なプログラミング環境としては面倒くさい感じがしてきました。
意味論的にも統語論的にも直感的にプログラムを構成できる点はいいのですが、
じゃあ学習以外の側面で文字列を打ち込むのと決定的に違うのは何かと言えば
統語エラーが絶対に起きない点くらいかと思います(まぁ意味論的なエラーも減りますが)。
これならタイプした方がよっぽど早いかなぁ、とも考えてしまいます。
逆に言えばそのくらいしか違いがないのだから、
工夫の仕方次第では実用的なIDEを作ることは可能かも知れません。
しかし労力に見合うかはやや疑問があります。
なお、Rubyにこれを適用するためには、いくつか表示上の工夫が必要であろうと思われます。
例えばブロックを選択しようとする時、Scratchは関数が少ないから簡単に選べます。
でもRubyだとそれなりの数が必要で、それをどうやって効率的に選択させるのかが問題です。
また値の型を形で表しているのでそこをどう対応付けるのかも結構悩みそうです。
Scratchは数値、文字列、真偽値、あとはブロック列くらいしか値の型はなさそうですから困らないと思いますが、
Rubyだとクラス毎に形を変えるのは数が多過ぎてちょっとつらそう。
基本的なクラスだけ対応しても、それでも多過ぎな感じかも。
あとRubyではメソッドの引数に型の指定が出来ないのでそれもどうしたらいいかが悩ましいところです。
型推論?とか考えるとかなり辛い感じがしてきます。
そんなわけでいきなりRubyはアレなので、
MLなどの型がしっかりしている言語の方が無難だろうと思います。
私はIDEよりもRubyなどのソースをこの形式で表示してくれるビューアが欲しいと思いました。
プログラミングを知らない人にソースを見せる時には、役に立ちそうかなぁ、と。
Re:果たして子供向けなのか? (スコア:3, 参考になる)
(普通の)計算機に「文字を」打ち込む機械つまりキーボード(だけ)がついてるせいなんですよね。
マウスもあるけど、あれはデータ入力効率でキーボードと比べれば「おまけ」的なデバイスでしかないでしょう。
日本語の文字を直接入力できるキーボードが無いもんだからIMをかます羽目になり、「それが」面倒だから日本語プログラム言語も流行らない、なんてな構図がありましたね。同じことかと。Scratch用のキーボードというかボタンが並んだモノがあれば良いんじゃないかな。
>MLなどの型がしっかりしている言語
しっかりというだけじゃなく、純粋関数型言語にありがちな「型を組み合わせる」感じは、Scratchのようなアプローチに合いそうですね。OOPも型の組み合わせですが、OOPの場合は組み合わせを済ませた新しい型は元の材料の型を意識させない方向に行くので、この場合はそれが却って都合悪そう。
ところでLisp用で正にセルをビジュアルに並べてコーディングできるツールが有りますね。
Re:果たして子供向けなのか? (スコア:3, 興味深い)
それだけじゃなく, 人間の使う語彙の量が圧倒的に豊富だからでしょう. 基本的な単語だけで数100から1000以上. 複合語を合わせればゆうに万を超えます. 実際にU*ix系のmanページあたりを見ても数1000以上の項目が並んでいます. 日ごろよく使うシンボル名だけでも100を下回ることはないんじゃないでしょうか.
こうなると, ビジュアル型プログラミングで主流のメニューによる選択という方式は, 脳内ハッシュによるダイレクトな文字入力(+エディタ・IDE等による補完)という方式に比べて, どうしても操作が煩雑になるのだと思います. あるいは, 自分のプログラミング対象に合わせてメニュー構成などをカリカリにチューニングすればビジュアル型プログラミングも有効になるのかもしれませんが, これはこれで柔軟性や一般性に欠けそうな気もしますし.
さらに大規模な実用プログラムでは, 修正や調査に際して特定のパターンの検索や置き換えといった要求が必ず出てきます. ところがこうした要求に対してビジュアル型プログラミングは弱いんですよね. 一旦, 文字によるソースコードに落として修正し, 再度ビジュアル環境に取り込むってパターンが多いんですが, 出来たソースが読みにくくてパターンの指定がしづらいとか, ソースを下手に修正すると取り込めないとかの制限がやたらに多くて.
結局, 現状ではビジュアル型プログラミングって
あたりの条件が揃っていないと使えないように思われます.
Re:果たして子供向けなのか? (スコア:3, 参考になる)
現在Scratchでは
Motion, Looks, Sound, Pen, Control, Sensing, Numbers, Variables
の八つのメニューがあって、それぞれの中に2-15個くらいのブロックが並んでいます。
正確には数えていませんので8x10で80種のブロックがあると仮定しておくとして。
例えばRuby-1.8.5では Kernel.methods.size が133なので、
組込み関数はうまくすれば現状のScratch同様にコンパクトに収められそうです。
加えてオブジェクトに対する操作の場合、コンテキスト依存でメニューとその内容を変えてやれば
意外とコンパクトに収めることが出来そうな気がします。
オブジェクト指向なら案外この問題は解決できたりしないでしょうか。
10個くらいのメニューから選択 → 中のブロックを選ぶ → ブロックをドラッグ&ドロップ
なら、やや面倒ですが一応3ステップですので、複雑さに関しては許容範囲内だと思います。
でもやっぱり多少工夫した程度では文字で入力した方がよっぽど早いわけですが。
Scratchは検索・置換どころか、現状では変数名の変更すら出来ません。
プログラミングに際しては極めて慎重に設計を行なう必要があるようです。
いくら子供向けとは言え、さすがにこれはつらいなぁと思いました。
検索とか置換がビジュアル型言語では絶対に出来ないというわけではないだろうと思いますので
(検索条件もブロックで組み立てられそうだし)、
最優先で対応してくれないかなぁと感じました。
# それにしてもScratchは変数の扱いが雑
# 変数は宣言的なんですが、変数宣言を消してもコードには変数が残されたまま
# 一緒に消してくれればいいのに
Re:果たして子供向けなのか? (スコア:2, 参考になる)
とのことなので、興味があるので調べてみました。
それらしいものでみつけることが出来たのは
ペンインタフェースを用いた視覚的な Lisp 教育環境 [interaction-ipsj.org](PDF)
ですが、こんな感じのものでしょうか。
この文章でも入力効率の問題でマウスが劣るって言ってますね。
やはり入力デバイスの工夫から始めないといけないのでしょうか、うーん。
映画「マイノリティ・リポート」に出ていた空間に浮いてるディスプレイを手で操作するようなヤツ、
あれがあれば実用的になるんですかね。
でもそうだとすると未来のプログラマはすっごい派手に動き回ってコーディングすることになりそう。
体力勝負?
Re:果たして子供向けなのか? (スコア:1)
ちょっとまて (スコア:0)
日本なら偏向教育って叩かれる所だけどアメリカでは平気なのか。
まあ、公務員じゃないから問題ないんだろうけど。
冷静に考えると、なにかと役人を叩くくせに教員には役人であることを強要するなんて変な国だよな、日本って。
Re:ちょっとまて (スコア:0)
役人の不正や怠慢がたたかれているのであって役人と言う職業をたたいているワケではありません
また、公務員としての教員が公務員以前状態であるために役人であってくれと言っているのであって両者を混同するのは大変よろしくありません。
こんだけじゃオフトピで荒らし扱いされちゃうので本題。
ビジュアルプログラミングってどうしても入力手段がよろしくない気がします。
もっとこう画面に直接タッチする形式のデバイスじゃないとまだるっこしいというか、
マウスとか画面と一体化していないタブレットとかは画面上のポインタ経由の間接参照でしか無いのが問題なのかもしれないと思うわけです。
実際タブレットPCとかPDAを指先で使い始めるとちょっと不思議な一体感があります、これもそういう進化系のデバイスと一体化してほしいところです。