鏡に映る真実【Mirrorscope】リリース

新作Mirrorscopeがリリースされました。iPhoneカメラのライブ・ビューに鏡像などさまざまな視覚効果を与えるアプリケーションです。これまでとはちょっと違う景色に出会えますから、いろんな場所でMirrorscopeをかざしてみてください。サポート・サイトはコチラ

mirrorscope_m1

厳密には鏡像じゃない視覚効果もありますが、現実の光学特性のみに囚われず、鏡を特殊な写像体と考えて不思議愉快な効果を与えています。

mirrorscope_m2

ちなみに、このアプリは「iPhone ARは第2章へ突入」でも触れたように最古参のアプリのひとつです。そして、最近になって塩漬け解除の希望的観測のもと、クリティカルな部分を外してサクっとサブミットしました。なので、まだ盛り込んでいない表現や実現できない機能もあります。でも、今後もトライしていきますので、どのように変化するかも楽しんでいただけると思います。

セミナー登壇者の募集

来る2010年2月26日(金)に大垣市のソフトピアジャパンにて開催予定のモバイル関連セミナーを企画しています。今回は各地で意欲的に活動されている方をお呼びして、地域性を含めた現状や今後の展望を考えていきたいと思っています。

すでに何人かの方に打診中ですが、西日本(中国、四国、九州)方面での知己がありませんので、セミナーの登壇者になっていただける方をオンラインで募集させていただきます。以下の内容や条件をご了解いただけるようでしたら、コチラよりご連絡ください。現在の活動内容や地域状況などをお知らせいただけると有り難いです。

登壇者として希望している方

・西日本(中国、四国、九州)に在住の方。
・iPhoneまたはAndroidのアプリ開発に携わられている方。
・地域の事情を理解し、地域に根ざした活動をされている方。
・個人や小規模企業で活動されている方(大企業は除く)。
・学生または若手で意欲的な方(実年齢は問いません)。
・できれば女性の方。(どうしても男性が多くなるので)

セミナーでお願いしたいこと

・開催時間15:00〜17:20および前後の打ち合わせへの参加。
・10分程度でご自身の活動や地域の状況をお話いただく。
・30分程度で数名でのパネル・ディスカッションに参加していただく。

お支払いさせていただくこと

・謝礼
・往復交通費
・1泊宿泊費(遠方の場合)

以上です。どうぞよろしくお願いします。

【追記】募集は終了しました。ご希望やお問い合わせなどをいただき、ありがとうございました。

iPhone ARは第2章へ突入

iPhoneの内蔵カメラの扱いは紆余曲折あって、多くのデベロッパーが苦労(というか快楽?)しています。しかし、先日大きな動きがあったので、これまでの経緯を含めてまとめておこうと思います。

第0章

iPhone OS 2.0からiPhone OS 3.0までの公式SDKでのAPIとしては、ユーザが写真を撮るためのユーザ・インターフェースを表示し、撮影した後の画像を取得できる機能が提供されていました。これらのAPIだけではアプリケーション側からカメラの画像がリアルタイムに取得できず、ライブ・ビューに他の画像などを重ねることもできません。いずれもAR的手法を実現する上で欠かせない機能なんですけどね。

ただし、非公式には存在しているAPIが結構沢山あって、柔軟なObjective-CとCocoa Touchの特性故に、実際に利用することもできます。このようなハック的手法で、公式にはできないようなカメラ・アプリケーションがいくつか発表されていました。例えば、私のDecorReality(リアルタイム・プリクラ風のビューワ)もそうですし、TC50でのセカイカメラが驚きをもって迎えられたのは、そんな理由もありました。

decorreality

もっとも、非公式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(撮影をネットワークで制御)のようなアプリケーションも比較的簡単に実現できるようになりました。

transreality

