狠狠撸

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

More Related Content

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