openFrameworksとは - 歴史と特徴
openFrameworks (オープンフレームワークス) は,C++で記述された「クリエイティブなコーディング」のためのオープンソースのツールキットです。Mac OSX,Windows,Linuxで動かすことが可能で,iPhoneやiPadなどのiOSのデバイス上で実行することも可能です。openFrameworksは,2Dや3Dのグラフィック,動画やアニメーション,音声など,様々なメディアを簡単に扱うことが可能なため主にメディアアートやインタラクティブなメディアで活発に活用されています。
開発の歴史
openFrameworksは,2004年にアーティストでありプログラマーでもあるZach Liebermanが,ニューヨークにあるパーソンズ大学の大学院で教鞭をとっていた際に,アートを学ぶ学生のための作品制作ツールとして開発されました。彼は,自分が作品を制作する際に使用しているものと同じ環境を,プログラム初心者のアートスクールの学生にも提供したいと考え,openFrameworksの開発を始めました。
その後,openFrameworksの開発チームは成長し,Zach Liebermanに加えて,Theodore Watson,Aturo Castroの3人を中心として,世界中のプログラマーと連携しながら現在も活発に開発が続けられています。2011年1月現在のバージョンは,v0.062で,目下,v0.07に向けて開発が活発に進められています。
openFrameworksは,先行する様々なプロジェクトから影響を受けています。中でも,MITメディアラボのCasey ReasとBen Fryによって開発されたProcessingという開発環境から,さらにはProcessingの祖先であるジョン前田による,Design by Numbersの系譜を継ぐものといえます。それらのフレームワークの思想に共通する点は,プログラムの初心者にとって煩雑ですぐに理解が困難な部分は敢えて隠してしまうことで,プログラミングで何かを生みだす楽しさに集中できるような環境を提供しているところでしょう。かといって決して学習のためだけのおもちゃのようものではなく,プログラミングに習熟した開発者にとっても,本格的なコーディングをするためのクリエイティブなツールボックスとして十分使用に耐え得る環境となっています。
既存のインタラクションを越えて
openFrameworksの特徴は,その実行スピードが挙げられます。openFrameworksはC++をベースにしており,最終的にはネイティブなアプリケーションとして出力されるため,コンピュータのパワーを限界まで引き出すことが可能です。そのため,JavaをベースにしたProcessingや,FlashPlayerで実行する必要のあるAdobe Flashなどに比べて格段にパワフルな表現が可能です。数万個のパーティクルを60fpsでフルスクリーンで再生したりといった,膨大な計算量を必要とするような表現が可能となります。
こうした,openFrameworksに秘められたパワーは,既存のメディアアートやインタラクティブデザインの枠組みを越える可能性をもっています。10個の物体をインタラクティブに操作する場合と,1,000個,10,000個といった単位で物体を操作する場合では,その意味合いが違ってきます。ユーザーの操作に1対1で反応するという単純なインタラクションではなく,ユーザの操作をきっかけにして,大量のオブジェクトが自律的に変化していくというような,これまでの直接操作によるインタラクションの概念を越えた表現が可能になるという点が,openFrameworksの最大の特徴であり,魅力であると言えるのではないでしょうか。
様々な技術を繋ぎあわせる「糊」
また,メディアアートの作品に代表されるような,様々なメディアを駆使したアプリケーションを開発しようとする場合,通常であれば様々な技術に精通する必要に迫られます。サウンドやビデオ,フォント,ベクトル情報,画像解析,物理演算,ネットワークプログラミングなど,技術は多岐にわたり,それぞれを理解して自由に活用するまでには多大な労力と時間を必要とします。既存のライブラリを活用する場合でも,必要なライブラリを見付けだしてプログラミングできるように環境を構築するまでには,相応の経験とスキルが必要となります。
openFrameworksは,こうした問題に対する一つの回答となっています。アプリケーションの開発の際に多用される技術を,シンプルな方法ですぐに利用可能で提供するという目的がopenFrameworksの根幹となっています。openFrameworksの開発陣は,このことを指して,openFrameworksを汎用的な目的に使用できる「糊 (glue)」としてデザインされていると表現しています。つまり,openFrameworks自体に独自の新規の技術があるのではなく,その存在意義は,既に存在する様々なライブラリに蓄積された技術や知識を自由に活用し相互に連携し統合するための媒介物として意義があります。
openFrameworksでは以下のようなライブラリを利用しています。
アドオン - 様々な機能を貪欲に吸収して機能拡張
openFramewroksのもう一つの特徴として,様々な機能を「アドオン (Addons)」という形式で追加して,どんどん機能を拡張していくことが可能な点があげられます。アドオンは,openFrameworksの開発チームだけでなく,多くのプログラマーやアーティストが独自に開発・実装を進めています。アドオンによる拡張はとても活発で,話題の技術や開発に役立つユーティリティーが次々と開発され公開されています。
- コンピュータ・ビジョン / AR
- 音響,音楽
- ofxMidi:MIDIを扱うためのライブラリ
- ofxSoundObj:オブジェクト指向な音響合成ライブラリSound Object Library
- ofxPd:グラフィカルな音響合成言語Pure Dataのプログラムを読み込んで,音響を出力する
- ofxSuperCollider, ofxSuperColliderServer:音響合成言語SuperColliderで定義された楽器を読み込んで出力する
- シミュレーション / 物理演算 / 流体力学
- ofxBox2d:物理エンジンBox2Dを利用した物理演算
- ofxMSAFluid:流体シミュレーション
- ofxMSAPhisics:3D物理演算
- アニメーション
- ofxQuartzComposer:Appleの提供するビジュアルプログラミング言語Quartz Composerで作成したプロジェクトを読み込む
- ofxFlash:Adobe Flashで作成したアニメーションを読み込む
- デバイス / ハードウェア
- ofxiPhone:iPhone,iPad,iPod TouchなどiOSデバイスでopenFrameworksを実行する
- ofxKinect:Microsoftのジェスチャー認識ゲームコントローラKinectをopenFrameworksで使用する
この他にも大量のアドオンがネット上で入手可能です。

