Edited at
SmalltalkDay 18

Phratch(ScratchのPharo移植版)の紹介

More than 3 years have passed since last update.

教育用ビジュアルプログラミング言語として「Scratch」が有名です。

このScratchには1.4と2.0の2系統があり、1.4まではSmalltalk上で動いていたのですが、2.0からはFlash上で動作するようになりました。

おかげでインストール不要でだれでも簡単に始められるようになった一方で、いざとなれば、Smalltalkで好き勝手できるという強力さを失ってしまいました。

そこで本記事ではScratchをPharoに移植した「Phratch ( http://www.phratch.com/ )」を紹介します。


Phratchの特徴


  • Pharo 3.0という近代的なSmalltalkイメージ上で動作するので、強力なSmalltalkの環境が使えてうれしい

    (Scratch 1.4のSmalltalkは古いSqueakでレガシーさが漂っていた)


  • Smalltalkとの親和性を重視しており、新しいブロックやプラグインの実装がやりやすい



  • このプロジェクトはロボティクスへの応用を目的にしており、アドオンをインストールすると、arduinoやlego mindstormなどとの連携もできる。


    @newapplesho さんによるPhratchのarduino プラグインを使ったLEDの点滅( https://twitter.com/newapplesho/status/544036356683354112 )





導入手順

Phratchのページから実行ファイルをダウンロードすれば、Phratchの実行はすぐできますが、ここでは開発者らしく、Pharoをインストールしてその中でPhratchをインストールする手順を説明します。


  1. http://pharo.org/download から Pharo 3.0をダウンロードして、展開して、実行する。(詳細はこちら → Smalltalk入門(Pharo Smalltalkインストール)(http://qiita.com/newapplesho/items/d541bfdc1c54f273cea9])


  2. Pharoが起動したら、背景をクリックしてメニューを表示する。

    「Tools」→「Configuration Browser」をクリック



  3. 「Phratch (janniklaval.XX)」を選択して、「Install Stable Version」をクリック


  4. 左上の方にダウンロードなどのプログレスバーがちらちらでてきます。

    しばらくおまちください。(10分くらい?)「Welcome to Phratch!」というダイアログが表示され、左上のプログレスバーが消えたら、インストール完了です。


5.もう一度、背景をクリックして、メニューを表示すると「Phratch」というメニューが追加されているはずです。

6.Phratchを起動すると、Scratchと同じような画面が立ち上がります。一番左側の枠から部品をドラッグして、真ん中の枠にドロップして、コードを組み立てます。組み立てたコードをクリックすると、そのコードが実行されます。

7.ブロックを右クリックすると、「edit block for developer」というメニューが表示されます。それをクリックすると、IDEが起動し、そのブロックのコードが表示されます。既存のコードを参考にすれば、独自のブロックも簡単に作れそうですね。

8.ここで、左側の部品の枠から「Motion」カテゴリの「Arrow key move with speed 」のブロックを右クリックして、helpを表示してみましょう。

9.「Error:beep」というダイアログが出てきます。なにかダメだったようです。Abandonをクリックしてもよいですが、この時のスタックが表示されているので、上から3番目の"PhratchFrameMorph presentHelpScreen"をクリックしてみます。

10.コードを見るとヘルプファイルが見つからないことが分かります。コードや実行中の状態を見れば、何をしようとしているか理解できます。


まとめ

ビジュアルプログラミングは教育用だけでなく、タブレットのような入力が限定された環境でのプログラミングなどいくつかの応用が考えられます。PhratchはSmalltalk上で動いているおかげで、コードをダイナミックに触れるSmalltalkの楽しさもあります。

基本的な部分は動作していますが、まだまだ応用やドキュメンテーションなどまだ未成熟な部分もあります。開発に貢献してみても楽しそうですね。