しかし、iPhone OS 3.1においても、ライブ・ビューのリアルタイム取得は公開されませんでした。つまり、カメラが今どのような映像を捉えているかが得られないので、ビデオチャットやリアルタイム画像解析などはできないわけです。

第2章

2009年12月になって、唐突にUstream Live Broadcasterなどのライブ映像系のアプリケーションがApp Storeで公開されるようになります。これらは非公式APIであるUIGetScreenImage()(スクリーン全体の画像を取得)を使っていました。このAPIにより、擬似的ではあるものの、ライブ・ビューのリアルタイム取得ができます。さらにデベロッパー・フォーラムではUIGetScreenImage()を使っていいよとのAppleからのメッセージも掲載されちゃいました。

実はこのUIGetScreenImage()は以前から存在が知られていたんですね。私のアプリケーションでもMirrorscope(鏡像などライブ・ビューに特殊な視覚効果を与える)などは、1年以上前にサブミットしていたものの、何度もリジェクトの憂き目に合っています。Appleの転身により最近になってリリースできたとは言え、ちょっと不条理なキブンですね。

mirrorscope

ここで不可解であるのは、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に含まれる機能によってカメラ機能の完全解放は(ほぼ)達成されました。

超簡単ステレオ撮影機

以前の「超簡単iPhone撮影機」に続き、AirCameraリリース記念の超簡単ステレオ撮影機を作りました。前回同様、工具なしのネジ留めだけで1分で完成する横着コースです。

stereogram-adapter-1

材料

  • エツミ 撮影用品 フリーツインプレートDX E-6045 1,845円×1個 [Amazon]
  • 上海問屋 携帯電話用 三脚固定ホルダー DN-100CC 399円×2個 [Amazon]

組み立てはプレートにホルダー2個をネジ留めしてiPhoneを2台取り付けるだけ。iPhoneのカメラの間隔はホルダーをピタリと寄せた状態で約77mmになります。これは偶然にもFinePix REAL 3D W1と同じ間隔ですね。人の両眼の瞳の間隔は平均で約65mmだけど、ちょっと広めのほうがステレオ感が強調されるとか。

stereogram-adapter-2

このようにして作ったステレオ撮影機は手持ちで撮影してもいいし、三脚に取り付けてもいいですね。三脚は自由雲台タイプのほうが使い易いかもしれません。自由雲台は単体で購入して取り付けることもできます。

オプション材料

  • SLIK コンパクト自由雲台 SBH-60 1,782円×1個 [Amazon]

後はそれぞれのiPhoneでAirCameraを立ち上げて、どちらかのシャッター・ボタンをタップすれば、同時に撮影が行われます。2台のiPhoneの取り付け方や、それぞれのiPhoneの撮影状態が気になることろですが、それほど厳密でなくても大丈夫かもしれません。以下の写真は左右で明るさや画角が違ってしまったペアを敢えて選びましたが、ちゃんと立体視できますよね。ステレオ写真としては出来がイマイチとは言え、イマイチだからこそ脳内処理の優秀さが感じられます。

stairway-stereogram-crossviewing(交差法)

stairway-stereogram-paralellviewing(平行法)

続・iTunes Connectの言語問題

先の記事「iTunes Connectの言語問題」の続きで、iTunes Connectのデフォルト言語が日本語である場合は、悲惨な単純反復作業をちょっとでも軽減したいですよね。だって17回も同じことをしなきゃならないから!

itunes-connect-localization

そこで以下は、新しいiPhoneアプリケーションをサブミットする場合に、どのように設定項目を入力するかという戦略です(ちょっと大袈裟)。前提としてはデフォルト言語が日本語で英語でのローカライズのみを行う場合ですが、他のローカライズを行う場合も同じ要領です。

Application Name
日本語名があれば、必ず日本語で入力する。
ローカライズ時に言語ごとに変更可能だが、一旦設定すると変更できない(アップデート時には変更可能)。

