子供向けプログラミング『Scratch』が面白い。以前から息子にはやらしていたのだが、所詮子供向けと侮っていた。
Scratchは子供向けに開発されたプログラミング言語。一般的なプログラミング言語の様に英数字の文字を書いていくのではなく、カラフルなブロックをくっつけて文章を作っていく感覚でプログラミングができる言語である。
インターファイスやキャラクターの見た目から子供向けでそれほど複雑なことがでない様な印象だが、実際はそんなことは全くない。
子供の将来を考え、プログラミングを学ばせようと、隔週でプログラミングの教室に行かせている。(結構授業料がかかる、、、、orz)
この教室でもScratchを使って楽しみながらゲームの作り方り、プログラミングの楽しさを教えている。 この教室に通う前は、変数も何もわからなかったが、半年くらい通うとある程度遊べるゲームを作る様になった。
家でも子供に教えられる様に自分でもScratchを触ってみた。Scratchには最初から多くのキャラクターが入っている。自分でキャラクターを書かなくてもゲームを作り始めることができる。
ゲームの作りの面白さを知ることができる
ファミコン時代にエンジアたちがいろんなゲームを作っていた。それは、一つのゲームを作るとアイディアがどんどん芋づる式に生まれていた状態だと言える。一つの技術の基本がわかると、この基本を使って応用が生まれてくる。
多分、あの当時も制作サイドとしては、次にこう言う技術を使って、こう見せようとかいくつも考えられたはず。Scratchにもそれがあり、自分で作ったプログラムの一部を利用して、さらに、それを応用したらこんなことができるかもと思えるようになる。
多分、それは、Scratch言語の持っている特性だと思う。
エラーが出にくい言語
言語としての特徴は、それぞれのコードがブロックになっていてブロックの組み合わせも制限されている。だから記述でのエラーは起きないし、違った型の値も入れることができなかったりする。
そのため、通常のプログラミングで発生しそうな文法でのエラーが出る前にわかってしまう。なので、ユーザーは組み合わせだけを考えることができる。
この方法は今注目を集めており、プログラミングの常識を大きく変えようとしている。専門的な知識がなくても直感的に複雑なプログラムを作ることができるからだ。例えばこのブログでも何回か話題に出しているアイアンマンに登場するスーツを設計しているシーンなどは、オブジェクトをくっつける動作で、2つのオブジェクトが合体する。
noriyasu-katano.hatenablog.com
この仕組みは多くの処理を省いている。しかし、この感覚のほうが自然な方法だ。つまり、プログラミング的に、コンピューター的にはその命令を記述しなくてはいけない部分はユーザーにとってどうでも良いところ。だから、いちいち処理を書くことのほうがよろしくない。
Scratchのように既にそのブロックにある程度の処理を持たせ、それ以上ついきできないようにしておくのが非常に優れたUXを産んでいんるように感じる。
今までは「自由」ということが人にとって素晴らしい状況だと思っていたが、実際はそんなことはなく制限を持たせることのほうが人にとってはスムーズな状況だと言える気がする。