ProcessingとJavaの関係は少し面白いものです。
一見、Processingは一つのプログラミング言語のようですが、実はJavaによって書かれたソフトウェアなのです。
Processing上で書かれたコードは、一度Javaに翻訳され、最終的にはJavaアプレットやアプリケーションとしてコンパイルされます。
当然、それだったらなぜJavaを勉強しないのか?という疑問が出てくるでしょう。
しかし、ProcessingとJavaはその記述する量にまず違いがあります。例えば、下のコードを見比べてみて下さい。下のコードは、それぞれ同じグラフィックを表示するコードです。
学生と話をしていてプログラミングの話をすると、急に暗い顔になり、「ああ、苦手」という言葉がよく返ってきます。おそらくその学生たちは、プログラミングの学習の仕方がいまいち分からないのと、その深遠な可能性がまだ見えて来ていないのでしょう。それは、教える側の責任もあると思います。実際、自分も独学でJavaを勉強しようとした時、一度挫折しました。しかし、何年か後にもう一度勉強し直してプログラムができるようになったのです。
ですから、現時点でプログラミングに対する苦手意識がある学生でもいつでもやり直せると考えています。要は、なぜ勉強しなくてはならないのかと、どうやって勉強するのかをもう一度見直せばいいのです。
あともう一つ、プログラミング=数学だと思っている学生も多いでしょう。確かにそうなのですが、数学が苦手でもプログラミングが苦手だとは限りません。実際私も数学は得意ではありません。しかしプログラミングは楽しいと思いました。自身の数学の苦手意識を超える面白さがプログラミングにはあったのだと思います。
ですから、数学が苦手だから無理だ、などという先入観は捨てて、新たな気持ちで臨んでもらえればいいと思います。
プログラミング言語の知識を持っておくということは、例えば建築家が数学の知識があるのと同じようなものだと考えてもいいでしょう。例えば、アートプロジェクトやwebサイト構築などを行なうにしても、実際の現場ではプログラマーとの共同作業という状況が多々あります。その際にプログラミング言語の知識があるのとないのでは大きな違いがあります。プログラミング言語の知識がないアーティストやディレクターの言うことなんて、プログラマーは聞かないでしょう。もしくは仕方なく聞いていても、内心は馬鹿にしているかもしれません。
また、このステップを避けて通ってしまうと、結局はソフトウェアの範囲内でしかものを作れず、既に何年も前に発表された作品の二番煎じ的なものしか作れないのです。自己満足的なことをしたければそれでもいいでしょう。しかし、少なくとも私のこの授業では、新しいメディアアートの可能性を垣間見せてくれる表現者を育てたいと考えています。
ですから、理想的なアプローチとしては、まずアイデアを洗練させ、そのプロジェクトに最適なメディアやプラットフォームを選ぶ。ですから、場合によってはMax/MSP、Flash、Processingでもいいかもしれません。しかし、調べてみたら、これは別の言語(Java、Cなど)を選択しないとアイデアを実現させることが難しいと分かったとします。その際にはそれらの言語を短期間で習得するぐらいの馬力が必要になってきます。要は、様々なアイデアを実現させるために、手持ちの駒を増やしておく必要があるのです。
そのような底力のある学生の育成がこの授業の目的です。
2007年度メディア表現演習III前期は、ProcessigというJavaをベースにした開発環境を使用してプログラミング言語の実習を行ないます。これは、学部3年生のプログラミングの習熟度にばらつきがあるという問題と、インタラクティブアート作品を作るにはプログラムの知識がなければ始まらないのだという問題があるからです。
このような実習を行なうと学生は決まって「Processingを勉強している」と思いがちです。例えば、「最終的にFlashとかMax/MSP使っている学生が多いのに、Processingをやる必要はあるんですか?」という質問をしてきます。
しかし、ここではProcessingを勉強しているのではなく、Processingを使ってプログラミング言語のエッセンスを学習しているのだと認識する必要があります。よって、ここで学習した知識は他の言語(Java, ActionScript, Max/MSP, C, C++, Objective-C, C#など)への応用が可能です。つまり、この実習はメディアアート作品の制作に必要な基礎体力をつける場なのです。
ですから、この授業が目指すものは、最低限のプログラミングの知識さえ確認しておけば後はなんとか自分自身で勉強できるレベルまで持っていくということです。
また、この実習は通常のプログラミング言語実習と違い、表現的な要素(グラフィック、サウンド、インタラクションなど)に重点を置いています。つまり、この実習はプログラミング言語の実習だけでなく、数学的アルゴリズムをどのように表現に置き換えていくかという点が重要な問題となっているのです。
前半は、構成要素を「点」のみに絞って基本的なアルゴリズムの実習と、その表現のバリエーションを追求します。後半はもう少し技術的な要素を広げてサウンド、ネットワーク、画像処理などにも触れ、最終的に一つの作品を完成させる形をとっています。
まずボードの設定は買った時のままでいいです。各部の機能などを説明していると非常に長くなるので、ここでは省きます。気になる人はApplication Board Overviewを読んで下さい。
1. ネットワーク設定の変更
まずは、ネットワーク設定を変更しましょう。まずは1番簡単な方法です。以下のようにネットワーク設定を変更して下さい。
これだけでOKです。
2. Open Sound Controlライブラリのインストール
Processingがインストールされていない人は、公式サイトから最新版をダウンロード及びインストールして下さい。2007年3月現在でver.0124 BETAです。
Processing.orgダウンロードページ
ここでは、Max/MSP等と同じようにOpen Sound Control (OSC)ライブラリを使用します。ダウンロードし解凍しProcessingフォルダに移動して下さい。
Open Sound Control for Processing (oscP5)公式サイト
oscP5ダウンロード
libraryフォルダ —> フォルダ名を「oscP5」に変更してProcessing 0124/librariesフォルダへ
examplesフォルダ —> フォルダ名を「oscP5」に変更してProcessing 0124/examplesフォルダへ
3. Processingでのテスト(LEDのコントロール)
led_control.txtファイルをコピペして、processingの新しいファイルにコピーして下さい。
led_control.txt
14行目の、
makeControllerAddress = new NetAddress(“192.168.0.200″, 10000);
ですが、”192.168.0.200″はボードのIPアドレスを指し、”10000″はポート番号を指します。
Processingのプログラムを起動させて下さい。画面をクリックする度にボードのLEDが点滅します。
4. Processingでのテスト(アナログ入力)
analog_in1.txtファイルをコピペして、processingの新しいファイルにコピーして下さい。
analog_in1.txt
このファイルは、基本的にled_control.txtと同じIPアドレス、ポートの設定になっています。備え付けのTrimpotをぐりぐり動かすと、円の大きさが変化します。
戻る
まずボードの設定は買った時のままでいいです。各部の機能などを説明していると非常に長くなるので、ここでは省きます。気になる人はApplication Board Overviewを読んで下さい。
1. ネットワーク設定の変更
まずは、ネットワーク設定を変更しましょう。まずは1番簡単な方法です。以下のようにネットワーク設定を変更して下さい。
これだけでOKです。
2. Max/MSPサンプルパッチの使用方法
Max/MSPのサンプルパッチ(analog_in.txt)を開きます。
analog_in.txt
これをテキストエディタにコピペし保存し、Maxから開きます。
以下のダイアログが現れます。
このダイアログの下図のオブジェクトの役割は以下の通りです。
「/analogin/7/value」—> アナログ入力の7番の値
「udpsend 192.168.0.200 10000」は一つずつ説明します。
udpsend —> udpというプロトコルを使ってデータを送る。
192.168.0.200 —> ボードのIP
10000 —> パソコンとボードのコミュニケーション用ポート
少し分かりにくいのは、アナログ入力でも、一旦パソコンからボードに信号を送るということです。ここでudpsendというオブジェクトが使われます。
そして、同時にudpreceiveというオブジェクトでセンサーのデータをパソコンが受け取ります。
下図では、udpreceiveオブジェクトが重要です。
udpreceive —> udpというプロトコルを使ってデータを送る。
10000 —> パソコンとボードのコミュニケーション用ポート
MakeCtrl —> 名前は何でもいいが必ずなにか書く必要がある(みたい)。
ポートの番号(ここでは10000)も変えられますが、特に理由がなければこの番号を使っておけば問題ないでしょう。
まずは、パッチの右上のオブジェクトのスイッチを入れて下さい。ボードの緑のLEDが点きます。
これで、パソコンからボードへのメッセージの受け渡しはちゃんと動いています。
つぎはセンサーからのアナログ入力をパソコンに受け渡します。左上のオブジェクトのスイッチを入れて下さい。Pol-Speedは、どの程度頻繁に信号をボードに送るかの設定です。数値が増えるほど間隔が長くなります。ここでは、とりあえず20をクリックして下さい。
Make Controllerは初めからtrimpot(ダイアルみたいな機能の抵抗)があるので、それを使います。以下の画像を参照して下さい。このtrimpotをぐりぐり回してみて下さい。
これで、パッチ上の一番下のボックスに値が入るはずです。
戻る
まずボードの設定は買った時のままでいいです。各部の機能などを説明していると非常に長くなるので、ここでは省きます。気になる人はApplication Board Overviewを読んで下さい。
mc.usbを先ほどのダウンロードページからダウンロードして解凍する。
この3つのファイルの中のmc.usb.helpを開いて下さい。以下のようなダイアログが現れます。
このパッチの左上、下図の”appled/0″は、application led No.0の略で、つまりボードの備え付けのLED 0をON/OFFさせるオブジェクトということになります。
このオブジェクトのスイッチを入れて下さい。ボードの緑のLEDが点きます。
これで、パソコンからボードへのメッセージの受け渡しはちゃんと動いています。
つぎはセンサーからのアナログ入力をパソコンに受け渡します。Make Controllerは初めからtrimpot(ダイアルみたいな機能の抵抗)があるので、それを使います。以下の画像を参照して下さい。
mc.usb.helpのダイアログ内で、右上のオブジェクトである”analogin/7/value”をクリックするたびに、一番下のボックスに0~1024の値が入ります。make controller上のtrimpotをぐりぐり動かして値を変えてみて下さい。
このパッチ右上オブジェクトの「/analogin/7/value」はアナログ入力の7番の値という意味になります。ですから、0番の入力ポートに繋いだら上の「7」のところを「0」に変えることになります。
アナログ入力のポート番号は、application board overviewを参照して下さい。
現在は7番なので、これはボード備え付けのTrimpotの番号です。
また、右下オブジェクトはosc-routeを通してアナログ入力の7番から送られてくる値を表示しています。
戻る
コンピュータと外部インタフェース(センサー、モーターなど)の接続によるデバイス/ガジェットの制作は、初心者にとっては結構敷居が高いのですが、ここでは比較的簡単に利用できる環境を紹介しようと思います。
日本製のものもいくつかありますが、Make ControllerとPhidgetsがかなり使い勝手がいいようです。
Phidgets入門
Making Things (Make Controller Site) (英語)
Make Controllerのマニュアル関連サイト(英語)
コンピュータと外部インタフェース(センサー、モーターなど)の接続によるデバイス/ガジェットの制作は、初心者にとっては結構敷居が高いのですが、ここでは比較的簡単に利用できる環境を紹介しようと思います。
日本製のものもいくつかありますが、僕が知っている限りはPhidgetsとMake Controllerがかなり使い勝手がいいようです。特にPhidgetsはセンサー自体ももとからこのインタフェース用に作られたものなので、電子工作の知識が全くなくてもセンサーが使えます(その分センサーは割高ですが)。もちろん、自作センサーも付けられます。
これらのインタフェースの問題は、日本語の解説書があまりないということです。ということで、この文章は主にメディアアート作品を作りたい学生向けの入門書です。