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

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接続に手間取ったのですが、すぐに接続できる時もありますね。ちょっと不可解。ちなみに、この日は冒頭で室内をヘリコプターが飛んています。

Appleへの公開書簡、オラたちにAPIを!

Ori Inbar氏の呼びかけで、Appleへ公開書簡「Open Letter to Apple: Let us Augment Reality with the iPhone!」が送られました。頓智・他AR関係者10余名の共同署名。iPhone用のARアプリケーションのためにカメラAPI(特にライブ・ビデオ・ストリーム関連)を公開して欲しい!というのが趣旨ですね。

openletter-ar

よく知られているように、iPhone SDKではiPhone OSのすべての機能が使えるわけではありません。おもだったところだけでも、バックグラウンド動作、スプリングボード(ホーム画面)、携帯電話機能、グローバルなファイル操作などはAPIが公開されていません。VoiceOver(スピーチ合成)やVoice Control(スピーチ認識)もダメですね。

Appleの言い分としては、セキュリティや安定動作を保障するために公開APIの範囲でアプリケーションを作ってね、ってことでしょうけど、それでは納得できない人たちも沢山(?)いるわけです。私もリジェクトされたアプリケーションを何個も作ってますから(笑)。

考えてみれば、初代iPhone発売当初はネイティブ・アプリケーションの開発自体がNOだったところを、幾多の要望が寄せられた結果としてiPhone SDKとApp Storeが提供されました。だから、今回の動きも無駄には終わらないと期待したいところです。それに、このような拮抗関係こそが、発展の原動力になると思いますよ。

Thirty Webs

今日のiPhone勉強会で出たネタ(笑〜学生にとっては個人制作)は、ひとつのアプリケーションで複数のWebを開くことができるか?でした。それはダメかもって思いながら、UIWebViewを2つ載せてみたら、これがバッチリ動作します。知らなかったな〜(ってUIWebViewを使うこと自体が初めてだったかも)。

それでは!ってことで、ひとつのビューに6個のUIWebViewを載せて、TabBarで5つのビューを作成、合計30個のUIWebViewを作ってみました。余談ながら、この手の作業は、UIWebViewのサブクラスを定義すれば、後はInterface Builderだけで済んじゃうので、とってもラクチン。

さてさて、その結果ですが、これまた何事もなかったようにすべて動作します。メモリとしての限界はあるでしょうが、UIWebViewとしての制約はないってことですよね。素晴らしい! Safari 4のTop Sitesモドキもできそう。

thirty-uiwebviews

これはiPhone Simulatorの画面キャプチャーですが、iPhone実機でも問題なく動作します。

速報!Maxの教科書、発刊

今月号のSound & Recording Magazineをパラパラとめくっていたら、こんな広告がでてました!

max-textbook-on-srm

当事者なので、近く公になるのは分かっていたんですが、先行広告が出るとは知らず、不意をつかれました(笑)。装丁も立体的に見たのは初めてなので、なんだか新鮮です。今回は白本と呼ばれたい。

と言う訳で、お馴染み佐近田さんとのノイマンピアノ名義による新しい書籍です。もちろん最新Max5をターゲットに、これまでの2061:Maxオデッセイ等とは趣向を変えて、初心者向きのライト・ウェイト感覚の内容になっています。なので、Maxに興味があるけど、まだ手を出していない人や、取り組んでみたけど、イマイチよくわからないって人にピッタリです。どうぞ、よろしくお願いします。

書籍「Maxの教科書」
著者:ノイマンピアノ(赤松正行+佐近田展康)
予価:5,040円(本体4,800円+税5%)
発行:リットーミュージック
B5変型版/440ページ(予定)
ISBN978-4-8456-1702-9
(7月発売予定)

【追記】Amazonで予約可能になっていました。発売日は7/10みたいですね。今度は入手困難にならないことを祈ります。

iPhone SDK 3.0の教科書

先日リリースされたiPhone SDK 3.0 GM (Golden Master)を使って、「iPhone SDKの教科書」に掲載したサンプル・コードをビルド&進行。その結果、すべてがそのままビルドでき、正しく動作しました。素晴らしい。

iphone-sdk-30

書籍のサンプル程度で修正が生じるようなら逆に困っちゃうわけですが、後方互換性もよろしいようです。ざっと見た感じでは、XcodeやInterface Build回りの操作系もほとんど一緒みたい。下手をして大量書き直しになるとヤだなと思っていただけに、ひと安心。

