December 2010 Archives



今年ももう少しで終わり

| No Comments | No TrackBacks このエントリーをはてなブックマークに追加
今年も、あと数時間で終わり、2011年を迎える。


本当に今年は忙しかった。
多分、来年も似たように忙しいことは変わらないと思うけど。


今年やって物になったことと言えば…

・Mashup Award 6で賞をAndroidアプリでゲットした

・クラウドの設計&構築手伝った

・実際にソーシャルゲーム作ったり、多くのタイトルを手伝った

・Hadoop/Hiveで大規模データ解析システム作った

・雑誌の記事書いた

・Solr勉強会を定期的に開催できた

ざっとこんな感じかな。


ソーシャルゲームのときはクラウドの構築と重なって、本気で疲れた。
2日連続で会社に泊まったり、久々に刺激的なwww
Solr勉強会は3,4ヶ月に1回くらい出来て、この検索システムを広げて利用シーンが増えれば良いな~。

そして今年最後にMA6で賞をゲットして、これも初めてこういうアワードに応募して、初めて受賞したから、嬉しい&良い機会になった。
来年の豊富と技術的な指針は少し見えてきて、これは来年に書こうっと。まだ年明けていないのに…って感じだしね。


今年も皆さんに大変お世話になって、ご迷惑もかけたけど、良い一年でした。
良いお正月を。

これを見てくださった皆さん、来年も良い年になりますように。

Android NDK with openFrameworks

| 3 Comments | No TrackBacks このエントリーをはてなブックマークに追加
openFrameworksの本家はこちら

これを知ったのは、KINECTでカッコいい処理をしている物を見て、これは!!と思ったからかな。

KINECT openFrameworksで検索すると山のように実装例が出てくるから、こういう物だと思って…

Mac(Xcode)/iPhone/Linux(CodeBlocks)/Windows(VS2010,2008)がメインのサイトから落とせる。
あと、Android+Eclipse用のコードもあるけど…この通りにやっても見事に動かない報告が多数...orz

そして、最近リリースされたNDK R5でも見事にダメだった。
NDK R5はSTLが導入されているけど、of内で使っているPOCOのSTLと見事にかみ合わない。
NDK R5のSTLはまだまだ不十分っぽい。

ということで、NDK R4でSTL/exception/RTTIを導入したcrystax's NDKを使ってみたら…あっさり動いたー


このOFの何が自分的に素敵に感じたかって言うと…

・その名の通り、オープンなマルチメディア&画像処理用C++フレームワーク
・フレームワークだから使い方を覚えれば楽チン
・画像、音声、動画、OpenCV...etc とネットワーク、スレッド用のクラスもある
・Win/Mac/Linux(Android)のどれでもOK

すてき~。

Androidに限って言うと、JNI経由(NDK)で書けるのがGood。重い処理はNDKにやらせて、ほかは普通にJavaで書けばオッケーだもんね。


NDK r5ではまだ動かせてないけど、Native Activityを使ったり出来れば、カッコいい感じになりそーな予感。
STL部分を差し替えればNDK R5でも普通に動くと思う。(まだやっていない)




