Beyond Interaction ―メディアアートのためのopenFrameworksプログラミング入門
ビー・エヌ・エヌ新社 2010-02-21 |
多摩美などで講師をされている田所 淳先生, 比嘉 了さん, 久保田 晃弘先生によるopenframeworks入門の書籍が発売されます。
題して「Beyond Interaction —メディアアートのためのopenFrameworksプログラミング入門」
単にプログラミングの作法を解説するのではなく、ゴールはメディアアートと設定しているのは珍しいのではないでしょうか。
BNNのサイトの解説–
本書は、インタラクションデザインやメディアアートの現場で現在最も注目されている制作環境、「openFrameworks」の世界初の単独解説書です。openFrameworksというC++のフレームワークを使用して、プログラミングの初歩から高度な応用まで、具体的なサンプルを作成しながら実践的に学んでいくことを目的にしています。プログラミングの経験のない初心者から、メディアアートに興味を持ち自分で何かを作りたいと考えている方、 ProcessingやFlashなど他の環境は経験しているがより強力なプログラミング環境を探し求めている方まで、多くの方々にとって有益な情報を提供しています。
openFrameworks開発者
Zachary Lieberman
openFrameworksは、プログラミング言語C++によるクリエイティブなコーディングのためのツールキットです。アーティストやハッカー、実験者たちが、プログラミングの専門知識がなくても容易にソフトウェアを開発できるように作られました。
openFrameworksの始まりは、2004年に私がニューヨークにあるパーソンズの大学院で教えていたときに遡ります。学生達に、彼等の作品を制作できるように、私自身がアーティストとして使っていたものと同じようなツールを与えたいと思いました。教え始めたばかりの頃は他の教員から「アート学生はコードは学びたがらないよ。ましてやC++なんて」と注意されていました。しかし学生達は間違いを証明してくれました。誰も予知できなかったようなやり方で、学生達はコードを理解し順応しただけでなく、非常にクリエイティブで魅力的な作品を作り出しました。
それ以来openFrameworksのチームは成長しました。今では主要デベロッパーが、Theo Watson、Arturo Castro、私自身の3人になり、デベロッパーチームもますます大きくなっています。またコミュニティも成長してきました。しかし初心者でもすぐに制作が始められるようにという当初の目的は同じです。
教えることと作品を創ることに加え、自分は伝道者として働いていると感じることがあります。私が伝えたいことは、芸術活動は他の科学と同じように一種のリサーチであるということです。企業が未来のプロダクトを作るためのR&D(リサーチ&開発)部門を持つように、芸術活動は人類のための R&Dであり、新しい未来を創造するためのものです。openFrameworksは、この「ラボラトリー(実験室)としてのアート制作」の考えを真剣に取り組む試みです。私たちは研究結果をオープンソースツールとして発表します。これによって、コードはユース・ドリブン(use-driven, 実践を目的としたもの)になります。作品の制作過程で学んだことをツールキットに反映させ、他のユーザーの作品制作に役立ててもらうのです。
もう1つ私が伝道している考えは、DIWO(Do It WithOthers, みんなと一緒に)です。最近、Make magazineやInstructablesなどによってDIY(Do it Yourself)文化が大きく浸透しています。私は、DIYの次はDIWOだと考えています。私たちはopenFrameworksによるハッカーや実験者たちの親密なコミュニティを育てるように努力しています。私たちはオンラインやワークショップ、インフォーマルな集会、実験室などで交流しています。光栄なことに日本でもYCAM(山口情報芸術センター)や九州大学などでいくつかのワークショップを開催する機会に恵まれました。これらのワークショップでは毎回日本のopenFrameworksコミュニティの多様さと熱心さに興奮(エキサイト)させられます。
最後に私が伝えたいことは、アートを作ることは困難なことではないこと、ソフトウェアを作ること、C++を書くことも(そんなには!)難しいことではないこと、そして制作過程をできるだけ楽しむことです。皆さんがこの本をエンジョイし、 openFrameworksを楽しんで頂けることを心から願っています。そしてまだoFコミュニティに参加していない人は、ようこそ!
[翻訳:吉田佐陽子]
—
目次:
はじめに
welcome:Zachary Lieberman
制作環境について/ダウンロードデータについて
第1章 openFrameworks入門
1-1 openFrameworksについて
1-1-1 openFrameworksって何?
1-1-2 openFrameworks開発の歴史
1-1-3 「糊(glue)」としてのopenFrameworks
1-1-4 openFrameworksの特徴—既存のインタラクションを超えて
1-2 作例とコミュニティ
1-2-1 openFrameworksを使用した作品例
1-2-2 openFrameworks情報の入手
1-3 プログラムの入手とインストール
1-3-1 openFrameworks開発のための環境設定
1-3-2 openFrameworksのダウンロード
1-3-3 Xcodeテンプレートの入手
1-3-4 openFrameworksのファイル構成
1-4 サンプルプログラムの起動
1-4-1 サンプルプログラムを起動してみる
Interview 01:The Graffiti Research Lab(G.R.L.)
第2章 openFrameworksプログラミング初級編
2-1 openFrameworksプログラミングを始めよう
2-1-1 この章の流れ
2-2 図形を描く
2-2-1 座標系について
2-2-2 新規プロジェクトを作成する
2-2-3 関数—処理をまとめる
2-2-4 直線を描く—ofLine
2-2-4 四角形を描く—ofRect
2-2-5 円、楕円を描く—ofCircle、ofEllipse
2-2-6 三角形を描く—ofTriangle
2-3 色の設定
2-3-1 コンピュータ上での色の表現
2-3-2 背景色と描画色
2-3-3 色を塗り分ける
2-3-4 透明度の付加
2-4 数値の記憶と計算
2-4-1 数値の計算
2-4-2 変数について
2-4-3 変数を使って図形を描く
2-4-4 画面の幅と高さを取得
2-5 たくさんの図形を一気に描く
2-5-1 繰り返し—for文
2-5-2 規則的に配置する—カウンタ変数を利用した演算
2-5-3 繰り返しを繰り返す
2-6 たくさんの値を記憶する—配列
2-6-1 配列の概念
2-6-2 繰り返しと配列の組み合わせ
2-6-3 乱数の使用
2-7 移動する—アニメーション
2-7-1 図形を移動する
2-7-2 アニメーションのプログラムの構造
2-7-3 物体を直線運動させる
2-8 条件分岐—「もし○○なら××せよ」
2-8-1 もし画面からはみ出たら反対から出現させよ
2-8-2 条件分岐の応用編—壁でバウンドさせる
2-9 たくさんの図形を移動する
2-9-1 たくさんの円を同時に動かす
2-9-2 配列を利用してたくさんの図形をまとめてコントロール
2-10 図形に触れる—インタラクション
2-10-1 インタラクションとは
2-10-2 マウスの位置の検知
2-10-3 マウスによるインタラクション
2-10-4 インタラクションとアニメーションを組み合わせる
2-11 より高度な表現へ
2-11-1 表現に現実味を持たせる
2-11-2 パーティクル—重力と摩擦力を導入
2-11-3 動きの軌跡をフェード
Interview 02:真鍋 大度
第3章 openFrameworksプログラミング中級編
3-1 プロジェクトの構造をより深く理解する
3-1-1 openFrameworksのプロジェクト構造について
3-1-2 openFrameworksとC++の関係
3-1-3 オブジェクト指向プログラミングとは
3-1-4 オブジェクト=属性(プロパティ)+動作(メソッド)
3-1-5 クラス=オブジェクトの設計図
3-1-6 C++でのクラスの作成
3-1-7 ファイルを分割して管理する
3-1-8 UMLクラス図
3-1-9 クラスとしてtestAppを捉え直す
3-1-10 testAppはofBaseAppの子供
3-1-11 openFrameworksプロジェクト構造
3-2 いろいろなメディアを扱う
3-2-1 openFrameworksで扱うことのできるメディア
3-2-2 音を扱う:音とは何か
3-2-3 コンピュータで音を扱うには
3-2-4 波形の生成—ofSoundStream
3-2-5 サウンドの入力—ofSoundStream
3-2-6 サウンドファイルの再生—ofSoundPlayer
3-2-7 画像ファイルを扱う—ofImage
3-2-8 フォントデータを扱う—ofTrueTypeFont
3-2-9 動画の再生—ofVideoPlayer
3-2-10 動画のキャプチャ—ofVideoGrabber
3-3 OOOF:オブジェクト指向oFプログラミング
3-3-1 openFrameworksでオブジェクト指向プログラミング
3-3-2 新規クラスの生成
3-3-3 画面の中心に円を表示する—メソッドの追加 1
3-3-4 円の大きさと場所の初期値を指定する—コンストラクタの作成
3-3-5 円の大きさと場所の情報を取得、設定する—セッターとゲッター
3-3-6 円をアニメーションする—メソッドの追加 2
3-3-7 円が拡大縮小する動きを加える—メソッドの追加 3
3-3-8 画面をクリックすると、どんどん円が増殖する—複数のクラスの生成 1
3-3-9 円をクリックすると、細かな円に分裂する—複数のクラスの生成 2
3-4 アドオンの利用
3-4-1 アドオンとは
3-4-2 アドオンの使用 1—ofxBox2dを使う
3-4-3 アドオンの使用 2—ofxOpenCvを使用する
3-4-4 ofxBox2DとofxOpenCvを組み合せる
3-5 楽器を作る
3-5-1 ここまでの内容を統合する
3-5-2 楽器の構想
3-5-3 楽器の設計
3-5-4 プロジェクトの設計
3-5-5 実装
3-5-6 プロジェクト完成
Interview 03:市川 創太
第4章 openFrameworksプログラミング実践編
4-1 プレイヤーの演奏にリアルタイムに反応するグラフィックス
4-2 被写体の軌跡をビジュアライズ
4-3 物理計算を使ったグラフィックス
4-4 モーフィングのような鏡像
Text:計算によるデザイン(Design by Computations)—インタラクションを超えて
Appendix—Xcodeのテンプレートを使用せずにプロジェクトを作成する方法