Edited at

ProcessingとopenFrameworksの違い

More than 1 year has passed since last update.

Processingで慣れた後openFrameworksで書いてみたとき、この二つは出来る事のコンセプト自体は大きく差がないが、使い方には微妙に違いがあると感じた。

それを記録の意味を込めて書いてみた。

※自分個人が感じた事です。


Processing

https://processing.org

Processingとは、Ben Fry氏とCasey Reas氏らによって作られた言語。大まかに言えば、Javaを単純化し、可視化部分に特化したもの。


利点

-Windows、Mac、Linuxと幅広いOSで動く。

-導入が簡単。公式サイトからダウンロードすれば終わり。

-文法もJavaを単純化したものであるため、比較的シンプル。

-面白いライブラリもある。(ex. 物理ライブラリ(Box2D))

-このタイプの言語(可視化特化)の中では日本語の参考元が比較的多め。

つまり、どこでも動く上にとにかく手軽であるため、軽く何かを書きたい時に使用しやすい。

また、出力が数値とかではなく図などの目に見える形で表れる点や文法が簡単な面から初心者にも

勧めやすい。


欠点

-クラスを作る事が出来るが、全て内部クラス扱いになってしまう。

-変数も全てpublic扱いになってしまう。そのため、厳密にカプセル化とかを学びたい時には

向かない。

-※クラスを作る際「~.java」のように拡張子として「.java」を使用すると外部クラスとして

作成される。privateやprotectedなどアクセス修飾子も動作し、カプセル化もしっかり

行える。(2018/3/10追加。enkatsu様、ありがとうございます。)

-C++とかと比べると遅いので、大規模なものを作るのには向いていない。

-IDEは提供されるが、人によっては使いづらく感じるかもしれない。


openFrameworks

http://openframeworks.cc/ja/

openFrameworksは、Zach Lieberman氏らによって開発され、MITライセンスで配布されているC++のオープンソースツールキットである。厳密に言えば言語ではなくC++のライブラリの一種に近い。こちらも大まかに言えばProcessingのような事をC++で出来るようにしたものである。


利点

-Windows、Mac、Linuxと幅広いOSで動く。

-C++ならではの速度の速さ。そのおかげでProcessingと比べると大規模なものを作れる。

-C++のライブラリという位置に近いため、C++の文法をそのまま用いる事が出来る。しっかりとカプセル化などを意識した書き方が出来る。

-アドオンと呼ばれる、openFrameworksの追加機能的なものが豊富にある。例えば物理エンジンやGUIなどがある。

-C++であるため、ハードウェアに近い部分(低レベルの部分)のコーディングも可能である。

幅広く動作する上に、Processingより大規模かつ別の方向性の作品の作成にも使える。


欠点

-C++をある程度理解しておかないと扱うには厳しい。初心者には敷居が高い。

-IDEは提供されないため、自分で用意する必要がある。(MacならXCode、Windowsならvisual studioなど)

-現時点(2018/3/4)で最新のバージョンが0.9.8となっているが、アドオンの中にはその最新のバージョンに対応してないものが存在する。それを導入してしまうと、場合によっては自分が書いたコードは間違ってなかったとしてもアドオンの部分でエラーが起きてしまって動かない場合がある。

-日本語のリファレンスが少ない。


向き不向き

簡単に言ってしまえば、

-あまり大きくない規模のものを作りたいときやアイディアを考えるスケッチ→Processing

-大規模な作品を作りたい→openFrameworks

となる。


まとめ

同じコンセプトを持つ二つの言語の個人が感じた使い方の向き不向きについて書いた。これらを使用して作品を作って投稿する事を定期的に、あわよくば習慣化したいと考え、ここ数ヶ月触れていた。

コーディングを持って自分の考えやアイディアを表現したり、何かを試すというのは非常に面白いと思うし、それが広まったらそれをきっかけにして話題の共有したりや交流の輪が広がるのではないかなとも思う。


オススメの文献

個人的に参考に最適だと思った本やサイトをここに記載する。

-Nature of Code -Processingではじめる自然現象のシミュレーション

--http://natureofcode.com/book/

--Daniel Shiffman氏が書いた本。情報系に進む上で基本になる幅広い知識やコーディングの基本を学ぶ事が出来る。得られる事は多く、間違いなくオススメできる本。

--本は日本語訳版がある。

--難しめな内容も含まれているため、Processingをある程度書き慣れているのが望ましい。

--また、この本の著者であるDaniel Shiffman氏はYoutubeに大量に動画をアップロードしている。Processingやp5.js(今回紹介しなかったが、Javascript版のProcessingと考えてもらえば良い。Webで動くものを簡単に作れる)を使用して作品を作ったりしている。Nature of Codeの内容も解説している動画もあり、ここから得られる事はとても多い。英語であるが故に聴き取りは難しいが、チャレンジする価値は十分にある。

--https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw

-ジェネラティブ・アート―Processingによる実践ガイド

--Generative Artと呼ばれる、コンピュータなのに有機的で不思議な絵を書いたり、他にも様々な表現についても学ぶ事が出来る。Processingの基礎的な書き方についても学べるため、初心者にも向いている。

--専門書の中では比較的値段が安い。

--本は日本語訳版がある。

-Generative Design-Processingで切り拓く、デザインの新たな地平

--http://www.generative-gestaltung.de

--様々な表現方法やデザインについて学ぶ事が出来る。とにかくサンプル数が多い。

--難しい内容が多く含まれている上、本はかなり高価(10000円近い)。そのため、どちらかといえば上級者向け。

--サンプルコードはサイトからダウンロード出来るため、それを使って動かしてみると良いかも。

--本は日本語訳版がある。

-http://yoppa.org

--クリエイティブコーダーの田所淳先生のサイト。ProcessingやopenFrameworksについての参考資料が多い。無料で閲覧出来るため、気軽に利用が出来る。

--他にもTidal CyclesやSonic Piなど音と連携した使用方法なども学ぶ事が出来る。

-P5 Code School

--http://p5codeschool.net/tutorial/

--Processingの基礎について学ぶ事が出来る。

他にもTwitterで#openframeworksや#Processing、#creativeCodingなどで検索すると投稿されている作品を見る事が出来る。それらも参考になる事が多い。