iPhone」カテゴリーアーカイブ

Sinwave.app登場

iPhone用の凶暴なカオス的オーディオ・オシレータ、Sinwave.appを作成しました。なかなか素晴らしいサウンドなのですが、操作するうちに確実にiPhoneがフリーズするので(笑)、取り敢えず公開したのはYouTubeでのデモ・ムービーだけです。偶然だと思うけど、ファイルの一部が破損したこともあって、音だけでなく動作も狂暴なのかもしれません。タイトルもSinewave(サインウェーブ、サイン波)じゃなくって、Sinwave(シンウェーブ、罪悪波?過失波?)ですよ。

iphone-sinwave-icon.png iphone-sinwave.jpg

元々は、そろそろ(面倒っぽいけど)Audio Queueをやらなきゃな〜ってことで、James McCartney氏が作成したSinewaveなるCocoaアプリをiPhoneに移植しようとしていました。JamesはSuperColliderのオリジナル開発者で、SuperColliderをMac OS Xに移行させる前段階として試作したのがソレね。移植と言っても、Cheetah(Mac OS X 10.0)時代のHALとLeopardから導入されたAudio QueueとではAPIが違うので、サイン波生成部分をいただいて、GUIを似せた程度ですけどね。ちなみに、サイン波生成は単純にsin()関数ですね。プログラミング言語では伝統的にsine()じゃなくってsin()です。

それで、何度かのビルド・エラーとランタイム・エラーを乗り越えて、初めてiPhoneから出た音がコレだったんです。もう一発でシビレました(低脳表現だな〜笑)。おそらく、バッファにデータを書き込む時に馬鹿をしていて、そのせいで凶暴音になるし、場合によってはフリーズしちゃうんですね。でも、そんなことはどうでも良いくらいにグレートな音だったので、それ以上コードを直すことを止めて、ビルドしたアプリを永年保存することにしました。

ミスやエラーが創造に繋がることは多々指摘されているけど、このケースもその典型ですね。一方で、公式SDKや公式実行環境では、こんな無謀が許されないかもしれず、その点が心配になります。セキュリティ絡みで窒息している馬鹿Flashが良い(悪い)例ですから。砂場(サンドボックス)では、創造性は萎びてしまいます。無茶をやりましょう。無茶ができる環境を求めましょう。無茶な世界でも、紳士淑女として振る舞えるからね(ってのは性善説、セキュリティは性悪説)。

Alarm.app登場

スウィーニー・トッドを観ながら思いついたのが(2階から地下へ◯◯が落ちるシーンね!)、自由落下検出機能付きのiPhone用警報器、Alarm.appを作りました。このアプリを立ち上げておけば、iPhoneを落とした時にアラームが鳴ります。瞬時に反応できれば、iPhoneを破損から救えるかも。危機が迫った時には、スクリーンにタッチして手動で鳴らしてもいいです。って、ちょっと無理があるな〜そのうち、バックグラウンドで実行できるようにしますね(できるのか?)。

iphone-alarm-icon.png iphone-alarm.jpg

さすがに慣れてきたので、この程度ならコーディングには1時間もかからないものの、グラフィックスを作るのに数時間かかるのがツライところ。デジカメで非常灯を撮影したり、Poserで説明図を作ったりね。まぁ、素人なりに楽しいような、やはり面倒臭いような複雑なキブンです。iPhone落下中の写真も撮りたかったんだけど、まだうまく出来ていません。

それから、警報の画像はともかく、音のタイミングはかなりダメダメで気持ち悪いです(すみません〜)。performSelector:withObject:afterDelay:の時間精度の問題なのかもしれないし、AVControllerのレイテンシーの問題なのかもしれない。AVControllerをsetRepeatMode:1にすればループ再生できるけど、ループが終端に達した時のコールバックがない(よね?)ので、画像との同期ができない。この程度のことでも、Audio Queueを使わなければならないのかな?

Mirrorscope.app登場

iPhoneのカメラを用いたミラー的なリアルタイム映像エフェクタ、Mirrorscope.appを公開しました。機能的には単純なので説明を付けていませんが、起動すれば自動的に映像が表示され、スクリーンをタップすれば一時停止、iPhoneを振ればエフェクトが変わります。

