Kasasagi’s memorandum

JavaとかProcessingとか。最近はAtcoderとか。

Intellij IDEAでJava + Processing

こんばんは、かささぎです。

今回はJava + Processingというテーマで書いていきます。

主にProcessingユーザーをターゲットにしています。


Java + Processing のメリット

Processingは簡単なコードでGUIを実現できるというメリットがあります。
そのため、電子アートやプログラムの入門に用いられることが多いです。

しかし、ある程度発展したプログラムを作成しようと思った時に、弊害が出てきます。

例えば厳密なオブジェクト指向ができない点があります。
これはProcessingではプログラム実行時、最初に呼ばれる関数(void setup() やvoid settings())をクラス内に入れることができなかったり、カプセル化ができない等です。

他にも、Processing向けのライブラリが少ないことが挙げられます。Java向けのライブラリ(jarファイル)を外部ライブラリとして利用することもできますが、例外処理などで一部Processingのコード通りにかけなかったりなど、利用するのは難しいと思います。

また、ProcessingのIDEでは、実行からコンソール、デバッグツールの管理などまで一応GUIで利用できるのですが、ファイルツリーなどはなく、やはりよく用いられるIDEと比べると機能が劣っているといえます。

これらを解決するためにJavaからProcessingをライブラリとして呼び出す、という手法があります。

そうすれば厳格なオブジェクト指向ができますし、多彩なJavaライブラリも利用できます。
Javaのみで書くより非常に簡単にGUIを作成できるというメリットもあります。

また、Javaが利用できるIDEを用いてゴリゴリ大規模開発もできます。


Intellij IDEA

Java + Processing ではIDE(統合開発環境)を用いて開発するのをおすすめします。

IDEとはコンパイラインタプリタデバッグツールなどをひとまとめにした環境のことです。

Javaの開発にはEclipseIntellij IDEA,NetBeansなどがよく用いられますが、今回はIntellij IDEAを用います。
https://www.jetbrains.com/idea/

コード補完能力が高い、プラグインが豊富、デザインが現代風などの特徴があります。

無償版でも十分に利用できます。また、学生はメールアドレスの登録で有料版が無料で利用できます。



解説

今回の解説はIntellij IDEA,Processingどちらもダウンロード済みという前提で進めます。

またWindows環境で行います。


プロジェクトの作成

Intellij IDEAを立ち上げると、こんな感じの画面になると思います。

f:id:yh9092:20181216205624p:plain

Create New Projectをクリック。

新しいプロジェクトの設定画面が立ち上がります。

フレームワーク等は用いないのでNext,テンプレートも用いないのでNextを押します。

するとこんな画面になります。

f:id:yh9092:20181216205750p:plain

Project Nameを入れ、プロジェクトファイルの格納場所を変えたかったら好きな場所にします。
Project NameはJavaの慣習的に、最初の一文字を大文字にしておいたほうがいいみたいです。
今回はP5demoというプロジェクトにします。

OKを押すとIDEが立ち上がります。
f:id:yh9092:20181216210003p:plain

次にソースコードを書くファイルを作成します。
プロジェクト名の横の▽を押し、srcを選択します。
右クリックして、New -> Java Classを選択します。

Nameにproject名(今回はP5demo)を入れOK。
このファイルはJavaで書くものにします。

次にもう一度同じ要領でJava Classを作成します。
このファイルはProcessingを書くものにします。
今回はGUIbyP5というファイルにしました。

ファイルはこのように配置できていればOKです。
f:id:yh9092:20181216210450p:plain



ライブラリの設定

次にProcessingをライブラリとして設定します。

メニューバーから、File -> Project Structureを選択。
左にあるLibrariesを選択。このような画面になります。

f:id:yh9092:20181216210833p:plain

  1. を押してjava を選びます。

ファイル選択で、processing-x.x.x(バージョン)/core/library/core.jar を指定しOKを押します。

こんな感じになったら、成功です。OKを押します。
f:id:yh9092:20181216211103p:plain


これで環境の設定は完了です。


ソースコード・実行

P5demo.javaはこのようにします。

import processing.core.PApplet;

public class P5demo extends PApplet{

     public static void main(String args[]){
        PApplet.main("GUIbyP5");
    }

    //ここはJavaで書ける
}

GUIbyP5は円をたくさん描画するサンプルにしてみました。こんな感じです。

import processing.core.*;

public class GUIbyP5 extends PApplet{
    //ここはProcessingで書ける

    public void settings(){
        size(600,600);
    }
    public void setup(){
        ellipseMode(CENTER);
        colorMode(HSB);
        noStroke();
        background(0);
    }
    public void draw(){
        if(frameCount % 500 == 0) background(0);
        fill(random(360),100,100,60);
        ellipse(random(width),random(height),100,100);
    }

}

気を付けなければならないのはsize関数の位置です。
Processing標準IDEではvoid setup()内でsize()関数を呼ぶことが多いと思いますが、外部IDEの場合はvoid settings()という関数を作ってその中に記述する必要があります。
Processing標準IDEでも後者の書き方はできるので、この書き方をする癖を付けたほうがいいと思います。

次に実行です。
Build->Builde Projectでビルド(コンパイルみたいなもん)します。

ビルドが終わったら、Runを押し、P5demoを選ぶと実行されます。

このP5demoの選択は初回実行時のみで、その後はRunを押すだけで実行できます。

Processing では実行ボタンだけで実行できていましたが、IDEでは、ビルドしてから実行する必要があります。

<実行結果>
f:id:yh9092:20181216211910p:plain



まとめ

Java + Processingという手法を説明していきました。

この方法を用いればProcessing のみではできないことも、Javaの力で解決することができます。

また紹介した方法ではJavaのコードとProcessingのコードをきっちり分割することができるので、難解なコードになりにくくおすすめです。

ぜひこの手法でProcessing沼に堕ちてください。


それでは。