ちなみに、コード署名IDでAutomatic Profile Selectorsが指定できるようになったので、サンプル・コードを配布する場合には便利ですね。これを利用すると、適切なプロファイルが自動的に選ばれるので、プロファイルを指定する手間がなくなります。

NADA Mobileでフィジコン

フィジコンって勝手に略しちゃってゴメン!なんだけど、NADA MobileはiPhoneでフィジカル・コンピューティングを実現するツールキットでございます。より正確には、iPhoneのマイク&ヘッドフォン端子に繋いだセンサー類を使ってゴニョゴニョしましょうってことです。ケーブルはお馴染み(?)の4極ミニプラグのAVケーブルを使います。マイク入力やヘッドフォン出力は高精度なA/DおよびD/Aコンバータですからね。これ王道かも。

nadamobile-1

プログラムはMacのDashcodeを使ってJavaScriptで記述、そいつをSketchServerを通じてiPhoneのRunSketchに送り込んで実行、という流れです。iPhone上でプログラムが書けるともっとイイんですけど、何かと面倒があるのかもね。

nadamobile-2

フィジカル・コンピューティングという言葉に語弊があるし、iPhone自体がフィジカル・コンピュータでしょ!とも言えますが、このような試みはiPhone OS 3.0以降は活発化しそうです。Bluetooth接続できるArduinoMindstorms NXTあたりに注目ね。Gainer/Funnelも対応して欲しいな!

後は、電子回路の設計が問題かな(少なくとも私にとって)。NADA Mobileのチュートリアルでも可変抵抗(ボリューム)を使うだけなのに、それ以外に固定抵抗が必要だったりして、それ方面の知識がなければできないよね。

【From: Make: Japan

バランスのシミュレータ動作

「iPhone SDKの教科書」のサンプル・コードの「バランス」は、iPhone実機で動作させる必要があります。iPhone Simulatorでは加速度センサーが動作しないので、ボールが中央に留まったまま動かないからです。そこで、iPhone Simulatorでも擬似的に一定の速度でボールが動くようにしてみました。加速度センサーのような面白みはありませんが、ボールが壁に衝突した時の動作を確認できます。

速度の初期値を設定する

速度の初期値を適当に設定します。加速度の初期値を設定しても構いません。

【P.258の012〜013行目】
speedX = 0.7;
speedY = 0.5;

タイマーでmoveメソッドを呼び出す

加速度センサーのデリゲートが呼び出されないので、タイマーでmoveメソッドを呼び出します。タイマーは「スマッシュ」で説明した通りですが、時間間隔を0.02にすることと、呼び出すメソッドがmoveであることが異なります。

【P.258の033行目あたりに挿入】
#if (TARGET_IPHONE_SIMULATOR)
[NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(move) userInfo:nil repeats:YES];
#endif

TARGET_IPHONE_SIMULATORはiPhone Simulatorでの実行を示すマクロですね。これがないと、実機動作させた場合に二重にmoveメソッドが呼び出されるのでタイヘンです。速度の初期値設定にもマクロ判断を入れるとモアベタ。

サンプル・アプリケーションがApp Storeに勢揃い

ようやく「iPhone SDKの教科書」で解説している6種類のサンプル・アプリケーションがApp Storeに並びました。それぞれの審査期間は1週間前後でしたが、フル・ラインナップまでには少々時間がかかりました。

読者にとっては、完成型のサンプル・アプリケーションを試せるのはグッドなんじゃないかな。今から作ろうとするものを明確に把握することは、とっても大事なことですから。それに、一般の人が開発に興味を持つきっかけになったりすると、素晴らし過ぎです。そのようなことはサンプル・コードの提供では不可能なので、App Storeの助けを借りる必要があったわけです。

ipst0-5-in-app-store

これで執筆責任(笑)は一応は果たせたかな。芸術のための芸術という言葉がありますが、サンプルのためのサンプルってのは、ことiPhoneに関してはふさわしくないですから。最小限の機能とは言え、App Storeに出せるレベルのサンプルでなくっちゃね。

その意味では、本当はApp Storeの審査が終わってから書籍を出版すべきだったかもですが、タイトなスケジュールの中ではちょいと無理でした。まぁ、アップロード不可とかリジェクト (その1その2)とかのAppleとの攻防戦も、iPhoneアプリケーション開発の醍醐味(苦しみ?)として、このサイトで報告できたことでお許しいただければと思います。