iphone-mirrorscope-icon.png iphone-mirrorscope.jpg

エフェクト自体はどこにでもあるようなものだけど、これがiPhoneで動作すると、世界が一変します。散々言っているコンピュータ終焉論が、私の本業(?)である表現の世界でも確実になったと実感しちゃいました。コンピュータはもちろん、PAやプロジェクタを使っている場合ではないです(と言いながら、まだまだ使うんですけどね〜笑)。

だから、Time Machine!ATOMxGALAXIESのような表現が、もうすぐiPhoneで動きます…と言いたいものの、映像処理の詳細がまるで分かっていません。カメラのプレビュー映像を表示することは簡単だけど、その画像にアクセスできない(涙)。それは通常のビットマップではないようで、ハードウェアがスクリーンに直接描画しているのかもしれないです。これまた2月待ちですね。公式SDKがサンドボックスだったら、本当に泣いちゃいますよ。

Compass.app登場

iPhoneを使って方角を知るためのツール、Compass.appを公開しました。日時計とは逆の仕組みで、時刻が分かっていれば太陽の光によって方角が分かるので、それをアプリケーション化した訳です。Yes|No.app並みに単純&お馬鹿っぽいものの、それなりに有用なツールでございます。

iphone-compass-icon.png iphone-compass-howtouse.png

原理もプログラミングも簡単だけど、これってコンピュータ用には作らないよね。ディスプレイを水平に置くのは、タブレット型以外は大変だからね。その意味では、iPhoneなどの掌デバイスらしいアプリだと思います。

ちなみに、Firmware 1.1.3でMapsにロケーション機能が付くので、ちょいと有用性が薄れました。でも、Wi-Fi電波が届かない山岳や荒野で道に迷った時には使えますよ。夜はどうするのかと言えば、画面上の「N」の方向を北極星に向けます…ってのは、余りにも寒いのでREADMEには書いていません(笑)。

あと、日本じゃ関係ないけど、サマー・タイムや南半球には未対応です。iPhoneでは日付やタイム・ゾーンを設定するので、それから情報を得られるハズなんだけど、iPhoneのAPIとして何が使えるのかは探求できていません。まぁ、公式SDK待ちですね。

No Disc, No Computer

キーノートで発表された、もうひとつの目玉はiTunes/Apple TVでの映画レンタル(HDを含む)ですね。先週話題になっていたBlu-rayとHD DVDのフォーマット戦争の終結云々なんて、完全に吹き飛びました。何度か書いたように、デジタル・コンテンツには価値がナイのです。もう少し丁寧に書くと、デジタル化されたコンテンツによって利益を得ようとする仕組は、本質的に虚構でしかない、ってことね。

appletv-movie-rental.jpg

新しいApple TVの紹介で、それとはなくNo Computer Requiredと宣言していたことも象徴的。これまた何度も、コンピュータはオシマイって言ってきたでしょ。iPhoneやApple TVとともに、2008年はこれが加速されるハズね。今あるApple TVも無償アップデートで対応ってことで楽しみだけど、鎖国日本じゃ提供されるモノは乏しいかもね(暗雲)。

appletv-no-computer.jpg

【追記】初出時に「No Digital Contents, No Computer」としていた記事タイトルを少し変えました。デジタル・コンテンツが不要って主張したい訳ではないので。

Something in the Air

1969年のThunderclap Newmanのヒット・ソングに乗って(ウソ)登場したのは、羽根のような(って形容されるんだろうな〜)MacBook Air。本命のモノシリック型全面スクリーンじゃないんだから、世界で最も薄いノートブックなんてコピーは、Steve Jobsお得意の現実歪曲フィールド(Reality Distortion Field)でしかない。でも、ダマされていると分かりながら、嬉々として「今すぐ予約」しちゃった人はゴマンといるよね。ハイ、私も人のことを言えません(苦笑)。

macbook-air.png

好意的に考えれば、モノシリック(一枚板)型のデバイスはMacラインに納まらないし、iPhoneとの差別化も明確じゃないから、その位置付けに苦労しているのかもしれないね。だから、終焉に向かいつつあるコンピュータの進化型としては、MacBook Airは妥当な仕上がりなのかも。

