67ws 2008.07.16
TRANSCRIPT
ロクナナワークショップ特別企画
開発者 小林茂に学ぶGainerの可能性とActionScriptによる制御の初歩
本日の予定
• 第1部:18:00~19:30– フィジカル・コンピューティング入門– 関連トピックの紹介– Gainerとは– 電子回路の基礎知識
• 第2部:19:50~21:00– AS3からGainerを使ってみる– Funnelとは– 質疑応答
本日のテキスト:+GAINER
+GAINERPhysical Computing with Gainer
GainerBook Labo+くるくる研究室(九天社・2007年)
第1部
• フィジカル・コンピューティング入門• 関連トピックの紹介• Gainerとは• 電子回路の基礎知識
フィジカル・コンピューティングとは?
• ニューヨーク大学の ITP*1でTom Igoeらが中心となって教えているコースの名前
• デザイナーやアーティストが主な対象• PCをブラックボックスとして扱わないで原理原則を教える
•「人間がいかにコンピュータを通してコミュニケーションし得るか?」を考え直す
*1 Interactive Telecommunications Program
Tom Igoe
Making Things TalkPractical Methods for Connecting Physical Objects
Tom Igoe(O’Reilly Media・2007年)
ITP:ITP Spring Show 2008
概要:
• ITPで学ぶ学生の展覧会で毎年2回開催• 5月12日から13日まで開催• http://itp.nyu.edu/shows/spring2008/
フィジカル・コンピューティングとは?
一般的なPCから見た人間は?
• キー情報(ASCIIキーボードから)• マウス情報(1つのマウスから)
Alto (1973)
出典:http://toastytech.com/guis/
フィジカル・コンピューティングとは?
• PC+標準入出力デバイスの世界で実現できるインタラクションには限界がある– 人間が直接触れて感じることができない– PCのパラダイムに縛られてしまう
• 統一されたプラットホームならではの良さも勿論ある(例:Flashなどによるウェブ上での表現)
フィジカル・コンピューティングとは?
• 物理的な入出力を活用することによって表現力は拡大する(例:Nintendo Wii)
• 電子楽器などではずいぶん昔からのテーマ
フィジカル・コンピューティングの構成要素
• センサー(例:光、圧力、音、温度、加速度など)• アクチュエータ(例:LED、モータ、ソレノイドなど)• プロセッサ(例:マイコン、I/Oモジュール+PCなど)
→ものすごく簡単にまとめると プログラミング+電子工作
プログラミング+電子工作?
フィジカル・コンピューティングは難しい?
• プログラミングはそれなりのスキルが必要(例:ActionScript、C、C++、Javaなど)• 電子工作にもそれなりのスキルが必要(例:回路設計、実装、検証)• 両方のスキルが必要ということは…
プログラミング+電子工作?
フィジカル・コンピューティングは難しい?
• 確かに習得するまでにはそれなりの努力が必要• できあがった結果は直接的に人間の感覚に訴えるものになる(はず)
プログラミング+電子工作?
最近では扱いやすいプラットホームが登場→「ハードウェアでスケッチ」が可能に
• プログラミング– Processing– Flash
• 電子回路のプロトタイピング– Gainer– Arduino– Phidgets
関連トピック:Sketching in Hardware 2
概要:
• プロトタイピングにフォーカスした会議• 2007.6.23~24の二日間開催• 参加者は約30名• 全員が発表• 濃密な情報交換とコミュニティ作り• 最後に「Sketching in Hardware」を実践
関連トピック:Sketching in Hardware 2
関連トピック:Sketching in Hardware 2
関連トピック:Sketching in Hardware 2
関連トピック:Sketching in Hardware 2
関連トピック:Sketching in Hardware 2
関連トピック:Sketching in Hardware 2
関連トピック:Sketching in Hardware 2
フィジカル・コンピューティングの実現方法
マイコンのみ(例:PIC、AVR)a
b
c
d
A
B
C
D
マイコンmicrocontroller
program
a0]=ain.o;aout.1 = 255;
フィジカル・コンピューティングの実現方法
マイコン+PC(例:Arduino)a
b
c
d
A
B
C
D
マイコンmicrocontroller
PC
USB
program
a0]=ain.o;aout.1 = 255;
program
a0]=ain.o;aout.1 = 255;
Arduino
フィジカル・コンピューティングの実現方法
I/Oモジュール+PC(例:Gainer、Phidgets)a
b
c
d
A
B
C
D
I/OモジュールI/O module
PC
USB
program
a0]=ain.o;aout.1 = 255;
Phidgets
ワークショップの紹介
HELLO!!フィジカルコンピューティング
• 日時:2007.12.22-23• 場所:山口情報芸術センター• 参加者:19名• 言語:日本語• 環境:Processing×Funnel×Gainer I/O
作品紹介1:Haohao table
概要:
• 遠藤孝則+原田克彦+増田一太郎• メディアインスタレーション• 製作期間は約3週間• NTT InterCommunication Center [ICC]で展示(2006.6.6-2008.3.11)
作品紹介1:Haohao table
写真提供:ICC
作品紹介1:Haohao table
画像提供:増田一太郎
作品紹介1:Haohao table
写真提供:原田克彦
作品紹介1:Haohao table
超音波センサ1
超音波センサ2
超音波センサ5
超音波センサ6
I/O PC
プロジェクタ
USB
VGA
プランター内部 バックヤード
センサのオン/オフ
アナログ出力
作品紹介2:ゲイナーカイダン
概要:
• メディアインスタレーション• 製作期間は約1ヵ月• NTT InterCommunication Center [ICC]で展示(2007.4.19-2008.3.9)
•「インタラクティヴ年表2008」としてリメイク
作品紹介2:ゲイナーカイダン(オリジナル版)
写真撮影:萩原健一
作品紹介2:ゲイナーカイダン(オリジナル版)
写真撮影:萩原健一
作品紹介2:ゲイナーカイダン(オリジナル版)
写真撮影:萩原健一
作品紹介2:ゲイナーカイダン(オリジナル版)
写真撮影:萩原健一
作品紹介2:ゲイナーカイダン
CdSセル
レーザーモジュールI/Oモジュール
アクチュエータユニット
ACソレノイド
SSR
AC電源へ
作品紹介2:ゲイナーカイダン
作品紹介2:ゲイナーカイダン(拡張版)
写真提供:ICC
作品紹介2:ゲイナーカイダン(拡張版)
写真提供:ICC
作品紹介2:ゲイナーカイダン(拡張版)
写真提供:ICC
作品紹介3:Mountain Guitar
• 金箱淳一(大学院6期生)• 音楽表現のためのギター型インタフェース
– 親しみやすさ– 演奏の奥深さ
• 各種センサ+ I/Oモジュール+PC• IAMAS東京展「いまからだ」などで展示• 学生CGコンテストなど複数で受賞
作品紹介3:Mountain Guitar(スケッチ)
作品紹介3:Mountain Guitar(1号)
作品紹介3:Mountain Guitar(2号)
作品紹介3:Mountain Guitar(2号の製作中)
作品紹介3:Mountain Guitar(3号)
作品紹介3:Mountain Guitar(4号)
作品紹介3:Mountain Guitar(4号の製作中)
作品紹介3:Mountain Guitar(4号の配線)
作品紹介3:Mountain Guitar(5号)
作品紹介3:Mountain Guitar(5号の内部)
作品紹介3:Mountain Guitar(展示)
• リンツ(オーストリア)アルスエレクトロニカフェスティバル
• 青山(東京)IAMAS東京展「いまからだ」
作品紹介3:Mountain Guitar(展示)
作品紹介3:Mountain Guitar(展示)
作品紹介4:みくまりねその3
• 柏木恵美子(アカデミー11期生)• メディアインスタレーション• 水に関するオノマトペが題材• 水道の蛇口がインタフェース• IAMAS東京展「いまからだ」で展示(2007.8.24-26)
関連トピック:ものづくりの新しい流れ
• Make– Make Magazine– Make Blog– Maker Faire
• Fashioning Technology
関連トピック:Make Magazine
Make: Technology on Your Time Volume 04オライリー・ジャパン編(オライリー・ジャパン・2008年)
関連トピック:Fashioning Technology
Fashioning TechnologyA DIY Intro to Smart Crafting
Syuzi Pakhchyan(O’Reilly Media・2008年)
関連トピック:パーソナルファブリケーション
ものづくり革命パーソナル・ファブリケーションの夜明け
ニール・ガーシェンフェルド(ソフトバンククリエイティブ・2006年)
関連トピック:パーソナルファブリケーション
大量生産→個人が欲しいものを自分で作る時代へ
• 加工機械の低価格化– 切削加工機– 3Dプリンタ– レーザーカッタ– いずれは基板プリンタも…
• マイコンの高性能化&モジュール化• さまざまなツールキットの充実
Gainerとは?
オープンソース・ハード&ソフトのツールキット
• I/Oモジュール• ソフトウェア・ライブラリ
– ActionScript 2/3– Processing– Max/MSP
Gainer I/Oモジュール
I/Oモジュール+ブレッドボード
さまざまな電子部品
I/Oモジュール+ブレッドボード+部品
入力:曲げ
出力:LEDアレイ
出力:振動モータ
Gainerの紹介
開発の経緯
• 最初は海外製の I/Oモジュールを使ってみた– 誤って部品を壊した時に修理が大変– 入出力の構成が固定されていて応用が難しい
Gainerの紹介
開発の経緯
• 自分たちが欲しいものを自分たちで作ろう• IAMASでPDP*2のメンバーを中心に開発• オープンソース(ハード&ソフト)• 2006年6月にv1.0をリリース
*2 プログラマブル・デバイス・プロジェクト
オープンソースハードウェア
Ginger/Pepper(http://web.mac.com/kuwatay/)
• v1.0をベースにリデザイン• 低価格化を実現
オープンソースソフトウェア
開発コアチーム以外への広がり
• .NET(布留川さん)• Perl(川崎さん)• PureData(EXPRE55.NET)• Python(芝尾さん)• Ruby(加藤さん)• Squeak(横川さん)
Gainerの特徴
• ブレッドボードとの組み合わによりさまざまな構成を自由に試行錯誤できる
• 入出力の設定をある程度自由に選択できる• 特定の目的のための構成も用意されている
– マトリクスLEDの制御• レシピとサンプルが豊富にある
レシピの例:aout 0にLEDを接続(回路図)
レシピの例:aout 0にLEDを接続(配線図)
レシピの例:ain 0にボリュームを接続(回路図)
レシピの例:ain 0にボリュームを接続(配線図)
レシピの例:ain 0に光センサを接続(回路図)
レシピの例:ain 0に光センサを接続(配線図)
レシピの例:ain 0に圧力センサを接続(回路図)
レシピの例:ain 0に圧力センサを接続(配線図)
電圧~電流~抵抗
電気の流れは水の流れのようなもの
• 電圧– 2点間の高度(電位)の違い– 基準点が必要(GND)– 単位はボルト(V)
電圧のイメージ図
低高
電圧~電流~抵抗
電気の流れは水の流れのようなもの
• 電流– 電圧の高いところから低いところに流れる– 単位はアンペア(A)
電流のイメージ図
少多
電圧~電流~抵抗
電気の流れは水の流れのようなもの
• 抵抗– 電流の流れにくさ– 単位はオーム(Ω)
抵抗のイメージ図
低 高
電圧~電流~抵抗
よく出てくる補助単位の例
• 1,000倍を表すキロ(例:1kΩ)• 1,000,000倍を表すメガ(例:1MΩ)• 1
1,000を表すミリ(例:1mA)• 1
1,000,000を表すマイクロ(例:50µA)
回路図ってなに?
回路図ってなに?
回路図は電子回路の設計図
• シンボルで表した電子部品の接続を示したもの• シンボルに若干のバリエーションはあるが、基本的には全世界共通
電源の回路図シンボル
+5V GND
スイッチの回路図シンボルと部品例
抵抗器の回路図シンボルと部品例
可変抵抗器の回路図シンボルと部品例
LEDの回路図シンボルと部品例
ブレッドボードってなに?
• 部品の足を穴にさすことで電子回路を形成• はんだ付け不要
– 部品を再利用できる– 回路を組み間違えてもやり直しできる– 耐久性にはやや注意が必要
ブレッドボードの構造
• 横方向のブロックは背面で接続• 縦方向のブロックは未接続• 電源用のエリアは専用に用意されている
実習:LEDを点灯させてみよう
LEDを点灯させてみよう
どうして抵抗器が必要なの?
• LEDには適切な電流の範囲がある(例:20mA)• その範囲を超えると簡単に焼き切れてしまう• 適切な値の抵抗器を用いて電流を制限する• 適切な抵抗値はどうやって求める?→オームの法則を用いて計算する
※抵抗器で電流を制限する方法が全てではありません
オームの法則
電圧~電流~抵抗の関係
V = I × R
• Vは電圧で単位はV(ボルト)• Iは電流で単位はA(アンペア)• Rは抵抗で単位はΩ(オーム)
オームの法則
電源電圧− LEDの電圧 = LEDに流したい電流× R
Rを求めるためにこの式を変形
R =電源電圧− LEDの電圧LEDに流したい電流
例:電源電圧が5.0V、LEDの電圧が1.8V、電流が10mA
R =5 − 1.8
0.01=
3.2
0.01= ?
※実際には計算結果に近い値の抵抗器を用いる
例:LEDを点灯させてみる
参考:ジャンプワイヤの色分け
• 赤:電源の+側(+5V)• 黒:電源のー側(GND)• 白・青・黄:センサとの接続など
例:LEDを点灯させてみる(NG)
の方向が違うワイヤをさす位置が違う
にささっていない
実習:LEDをスイッチでオン/オフさせてみる
実習:LEDをスイッチでオン/オフさせてみる
7
第2部:19:50~21:00
• AS3からGainerを使ってみる• Funnelとは• 質疑応答
Gainer I/Oの入力について
入力には2種類ある
• デジタル入力(din:0か1かの2段階)– スイッチなど– 状態がシンプルで取扱が簡単
• アナログ入力(ain:0~255の256段階)– 出力電圧が変化するセンサなど– 連続変化を扱うことができる
デジタル入力:din 0にスイッチを接続
デジタル入力:din 0にスイッチを接続
アナログ入力:ain 0にボリュームを接続
アナログ入力:ain 0にボリュームを接続
アナログ入力:ain 0にボリュームを接続
• ボリュームを回して変化を確認• ain 1~3が不安定なのはなぜ?• どうしてボリュームを回すと電圧が変わるの?
アナログ入力:抵抗分圧
アナログ入力:抵抗分圧
アナログ入力:ain 0に光センサを接続
アナログ入力:ain 0に光センサを接続
アナログ入力:ain 0に距離センサを接続
アナログ入力:ain 0に距離センサを接続
アナログ入力:ainに加速度センサを接続
アナログ入力:ainに加速度センサを接続
アナログ入力:加速度センサの用途
• 動きの検出• 傾きの検出→なぜ加速度センサで傾きが検出できるの?
アナログ入力:傾きを検出する原理
アナログ入力:センサの出力から角度を求める
• フィルタで細かい動きを取り除く• -1から+1までにスケーリングする• 逆sin関数を用いて角度に変換する• 必要に応じてラジアンから度に変換する
Gainer I/Oの出力について
出力には2種類ある
• デジタル出力(dout:0か1かの2段階)– LED、モータなど– 状態がシンプルで取扱が簡単
• アナログ出力(aout:0~255の256段階)*3– LED、モータなど– 連続的な変化を扱うことができる
*3 実際にはPWMによる疑似アナログ出力
デジタル出力:dout 0にLEDを接続
デジタル出力:dout 0にLEDを接続
アナログ出力:aout 0にLEDを接続
アナログ出力:aout 0にLEDを接続
Funnelとは?:背景
• Gainerはいわばシンプルなドライバ→複雑な現実世界を扱うにはもう少し高次の レベルが必要なのでは?
• 全ての用途をカバーできるツールキットはない→ツールキットの使い分けは容易ではない
• 有線接続だと体験に制限がでてしまう→簡単に利用できる無線接続が必要
Funnelとは?:コンセプト
• スケッチからプロトタイプまでシームレスに使えるツールキット
• デザイナー/アーティストとエンジニアの「共通言語」を目指す
※2007年第 I期未踏ソフトウェア創造事業
Funnelとは?:関連
Sketching User ExperiencesGetting the Design Right and the Right Design
Bill Buxton(Morgan Kaufmann Pub・2007年)
Funnelとは?:関連
Funnelの特徴
• 疑似コード風のコーディング• 入出力をより簡単に扱うためのフィルタ
– ローパス、ハイパス– アナログ入力を設定した閾値で分割– スケーリング– オシレータ
• 複数の I/Oモジュールに対応
Funnelの構成
USB XBeeDongle
GainerI/O Module
Arduino(with Firmata)
USB XBeeDongle
Funnel Server
ActionScript 3 Processing Max/MSPetc.Ruby
AS3 Library Processing Library OSC LibrariesRuby Library
Funnel I/OMaxStreamXBee
Funnel I/OMaxStreamXBee
Funnel I/O Module
Funnel I/O Module
Funnel I/O Module
Funnel I/O Module
Funnelの特徴
• 複数の I/Oモジュールに対応– Gainer– Arduino– XBee– Funnel I/O
• ソフトウェア・ライブラリ– Processing– ActionScript 3(FlashまたはFlex)– Ruby
デモ:action-coding×Funnel×Gainer I/O
action-codingとは?
• 開発者:増田一太郎(株式会社メタファー)• JRubyからProcessing APIを利用• プログラムの動的な書き換え• ライブコーディングのための環境→スケッチにも
デモ:action-coding×Funnel×Gainer I/O
センサ入力でグラフィックをコントロール
• ボタン• ボリューム
デモ:action-coding×Funnel×Gainer I/O
オシレータ
• LEDをチカチカ点滅• LEDをふわふわ点滅• 点滅の周期を変える
デモ:Flash CS3×Funnel×Gainer I/O
キー入力をボタン入力に置換え
• サンプルを開く• Funnel用のコードを追加する
デモ:action-coding×Funnel×Funnel I/O
加速度センサの値をワイヤレスで取得
• Funnel I/Oに加速度センサを接続• 3軸のグラフをスケッチで表示
GainerとFunnelの使い分け
• Gainerはシンプルで情報も豊富• Funnelはカバーする範囲が広い• Gainerで入門して基本的なスキルを身につけてからFunnelを使うのがおすすめ
参考書籍
はじめてのGainerプログラミングガイド布留川英一(工学社・2008年)
参考書籍
Making Things TalkPractical Methods for Connecting Physical Objects
Tom Igoe(O’Reilly Media・2007年)
参考書籍
Built with Processing [改訂版]デザイン/アートのためのプログラミング入門
前川峻志+田中孝太郎(ビー・エヌ・エヌ新社・2008年)
参考書籍
ProcessingA Programming Handbook for Visual Designers and Artists
Casey Reas + Ben Fry(MIT Press・2007年)
参考書籍
デザイン思考の道具箱イノベーションを生む会社のつくり方
奥出直人(早川書房・2007年)
おわりに今後携帯電話は、人々にとってどのような存在になるのか?あんなに小さなキーを押して長いメールの文章をやり取りするなどということは誰も想像ができなかったと思います。携帯情報機器の進化は人間が持ち合わせた機能やセンサーの優秀さや精密さをあらためて人間に教えてくれます。予想もできなかった人間の隠された能力や機能がこのような電子機器によって露になるということがいえます。 これからの驚きは、機械の進化ではなく、それを使いこなす人間の機能に気づくことだと思います。
深澤直人(携帯電話のデザインロジック・2008年)
ロクナナワークショップ特別企画
開発者 小林茂に学ぶGainerの可能性とActionScriptによる制御の初歩