iPhoneの内蔵カメラの扱いは紆余曲折あって、多くのデベロッパーが苦労(というか快楽?)しています。しかし、先日大きな動きがあったので、これまでの経緯を含めてまとめておこうと思います。
第0章
iPhone OS 2.0からiPhone OS 3.0までの公式SDKでのAPIとしては、ユーザが写真を撮るためのユーザ・インターフェースを表示し、撮影した後の画像を取得できる機能が提供されていました。これらのAPIだけではアプリケーション側からカメラの画像がリアルタイムに取得できず、ライブ・ビューに他の画像などを重ねることもできません。いずれもAR的手法を実現する上で欠かせない機能なんですけどね。
ただし、非公式には存在しているAPIが結構沢山あって、柔軟なObjective-CとCocoa Touchの特性故に、実際に利用することもできます。このようなハック的手法で、公式にはできないようなカメラ・アプリケーションがいくつか発表されていました。例えば、私のDecorReality(リアルタイム・プリクラ風のビューワ)もそうですし、TC50でのセカイカメラが驚きをもって迎えられたのは、そんな理由もありました。
もっとも、非公式APIを利用したアプリケーションはAppleの審査を通らない可能性があります。特にiPhone OS 3.0以降は審査が厳密になったようで、ほとんど許可されなかったみたい。このためにiPhone OS 3.0でのアップデートができなかったカメラ・アプリケーションも少なくありません。2.0時代に公開していたSnappy(動き、音、時間などで自動撮影)もそうでした。
第1章
フツーの写真撮影以外はほとんど何もできない公式APIは、iPhone OS 3.1においてようやく拡張されます。新しく追加されたAPIには以下のような機能がありました。
- ライブ・ビューへのオーバーレイ
- ライブ・ビューの幾何的変形
- アプリケーションによる撮影
- 標準UIの隠蔽
これらのAPIが登場したおかげで、Snappyを復活させ、セカイカメラも目出度くリリースできました。技術的に可能ということと、App Storeで公開できることとは、全然別のレベルのお話なのですね。そして、TransReality(ライブ・ビューのリズミカルな変形)やAirCamera(撮影をネットワークで制御)のようなアプリケーションも比較的簡単に実現できるようになりました。
しかし、iPhone OS 3.1においても、ライブ・ビューのリアルタイム取得は公開されませんでした。つまり、カメラが今どのような映像を捉えているかが得られないので、ビデオチャットやリアルタイム画像解析などはできないわけです。
第2章
2009年12月になって、唐突にUstream Live Broadcasterなどのライブ映像系のアプリケーションがApp Storeで公開されるようになります。これらは非公式APIであるUIGetScreenImage()(スクリーン全体の画像を取得)を使っていました。このAPIにより、擬似的ではあるものの、ライブ・ビューのリアルタイム取得ができます。さらにデベロッパー・フォーラムではUIGetScreenImage()を使っていいよとのAppleからのメッセージも掲載されちゃいました。
実はこのUIGetScreenImage()は以前から存在が知られていたんですね。私のアプリケーションでもMirrorscope(鏡像などライブ・ビューに特殊な視覚効果を与える)などは、1年以上前にサブミットしていたものの、何度もリジェクトの憂き目に合っています。Appleの転身により最近になってリリースできたとは言え、ちょっと不条理なキブンですね。
ここで不可解であるのは、SDKなりOSなりのバージョン・アップをすることなく、非公式APIの使用を公式に認めた前例があまりないことです。このあたりの事情には裏話もあるようですが….ま、少しずつでも前進している現状を評価することにしましょう。
ともあれ、ライブ・ビューの取得ができるようになったので、ARToolkitやPTAMなどの画像解析系のAR技術は今後すぐにでも一般化していくでしょうね。つまり、iPhoneでのARは新しいステージに突入したことになります。QRコードなどの単なるマーカー認識も、カメラをかざすだけで済むので実用性が高まるのは間違いありません。
最終章?
以上のようにUIGetScreenImage()は、iPhoneのカメラ・アプリケーションの応用範囲を飛躍的に広げます。もっとも、このUIGetScreenImage()は本質的なライブ・ビュー画像の取得ではないので、画像取得のタイミングやオフスクリーンでの画像取得などの問題が残っています。また、現在のAPIではフォーカスや明度などのカメラ機能の調整もできません。
このようなカメラ機能の完全解放を切に望みたいところですが、それがiPhone OS 3.2になるのか、iPhone OS 4.0になるのか、はたまた永遠の夢となるかはJobs神のみぞ知る、ですね。しかし、OSが完全開放されているAndroid勢力が、iPhoneデベロッパーの援護射撃をしてくれるハズです、たぶん。
【追記】iOS 4.0のAV Foundationに含まれる機能によってカメラ機能の完全解放は(ほぼ)達成されました。
ピンバック: domo todo+ のアプリ内 iPhoneBBS が好評。夕刊
ピンバック: <std-io> - links for 2009-12-22
ピンバック: 今日のブログ 12月22日 « 今日のiPhone/iPod touchのブログ
ピンバック: 鏡に映る真実【Mirrorscope】リリース « akalogue
ピンバック: スリットでスキャン【Timetracks】リリース « akalogue