一方で、大きなマルチ・タッチ・トラックパッドが新しい世代のマシンであることを主張していますね。スクリーン上とパッド上とで操作感がどのように違うのか分からないけど、それぞれの成果がフィードバックされて完成度が高まって行くのは間違いないところ。軽少短薄とかSSDとかワイヤレス関係とか話題は一杯あるけど、個人的にはMacBook Airの真価はパッドだと思うな。一刻も早くAPIを公開されたし、Appleさん。

iPhoneのファクトリー・サウンド

iPhoneのファクトリー・イメージの次は、当然、ファクトリー・サウンドですね。こちらも、ほぼ同様の手順です。

1. iPhoneのディスク・イメージをマウント
Firmware 1.1.2の場合、ファームウェア・ファイルのダウンロードはココから。ターミナルでのコマンド入力は以下の通り。

vfdecrypt -i 022-3725-1.dmg -o decrypted112.dmg -k 70e11d7209602ada5b15fbecc1709ad4910d0ad010bb9a9125b78f9f50e25f3e05c595e2

2. マウントしたディスク内でサウンド・ファイルを検索
サウンド・ファイルはアプリケーションなどの内部にも納められているので、パッケージ内部も検索できるEasy Findなどを使い、.caf、.m4f、.aif、.wavなどを検索すると良い。Firmware 1.1.2の場合、Oktoberfest3B48b.UserBundleディスクには106個のサウンド・ファイルが含まれている(みたい)。

3. 見つかったサウンド・ファイルを別のフォルダにコピー
Easy Findの場合、リストのファイルをすべて選択してコピーする。次いで、Finderで新しく作成したフォルダを開いて、編集メニューの「項目をペースト」を選ぶ。

以上の手順で、iPhoneに納められたサウンド・ファイルを入手できます。

iphone-factory-sounds.png

当初は.m4aや.movだった着信音は、現在は.m4rファイルになっています。この.m4rファイルや一部の.cafファイルはFinderやQuickTime Playerでは再生できません。.m4rファイルは.m4aに拡張子を変えれば開くことができますが、認証が必要と言われてしまいます(涙)。音ネタに使いたい場合は、古いFirmwareファイルを使うしかないみたいです。変換と言うか、認証破りの方法があるのかな?

iPhoneのファクトリー・イメージ

iPhoneの勝手アプリで難しいことのひとつは、GUIデザインですね。インタラクションはもちろんのこと、グライフィック・デザインだけでも大変。iPhoneの強烈な世界観から逸脱せず、明確さと妥当さを失わず、しかし個性を主張するデザインって、ホント難しい。勝手アプリとは言え、デザインまで勝手では、いくら機能が優れてても使う気にならないよね。そんな自己規律性がiPhoneをiPhoneたらしめている訳です。

それは、Apple自身も時々失敗している(笑)くらいなんだけど、私のような素人には「真似る」のが最初の一歩。そこで、iPhoneが標準で持っている画像ファイルを参照&応用しています。iPhoneに入っている画像はすべて(たぶん)pngファイルですが、これらは一般的なフォーマットではないので、そのままでは画像として表示できません。そこで、以下のようにしてファイル収集とフォーマット変換を行ないます。

1. iPhoneのディスク・イメージをマウント
Firmware 1.1.2の場合、ファームウェア・ファイルのダウンロードはココから。ターミナルでのコマンド入力は以下の通り。

vfdecrypt -i 022-3725-1.dmg -o decrypted112.dmg -k 70e11d7209602ada5b15fbecc1709ad4910d0ad010bb9a9125b78f9f50e25f3e05c595e2

2. マウントしたディスク内でpngファイルを検索
画像ファイルはアプリケーションなどの内部にも納められているので、パッケージ内部も検索できるEasy Findなどを使って、.pngを検索すると良い。Firmware 1.1.2の場合、Oktoberfest3B48b.UserBundleディスクには1,071個の.pngファイルが含まれている(みたい)。

3. 見つかったpngファイルを別のフォルダにコピー
Easy Findの場合、リストのファイルをすべて選択してコピーする。次いで、Finderで新しく作成したフォルダを開いて、編集メニューの「項目をペースト」を選ぶ。

4. iPhonePNGでファイル変換
iPhonePNGの書式は以下の通りで、この場合pngファイルをコピーしたフォルダを指定する。

