読者です 読者をやめる 読者になる 読者になる

Processing.rbをチラ見せ

気づけばブログの更新が一ヶ月空いてしまいました。サボっていたわけではなく、週末の自由時間を個人の開発活動に100%充てておりました。

このまま更新しない日が続くのもよろしくない気がするので、今日は開発中のプロジェクトを先行でチラ見せしたいと思います。

題材は毎度おなじみProcessingと最近勉強中のRubyです。

Processing.rbについて

Processing.rbRubyで気軽にProcessingのスケッチが書けるツールです。有り体に言ってRuby-Processingとまったく同じコンセプトなのですが、Processing.rbはこんなところが違います。

  • 1ファイル、200行程度のシンプルなコードのため、お好みで気軽に拡張できます。
  • 設定ファイル不要で、MacでもWindowsでも自動で必要なファイルを探します。
  • スケッチ更新時に自動で再起動し、requireしたモジュールも再ロードします。
  • Java版のProcessingと同様、1〜2行の追加で簡単に拡張ライブラリが利用できます。
  • 表示位置の指定や最前面表示など、ライブコーディングに便利な機能があります。
  • 機能は一通り作りましたが、まだサンプルとドキュメントが間に合っていません。

お試しで使ってみるには

RubyGems登録済みですので、JRubyのgemコマンドからインストールできます。

jruby -S gem install processing.rb

動作にはProcessingとJRubyが必要となりますので、事前にインストールをお願いします。

スケッチの動作は次のように行います。

jruby -S processing.rb your_sketch.rb

起動後はスケッチを編集すると自動で再起動します。

サンプルコード

サンプルコードと動作画面です。

class Sketch < Processing::SketchBase
  LINE_RADIUS = 8
  LINE_SPEED = 3

  def setup
    size(480, 240)
    background(0)
    no_stroke

    @x = @y = LINE_RADIUS
    @vx = @vy = LINE_SPEED
  end

  def draw
    fill(0, 8)
    rect(0, 0, width, height)

    @x += @vx
    @y += @vy

    @vx *= -1 if @x <= LINE_RADIUS || @x >= width - LINE_RADIUS
    @vy *= -1 if @y <= LINE_RADIUS || @y >= height - LINE_RADIUS

    fill(255, 204, 0)
    ellipse(@x, @y, LINE_RADIUS * 2, LINE_RADIUS * 2)
  end
end

Processing.start(Sketch.new)

f:id:tkitao:20150123231936p:plain

終わりに

あと一月ぐらいでサンプルとドキュメントも一通りそろえる予定です。正式に完成したら改めて解説記事を書きたいと思います。お楽しみに!