22
私私私私私 Ruby 私 私私私私 私私私私私 私私私私 私私私私 私 ,一 私私私私私私私私私 私私私私 私私私私私私 , 私私私私私私 私私私私私私私私私 , 私私私私私私私 私私私私私私私私 私私私 How I Made Media Artworks with Ruby and Never Lost a Yen Kouichirou Eto, AIST, u-tokyo, Media Artist, Rubyist.

How I Made Media Artworks with Ruby and Never Lost a Yen

Embed Size (px)

Citation preview

Page 1: How I Made Media Artworks with Ruby and Never Lost a Yen

私はいかに Rubyでメディア・アート作品をつくり,しかも一円も損をしなかったかメディア・アーティスト ,

独立行政法人 産業技術総合研究所 , 東京大学大学院 情報理工学研究科江渡浩一郎

How I Made Media Artworks with Ruby and Never Lost a Yen

Kouichirou Eto, AIST, u-tokyo, Media Artist, Rubyist.

Page 2: How I Made Media Artworks with Ruby and Never Lost a Yen

アジェンダメディア・アート作品の制作に Rubyを活用Perl + Javaによる開発の時代Rubyによる開発, 2つの実例Rubyを用いた教育の実践制作した作品の実演

Page 3: How I Made Media Artworks with Ruby and Never Lost a Yen

タイトルの説明

「私はいかにハリウッドで 100本の映画をつくり,しかも 10セントも損をしなかったか」ロジャー・コーマン自伝

タイトルはこの本からのパクリです

Page 4: How I Made Media Artworks with Ruby and Never Lost a Yen

WebHopper (1996)WebHopper (1996)

WebWebブラウジングの軌跡を世界地図上で視覚化ブラウジングの軌跡を世界地図上で視覚化

Page 5: How I Made Media Artworks with Ruby and Never Lost a Yen

Perl バックエンド + Javaアプレット

サーバ側は Perl,クライアントは Javaで記述WIDEプロジェクトの海外回線を tcpdumpした

tcpdump → ip2fqdn → fqdn2zip → zip2latlong

ドメイン名の逆引きを非同期化する必要があった

ドメイン名から緯度経度への情報はmSQLに保管

Perl5で DBI+DBDを利用

Page 6: How I Made Media Artworks with Ruby and Never Lost a Yen

Perlの問題点

サーバ側の処理もだんだんと複雑化してくるPerlは Threadが無いので非同期処理が面倒Perlでこみいったプログラムを書くのはもう限界

Perlでオブジェクト指向を学ぶのは不可能

Page 7: How I Made Media Artworks with Ruby and Never Lost a Yen

Javaの問題点

Java appletは制約が大きく表現力が足りないOpenGLを使いたい場合はどうすればいいの ?

Javaの世界は閉じてて拡張するのが難しいサーバサイド Javaとしても当時はまだ未成熟

Page 8: How I Made Media Artworks with Ruby and Never Lost a Yen

二つの異なるプログラミングモデル

二つの異なるプログラミング言語つまり,二つの異なるプログラミングモデルどちらも細かいところまで知っておく必要がある

どちらもバッドノウハウの固まりである両者の併用は手間が二倍になる

Page 9: How I Made Media Artworks with Ruby and Never Lost a Yen

理想のプログラミング言語を求めて

1999年,理想のプログラミング言語を探し始める

Scheme, JPython, Python, Ruby

とにかく使ってみて考えた最後に生き残ったのは Rubyだった何が決め手だったのか思い出すのは難しい日本語,英語の文化圏の違い ?

コミュニティが決め手だったように感じる2001年, Rubyを本番へ投入し始めた

Page 10: How I Made Media Artworks with Ruby and Never Lost a Yen

お台場 日本科学未来館における常設展示物転がる玉でインターネットの仕組みを表現

インターネット物理モデル (2001)

Page 11: How I Made Media Artworks with Ruby and Never Lost a Yen

パケットを作って送ってみようパケットを作って送ってみよう

送信機送信機パケットを作るパケットを作る

表示器表示器中身を表示する中身を表示する

ルータルータルーティングするルーティングする

Page 12: How I Made Media Artworks with Ruby and Never Lost a Yen

インターネット物理モデルの実装 (2001)

実装に使えた期間は 1週間程度だったI2Cバスで全体を接続, 1台の PCで全体を制御DeVaSys 社 USB I2C/IOを使って PCから接続VBと VCのサンプルコードしか手元に無い少しでも間違った信号を送ると全体がハングRuby+Win32APIを使って全体を制御したrequire "win32api" 最強伝説の誕生

Page 13: How I Made Media Artworks with Ruby and Never Lost a Yen

くまうた くまうた(2003)(2003)

くまに演歌をくまに演歌を教えます教えます

演歌を自動生成演歌を自動生成SCEISCEI,, 20032003

Page 14: How I Made Media Artworks with Ruby and Never Lost a Yen

「くまうた」はどんなゲームか

2003年に SCEIから発売した PS2用のゲームあなたは引退した元演歌歌手です宇宙からくまがやってきて,弟子入りしますあなたはくまに演歌の心を教えます

くまを立派な演歌歌手に育てるのが目標です

つまり一種の育てゲー

Page 15: How I Made Media Artworks with Ruby and Never Lost a Yen

どのようにゲームが進んでいくか

くまはあなたの家に居候しています くまは勝手に作詩してきます (自動作詩 )

気にいらない個所を指摘しますくまはその個所を直してきます良い歌詞ができるまでそれを繰り返しますくまに新しい言葉を教えることもできます歌詞が完成したらくまが歌います 曲は勝手にくまが作曲します (自動作曲 )

Page 16: How I Made Media Artworks with Ruby and Never Lost a Yen

くまうた自動作曲部分の実装 (2001)

私の担当 : 演歌の自動作曲の部分自動作詩された歌詞に対応したメロディーを生成

3444などの音韻数に対して音符を合わせるメロディーに対して背景をつける最後に「おかず」をつけて出来上がりRuby →で実装 Sony社員が C++に変換直接 PS2で Rubyを動かしたかったが無理だった

Page 17: How I Made Media Artworks with Ruby and Never Lost a Yen

sgl: simple generic library

require 'sgl'window 100,100 # 100x100のウィンドウ生成background 100,100,0 # 背景に黄色を指定color 0,0,100 # 描画色に青を指定rect 20,20,80,80 # 四角を描くwait

Page 18: How I Made Media Artworks with Ruby and Never Lost a Yen

インタラクティブな表現

require 'sgl'

def setup window -200,-200,200,200end

def display x = mouseX y = mouseY line -200, -200, x, y line 200, -200, x, y line -200, 200, x, y line 200, 200, x, yend

mainloop

四隅からカーソルへ線を引く

Page 19: How I Made Media Artworks with Ruby and Never Lost a Yen

美大生のためのプログラミング環境

美大でのプログラミング教育のために作成したex. 多摩美情報デザイン学科 , 芸大先端芸術表現科

動的なグラフィックを簡単に作れるRuby/SDL + OpenGLのラッパとして実装simple graphics library → simple generic

library

Page 20: How I Made Media Artworks with Ruby and Never Lost a Yen

自分自身の作品制作の基盤として

インタラクティブなグラフィックスの実験百本の線がテーマ動きに応じて音を再生

Page 21: How I Made Media Artworks with Ruby and Never Lost a Yen

実演

Page 22: How I Made Media Artworks with Ruby and Never Lost a Yen

Thank you

Special thanks to:Ruby!

Ruby/SDL and Ruby/OpenGLRuby/Win32API and bass.dllrubymidi and VisualuRuby