Tech Sketch Bucket of Technical Chips by TIS Inc.

マーカーをタップすると3Dアバターがしゃべって動くARアプリ 2

Pocket

前回 の記事に引き続き、AndARを改造して「マーカーをタップすると3Dアバターがしゃべって動くARアプリ」の解説をします。
今回は「マーカーをタップする」というイベントをハンドリングするためにAndARに施した改造について、ソースコードを交えて解説します。

・・・AndARの内部構造の話やJNIバリバリのC言語のソースコードの話が出てきたりと、かなり濃いですが、ツイテキテネ!

マーカーをタップすると3Dアバターがしゃべって動くARアプリ 1

Pocket

スマートフォンやタブレットなど、カメラ・GPS・タッチスクリーンを装備したプログラマブルなデバイスの普及に伴い、様々な AR(Augmented Reality = 拡張現実) を用いたサービスが展開されています。
近頃は 頓知ドット のセカイカメラに代表される 位置情報を元にしたAR だけでなく、 Koozyt のGnG(GET and Go)が提供するような マーカーにカメラをかざすことによるAR(マーカー型AR) も注目を集めビジネス化が図られています。

特にAndroidは、 NyARToolkit for AndroidAndAR といった、OSSのマーカー型ARライブラリが公開されているため、マーカー型ARを試してみるにはもってこいの環境です。

そこで今回は、AndARを改造して「マーカーをタップすると3Dアバターがしゃべって動くARアプリ」を作りたいと思います。


※音声が再生されます。注意してください。

Padrino + MongoMapperでGoogle Cloud Messaging

Pocket

C2DMからGCMへ

Android端末にメッセージをPushする仕組みとしてC2DM(Android Cloud to Device Messaging)があります。Push型のメッセージ配信は利用者がPullして情報を得る方法とは違った大きなアドバンテージがあるため、C2DMを利用したアプリケーションを作成されている方も多いと思います。このC2DMですが、2012年6月26日で正式にdeprecated(非推奨)となってしまいました。

C2DMの代替として、Google Cloud Messaging(GCM)という仕組みを利用することができるようになりました。今後、Android端末にメッセージをPushさせるような仕組みを導入するには、GCMを採用することが推奨されています。
※C2DMもしばらくの間はサポートはされるようですが、GCMへの移行も簡単なのでなるべく早く移行する方が良さそうです。

実際に移行するとなるとGCMとC2DMの違いが気になるところですが、少し触ってみた感じではGCMもC2DMも基本的な思想は同じで、GCMではC2DMにはなかった様々なアドバンテージが得られるといった印象です。
詳細については、 このページ を参照してもらいたいのですが、本ブログではその中で以下の3点に注目してみました。

  • GCMサーバへのアクセスがとても簡単になった
  • メッセージの形式としてJSONがサポートされた
  • 複数のデバイスに同時にメッセージが(簡単に)送れるようになった

ということで、JSON形式のメッセージを複数端末にPush通知するアプリを1から作成してみることにします。
※C2DMのソースコードをGCMに対応する方法もあるのですが、それは このページ を見れば迷うことなくできる(と思う)ので割愛します。

C2DMでもそうだったのですが、GCMでもPush通知を受けるAndroidアプリだけでなく、サードパーティアプリケーションサーバを構築する必要があります。今回はサードパーティアプリケーションサーバを「Padrino + MongoMapper」で構築してみます。

※本ブログではGCMのアーキテクチャについては触れていません。どのような仕組みでメッセージがPushされるかについては、 Architectural OverviewC2DMのドキュメント (ほとんど思想は同じです)を参照してください。

完成イメージ

Nexus SとHTC Desireの2つのAndroid端末にメッセージを送信し、ステータスバーに通知を出します。イメージとしてはこんな感じです。

nexus_screenshot.png desire_screenshot.png

SAStrutsをJBossAS7で動かそう(体験談)

Pocket

techsketch-banner-OSS+startingblock(700x65).jpg

JBossAS7でのアプリケーション開発

JBossのアプリケーションサーバ JBossAS7 は、RedHat社による商用サポート版の JBossEAP6 (バージョン番号は異なっていますがAS7に基づいています)もリリースされ、使用できる機運が高まってます。以前、 新しくなったJBossASを使ってみよう で運用管理面を中心にJBossAS7の技術紹介を行いましたが、今回はアプリケーションの稼働に着目して紹介します。

JBossAS7でアプリケーションを新規開発するならば、フレームワークとしてJavaEE6を採用するのが自然です。JavaEE6のサンプルとしては、従来はJBossAS7のダウンロードサイトにQuickstartsがありましたが、現在は JBoss Developer Framework として独立しています(内容はJavaEE6の技術紹介になるので割愛します)。

一方、既存のアプリケーションサーバを保守切れ等でJBossAS7に切り替える場合、稼働させていたアプリケーションがJBossAS7に移植できるかが大きな課題となります。以下、フレームワークとして SAStruts を対象にJBossAS7へ移植できるかを確認していきます。