はじめに
共通試験で「情報」を学んでいる大学生はpythonに慣れていると思います。
ここではProcessingとの違いをまとめます。
Processingの特徴
https://ja.wikipedia.org/wiki/Processing
より、抜粋します。
ケイシー・リース(Casey Reas)とベンジャミン・フライ(Benjamin Fry)によって、MITメディアラボで開発された。(この二人はジョン・マエダの研究グループのメンバーでした)
特徴1 電子アートとビジュアルデザインのためのプログラミング言語
ビジュアル表現に強い
特徴2 Javaを単純化し、グラフィック機能に特化
println("Hello World!");
上記は、システムのコンソールに文字を出力することができるが、
下記は、ウィンドウのx:20 y:50の位置に文字を表示することができ、
容易にグラフィック機能を使うことができる
text("Hello World!", 20,50);
また、図形を描くことも容易である
rect(20, 20, 100, 80);//四角形
ellipse(140, 140, 40, 50);//楕円
特徴3 アプリケーションとしてエクスポートすることができる
単体の実行ファイルにでき、ソースコードを見られないようにし、配布が可能になります。
Windows Macそれぞれにエクスポート可能
特徴4 processing.jsの機能を用いればネット上でコードの実行結果が見られる
JavaScriptのモードがあり、これを使えば、Webブラウザ上で自分のプログラムを動かすことが可能
また、下記サイトでは、ブラウザ上でProcessingのJavaScriptモードを試すことが可能
ProcessingはJavaで動いている
Javaの文法からさらに、不要な文法が削除されて、シンプルになっています。
public class Main {
public static void main(String[] args) {
double result = Math.sin(0.5);
System.out.println(result);
}
}
float result = sin(0.5);
println(result);
Processingの開発は継続中
長い目で見た場合、作ったプログラムがいつまでサポートされるかは、重要です。幸い、開発は続けられており、内部で使用しているJavaも新しいものに切り替わっています。最新ProcessingはJava17で動いており、Java17の機能をProcessingから呼び出して使うことも容易です。
Processingのインストール方法
Pythonのインストールは結構面倒で、バージョン管理とか大変な印象があります。大変なので、オンラインの実行環境を使うことも多いと思います。
Processingは最新版をダウンロードして、インストールするだけです。
現時点では4.3.2が最新です。
https://processing.org/download
ライブラリのインストール
Pythonは、例えば、pipとかコマンドでいれます。
Processingは、ライブラリマネージャがあって、多くはここからGUIでインストールできます。一覧に表示されない一部のライブラリは、コードを保存した場所にlibというフォルダを作り、その中にjarファイルを置くことで、認識されます。
実行方法
Python, Processingともに実行ボタンを押すだけです。
ProcessingはShiftキーを押しながら実行することで、フルスクリーンモードで起動します。
アプリケーションのエクスポート
Pythonには機能がありません。
Processingでは「アプリケーションとしてエクスポート」から実行ファイルを生成する機能があります。例えばゲームを配布したい場合などには、便利かと思います。
出力方法
Pythonはコマンドラインまたは、開発環境であれば、下のほうにテキストが出力されます。
Processing標準出力
print命令は下のほうに出力されます。改行付きのprintln命令もあります。
Processingウィンドウ出力
ノーコードでウィンドウが開くので、x,y座標を指定して、text命令で文字を表示できます。
Processingファイル出力
テキストファイルはsaveStrings命令やcreateWriter命令があります。
画像はsave命令で拡張子指定することで、各種フォーマットの保存ができます。またsaveFrame命令で連番画像の保存ができます。
その他、PDF、SVG、XMLへの保存などができます。
エントリポイント
Pythonの場合、以下のように書く、
print(99)
もしくは、mainを用意します。
def main():
print(99)
if __name__ == "__main__":
main()
Processingの場合、以下のように書きます。
print(99);
mainのようなエントリポイントは、強いて言えばsetupです。
void setup(){
print(99);
}
アニメーション機能
setupは一回だけ実行されます。
drawは毎フレーム実行されます。
両方とも存在しない場合は、1行目から実行されます。
※注意点として、
・すべての関数の外側で宣言した変数は、グローバル変数になる。
・自作の関数をつかうときは、setupかdrawがないとエラーになる。
例えば、単純計算であれば、
float a=pow(2, 16);
print(a); //65536.0
と、書きます。
描画の場合、一通り描画して、終わりです。
for (float th=0; th<TWO_PI; th+=0.05) {
circle(30*cos(th)+50, 30*sin(th)+50, 10);
}
自作の関数を使おうとすると、エラーになるので、以下のようにします。
void setup() {
myFunc();
}
void myFunc() {
for (float th=0; th<TWO_PI; th+=0.05) {
circle(30*cos(th)+50, 30*sin(th)+50, 10);
}
}
アニメーションさせたい場合は、以下のようにします。
float th; //グローバル変数
void setup(){
//1回だけの処理
}
void draw(){
//毎フレーム繰り返す処理
background(255); //白で全部消す
circle(30*cos(th)+50,30*sin(th)+50,10);
th+=0.05;
}
型
Processingでは変数を事前に、整数なのか、小数なのか、文字なのか…を決める必要があります。また、戻り値のある関数にも型を用意する必要があります。プログラムをPythonから始めた場合、このあたりが、面倒に感じるかもしれません。Processingに用意されている代表的な型を次表に示します。
型名 | 種類 | 範囲や特徴 |
---|---|---|
byte | 整数 | -128 ~ 127 |
int | 整数 | -2147483648 ~ 2147483647 |
long | 整数 | -9223372036854775808 ~ 9223372036854775807 |
float | 小数 | 精度 約7桁 |
double | 小数 | 精度 約14桁 |
char | 1文字 | 英数など。日本語は含まない |
string | 文字列 | 日本語可 |
color | 16進数の色 | 0xAARRGGBB、intと互換あり |
boolean | true false |
配列
python list
processing list
processing []
printとprintln
文末の ; コロン
インデント
⌘T(CTRL+T)
{}表現
for
1から100までの合計を計算する例
total = 0
for i in range(1, 101):
total += i
print(total)
int total = 0;
for (int i=1; i<=100; i++) {
total += i;
}
print(total);
foreach
while文
1から100までの合計を計算する例
total = 0
i = 1
while i <= 100:
total += i
i += 1
print(total)
int total = 0;
int i = 1;
while (i<=100) {
total += i;
i++;
}
print(total);
if文
サイコロの出目がいくつかを判別する例
import random
n = random.randint(1, 6)
if n == 1:
print("n is 1")
elif n == 2:
print("n is 2")
elif 3<=n and n<=5:
print("n is 3 or 4 or 5")
else:
print("n is 6")
int n = int(random(1,7));// not include 7
if(n==1){
print("n is 1");
}else if(n==2){
print("n is 2");
}else if(3<=n && n<=5){
print("n is 3 or 4 or 5");
}else{
print("n is 6");
}
switch
ウィンドウの作成
Pythonの場合、標準では機能がないので、グラフライブラリとか、ゲームライブラリを入れたりすると思います。
Processingはsize命令で、大きさを指定します。最大の強みだと感じています。
size(400,400);
ライブラリ
pip
jar
GUI