で、Android+OFの環境構築方法は…基本的には本家のこの流れでOK
だけど、NDK R5のSTLを使うとかなり難しいと思われ。(相当ハマりまくった…

軽く流れだけ。

■ディレクトリの構成
ダウンロードしてきた、NDK配下にofを配置する。

android-ndk-r4-crystax\of_preRelease_v0062_android_FAT

こんな感じ。


1. openFrameworksのインポート
次にダウンロードしてきた、of_preRelease_v0062_android_FATの中から、
libs
libs/openFrameworks
addons
addons/ofxAndroid/ofAndroidLib
のプロジェクトをEclipseでImportする。
C++でビルドするものは、libs/openFrameworks、addonsだけ。


2. openFrameworks本体のビルド

[Properties]->[C/C++ General]->[Paths and Symbols]のIncludesに以下を追加
${NDK_ROOT}/build/prebuilt/windows/arm-eabi-4.4.0/arm-eabi/include/c++/4.4.0
${NDK_ROOT}/build/prebuilt/windows/arm-eabi-4.4.0/arm-eabi/include/c++/4.4.0/arm-eabi

[Properties]->[C/C++ Build]->[Settings]->[GCC C++ Compiler]->[Preprocessor]に__ANDROID__を追加

[C/C++ Build]のBuilderの設定を[Internal builder]に設定。
(ただし、c:\cygwin\binのようにcygwin1.dllにパスが通っていること)

あとは、NDK_ROOTにcrystax's NDKへのパスを設定すればビルドが通って、libopenFrameworks.aが出来ていると思われ。

3. addonsのビルド
openFrameworksの本体をビルドする時と同じPropertiesの設定をすればビルドが通って、libaddons.aが出来ている。

4. Androidプロジェクトを作って、JNIとくっつける。
僕の場合は、
android-ndk-r4-crystax\apps\[Eclipse Android Project]
にプロジェクトを作っています。
全体的には、

android-ndk-r4-crystax\apps\[Eclipse Android Project]\Application.mk
android-ndk-r4-crystax\apps\[Eclipse Android Project]\jni\Android.mk
android-ndk-r4-crystax\apps\[Eclipse Android Project]\jni\Ball.h
android-ndk-r4-crystax\apps\[Eclipse Android Project]\jni\main.cpp
android-ndk-r4-crystax\apps\[Eclipse Android Project]\jni\testApp.cpp
android-ndk-r4-crystax\apps\[Eclipse Android Project]\jni\testApp.h

jni以下のソースは例えば、of_preRelease_v0062_android_FAT\apps\androidExamples\androidTouchExample\srcとかから取得。

5.jniのビルド。
Application.mkの内容
---------------------------
APP_PROJECT_PATH := $(call my-dir)
LOCAL_MODULE := OFAndroidApp
APP_ABI := armeabi armeabi-v7a
----------------------------


Android.mkの内容
-----------------------------------

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := OFAndroidApp
LOCAL_SRC_FILES := testApp.cpp main.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../build/prebuilt/windows/arm-eabi-4.4.0/arm-eabi/include/c++/4.4.0 \
$(LOCAL_PATH)/../../../build/platforms/android-8/arch-arm/usr/include \
$(LOCAL_PATH)/../../../build/prebuilt/windows/arm-eabi-4.4.0/arm-eabi/include/c++/4.4.0/arm-eabi \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/openFrameworks \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/openFrameworks/app/ \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/openFrameworks/communication \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/openFrameworks/events \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/openFrameworks/graphics \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/openFrameworks/sound \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/openFrameworks/utils \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/freetype/include \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/freetype/include/freetype2 \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/glu/include_android \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/FreeImage/include \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/poco/include \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/openFrameworks/video \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/addons/ofxOpenCv/src/ \
$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/addons/ofxAndroid/src

LOCAL_CXXFLAGS += -DANDROID -D__ANDROID__ -isystem $(SYSROOT)/usr/include
LOCAL_CFLAGS += -DANDROID -D__ANDROID__ $(LOCAL_C_INCLUDES:%=-I%)

LOCAL_LDLIBS := -L$(LOCAL_PATH)/../../../build/prebuilt/windows/arm-eabi-4.4.0/arm-eabi/lib/ \
-L$(LOCAL_PATH)/../../../build/platforms/android-8/arch-arm/usr/lib \
-L$(LOCAL_PATH)/../../../build/prebuilt/windows/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/ \
-L$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/openFrameworks/Debug/ \
-L$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/addons/Debug/ \
-L$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/poco/lib/android/ \
-L$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/FreeImage/lib/android/ \
-L$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/freetype/lib/android/ \
-L$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/libs/glu/lib/android/ \
-L$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/addons/ofxOsc/libs/oscpack/lib/android/ \
-L$(LOCAL_PATH)/../../../of_preRelease_v0062_android_FAT/addons/ofxOpenCv/libs/opencv/lib/android/ \
-ldl -lstdc++ -lgcc -llog -lm -lc -laddons -loscpack -lopenFrameworks -lPocoUtil -lPocoFoundation -lfreetype -lfreeimage -lGLU -lz -lGLESv1_CM

include $(BUILD_SHARED_LIBRARY)


-----------------------------------


こんな感じ。パスは実際の環境に合わせて書く。



あとはNDK_ROOT(crystax's NDK直下)で、
make APP=[Eclipse Android Project]
としてうまくいけば、
android-ndk-r4-crystax\apps\[Eclipse Android Project]\libs\armeabi\libOFAndroidApp.so
android-ndk-r4-crystax\apps\[Eclipse Android Project]\libs\armeabi-v7a\libOFAndroidApp.so
とかが出来ているはず。


6. Androidプロジェクトのビルド
[Properties]->[Android]->[Library]にofAndroidLibを追加。
OFActivity.javaとかは、OFのサンプルをコピーして使う。
resとかのリソースファイルもサンプルにあるものをコピーして使う。


これで使えるはず。
要はOFのC++ライブラリはEclipse上でビルドして、NDKが絡む所はAndroidの作法に従って作れば、以外に簡単に環境は作れる。

さー、色々実験だね。

最近のお気に入り

| No Comments | No TrackBacks このエントリーをはてなブックマークに追加
最近の好きなもの~

■スーパーナチュラル
これ面白いね。Yahooで見ているんだけど、かなりハマり気味。




■ミニギター
欲しい。
持ち運びも楽だし、ちょっと外に出て弾く時に調度良いよこれ。
小さい分だけ、値段も手軽だしね。




■神聖かまってちゃん

かなり好き




まぢで

| No Comments | No TrackBacks このエントリーをはてなブックマークに追加
やせるぞー


当分、草食動物のように、野菜ばっかり食べて、ドンと落として年末迎えよーっと。

今年の第九

| No Comments | No TrackBacks このエントリーをはてなブックマークに追加
これ行きまーす



ベートーヴェン:交響曲第9番ニ短調op.125<合唱付>
指揮:曽我大介 管弦楽:東京ニューシティ管弦楽団
ソプラノ:田村麻子 アルト:杣友惠子 テノール:五十嵐修 バリトン:新見準平
合唱:東京労音第九合唱団

MashupAward6

| No Comments | No TrackBacks このエントリーをはてなブックマークに追加
PupeDroidというAndroidアプリを作って、サイバーエージェント賞を頂きました。

運営&関係者の皆様、ありがとうございます。


授賞式で、みなさんのコメントもとっても刺激になった。
ともすると難しい技術やテクニックを使ってしまいガチだけど、作りたいものを作る、そして使うユーザのことを思って、という根本の所を再確認した。



こちら頂いた表彰状の盾。





副賞一覧&ありがとうございます⇒CAさんm(_ _)m




受賞式あとの懇親会もおいしいお酒と話をしてとっても楽しかったです。


アプリも作って終わりじゃなく、ちょくちょく修正加えて良くしていこうと思っています。

Profile


Hirotaka Niisato
ID: @hirotakater
  ipv6 ready

Recent Comments

About this Archive

This page is an archive of entries from December 2010 listed from newest to oldest.

November 2010 is the previous archive.

January 2011 is the next archive.

Find recent content on the main index or look in the archives to find all content.