Processingという言語は何ができるのか

0. はじめに

ここでは,Processingという言語について,何ができるのかを解説します.

processing.org

大学などで行われるプログラミング教育では,学習の入り口としてProcessingが使われることがあります. これによって,学習者は2つのことを習得します.1つ目はプログラミングの一般的な能力,2つ目は,Processingという言語自体の文法や機能です.しかしながら,それ以降のステップでは,多くの場合,python機械学習をやったり,javascriptでWeb系の開発をしたりというように,前者のプログラミングの能力だけが活かされているような気がしています.実際に,教育的な視点でみれば,前者を重視するのは当然なのですが.(本質的には,デフォルトのProcessingがJavaベースというところで説明できます.この問題の検討は後述の5. 言語モードの変更で記述があります.)

ですが,せっかくProcessing自体の習得もしているので,その使い道が分かれば学ぶ意味もありますし,アウトプットの幅が広がると思います. このような背景から,何ができるのか,どのような使い道があるのかを紹介するために,本記事を執筆しています.

次からは,具体的な項目を列挙していきます.

1. ゲーム制作

Processingでは四角や丸などの図形を描画することができ,さらにそれを簡単に動かすことができます.さらには,画像読み込みや音楽の再生も可能なことから,ゲーム制作との相性が良いです.プログラミング教育としてのprocessingはゲーム制作が多いように思います(筆者の知ってる母数が小さいですが...).

ゲーム制作では様々なプログラミングの技術が必要になります.例えば,図形移動には変数,当たり判定にはif文,大量の敵や弾,ブロックなどを描画するにはfor文が必要になります.さらに,処理が長くなれば関数化が必要でしょうし,クラスを使うこともあるでしょう.学んだ知識を十分に活かせると思います.

一方で,これはゲーム制作全般の話をしますが,ゲーム制作の手段としては,UnityやUnrealEngineのようなゲームエンジンを用いる場合も多いと思います.Processingでの制作というのは,ゲームエンジンでの制作と比べてコードをゴリゴリ書いていくところが多いです.例えば,当たり判定1つ取っても, Processingでは座標を考えてif文を必死に書く必要がありますが,Unityでは対象のオブジェクトにあらかじめタグをつけておいて,void OnCollisionEnter2D()みたいな関数で当たり判定を制御できたりするので,簡単です.筆者なんかはコードをゴリゴリ書くのは好きなのでProcessingで作ったこともありますが,好みが分かれるところだと思っています.

ゲーム制作については,僕の記事でシューティングゲームを作るものがあるので,ご興味あればどうぞ.

gotutiyan.hatenablog.com

2. アート制作

様々な図形を描画できるので,うまく組み合わせればとても綺麗な模様を描くことができます.

f:id:gotutiyan:20200406173427p:plain
Processingで制作したアート例

制作されたアートは,TwitterやNEORT,OpenProcessingといった媒体で多くの人が公開しています.
OpenProcessingでは,作品と一緒にコードも閲覧できます.

neort.io

www.openprocessing.org

NEORTはCG系の作品もあるので,Processingによる作品だけではない事に注意です.
Twitterでは,#Processing や #つぶやきprocessing のハッシュタグで多くの作品を見ることができます.特に #つぶやきProcessing のハッシュタグは,1ツイートの上限文字数である140字という制限の元でコーディングする側面から,見応えがあります.

筆者はgithubで作品を公開しています.

github.com

3. 画像処理

processingは画像処理もできます.例えば,カラーの画像をモノクロにしたり,色を反転するなどのことができます.

また,動画もたくさんの画像が連続しているものと思えば,大量の画像を処理することと同じなので,動画処理もできます.例えばOpenCVというライブラリを使えば,動画中に出現する人の顔を認識することができます.

筆者は画像処理系の人間ではないので憶測ですが,論文につながるような画像処理系の研究でも,Processingが使われることがあると思います.(matlabも有名ですけどね.)論文の実装にも使われているかもしれませんが,基本的に,論文には具体的なツール名は書かれないので,正確なことはわかりません.(例えば,画像をモノクロ化した,という記述はあっても,その処理をどんなツールでやったのかは書かれない.)
しかし,画像処理系の研究室のHPでは,初学者向けにProcessingの教材を掲載しているところをそれなりに見るので,研究でも活躍していると思います.

4. 音声処理

minimという音声に関するライブラリを使えば,音声処理も行えるようです.例えば,音声の波形を表示することができます.

筆者は音声処理についてはよく分かっていないので,あまり深いところの言及は避けますが,minimのサンプルなどを見てみると面白いかもしれません.

5. 何ができないか

  • キーボードの情報は受け取れますが,文字列を受け取るような機能が無いので,文字列のやり取りを用いたインタラクティブな制作物は原則作れません.(何かしらのライブラリを使えばできるかもしれません.キーの情報を時系列で保存すれば,疑似的に文字列を表せるような気はしないでもないです.)

  • 画像や音声に特化しているので,機械学習やWeb開発などはできません(これもライブラリ次第ですけど..).画像や音声以外に何かやろうとすれば,Processingよりも良いツールや言語が存在するので,そっちでやるのが良いというのが現状だと思います.

6. 言語モードの変更

デフォルトの設定では,Processsingという言語で書くことになります.これはJavaベースなので,例えばArrayListなども使えます.

実はこの他に,pythonベースやjavascriptベース(p5.js)でも書くことができます.

f:id:gotutiyan:20200406212451p:plain
processingの言語モード変更

0. はじめにの項で説明した通り,Processingを学んだのにその後使われないという問題は,この言語モードの変更によって回避できる可能性があります.

pythonモードでProcessingを学べば,pythonの文法や機能を習得できるので,滑らかに機械学習などの方面に移行できますし,p5.jsでProcessingを学べば,Web開発の方面に滑らかに移行できるはずです.

将来の方向性を考えないとしても,言語モードを意識する時があります.2. アート制作で述べたつぶやきProcessingでは,いかに文字数を削減するかが課題なので,変数の宣言に型を明示的に書く必要が無いpythonモードやp5.jsが好まれる印象です.目的次第で使い分けると良いかもしれません.

7. さらなる発展へ

Processing界隈の大きなイベントとして,PCD(Processing Community Day)というものがあります.日本ではPCD Tokyoとして毎年開かれています.

pcd-tokyo.github.io

ここではProcessingを高度なレベルで活用している方のワークショップや公演が行われます.自分では考えつかなかったようなアイデアで溢れているので,面白いと思います.
中には発表スライドを上げてくださっている方もいるので,探して見ると良いかもしれません.

公式アカウントが,関連資料をまとめてくださっていました. twitter.com

8. おわりに

本記事では,Processingで何ができるかということについて紹介しました.

今回の狙いとしては,冒頭で述べたとおり,ただの教育手段としての言語として終わって欲しくないということがありました.これは特に,僕の大学がProcessingから入るカリキュラムだったこともあると思います.
そして,Processingの界隈がさらに発展していけば良いなとも思っています.本当に楽しい言語だと思うので.

以上です.