Blog
openFrameworksのアドオンを作ろう!
このテキストは、ofxAddonsのサイトで紹介されている「make your own! (あなた自身のアドオンを作ろう!)」という文書を非公式に翻訳したものです。翻訳の誤りや不明な点があれば、指摘してください。
openFrameworksのアドオン(addons)って何?
アドオンとは、oepnFrameworksの機能を何らかの方法で拡張するコードです。アドオンを作る理由は2つあります。
- 外部ライブラリやフレームワークを、openFrameworksに適用して簡単に統合させることができる。例: KinectコントローラーをopenFrameworksで使用するためのofxKinectや、MIDIコマンドを送受信するためのofxMidiなど。
- 自分自身または他のopenFrameworksのプログラマーにとって、複雑な作業を単純化できる。例: julapyによるofxQuadWarpや、ofTheoによるofxControlPanelなど。
どうすれば、このサイトのアドオンをインストールできますか?
git コマンドをつかって、コードの複製をチェックアウト(共用のファイルからデータを取り出すこと)することができます。もしくは、ページにある「Download Zip」ボタンをつかってダウンロードするか、URLをコピーする方法もあります。ターミナルを使用して、あなたの手元のopenFrameworksのアドオンのディレクトリーに移動して複製するには、以下のように行います。
[code]
$cd of_preRelease/addons/
$git clone https://github.com/obviousjim/ofxSomeAddon
[/code]
これらの方法でコードを取得したら、アドオンの「example」フォルダ内にあるプロジェクトファイルを開いてみてください(exampleがないアドオンも存在します)。ビルドして動作するか確認してみましょう。
アドオンは、Project Generatorを使用して、新規のopenFrameworksのプロジェクトに組込むことが可能です。もしくは、アドオンのexampleフォルダを「apps/」フォルダ以下にコピーしてそこから編集していくという方法もあります。
もし、アドオンがうまくビルドできないようであれば、他のアドオンやライブラリーに依存していることがあります。それらの情報は、アドオン作成者によってREADMEファイル内で説明されています。もし、プロジェクトファイルが存在していなかったり、アドオンのプロジェクトを開いたときに何かが欠落した状態だったら、アドオンの開発者にemailして指摘してあげてください。そうすることで、開発者はアドオンの構造を修正することができ、全ての人にとって使いやすいものとなります。
このサイトへのアドオン掲載は、たとえそれが有用なものであったとしても、無報酬で行われています。我々だけは、全てのアドオンをテストすることは不可能です。アドオンが動かない場合、開発者とあなたとで解決するようにしてください。
ofxAddonsに含まれているアドオンの情報には何が説明されていますか?
それぞれのアドオンのタイトルから、github.comのリポジトリにリンクしています。それぞれの説明の下には、作者名に続いて、そのアドオンがいつ更新されたか、更新された際の最新のopenFrameworksのバージョン(必ずしもそのバージョンで動作することを保証しているわけではありません)、そしてgithubで獲得した星の数が表示されています。もしアドオンにexampleやmakefileが含まれている場合には、その情報が表示されています。さらに、オリジナルのバージョンよりも新しかったり、より多くの星を獲得したリポジトリへのフォークも表示されます。また、それぞれの開発者ごとに、開発した全てのアドオンの一覧を見ることのできるページが用意されています。ページのデータは、毎日更新されています。
自分で作成したopenFrameworksのコードをアドオンにすべきですか?
何かを実現するための最適なアドオンは、簡単であるべきです。それらは複雑な処理をとても少ないコードで使用可能にします。もし、あなたが巨大なライブラリやアルゴリズムを獲得したり、新たな処理方法を開発したのであれば、アドオン作成を考慮すべきです。それでもまだ迷いがあるのなら、以下の設問が参考になるでしょう。
- あなたのアドオンは、他の人も使いたいようなものですか?
- ofxaddons.com に既に同じようなアドオンが無いか確認しましょう。
- もし類似のアドオンが存在していても、あなた作成した方が優れていると考える場合、既存のアドオンをフォーク(fork)して自身のgithubアカウント内で改良することも考慮してください。
openFrameworksのアドオンをどうやったら作成できますか?
アドオンのためのフォルダ構造は以下のようになっています:
[code]
of_preRelease/
addons/
ofxMyAddon/
src/
ofxMyAddon.h
ofxMyAddon.cpp
…
libs/
libwhatever/
src/
lib_implementation.h
lib_implementation.cpp
…
includes/
libwhatever.h
…
lib/
osx/
static_libwhatever.a
linux/
static_libwhatever.a
… // 他のプラットフォーム
example-anExample/
src/
main.cpp
testApp.h
testApp.cpp
… // 他のソースコード
MyAddonExample.xcodeproj
… // 他のプラットフォーム用のプロジェクトファイル
bin/
data/
necessaryAsset.txt
[/code]
全てが「of_preRelease/addons/」以下の含まれなくてはなりません。リポジトリの名前は「ofxMyAddon」のようにしてください。誰かがあなたのgitリポジトリを複製して「addons/」フォルダ以下に置いたときに、ファイルの操作をすることなくexampleが動くようにすることも肝要です。
もうすこし解説してください
「_preRelease/addons」の下に配置されるフォルダは、アドオンの名前と同一にしてください。gitのリポジトリ名も同じ名前にします。
[code]
of_preRelease/addons/ofxMyAddon/
[/code]
その下には少なくとも2つのサブフォルダ「src」「example」が入ります。
[code]
ofxMyAddon/src
ofxMyAddon/example
[/code]
アドオンに複数のサンプルがある場合は、「example-xxx」という形式にします。
[code]
ofxMyAddon/example-simpleExample
ofxMyAddon/example-moreComplicatedExample
[/code]
もしアドオンがソースファイルや静的ライブラリを含んだ外部ライブラリのインターフェイスとなっている場合、「libs」フォルダにそれらを配置します。
[code]
ofxMyAddons/libs
[/code]
「src」フォルダには、アドオンのソースが入ります。
[code]
ofxMyAddon/src/ofxMyAddon.h
ofxMyAddon/src/ofxMyAddon.cpp
…
[/code]
「example」フォルダには、サンプルのソースとプロジェクトファイルが含まれます(apps/example/sameExampleといった一般のプロジェクトと同じ形式です)。
[code]
ofxMyAddon/example/MyAddonExample.xcodeproj
… // 他のプラットフォーム用のプロジェクトファイル
ofxMyAddon/example/src/main.cpp
ofxMyAddon/example/src/testApp.h
ofxMyAddon/example/src/testApp.cpp
…
ofxMyAddon/example/bin/data
[/code]
これでアドオンの作成は完了ですか?
- プロジェクトについての説明をREADMEに記述しましたか?
- サポートしているOSについてリストアップしましたか?
- プロジェクトのサンプルはありますか?
- サンプルは、openFrameworksのwebサイトからダウンロード可能な最新のバージョンでコンパイルできますか?
- オリジナルなコードやアドオンのクレジットとリンクを入れていますか?
- どのようなライセンスで配布するか明示していますか? もし商業的利用を望んでいないのであれば、単刀直入に示しましょう。また、依存しているライブラリのライセンスについても明確にしましょう。
どうやったら、自分のアドオンをこのページに追加できますか?
その必要はありません! githubにアップロードするだけで十分です。リポジトリ名の先頭に「ofx」をつけると自動的に発見されます。もし、アドオンについてやどのカテゴリに属したいかなどを伝えたいのであれば、連絡してください。
どうすればこのページ用のサムネイルを追加できますか?
リポジトリのルートディレクトリに、270×70の大きさで「ofxaddons_thumbnail.png」というファイル名をつけたイメージファイルを入れてください。
どうやったら全てのアドオンを検索できますか?
わたしたちは、github.comのアドオンを探索するスクリプトを書きました。このスクリプトは「openFrameworks」や「ofx」といったファイル名や説明を検索しています。検索結果の中でopenFrameworksに関係のないもの、空のもの、明らかに未完成のものは、手動で削除しています。少し調査した後に、カテゴリーをタグ付けしています。