Beyond Interaction ―メディアアートのためのopenFrameworksプログラミング入門

Beyond Interaction ―メディアアートのためのopenFrameworksプログラミング入門本書は、インタラクションデザインやメディアアートの現場で現在最も注目されている制作環境、「openFrameworks」の世界初の単独解説書です。openFrameworksというC++のフレームワークを使用して、プログラミングの初歩から高度な応用まで、具体的なサンプルを作成しながら実践的に学んでいくことを目的にしています。プログラミングの経験のない初心者から、メディアアートに興味を持ち自分で何かを作りたいと考えている方、ProcessingやFlashなど他の環境は経験しているがより強力なプログラミング環境を探し求めている方まで、多くの方々にとって有益な情報を提供しています。
このエントリーをはてなブックマークに追加

ISBN:978-4-86100-670-8
定価:3,570円(本体3,400円+税)
仕様:304ページ/B5判/オールカラー
発売日:2010年2月24日
著者:田所 淳・比嘉 了・久保田晃弘

amazon.co.jpで購入する

正誤表

Beyond Interaction - PDF edition(8.8 MB)
本書と同内容のPDF版。CCライセンス(CC-BY-NC-SA)

GitHub
v0073に対応した本書のサンプルコード



welcome

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 With Others, みんなと一緒に)です。最近、Make magazineやInstructablesなどによってDIY(Do it Yourself)文化が大きく浸透しています。私は、DIYの次はDIWOだと考えています。私たちはopenFrameworksによるハッカーや実験者たちの親密なコミュニティを育てるように努力しています。私たちはオンラインやワークショップ、インフォーマルな集会、実験室などで交流しています。光栄なことに日本でもYCAM(山口情報芸術センター)や九州大学などでいくつかのワークショップを開催する機会に恵まれました。これらのワークショップでは毎回日本のopenFrameworksコミュニティの多様さと熱心さに興奮(エキサイト)させられます。

最後に私が伝えたいことは、アートを作ることは困難なことではないこと、ソフトウェアを作ること、C++を書くことも(そんなには!)難しいことではないこと、そして制作過程をできるだけ楽しむことです。皆さんがこの本をエンジョイし、 openFrameworksを楽しんで頂けることを心から願っています。そしてまだoFコミュニティに参加していない人は、ようこそ!

[翻訳:吉田佐陽子]

openFrameworks is a toolkit for creative coding in C++, designed to help artists, hackers, and experimenters jump in and make software with minimal overhead.

It began in 2004, when I was teaching a group of graduate students at Parsons School of Design in New York City, and I wanted to give them a set of tools, similar to the kinds of tools I was using as a practicing artist, to make their work with. I had just started teaching and other professors warned me, Art students aren’t going to want to learn coding, and definitely not with C++. However, my students proved them wrong. Not only were they able to understand and jump in to the code in a way no one could never have predicted, they were able to make great, creative, compelling works.

Since those early days, the openFrameworks team has grown. We are now three core developers: Theo Watson, Arturo Castro and myself, and work with an ever larger development team. The OF community has also grown, but the roots of openFrameworks - a tool designed to help beginners get up and running has always stayed the same.

In addition to teaching and making artwork, I sometimes feel that I am also working as a preacher. One thing that I often preach is that artistic practice is a form research, just like the other sciences. In the way that a company would have a R&D (research and development) department, to develop products of the future, artistic practice is a form of R&D for humanity, imaging possible futures. openFrameworks is an attempt to take this idea of “art making as laboratory” seriously -- we publish our research in the form of open source tools. In that way, the code is /use driven/: we take the things we learn as we make projects and put them back into the toolkit to help others make work.

Another idea I preach is DIWO (Do it with others). There's been a big push recently for DIY culture (Do it Yourself), things like Make magazine and Instructables. The next step is doing with others. With openFrameworks, we've been trying to foster a tight community of hackers and experimenters, meeting both online, but also in workshops, informal gatherings, and research labs. We've even had the privilege of teaching several workshops in Japan, including YCAM (Yamaguchi Center for Arts and Media) and Kyushu University, each time we've been excited by how diverse and enthusiastic the OF community in Japan is.

The last thing I often preach is that making art is not hard, writing software, even in C++ is not (that!) hard, and we should try to have as much fun as possible along the way. It's my sincere hope that you have fun with this book, that you have fun with openFrameworks, and that if you are not already a part of the community, *welcome*.


目次:
はじめに
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のテンプレートを使用せずにプロジェクトを作成する方法
Index


ページサンプル:
openFrameworksプログラミング入門のページサンプル

openFrameworksプログラミング入門のページサンプル

openFrameworksプログラミング入門のページサンプル


  • 新刊・近刊
  • 3DCG
  • 2DCG
  • DTP
  • DTV、映像
  • DTM
  • データベース(サーバ)
  • 建築・CAD
  • Mac
  • Web
  • デザイン
  • 素材集
  • GAS
  • キャラクター・アニメ
  • トムソン
  • 実用・一般