Scratchを使ってみた

プログラミング開発環境Scratchをさわってみたので、その記録

どうせなら子供と一緒にやろうかと思ったもののITリテラシーの低い我が子たちはiPhoneでマインクラフトが限界で、PCのマウス操作ができないので今回は見送り

ブラウザさえあればScratchのプログラムは作れるけど最低でもタブレットを要求されるようで、iPhoneでは動かないみたい。iPadかなにかを買ったら再挑戦しよう

Scratchさわってみた感想は、さすが「マサチューセッツ工科大学のメディアラボが作成した初心者の学習用プログラム言語」、非常に洗練されている

特にリファレンスに頼ることもなく適当に作っても動くものができた。それがコチラ

※iPhone/iPadでは動かないです。PCかFlashが動くAndroid推奨

※音を出さないと意味不明かも。ペンとかクリックしてね。

 

Scratchつかってみて感銘を受けた特徴を書き出してみる

  • 変数は宣言しただけで画面に表示される

    例えばマウスクリックで「Score」という変数を作ると、まずは画面に「Score 0」表示される。画面やコンソールに変数の内容を表示するための(初心者にとって)オマジナイのようなコードは不要。簡単に画面から非表示にすることもできるけど「変数を作ると画面に表示される」がディフォルトであるとか、初心者の気持ちわかってる感がステキ。デバッグも楽

  • オブジェクト指向という考え方を身につけられる

コードは背景画像(ステージと呼ぶ)かキャラクターなどの画像(スプライトと呼ぶ)にしか書けない。あるキャラクターを動かしたかったら、そのキャラクター画像のスプライトにコードを書かないといけない。自然とプログラムをステージやスプライトといったオブジェクトごとに書くことになる。また「何を動かすのか」が解決済みなのでコード部分で指定する必要がないのでシンプルにもなる。ちなみにScratchがオブジェクト指向言語であるかどうかの論議があるらしい。怖いね

  • メッセージ駆動を自然と覚えられる

イベントとしての「メッセージを送る」「メッセージを受ける」が、それぞれ1つのブロックで表現されるので非常に使いやすい。他のオブジェクトに影響を与えたい場合はメッセージを使うことになるのでイベントを受け取るということが自然と理解できてくる。メッセージは複数のオブジェクトで並行して受け取れるので、並列プログラムも気が付いたら組んでいたみたいなことが起きる。スゴイ

  • 「もし~なら」の条件には条件判定のブロックしか入れられない

ブロックのピースに形があってブロックの形が違う組み合わせは入れることができない。視覚的にできないことが示されるので、初心者にありがちなシンタックスエラーの洗礼を避けることができる。しあわせ

  • ブロック塊をクリックするだけで、そのブロック全体をテストできる

実行と編集の区別がないのでブロックをクリックしたら作ってる途中でも一連の処理がバンバン走る。実行されるのはブロックの塊単位なので同じスプライト内でも他のブロック群は処理されない。ユニットテストやりやすい。ステキ

  • 作品をソースコードごと世界に向けて公開できる

Scratch公式トップページで、たくさんの作品がソースコードごと公開されていてる。「中身を見る」というボタンを押すだけでソースの編集画面になり改造することができる。改造した作品はリミックスとよばれて公開される。オープンソースソフトウェアという概念を体験する分かりやすい仕組みが整っている言語がほかにあるのだろうか

 

以上

今度は書籍みながら子供とやってみようかな

オープン・オーガニゼーション

img_3222

この本を読むまで、レッドハットという会社についてあまり知らなかった。

技術力あってコミュニティに貢献しているんだろうなとは思っていたしRHELは素晴らしい。しかし会社内部そのものはよく知らなかった。

企業向けのビジネスをしているからだろうか?勝手に、よくある普通の(本書の言葉を借りればピラミッド型の)組織っぽいイメージがなぜかあった。

考えてみれば当たり前なのかもしれないが、オープンソースのコミュニティに属していて、その精神に共感している人が普通の組織で満足するはずがないよね。

オープンソースソフトウェアの世界では、影響力を持ちたければ出世するのではなく、周囲からの信頼を得なくてはいけない。そうでなければ誰も話しすら聞いてもらえない。

信頼を得るためには、何をするにしても自分がすることを周りに説明して納得してもらう。

レッドハットは理想の組織の形の一つなんだなぁ