PC界の価格破壊者「ネットブック」の波はMacにも押し寄せるか? という話題が取り沙汰されています。私の考えですが、Leopardからハードスペックを逆算すると「否」、景気後退局面という状況を考慮すると「(やむなく) 可」なのかなあ、と。ただ、ネットブックのシェアは急速に伸びていますし、Appleも手をこまねいて見ているだけということはないような……今後の動向に注目です。

さて、今回は「Processing」について。「絵をプログラムする言語「Processing 1.0」が正式リリース」にもあるとおり、先日初のメジャーリリースを迎えたグラフィックデザイン用プログラミング言語 & 開発環境だ。非プログラマにとっても、イジり甲斐のある機能を豊富に備えているので、これを機会に試してみてほしい。

Processingを使うなら……

冒頭から昔話で恐縮だが、筆者が中学生のとき愛用していた8ビット機「SMC-777」(CP/M互換OSを搭載していた)には、「DR.Logo」なる開発環境が添付されていた。そう、Seymour Papert博士 -- 若い人にはLEGO MINDSTORMSの生みの親といったほうがピンとくるかも -- が開発したLOGOの移植版だ。タートルと呼ばれるカーソルを基準点として、前へ100ピクセル進め (forward 100) とか、右へ90度回転せよ (right 90) とか、プロッタープリンタの如き流れで絵が描かれる様は、なかなか興味深かった。

今回取り上げる「Processing」だが、言語体系はまったく違えど、LOGO的な何かを感じずにはいられない。試行錯誤しつつ絵を描けるインタープリタ型のスタイル。関数の定義や条件式をもサポートする応用性。プログラミング可能だが、その知識は必要条件ではないところも、LOGO的といえるかもしれない。

ただし、Processingのほうが機能的には進んでいる。Processing独自のライブラリ「P3D」やOpenGLの機能を利用して3Dグラフィックスを描いたり、JavaScriptライブラリ「Processing.js」を利用してWebブラウザに表示したり、など活用範囲が広いことも挙げられる。

こちらがProcessing標準の開発スタイル。何度も[Run] / [Stop]ボタンをクリックするのはちょっと面倒

個人的に気に入っているのは、「action-coding」を利用した、ライブなコーディング環境だ。ProcessingにはIDEとしての機能が含まれているため、コーディングからコンパイルまでProcessing.app単独で処理できるが、コードに加えた変更がリアルタイムで描画に反映されるわけではない。絵を描くときは"書いたり消したり"がつきものだが、action-codingを利用すれば、コード上の数値を変えると即座に画面へ反映されるようになる。しかも、自分好みのエディタを使えるときたもんだ。Processingに興味があるなら、ぜひ試してほしい。

こちらが「action-coding」を利用したコーディング環境。Emacsなど任意のエディタを使えることがうれしい

action-codingを使う、その前に (1)

action-codingは、RubyのコードからProcessingの機能を呼び出すことを目的とした、JRuby (JavaVM上でRubyプログラムを動作させる実装系) ベースの実行環境だ。そのため、動作にはProcessingに加え、RubyとJRubyが必要になる。OS X LeopardにRubyは標準装備されているので、以下に示す手順に従いJRubyを導入すれば、action-coding導入の下準備は完了だ。


$ curl -O http://dist.codehaus.org/jruby/jruby-bin-1.1.5.tar.gz
$ tar xzf jruby-bin-1.1.5.tar.gz
$ sudo mv jruby-1.1.5 /usr/local/

これでJRubyの機能を利用できるが、コマンドサーチパスが通っていないため、以下のコマンドラインをシェルの起動スクリプト (~/.bash_profileなど) に記述しておく必要がある。とりあえず試したい場合には、Terminalで直接実行してもいいだろう。


export JRUBY_HOME=/usr/local/jruby-1.1.5
export PATH=$PATH:$JRUBY_HOME/bin

action-codingを使う、その前に (2)

続いてはaction-codingのインストール。以下の手順に従い、作業してほしい。バージョン1.0以降のOS X版Processingは、すべてのライブラリがバンドル内部に格納されるスタイルに変更されたため、action-codingのサイトに掲載された説明のままでは動作しないので注意してほしい。なお、Processing.app (v1.0以降) は、/Applicationsへインストールしておくこと。


$ svn checkout http://action-coding.googlecode.com/svn/trunk/ action-coding
$ cd action-coding
$ vi config.yaml (以下のとおり修正して上書き保存)

p5home: /Applications/Processing.app/Contents/Resources/Java

$ pushd /Applications/Processing.app/Contents/Resources/Java/lib
$ cp ../core.jar .
$ popd

回転する立方体

これで、action-codingの準備は完了だ。まずはリスト1のサンプルコードを適当なファイル名 (仮に「sample.rb」とする) で保存し、以下のコマンドラインを実行してほしい。このとき、カレントディレクトリはaction-codingをダウンロードしたディレクトリにあるものとする。


$ jruby aco.rb ~/Documents/sample.rb

リスト1 自動回転 & マウスで手動回転する立方体


def setup
 size 300, 300, OPENGL
 smooth
end

def draw
 fill 130, 100, 120, 100
 background 80
 translate 150, 150
 rotateY map(mouseX, 0, width, 0, PI)
 rotateX map(mouseY, 0, height, 0, PI)
 rotateX frameCount * 0.01
 rotateY frameCount * 0.01
 rotateZ frameCount * 0.01
 box 120
end

JRubyへのパスが通っていれば、回転する立方体がアプレットに表示されるはずだ。マウスを使い、手動で回転させることもできるようにしている。それより面白いのは、def draw ~ endのコードを修正し上書き保存すると、変更内容がただちに反映されることだ。こちらのリファレンスを参考にして、fillやbackgroundなどの値を変えて遊んでみてほしい。

約5分で完成した自動 & 手動回転する立方体。これもライブコーディングがなせる技か?