P5 SyntaxとJava

ProcessingでSketchに書くプログラムの文法はP5 Syntaxと呼ばれます。JavaプログラマからみるとかなりJavaに近いのですが、実際コンパイル時には、まずソースコードをチョイチョイっとJavaに変換した上でアプレット/アプリケーションにビルドします。どんな変換が成されるかというと、

  • ソースをひとつのクラスと見立て、PAppletをextendsしたクラス宣言とする
  • import文を補完
  • メソッド宣言には適宜publicを補完
  • 小数リテラルには「f」を補完
  • colorをintに変換
  • などなど・・・

といったところです。
※この辺の流れは
[Processing][仕様]どこで"color"が"int"に変わるのか | うえちょこ@ぼろぐ
に詳しいです。「何がどう変換されるのか?」を知るにはPdePreprocessorのwriteメソッド、PdeEmmiterのprintメソッドを読んでみましょう。

P5 Syntaxと変換後のJavaソース(Appletビルドした時の作業ディレクトリに含まれています)を見比べてみると、意外なほど変更点が少ないです。特にProcessingプログラミングの魅力であるところの便利/シンプルメソッド群は単純にPAppletに定義されているので、要するにJavaなのです。

一方Processing自体はP5 SyntaxではなくJavaで普通に記述することもサポートされます(Pure Javaモードと呼ばれます*1)。Javaならクラス定義して再利用も出来ますし、何よりEclipseなどのIDEが使えます。JavaプログラマはPure JavaでバリバリEclipseを使って書くほうがおすすめじゃないかなー。Javaに慣れないProcessingユーザも、自分のコードをライブラリ化して再利用したい気持ちになってきたら、Javaへ移行するタイミングではないかと思います。

もちろんP5 Syntax自体が「Processingらしさ」の一要素であり、その縛りのおかげで表現に集中できる、という効果は否定しないです。


※2008/6/3追記:JApplet -> PAppletでした

*1:実はSketchにそのままJavaでコードを記述しても、ちゃんと判定して、Javaとしてコンパイルされます