iPhonePNG < 処理するディレクトリまたはファイルの名前>

これで、名前の最後に「-Decoded」が付いたフォルダ(またはファイル)が作られ、変換されたpngファイルは一般的なファイル・フォーマットになっています。

iphone-factory-images.jpg

すべての画像ファイルのサムネール一覧はコチラ(1.6MB)。

それにしても、私にはデザイン才能がないことは明々白々。GUIがほとんどないav.appやYes|No.appはともかく、真似っこ路線の典型Pericam.appとか、結構逸脱しちゃっているakaRemote.appとか、2〜3回はデザインを練り直しているにもかかわらず、あの体たらく。T4Two.appのグラフィックスもイケてないですね(涙)。どなたか助けてください(笑)。

T4Two.app登場

2人で遊べるiPhone用テニス・ゲームT4Two.appを公開しました。早い話がPONGですけど、iPhoneを挟んで各自がそれぞれの指を使ってラケットを操作できるようになっています。加速度センサーの情報も使っていて、iPhoneの傾きがボールの動きに影響を与えます。なので、お一人様でもiPhoneを傾けて遊べます(かな?)。

iphone-t4two-icon.png iphone-t4two-1.jpg iphone-t4two-2.jpg

元々はマルチ・タッチ機能を試していて、ちょっと発展させてゲームに仕立てたものです。ゲーマじゃないし、ゲームを作ることもあまりないんだけど、シンプルに2人で遊べるゲームってちょっといいなと思った次第です。指を左右に滑らせたり、iPhoneを傾けたりして、それなりに体感係数が高いような気がしますね。ダイナミック(動的)でセンソリー(感覚的、身体的)なものをプログラミングで作るって、まさにDSPでございます。

それから、マルチ・タッチ(ってか2点タッチ)自体は簡単に扱えますが、得られたデータをどう使うかは、なかなかの研究課題になります。このゲームでも、最初はラケットを自由に動かせるようにしていたものの、それぞれの指を区別できる訳ではないので、場合によっては相手のラケットと入れ替わっちゃう事態が発生(笑)。それに衝突判定も格段に面倒になるので、元祖PONGっぽくラケットは直線移動するだけに路線変更。危うく泥沼にハマるところでした(苦笑)。

Pericam.app登場

iPhoneの内蔵カメラを使ってインターバル撮影を行うアプリケーション、Pericam.appを公開しました。時間間隔、画像サイズ、画像品質を指定してStartボタンを押せば、後は一定時間ごとに自動的に撮影が行われます。インターバル撮影自体はバックグラウンドで処理されるので、Pericam.appを終了して他のアプリを起動しても構いません。

iphone-pericam-icon.png iphone-pericam-1.png iphone-pericam-2.png

インターバル撮影と言えば、雲の動きや花の開花などの低速度撮影(早回し再生)もあるけど、iPhoneを胸ポケットに入れて(レンズを覗かせて)歩き回るとかもいいんじゃないかな。それ何?と尋ねられても、他のアプリを見せれば撮影を意識させないで済むしね。

そう言えば、数年前にライフスライス(LifeSlice)プロジェクトやら、LifeLogプロジェクト、MyLifeBitsプロジェクトなどが話題になったよね。当時のLifeSliceカメラは機能的にはショボかったけど、iPhoneとPericam.appなら少々マシなことができるような気がします。iPhoneのカメラもブレがちなのが難点なんだけど。

ちなみに、撮影&リサイズは人様のコマンド・ライン・ツールを使っていて、それをcronで定期的に駆動しています。つまり、Pericam.appはGUIとcrontabの編集をしているだけね。iPhoneがUnixマシンであることの証ですね。ただし、スリープさせちゃうとcronも眠っちゃうみたいで、インタバール撮影は中断されちゃいます。もっとも、アラームなどはスリープしていても動き出すから、このあたりのメカニズムを探求したいところ。

それから、Pericam.appのインストールはちょいと面倒です。ターミナルを使える人なら問題ないと思いますけど、Installer.appしか使ったことがない人には少々敷居が高いかも。Installer.app用のスクリプトを書けば良いような気もしますが、取り敢えずはUnixの基礎知識がある人限定ということでお願いします。