Application Description
日本語で入力する。
ローカライズ時に言語ごとに入力できる。ローカライズ時には空欄となり、デフォルト言語での説明が自動的にコピーされるわけではない。設定後も変更可能。

Application Keywords
必ず日本語で入力する。
ローカライズ時に言語ごとに変更可能だが、一旦設定すると変更できない(アップデート時には変更可能)。ローカライズ時には空欄となり、デフォルト言語でのキーワードが自動的にコピーされるわけではない。

Application URL
Support URL
Support Email Address
英語でのURLやアドレスを入力する。
ローカライズ時にデフォルト言語での設定が自動的にコピーされるので、再入力しなくて済む。すべてのローカライズが終われば日本語でのURLやアドレスを設定する。設定後も変更可能。

Large 512×512 Icon
日本語でのアイコンがある場合も英語でのアイコンを登録する。
アイコンは共通でローカライズごとに設定できない。設定後は変更可能。

Primary Screenshot
Additional Screenshots
英語でのスクリーンショットを登録する。
ローカライズ時にデフォルト言語でのスクリーンショットが自動的にコピーされるので、再アップロードしなくて済む。すべてのローカライズが終われば日本語でのスクリーンショットを登録する。設定後も変更可能。

以上の手順でどうでしょうか? 私も時々手順を間違えて苦労を重ねることがあるので、備忘録として書いておきました。もちろん、将来iTune Connectの動作が変更されるかもしれないので、その時は悪しからず。

どなたかテキストや画像のアップローダを作っていただけると嬉しいな〜

iTunes Connectの言語問題

App Storeで配布や販売するiPhoneアプリケーションは、iTunes Connectというサイトで各種情報を登録します。実はこのiTunes Connectが曲者で、デフォルト言語を日本語にしている場合、悲惨な目にあうんですよ。涙ナミダの物語の始まりハジマリ。

itunes-connect

まず、現時点でのiTunes Connectが対応するのは18言語なので、デフォルト言語に対して17種類の言語でのローカライズになります。でも、そんなに沢山の言語に翻訳するのは大変なので、ありがちなパターンとして日本語と英語だけ用意するとしますね。この場合はデフォルト言語である日本語での説明文などを入力した後、英語(English)でのローカライズを行います。

ところが、これで作業を終えると大変マズイです。英語圏ではないApp Store、例えばドイツやフランスのApp Storeではデフォルト言語である日本語で表示されちゃいます。デフォルトってそーゆーことだよと言えば、その通りなんですが….結局のことろ、残る16言語についても、英語での内容でローカライズをしなければなりません。つまり、同じローカライズを17回行うわけです。

もうひとつの問題は、対応言語が今後増える可能性があること。最近でもSwedenやKoreaなどが追加されましたが、それに気がつかずにいれば、これらの国のApp Storeでは日本語で表示されちゃいます。日本語以外の国で日本語が通じるわけがないので、これまた悲惨な目にあいます。

一番良い解決方法は、デフォルト言語を英語にすること。この場合はデフォルト言語である英語で入力した後、日本語でのローカライズを行えば、日本では日本語、それ以外ではすべて英語で表示されるのでバッチリです。しかし、一度デフォルト言語を設定してしまうと、もはや他の言語には設定できない仕組みになっています。デフォルト言語の変更は何度かAppleにお願いしたものの、対応していないの一点張り。つい最近も問い合わせたところが、こんな返事。

Once the default language for your account has been set in iTunes Connect, it cannot be changed.

デフォルト言語を英語にすることは、拙著「iPhone SDKの教科書」でも言及していますし、講演などでも注意事項として度々お話しています。でも気がつかずに日本語に設定しちゃう人が結構多いみたいです。結果的に涙の単純反復作業をせざるを得ない人が沢山いらっしゃるんじゃないかな? ちなみに私の場合は、App Storeオープン前後に、デフォルト言語は日本語にしてください、と説明を受けたんですよ(とほほ)。

