非モテP5erに贈る!イケメン言語 ruby-processing のご紹介

Processing Advent Calendar 2012 12月13日参加企画

はじめに

Processingユーザの皆さん、始めまして。橋本幸樹(@koki_h)と申します。
今日はProcessingユーザ向けにruby-processingをご紹介します。
ruby-processingはProcessingの機能をruby言語の文法をつかって記述できるようにした処理系で、Processingのかっこいいグラフィックをrubyのかっこいい構文で記述できるという究極のイケメン言語です。
今回はruby-processingのインストールから簡単なプログラム作成までを紹介したいと思います。*1

環境はWindows Vista Business SP2です。他のWindowsを使っている人は適当に読み替えてください。LinuxMacでも動くはずですが、rubyのインストールなどはそれぞれの環境に合わせて行ってください。

Processingのインストール

Processingのインストールは不要です。

rubyのインストール

rubyの処理系はいろいろあるのですが、今回は、Ruby-1.9.3-p327 Microsoft Installer Package(2012-11-10) を使います。
こちらのサイト↓からインストーラをダウンロードします。

ダウンロードしたら、インストーラを実行すればOKです。

ruby-processingのインストール

スタートメニューの すべてのプログラム > Ruby-1.9.3 > Ruby-1.9 console (Administrator)
をクリックしてコマンドプロンプトを開き、以下のコマンドを打ち込みます。

> gem install ruby-processing

エラーメッセージのようなものも出てきますが、気にせずに以下のコマンドを打ち込みましょう。

> rp5 -v

ここででてきた"rp5"というのがruby-processingの本体です。このコマンドを使ってruby-prosessingのプログラムを実行します。
"Ruby-Processing version 1.0.11"と出てきたら成功です。

必要な設定

早速サンプルスケッチでも動かしてみたいところですが、このままではエラーが出て動きません。
エラーを回避するための設定が必要です。
以下の内容のテキストファイルを作成し、ユーザディレクトリに*2 .rp5rc という名前で保存します。

sketchbook_path : C:\Users\koki\Processing

"C:\Users\koki\Processing"の部分は各自の好きなディレクトリのパスでOKです。
これでサンプルを動かす準備ができました。

サンプルを動かす

ruby-processingはruby consoleから実行します。
スタートメニューの すべてのプログラム > Ruby-1.9.3 > Ruby-1.9 console
で、出てきます。*3
ruby consoleを開いたらサンプルを展開するディレクトリに移動します。適当なディレクトリでOKです。

> cd C:\Users\koki\rp5

つぎにサンプルを展開します。

> rp5 unpack samples

現在のディレクトリにsamplesというディレクトリが作成されます。この中にruby-processingのサンプルが入っています。
サンプルの実行は以下のようにします。

> rp5 run samples\contributed\jwishy.rb

なんかProcessingっぽいのが出てきましたね。成功です。

スケッチの作成

ではスケッチを作っていきましょう。
まず雛形を作ります。

> rp5 create --bare first 200 200

これで現在のディレクトリにfirst.rbという名前のファイルができます。
中身はこんな感じ。

def setup
    size 200, 200
end

def draw
  
end

これだけでもprocessingとそっくりなのがわかると思います(当たり前か)。この雛形をエディタで次のように編集します*4

load_libraries :opengl
def setup
    size 200, 200, OPENGL  
    $rotation_rate = 0.02
end

def draw
    background 50, 50, 50
    translate 100, 100, 0; 
    rotateX frameCount * $rotation_rate;
    rotateY frameCount * $rotation_rate;
    rotateZ frameCount * $rotation_rate;
    box 100
end

そして次のように実行します。

> rp5 run first.rb

すると、

こんな感じの立方体が回転する画が出てきます。

ちなみに、同じのをProcessingでやると以下のようになります。

import processing.opengl.*;
  
public float rotation_rate = 0.02;
void setup(){
  size(200,200,OPENGL);
}

void draw(){
  background(50,50,50);
  translate(100,100,0);
  rotateX(frameCount * rotation_rate);
  rotateY(frameCount * rotation_rate);
  rotateZ(frameCount * rotation_rate);
  box(100);
}

ruby-processingだとカッコが省略できたり、セミコロンがいらなかったり、変数の型指定がいらなかったり、すっきりしていてなかなかステキなんじゃじゃないでしょうか。この辺がRubyのイケメンっぷりですね。他にもオープンクラスだとかlambdaだとかrubyの面白い機能を使ってスケッチを作ることができます*5

その他便利な機能

> rp5 watch first.rb

とやるとfirst.rbを編集して保存した瞬間にプログラムが再起動して変更内容が実行結果に反映されます。
普通のProcessingだとCtrl+rを押したときみたいな動きですね。

> rp5 live first.rb

こうするとスケッチがインタラクティブモードで起動します。
実行中のスケッチをコマンドプロンプトから動的に変更できます。
かなり面白いのですが、ちょっと癖があって使いにくいかもしれません。

終わりに

インストールのやり方と簡単なプログラムの作成をご紹介しましたがいかがだったでしょうか?
インストールやコマンドプロンプトを使うところが若干面倒で、ドキュメントが少なかったりここ1年くらいメンテされていなかったり、あまりいけてない面もありますが、rubyならではのプログラムがサクサク書ける感覚は他ではあまり味わえないと思います*6。普通のProcessingと一味違った楽しみ方ができると思います。ぜひ一度チャレンジしてみてください!

リンク

*1:途中まで書いてよく見たら、ruby-processingのGetting Startedとほとんど同じ内容ですね。https://github.com/jashkenas/ruby-processing/wiki/getting-started

*2:ユーザディレクトリのパスはコマンドプロンプトで、echo %USERPROFILE% と打ち込むと出てきます。

*3:ruby-processingのインストールのところでも似たようなのが出てきましたね。あっちはコマンドを管理者権限で実行するためのものです。

*4:ちなみにProcessingのようなIDEはありません。好みのエディタを使ってください

*5:詳しくはrubyの本などを参照してください。本当に面白いです。

*6:この記事の内容ではわかりづらいかもしれませんが。。