[Work/Class/Java with Processing/1_StartProcessing]

アート系学生のためのJAVA with Processing - その1 Javaのコンパイルと実行,Processing IDEが行っていること

Processingとは,Javaのクラスライブラリの一つである.専用のProcessing IDEを使うことで,クラスライブラリであることを意識しないまま

一番小さいJavaプログラム

おなじみの"Hello World"を出力するJavaのプログラムは以下の通りである.

// HelloWorld.java
// ソースコード頭にファイル名を書いておくとわかりやすい

// 自分オリジナルのパッケージ名
// 自分の持っているドメインを逆順で書いて,その後にパッケージ名をつけるのが,正当
package jp.lolipop.cad.P5Docs;

// Javaのライブラリをインポートすると,そのまま使える
// インポートしなくてもフルパス指定してやればいいのだけれど
import java.lang.System.*;

public class HelloWorld {
    // publicなクラスは必ず存在しなければらならない.
    // クラス名はファイル名とする.
    // そのクラス名はパッケージのあとに付けられ,
    // この場合は,"jp.lolipop.cad.P5Docs.HelloWorld"というクラス名となる.
    public static void main(String args[]){
	// Javaのプログラムは「public static void main」関数があるところから始まる

	System.out.println("Hello World!");
	// java.lang.Systemパッケージ中のoutクラスの
	// static printlnメソッドを呼び出し,
	// "Hello World"という文字列を与える.
	// (この説明は正確にはちょっと違う)
    }
}

コンパイルは

 $ javac -d . HelloWorld.java

今は覚えなくても良い: -d .オプションは「このディレクトリにパッケージで作る」という意味.

実行は

 $ java jp.lolipop.cad.P5Docs.HelloWorld

で行う.(パッケージ名は自分のものに直すこと)

Processingがやっていること

Processingの一番簡単なコードは,

size(640, 480); //640x480のキャンバスを持ったウィンドウ
colorMode(RGB, 255); //RGBで0~255のカラーモードに設定
background(255, 255, 255); //背景色は白
fill(60, 60, 60); //これから書くものはグレーで中を染める
ellipse(100, 200, 20, 20); //xが100, yが200の位置に,縦横20の円を描く

の4行で構成される.

これをProcessingを使ったJavaで書いた場合,(前のJavaのコードを見ると良い)

package processing.core.PApplet;
import processing.core.*;
public class MySkectch extends PApplet{
  public static void main(String args[]){
    size(640, 480);
    colorMode(RGB, 255);
    background(255, 255, 255);
    fill(60, 60, 60);
    ellipse(100, 200, 20, 20);
  }
}

という形に相当する.

つまりProcessing IDEはユーザが書いたコードに対して,(1)前後にコードを自動的に付け加えて,(2)適切にオプションを与えてコンパイルして,(3)適切にオプションを与えて実行する,という3手順を自動的にこなしてくれる.

反面,package文を書くことができなくなり,全てのコードがひとつのパッケージに強制的にまとめられ,パッケージの指定ができなくなるという問題もあるため,複数パッケージにまたがって自分が全て書くような大規模開発を行うことはできない.(パッケージの名前は自動的に付け加えられる)

逆にimport文でパッケージを読み込むことは自由に行えるため,Javaの標準クラスライブラリのパッケージや,Java+Processing様に書かれて配布されているパッケージは利用することができる.