鉄則:iTunes Connectでのデフォルト言語は英語にする。

(この記事続く)

何台でも同時撮影【AirCamera】リリース

新作AirCameraがリリースされました。LAN内のiPhoneのシャッターを同時に切る超絶?アプリです。何台ものiPhoneで同時撮影すればギガピクセル写真とかパノラマ写真とかオブジェクト写真が簡単にできちゃいます。高価な特殊撮影装置が必要だったけど、これからはiPhoneを集めるだけ。一人で何台も持ってる人は少ないでしょうけど、皆で集まってAirCamera撮影大会しましょう!ギネスにも挑戦できる?

aircamera

AirCameraはOSCプロトコルなのでコンピュータから制御できます。サンプル・アプリケーションはサポート・サイトにあります。例えば、AirCameraControlのSequential Snapボタンがマシンガン撮影です(複数台のiPhoneが必要)。

OSCを扱えるプログラミング言語はたくさん。Maxな方、Processingな方、SuperColliderな方、QuartzComposerな方、Flashな方、Pythonな方、Rubyな方、Javaな方、Cな方、その他いろいろな方、対応アプリ書いてください。さらにネットワークやセンサーと絡めることもできますね。Tweetで撮影するとかドアが開くと撮影するとか。

もちろん、AirCameraはコンピュータなしでも大丈夫。ツールバー中央の撮影ボタンを押せば、その瞬間に全台がシャッターを切ります。その他すべての操作が連動します(写真アルバムの操作は除く)。また、すべてのAirCameraは設定が連動します。これで1台ずつ設定する手間が省けてシアワセ。コンピュータから設定を変えてもいいですよ。

何台ものiPhoneで撮影はできても、その後に写真を吸出すのが大変。なのでFlickrへの自動投稿機能を備えています。タイトル、説明文、タグが設定できて、iPhoneの名称とIPアドレスが自動付加されます。なので、AirCameraで撮影した素材写真群をギガピクセル写真やパノラマ写真に自動的に繋げるFlickr対応アプリも欲しいところ。Photoshopなどで根性で繋いでいただいても良いわけですが。

そんなこんなで、AirCameraを使って面白い写真を撮影された方や対応アプリケーションを作成された方は、是非お知らせください。サポート・サイトで紹介させていただきます。もっとも、伝統的な撮影方法にしか興味がない人にはAirCameraは無用の長物です。ビットの無駄使いとお呼びください。

【AirCameraで(簡単にor がんばれば)できること】

800px-the_horse_in_motion
(from Wikipedia)

【AirCameraのよくある質問の答え】

  • AirCameraでの同時撮影数は理論上、無茶苦茶たくさん、です。
  • ギガピクセル写真撮影には3GSが342台必要です。
  • ギガピクセル写真撮影には3Gが560台必要です。
  • 同じユーザであれば、何台でもAirCameraをインストールできます。 iPhoneの台数分の代金がかかるわけではありません。
  • AirCameraは初代でも3Gでも3GSでも動作します。それらの混在も大丈夫です。
  • AirCameraの制御ができない場合は、LANのポート56000番が閉じている可能性があります。そのポートを開放してください。
  • AirCameraはWAN(遠隔地同士)でも動作するはずですが、ファイアウォール等でポートが閉じられている場合は通信ができません。
  • 連動はWi-Fi接続時のみですが、Flickrへの自動投稿は3G接続でもできます。
  • 野外などWi-Fiがない場所では、モバイルWi-Fiルータを利用できます。例えばコレ
  • MacBook (Pro) の「ネットワークを作成…」もモバイルWi-Fiルータになります。

ところで、写真系や美術系の学校でAirCameraワークショップしましょうよ。ン十台持ち込むからね。参加者は撮影方法を考えて実践してポストプロセスまでやる。一眼レフばかりがカメラじゃない。手も足も動かすし、右脳も左脳も動かすことになるよね。

