1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonからProcessing(Java)へ移行する際の相違点(更新中)

Posted at

はじめに

共通試験で「情報」を学んでいる大学生は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の文法からさらに、不要な文法が削除されて、シンプルになっています。

javaでsin関数を使う例
public class Main {
  public static void main(String[] args) {
    double result = Math.sin(0.5);
    System.out.println(result);
  }
}
Processingでsin関数を使う例
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);
}

image.png

自作の関数を使おうとすると、エラーになるので、以下のようにします。

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;
}

ani.gif

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

printとprintln

文末の ; コロン

インデント

⌘T(CTRL+T)

{}表現

for

1から100までの合計を計算する例

Python
total = 0
for i in range(1, 101):
  total += i
print(total)
Processing
int total = 0;
for (int i=1; i<=100; i++) {
  total += i;
}
print(total);

foreach

while文

1から100までの合計を計算する例

Python
total = 0
i = 1

while i <= 100:
  total += i
  i += 1

print(total)
Processing
int total = 0;
int i = 1;
while (i<=100) {
  total += i;
  i++;
}
print(total);

if文

サイコロの出目がいくつかを判別する例

Python
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")
Processing
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

GUI

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?