====== 開発環境 ====== いざプログラミングを始める場合、なにから手をつけていいかなかなか難しく、情報はたくさんあっても結果として迷ってしまうでしょう。このページでは馬場の分野でよく利用される開発環境の紹介し、それぞれの特徴を述べます。 馬場の主観的なスコアリングに基づいたものです。そのときに応じて微妙にグラフは変化していきます。
2020年12月27日、いわゆるクリエイティブコーディング(画像、映像、音声等を統合して扱うことが比較的簡単にできる)が可能な開発環境にはそこまで多くのものがあるわけではありませんが、下記が代表的なものです。 * Processing: https://processing.org * Openframeworks: https://openframeworks.cc * Cinder: https://libcinder.org * Unity: https://unity.com/ * Max, PureData: https://puredata.info * vvvv: https://vvvv.org * touchDesigner: https://derivative.ca * p5.js: https://p5js.org で、なにを使えばいいかっていると、正直なところなんだっていいです。好きなアーティストや作品を見つけて、それが何で作られているかを調べて同じ環境で学習をはじめてみるのも良いでしょう。もしくは、時代はpythonだ、swiftで全部やったる。そんな意気込みもありでしょう。 ===== クリエイティブコーディングの評価 ===== クリエイティブコーディングでは馬場の独断ですが、次の点を重要視します。 ==== シンプルに始められる(導入が容易):simplicity ==== 簡単なことを数行のコードで、数分で実現できるかどうか。標準でどの程度ライブラリが準備されているかが大きく影響します。とはいえ様々な機能が用意されていても必ずしも自分がやりたい表現に直結する機能があるとは限りません。Visualプログラミング環境では10分かかることが、プログラミングを利用すれば1分で終わることもあれば、その逆もあります。つまり重要なポイントはなにかというと、常にプログラムの可読性が高いことです。トラディショナルな言語ではこの習わしには多くの流派があるため、自然とわかりやすくするプログラムが身につきやすい一方、Visualプログラミングでは「こうやったら動いたから、このようにしています」という理由で開発をしてしまいがちです。 ==== 配布が簡単:distributable ==== せっかく制作したアプリケーションも別の環境や多くの人に体験してもらう手間があまりに大きいと折角のプロトタイプの魅力も半減してしまいます。逆に対して面白くもないアイデアでも実際に非常に簡単に使えるだけでも多くの人にとって嬉しいこともあります。 ==== 開発を通じて価値発見ができる:discoverable ==== 開発環境はあくまでメディアであり、それを通じて何かを発見できるものでなければなりません。つまり、最初から作るものが決まっていればその目的に沿った開発環境を利用すればよく、むしろクリエイティブなコーディングをしないことが好まれます。一方、クリエイティブコーディングとは一種のプロトタイピングであり、その行為を通じ自らが創り出そうとしているものを発見することを繰り返していきます。ユーザの試行錯誤を許容する環境であることが望まれます。閉じた開発よりも、オープンな開発がよいです。ネットで動いているコードをすぐ手元の環境で動かせると嬉しいですよね。 ==== 大きなアプリケーション開発が可能: manageable ==== 比較的クリエイティブコーディング自体はあまり大規模アプリケーションには向きませんが、簡単なプロトタイプから展示で一年間動作させるようなしっかりとしたアプリケーションまでを記述可能でなければなりません。プログラムの可読性はデバッグの容易さ、さらには開発用ファイルの管理可能性等を重視します。 ==== トラブルがおきた場合、ネットですぐに類似情報を見つけやすい: searchable ==== クリエイティブコーディングを行うユーザ層はプログラミング初心者も多く含まれます。彼らは問題が生じた場合、その根源がなんであるのかを見抜く力が上級者と比較して弱いです。なので、近くに先生や先輩がいればすぐに問題発見は可能ですが、一人の場合、生じた問題をそのままネットで検索することが多いです。つまりヤフー知恵袋のように、一つの個別問題に対してどれだけケーススタディが蓄積されているかが初心者にとっては非常に重要になります。 ==== コミュニティが活発、マニュアルが充実: activeness ==== その環境を理解し、なれるためのもっとも重要なポイントであるマニュアルがどの程度充実しているかです。OSのアップデートに合わせたバージョンアップも重要ですね。この辺りはコミュニティの活発度が大きく影響します。先程のsearchableにも少し影響がありますね。githubなんかだと、開発側がほとんどdeactiveでもユーザが活発に意見交換している場合もあったりしますね。 ==== 機能拡張が豊富: extensible ==== 基本機能はデフォルトで提供しつつ、拡張性をもたせることで様々な応用が可能になります。例えば近年では深層学習が多くの場面で利用されていますが、それらを拡張機能で用意している環境は多くありません。また、ユーザ参加型で機能拡張が活発に行われることで、より多くの拡張や自分だけの機能拡張等が可能になれば、アプリケーションの用途も広がります。 ==== 様々な環境で安定して動作する: robustness ==== 実際に制作したアプリケーションを展示で丸一日動作させたり、macOSで作成したものをWindowsで動作させるなど、様々な環境においても一つの環境で作ったものが安定して動作することが好まれます。 ====== 用途別 ====== 上記はクリエイティブコーディングっていうなんだかわからん基準で評価しましたが、そもそも制作するものが決まっている場合はそれに特化した環境がベストです。 * ゲーム制作:Unity * 音響作品制作:Max, Puredata * VJ、映像特化:touchDesigner, vvvv, Cinder * その他:Processing, oF といった具合です。 以上、開発環境の紹介でした。