なお、AirCameraはセカイカメラともエアタグとも関係ありません。開発コードネームはAirCamで、ナントカCameraって山ほどあるから避けたい。でも、ここはやっぱエアカメラしかないと勇気を振り絞りました。ただ、頓智・から類似商標で訴えられないか心配で夜も眠れない(嘘)。

【補記】この記事はTwitterでのポストを編集しました。

簡単GameKit-P2P

昨日のモバイル・カフェでGameKit(の一部)を説明したので、その資料とサンプルコードを公開しておきますね。横着するためにErica Sadun女史の書籍「iPhone Developer’s Cookbook, 3.0 Edition」のサンプルコードからGameKitHelperを利用しています。

簡単GameKit-P2P (PDF)
サンプルコードSmash-X

このサンプルは「iPhone SDKの教科書」に掲載したSmashを拡張して、2台のiPhoneのスクリーンを横断するようにUFOが飛び回るというものです。オリジナル版と同じく、指でタップしてUFOを叩き潰すこと(Smash)もできます。通信以外のキモはboundsプロパティの使い方かな。

smash-x

Ustreamでは1時間13分あたりから。この時はBluetooth接続に手間取ったのですが、すぐに接続できる時もありますね。ちょっと不可解。ちなみに、この日は冒頭で室内をヘリコプターが飛んています。

辻褄時計 1.3、リリース

またまたって感じですが、辻褄時計バージョン1.3をリリースしました。今回のアップデートでは新しいアピアランスを2種類追加したことに加えて、新しいモードを3種類追加しました。

punctualock13

まず、時折モードをオンにすると、ほぼ常にノーマルな表示なんだけど稀に辻褄モードが発動します。フツーの置き時計として使いたいけど、時々はギョっとしたい方にお勧めです。このような要望を何人の方からいただいていましたが、かえって混乱しないかと心配しないでもないです(笑)。

そして今回の目玉が、左右反転するミラーモードと上下反転する逆さまモード。これはかなり強烈で、時刻を読み取りにくいことこの上ありません。もともとiPhoneの向きによる回転表示に対応しているので、iPhoneを逆さまにしても、やはり逆さまになっちゃいます。両モードの同時オンもできます。

開発段階では設定画面も反転させていたのですが、さすがに極悪度が強すぎるのでナシにしました。でも要望が多ければ復活させます(キッパリ!)。と言う訳で、世界一摩訶不思議な時計を目指す辻褄時計を今後もご支援いただければ幸いでございます。

OSCならコレ【Remokon】リリース

Wi-FiでOSC (OpenSound Control)メッセージを送受信するiPhoneアプリケーションRemokon for OSCをリリースしました。RemokonとMaxやSuperColliderを使って、音楽や映像をバリバリ制御してください。i3L(無料)などを使えば、Ableton LiveなどのMIDI対応アプリケーションもコントロールできます。

remokon-all-pages_s

サポート・サイトにはRemokonやその前身にあたるakaRemoteを使ったデモ・ビデオがありますので、参考にしてくださいね。サンプル・プログラムやサポート・ライブラリもあります。

ちなみに、すでにApp StoreにはいくつかOSC対応アプリケーションがあるのですが、Remokonならではと思われる点を書いておきますね。これらにピンと来た方は是非使ってやってください。

・OSCメッセージを受信してUIを設定できるので、ライブのセットアップなどに便利。
・SCメッセージをブロードキャスト送信できるので、複数の機材を同時コントロールできる。
・iPhoneを区別するデバイスIDが利用できるので、複数のiPhoneを使うことができる。
・送受信されるOSCメッセージの情報量が多いので、高度なアプリケーションが開発できる。
・入力ポートと出力ポートを独立して設定できるので、柔軟な通信ができる。

とこんな感じかな。単純なOSCコントローラとしても使う場合にも、いろいろと便利な機能を備えているので、優秀だと思いますよ。