今回は
Android Advent Calendar 2011への参加記事です。
略してAACですね。なんか音質が良さそうです。DRMかかってないといいなあ。
ところで、Advent Calender と聞いて、「ああ、公共広告機構ね。ぽぽぽぽーん」と思った人は、
これ読んで来い。
実はAndroid Advent Calenderは、「裏」も同時開催中です。本日の裏は、 @touchRL さん。
気になるエントリはこちら。
すごすぎる。そして、俺、失礼すぎる。
「磯野ー、キャッチボールしようぜー」と言ったら、磯野家から全盛期のイチローが出て来た気分です。ごめんなさい。
さて、これまで参加されていた方の記事を拝見すると、さすがは世界に誇るAndroidクラスタ。技術系のAdventCalenderの名に恥じぬ高度なお話ばかりです。
負けていられません。
本日は組み込み技術者としての私の側面を見せるべく、Android NDKのお話。
ご存知のようにAndroidのアプリケーションは、DalvikVMという仮想マシン上で動いています。
仮想マシン上で動作するアプリケーションはJavaで動作していますが、そのままではARM系のCPUは理解出来ません。
仮想マシンであるDalvikVMはC/C++で記述されています。
本来であれば「Write Onece, Run Anywhere.」の素晴らしきJavaの理想に基づき、アプリケーションはJavaでi作成するべきですが、ハードウエアの性能をめいっぱい引き出すためにネイティブコードを必要とする場合があります。
そんなときにNDKの出番です。Native Developement Kitの略とされています。SDKはSoftware Developement Kit.の略らしいです。Nの反対だからS。小学校で習った磁石の事を思い出せば簡単に覚えられますね。同様に、Sの反対はMです。
さて、このNDK。自分でライブラリを作成して、VM上のJavaから利用する事が出来ます。
仮想マシン上のJavaと、ネイティブ動作するC/C++。一見すると到底くっつきそうにはありませんが、人類の英知を結集したJNIという仕組みがあります。Java Native Interfaceの略です。少し前にテレビドラマ化もされてましたね。
Androidの場合には、多くのJNI用のラッパーも提供されていますので、あまりないとは思うのですが、Javaからヒープメモリを確保して、ネイティブ側に渡し結果をネイティ側で書き込んでJava側に通知する方が便利な場合があります。
このとき、Javaで確保したメモリの取り扱いには注意が必要です。
ネイティブ側には確保したメモリのポインタを渡す事になりますが、ネイティブ側で非同期処理を行っている間に、DalvikVMのガベージコレクタがメモリコンパクションを実行した場合、メモリ配置が変わる場合があるのかどうかはよく知らん。
DalvikVMでは、まだこういうケースになったことはないのよ。もしなったら、ネイティブ側から非同期応答するときに同期処理でDalvikVMに確保したメモリのポインタを問い合わせ直す事をお勧めするわ。
いや、どう考えても、技術の話で他の参加者に肩が並ぶ訳がない。
それにお客さんはこんな私を見に来たわけじゃないと思うの、コーチ。
だいたい、ハードルが高すぎるのよ。
ハードルが高いならばくぐれば良いって聞くわ。
ハードディスクが高いならSSDにすればいいじゃない。
というわけで、本編。
ここまで分かったAndroid6.0の新機能!
(※ただしソースは日経)
Androidはバージョンごとに開発コードネームがある。
その順序はアルファベット順である。
1.5がCupcake.
1.6がDonut.
2.1がEclair.
2.2がFroyo.
2.3がGingerbread.
3.0がHoneycomb.
4.0がIce Cream Sandwich.
ここまでが現時点でリリースされている物だ。
どうやら5.0は、Jelly Beanらしいという噂も出始めた。
それならば6.0も予想がつく。そう、Kakenaviだ。なぜか大手メディアは伝えないが。
私が6.0を予測しなくてどうするのだ。
機能1:手相認証
「婚期が遅れる相が強まっていますね。ロックを解除します」
「この手相のあなたの今日の運勢は凶。何もしていないのに電池が激減りしていて大事な電話がとれないかも。ロックを解除します。充電してください」
「やだ。そんな汚い手で私に触らないで。汚らわしい。ロック解除に失敗しました」
機能2:5.1chサラウンド対応
本機能を使用される場合、Android6.0以降の端末が同時に6台必要となります。
また、重低音を重視される場合には、1台をタブレット端末とし、床側にスピーカーが向くよう置いてください。
機能3:WindowsPhone対応
一気にシェアが増加!
WindowsPhone上でAndroidが動作!
adbコマンドによる端末内に完結したデバッグが可能!
Android4.oから搭載したストリーミングによる音声認識と合わせて、音声でのプログラミングが可能に!
「ぱっけーじ こむどっとーかけなびどっとさんぷるこーどせみころんー かいぎょうー あ、かいぎょうってコードにはいっちゃっ」
機能4:Androidレーザー搭載
Android4.0の新機能、Androidビームが協力にパワーアップ!
今度はAndroidレーザーだ!
ビームよりも長距離飛ぶから、端末同士が離れていてもOKだ!
人間の可視光を超えた短い波長を用いたレーザーで、相手の端末に情報を送信するぜ!
ジャパニーズの国ではセキガイセンって言うらしいな!なんだか暖かそうだ!HAHAHA!
機能5:デュアルバッテリー
スマートフォンにしてからバッテリーがもたないとお嘆きのあなたに朗報。
デュアルバッテリーに対応する事で例え電池残量がなくなっても、電源を切る事なく片方ずつ電池交換が可能に。
しかも充電の手間が要らない夢の電池。
お求めは、電気店コンビニで「単1型乾電池」をお選びください。
いかがだったろうか。これがネタクラスタの本気である。こんなものである。
明日からに続くネタクラスタのみんな。ここは俺が守る。大丈夫だ、あとから追いついて見せる。
他にも、Yahooショッピングが「スマートフォンで買い物したらポイント10倍!」とかやっていたので、「Androidエミュレータで買ったらどうなるか」という案もあったのだけど、なんとYahooのキャンペーンが終了するというサイバー攻撃を受けたためボツになった次第である。
というわけで、第2部。
関連Androidアプリのご紹介
かけなびさんのフィクション日記チェッカー
作者:@akai_t さん
このブログを閲覧する専用ビューワ。
なんと、画像とリンクに非対応である事が、本日のブログで明らかになってしまった。
今後のバージョンアップに期待したい。
シンプルな画面でブログを読む事が出来て使い勝手も良い。
ブログの更新を怠ると「ブログが更新されないので★4つです」など、アプリの評価が下がるため、ユーザーレビューの平均点が安定しないことで有名。
なお、あまりに更新されないと「twitterで依頼」というボタンが表示され、急にTwitter連携出来る殺人機能搭載。
@okutoba→@kakenaviになりました。
作者:@luckofwise さん
筆者のアカウント名が@okutobaだったころに、「おくとばったー」としてリリースされたアプリ。
写真から顔を認識し、ズームアップして切り出す事でアイコンのようなイメージの写真が簡単に作れるアプリ。
作者は「東京から岡山までの新幹線の中で作った」などとわけのわからない事を言っており、すごすぎる。
なお、リリースから数ヶ月で筆者のアカウントを@kakenaviに変更することになったが、まったく浸透しない状況に危機感を持ち、「アプリ名でアカウントの変更を通知する」という、恐らく世界初の偉業を成し遂げる。
もはや、なんのアプリかさっぱり分からん。
いっぱいのかけなび
作者:@toro_kun さん
ウィジェットに「wi-fi」「WiMAX」「3G」「未接続」の4つの接続先を表示するアプリ。
端末ごとに運用方法が違う人や、パケット通信料を減らしたい人に、大変便利。
アプリの説明によると「SIMなし運用でパケット代を節約しようと意気込んだものの、SIMが入ってないからどこに行ったか分からない自分の端末に電話をかけて見つける事もできない、そんなかけなびさんに捧ぐ」と書いてあるが、アプリの動作が全く要求仕様を満たしていない。
仕様変更を命じたい。NexusSに入れて使ってるけど。
kakenavi plug-in for twicca
作者:@metamoscape さん
先ほども触れたが、諸般の事情により「おくとば」さんから「かけなび」さんになったのに全く普及しない事に危機感を抱いた方が作った。
「おくとば」を50音順に1文字ずつインクリメントすると「かけなび」になるわけだが、これをtwiccaの文字列に実現する。
コヨフヨとはなんだったのか。
かけなびぼっと
作者:@yokmama さん
Androidアプリではないが、この子に触れないわけにはいかない。
かけなびさんのTwitterでの発言がbotっぽいという理由から作成された、超高性能ボット。
朝昼晩の挨拶に、お誕生日おめでとうの挨拶。ひいては人妻に愛を語り始めるなど、多くの話題を作った。
現在は第3世代が暴走。API制限いっぱいまで発言しては止まるとなったため、産みの父である夜子ままさんによって息の根を止められている。
その高性能ぶりは目を見張るものがあり、彼の生前はかけなびさんのことを知らない方々が、人間だと思ってフォローし普通に会話をしている場面をよく見かけた。
一部に、その人気に嫉妬したため、殺害を企てたのではないかと動機を推測する風潮もあったが、「身に覚えがない。ただ、俺のTLにあいつの発言がRTされて表示されるのは納得いかなかった。むしゃくしゃしていた」と容疑を否定している。
なお、日本Androidの会神戸支部のロボットにゴーストが移植された第4世代が存在したが、ロボットの展示中に「腕もげたー」「足取られたー」等のグロテスクな発言を繰り返していた。しかし「オイル貰ったー」を発言するボタンというのは、いかがなものか。貰ってねえじゃん。
http://blog.livedoor.jp/ryosms/archives/4648573.html
u_s_kさんに捧げるアプリ
作者:@ryosms さん
(※リンクはしてません。アドレスコピーで)
裏コマンドで #kakenavi_blog のハッシュタグが増やせるらしい。
裏コマンド教えてもらってない。
さて、関係者の方々に怒られる事を覚悟の上で書いてみたが、いかがだったろうか。
最後になったが、ひとつ言わせ欲しい。
俺は、Androidのオープンさももちろん好きだし、アプリを作るのも使うのも好きだ。
だがそれ以上に、そのオープンな環境に自ら乗り込んで来て、全力を尽くしてしまう方々が好きだ。
そう。
Androidよりも、Androidクラスタを愛してやまない。
AdventCalenderは埋まるし、こんなアプリも作る、そんなみんなに感謝。
大丈夫。Androidがオワコンになっても、みんながいれば大丈夫だ!きっと来年も!
また、今回のような貴重な機会を与えてくださった @youten_redo さんに心から感謝。
そして読んでくださった全ての皆様に。メリークリスマス。
よいお年を。
one more thing...
次回更新予告。
「WindowsPhoneが真の勝者になる7つの理由」
ご期待ください!