クリエイティブコーディングとは
クリエイティブ コーディングは、機能的なものではなく表現力のあるものを作成することを目標とするプログラミングの一種である。ライブのビジュアルや VJ、ビジュアル アートとデザイン、アート インスタレーション、プロジェクションやプロジェクション マッピング、サウンド アート、広告、製品プロトタイプなどの作成に使用される。(Wikipediaから抜粋)
プログラミング言語の歴史
ここでまず、プログラミング言語の歴史を振り返ってみる。下図の中でクリエイティブコーディング環境と言えるのはActionScript(Flash)だろう。ある一定の時期に多くのユーザーを獲得しており、利用するデザイナーやアーティストも多かった。一時期はWebのリッチコンテンツは全てFlashで作成されていた時代もあったが、AppleがiPhoneへの搭載を辞めたことをきっかけにして衰退していき、その代わりにJavaScriptが注目されるようになった。Javaを使ってアート作品を作るアーティストも一時期いたが、JavaScriptの利便性が一気に高まったため、クリエイティブコーディングとしてJavaが使われることはほぼなくなった。
なお、Scratchは子ども用のクリエイティブコーディング環境だといえる。
クリエイティブコーディングの歴史
「独断と偏見に基づくクリエイティブ・コーディング年表、改訂版(田所 淳)」を引用させていただいた。DirectorとかFlashが懐かしい。
参考:Processingの歴史
クリエイティブコーディングの主な開発環境
TouchDesigner
TouchDesignerは、インタラクティブコンテンツ作成に最適なノード ベースのビジュアル プログラミング言語で、トロントを拠点とする Derivative 社によって開発された。プロジェクションマッピング、照明を制御するDMX、インスタレーションなどの多岐にわたる映像作品を作成できる。
openFrameworks
openFrameworksは、C++で書かれたフレームワークである。
Processingと同じように、簡単なコードのみで様々なグラフィックスやインタラクションをデザインすることができるので、C++を知らなくてもプログラミングが可能になっている。もちろん、C++を使って書くこともできる。その範囲も、グラフィック、インタラクティブ表現、ネットワーク、サウンド、画像処理、フィジカルコンピューティングなど多岐にわたっている。
Processing (P5.js)
Processing はJavaベースのスクリプト言語である。初心者でも簡単にグラフィックが描画できるように設計されている。Processing は視覚芸術におけるソフトウェアリテラシーとテクノロジーにおける視覚リテラシーを促進してきた。多くの学生、アーティスト、デザイナー、研究者、愛好家が、学習とプロトタイピングに Processing を使用している。P5.jsは、JavaScriptベースのスクリプト言語で、文法はProcessingと非常によく似ているが、Processingよりも若干簡単だといえる。
Max8(Max/MSP)
Max(マックス)は、Cycling ’74が開発・保守している音楽とインタラクティブコンテンツ向けのビジュアルプログラミング言語である。作曲家やメディアアーティストらに20年以上使われ続けている。
PureData (Pd)
PureData (Pd)は、音声、ビデオ、映像処理のためのビジュアルプログラミング言語である。ミラー・パケット氏により開発され、多くの有志のエンジニアによってメンテナンスや拡張がなされている。Pdはフリーソフトであり、MacOSX、Windows、Linuxのどのプラットフォームでも動作する。
vvvv
vvvv は、プロトタイピングと開発を容易にするビジュアル ライブ プログラミング環境である。物理インターフェイス、リアルタイム モーション グラフィックス、多数のユーザーと同時に対話できるオーディオとビデオを備えた大規模なメディア環境の処理を容易にするように設計されている。
D3.js
D3 はData-Driven Documents の 略である。D3.jsはMike Bostock によって開発されたオープンソースの JavaScript ライブラリであり、SVG、HTML、および CSS を使用して Web ブラウザーでカスタムのインタラクティブなデータ視覚化を実現する。基本的にはあらゆるタイプのグラフを作成できるライブラリだと思えばいい。
Quartz Composer
Quartz Composerはノードベースのビジュアルプログラミング言語で、macOSの開発環境の一部として提供されていた。実はTouchDesignerとよく似ていて、個人的にはTouchDesignerの祖先だと思っている。MacOSでしか使えなかったため、あまり普及せずに、開発もストップした。