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

3,620 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,620
On SlideShare
0
From Embeds
0
Number of Embeds
143
Actions
Shares
0
Downloads
69
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. 私はいかに Ruby で メディア・アート作品 をつくり,しかも一円 も損をしなかったか <ul><ul><li>メディア・アーティスト , </li></ul></ul><ul><ul><li>独立行政法人 産業技術総合研究所 , </li></ul></ul><ul><ul><li>東京大学大学院 情報理工学研究科 </li></ul></ul>江渡浩一郎 How I Made Media Artworks with Ruby and Never Lost a Yen Kouichirou Eto, AIST, u-tokyo, Media Artist, Rubyist.
  2. 2. アジェンダ <ul><li>メディア・アート作品の制作に Ruby を活用 </li></ul><ul><li>Perl + Java による開発の時代 </li></ul><ul><li>Ruby による開発, 2 つの実例 </li></ul><ul><li>Ruby を用いた教育の実践 </li></ul><ul><li>制作した作品の実演 </li></ul>
  3. 3. タイトルの説明 <ul><li>「私はいかにハリウッドで 100 本の映画をつくり,しかも 10 セントも損をしなかったか」ロジャー・コーマン自伝 </li></ul><ul><li>タイトルはこの本からのパクリです </li></ul>
  4. 4. WebHopper (1996) <ul><li>Web ブラウジングの軌跡を世界地図上で視覚化 </li></ul>
  5. 5. Perl バックエンド + Java アプレット <ul><li>サーバ側は Perl ,クライアントは Java で記述 </li></ul><ul><li>WIDE プロジェクトの海外回線を tcpdump した </li></ul><ul><li>tcpdump -> ip2fqdn -> fqdn2zip -> zip2latlong </li></ul><ul><li>ドメイン名の逆引きを非同期化する必要があった </li></ul><ul><li>ドメイン名から緯度経度への情報は mSQL に保管 </li></ul><ul><li>Perl5 で DBI+DBD を利用 </li></ul>
  6. 6. Perl の問題点 <ul><li>サーバ側の処理もだんだんと複雑化してくる </li></ul><ul><li>Perl は Thread が無いので非同期処理が面倒 </li></ul><ul><li>Perl でこみいったプログラムを書くのはもう限界 </li></ul><ul><li>Perl でオブジェクト指向を学ぶのは不可能 </li></ul>
  7. 7. Java の問題点 <ul><li>Java applet は制約が大きく表現力が足りない </li></ul><ul><li>OpenGL を使いたい場合はどうすればいいの ? </li></ul><ul><li>Java の世界は閉じてて拡張するのが難しい </li></ul><ul><li>サーバサイド Java としても当時はまだ未成熟 </li></ul>
  8. 8. 二つの異なるプログラミングモデル <ul><li>二つの異なるプログラミング言語 </li></ul><ul><li>つまり,二つの異なるプログラミングモデル </li></ul><ul><li>どちらも細かいところまで知っておく必要がある </li></ul><ul><li>どちらもバッドノウハウの固まりである </li></ul><ul><li>両者の併用は手間が二倍になる </li></ul>
  9. 9. 理想のプログラミング言語を求めて <ul><li>1999 年,理想のプログラミング言語を探し始める </li></ul><ul><li>Scheme, JPython, Python, Ruby </li></ul><ul><li>とにかく使ってみて考えた </li></ul><ul><li>最後に生き残ったのは Ruby だった </li></ul><ul><li>何が決め手だったのか思い出すのは難しい </li></ul><ul><li>日本語,英語の文化圏の違い ? </li></ul><ul><li>コミュニティが決め手だったように感じる </li></ul><ul><li>2001 年, Ruby を本番へ投入し始めた </li></ul>
  10. 10. <ul><li>お台場 日本科学未来館における常設展示物 </li></ul><ul><li>転がる玉でインターネットの仕組みを表現 </li></ul>インターネット物理モデル (2001)
  11. 11. パケットを作って送ってみよう 送信機 パケットを作る 表示器 中身を表示する ルータ ルーティングする
  12. 12. インターネット物理モデルの実装 (2001) <ul><li>実装に使えた期 間は 1 週間程度だった </li></ul><ul><li>I2C バスで全体を接続, 1 台の PC で全体を制御 </li></ul><ul><li>DeVaSys 社 USB I2C/IO を使って PC から接続 </li></ul><ul><li>VB と VC のサンプルコードしか手元に無い </li></ul><ul><li>少しでも間違った信号を送ると全体がハング </li></ul><ul><li>Ruby+Win32API を使って全体を制御した </li></ul><ul><li>require &quot;win32api&quot; 最強伝説の誕生 </li></ul>
  13. 13. くまうた (2003) <ul><li>くまに演歌を 教えます </li></ul><ul><li>演歌を自動生成 </li></ul><ul><li>SCEI , 2003 </li></ul>
  14. 14. 「くまうた」はどんなゲームか <ul><li>2003 年に SCEI から発売した PS2 用のゲーム </li></ul><ul><li>あなたは引退した元演歌歌手です </li></ul><ul><li>宇宙からくまがやってきて,弟子入りします </li></ul><ul><li>あなたはくまに 演歌の心を教えます </li></ul><ul><li>くまを立派な演歌歌手 に育てるのが目標です </li></ul><ul><li>つまり一種の育てゲー </li></ul>
  15. 15. どのようにゲームが進んでいくか <ul><li>くまはあなたの家に居候しています </li></ul><ul><li>くまは勝手に作詩してきます ( 自動作詩 ) </li></ul><ul><li>気にいらない個所を指摘します </li></ul><ul><li>くまはその個所を直してきます </li></ul><ul><li>良い歌詞ができるまでそれを繰り返します </li></ul><ul><li>くまに新しい言葉を教えることもできます </li></ul><ul><li>歌詞が完成したらくまが歌います </li></ul><ul><li>曲は勝手にくまが作曲します ( 自動作曲 ) </li></ul>
  16. 16. くまうた自動作曲部分の実装 (2001) <ul><li>私の担当 : 演歌の自動作曲の部分 </li></ul><ul><li>自動作詩された歌詞に対応したメロディーを生成 </li></ul><ul><li>3444 などの音韻数に対して音符を合わせる </li></ul><ul><li>メロディーに対して背景をつける </li></ul><ul><li>最後に「おかず」をつけて出来上がり </li></ul><ul><li>Ruby で実装 -> Sony 社員が C++ に変換 </li></ul><ul><li>直接 PS2 で Ruby を動かしたかったが無理だった </li></ul>
  17. 17. sgl: simple generic library require 'sgl' window 100,100 # 100x100 のウィンドウ生成 background 100,100,0 # 背景に黄色を指定 color 0,0,100 # 描画色に青を指定 rect 20,20,80,80 # 四角を描く wait
  18. 18. インタラ クティブ な表現 <ul><li>四隅から カーソルへ 線を引く </li></ul>require 'sgl' def setup window -200,-200,200,200 end 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, y end mainloop
  19. 19. 美大生のためのプログラミング環境 <ul><li>美大でのプログラミング教育のために作成した </li></ul><ul><li>ex. 多摩美情報デザイン学科 , 芸大先端芸術表現科 </li></ul><ul><li>動的なグラフィックを簡単に作れる </li></ul><ul><li>Ruby/SDL + OpenGL のラッパとして実装 </li></ul><ul><li>simple graphics library -> simple generic library </li></ul>
  20. 20. 自分自身の作品制作の基盤として <ul><li>インタラクティブなグラフィックスの実験 </li></ul><ul><li>百本の線がテーマ </li></ul><ul><li>動きに応じて音を再生 </li></ul>
  21. 21. 実演
  22. 22. Thank you <ul><li>Special thanks to: </li></ul><ul><li>Ruby! </li></ul><ul><li>Ruby/SDL and Ruby/OpenGL </li></ul><ul><li>Ruby/Win32API and bass.dll </li></ul><ul><li>rubymidi and VisualuRuby </li></ul>

×