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

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

「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メソッドが呼び出されるのでタイヘンです。速度の初期値設定にもマクロ判断を入れるとモアベタ。

多摩美でワークショップ

5月22日〜23日は多摩美術大学情報デザイン学科にて、20数台のiPhoneを持ち込んでのアプリケーション開発ワークショップ、2日間で3コマ(90分×3)の特別講義でした。1コマ目は「iPhone SDKの教科書」をテキストに開発の手順やプログラミング方法をハンズ・オン形式でひととおり体験、2コマ目は開発ばかりじゃ面白くないので、コンセプチュアルな話や作品のデモンストレーション、3コマ目は自主制作と発表&講評という流れ。

workshop-in-tamabi

学生は必ずしもプログラミングに精通していないそうですけど、全員が熱心に(それこそ一心不乱に)取り組んでいました。もっとも、スクラッチで(テンプレートから)開発するのは初心者には難しいので、自主制作はサンプル・コードの改造・発展がキホン。それでも画像や音声を入れ替えるだけでも面白いアイディアが出てたし、オブジェクトを数個動かすといった難しい展開をした人も結構いましたね。

ちなみに今回の特別講義は同校の永原康史さんのお招きで、「iPhone SDKの教科書」の装丁をしていただいた方です。そのことを知らなかった学生は、カッコいい表紙だと思っていたそうですけど、後で分かって納得してました。何と奥ゆかしいというか、作品で語り切っているのが素晴らしいです。

【追記】レポートが公開されていました。

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

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

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

ipst0-5-in-app-store

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

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

内蔵カメラ使用時の注意点

「iPhone SDKの教科書」の第3部第5章の「パイル」は、内蔵カメラまたは写真アルバムからの画像を合成します。そこで、iPod touch対応とするならばカメラの利用可否を確認しておく必要があります。その方法は書籍で説明した通りです。

ただ、カメラが利用できない場合は、それをユーザ・インターフェースとしても明確に示す必要があったようで、App Storeへの申請ではリジェクトを喰らっちゃいました。そこで、ビューを開いた時にカメラをチェックして、カメラが利用できない場合はカメラ・アイコンを使用不可に設定する(表示がグレイになる)ように変更しました。これで審査を通過。

具体的には、PileViewController.hに以下のアウトレットを追加し、Interface Builderでカメラのボタンに接続します。

IBOutlet UIBarButtonItem *cameraButton;

そして、PileViewController.mのviewDidLoadメソッドの最後に以下のコードを追加します。

cameraButton.enabled = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];

この変更により、openCameraメソッドやopenPhotoLibraryメソッドでチェックしていたif文自体は省略することができます(あっても実害はないですけど)。

pile-on-ipod-touch

続々・iPhone SDKの教科書はどこにある?

3回目の「どこにある?」になっちゃいましたが、インターネット書店一括検索によると、増刷後2〜3週間程して、ようやく各オンライン書店に配本されたようです。時間かかり過ぎ!とは言え、取り敢えずは一安心ってことでご報告。もっとも、一般のオフライン書店ではどこにあるか検索できないのがツライところ。どこでも完備ってわけじゃないでしょうからね。

続・iPhone SDKの教科書はどこにある?
iPhone SDKの教科書はどこにある?

real-bookcover-2a

ところで、ジュンク堂池袋店は50冊在庫ありとなってます。50冊平積みならスゴイですね(笑)。紀伊國屋書店Amazonにもあるので、これで海外の人にも買っていただけます。日本で洋書を買うのは大変だけど、その逆も相当大変だそうですよ。

サンプル・コードの改良・発展

「iPhone SDKの教科書」には各サンプル・コードの章末に改良・発展を提案していますが、これがどの程度の作業で実現できるかは分かりにくいかもしれません。なので、各項目の難易度を書いておきます。プログラミング初心者はレベル【A】から取り組むと良いと思います。また、カウンターについては改良・発展案を書いていなかったので、これも補っておきますね。

【A】非プログラミング・レベル〜画像やサウンドの差し替え、レイアウト変更など。
【B】簡易プログラミング・レベル〜ソースコードの変更・追加が必要。
【C】高度プログラミング・レベル〜ソースコードの大幅な変更・追加が必要。

カウンター

【A】ボタン画像や背景画像を差し替えて、異なる雰囲気のカウンターを作ろう。
【B】ボタンをタップした時に音を鳴らし、動作が分かるようにしよう。
【B】10個および100個数える度に音を鳴らし、数えている状況が分かるようにしよう。
【B】複数のカウンターを表示し、異なる数を同時に数えられるようにしよう。
【B】カウンターの数値を記憶し、アプリケーションを再起動した場合にも、前回の数値から数を数えられるようにしよう。

スマッシュ

【A】背景画像とUFOの画像を差し替えて、異なる雰囲気のゲームに仕立てよう。それに合わせて効果音も差し替えよう。
【B】UFOを叩き潰した回数を数えてスコアを表示する機能を追加しよう。UFOを逃した場合は減点することも考えられる。
【B】1分間や3分間などゲームの時間制限を設けてみよう。スコア機能と合わせて、制限時間内の得点を競うことができる。
【C】得点を競うなら、ハイスコアも表示したい。ハイスコアを打ち立てたプレーヤの名前もあれば完璧だ。
【C】UFOが1機だけでなく、2機、3機と出現するようにしてみよう。ボーナス点が稼げる特別なUFOや、叩き潰してはいけない味方の宇宙船も考えられる。

バランス

【A】画像や効果音を差し替えて、まるで違う雰囲気で異なる用途に使えないだろうか?
【B】現在のボールの重みはどれくらいだろうか? もっと軽いボールや、もっと重いボールにしてみよう。
【B】ボールと盤面や空気との摩擦抵抗をプログラム・コードに盛り込んでみよう。
【C】目を閉じていてもボールの動きを感じられるようにできないだろうか?
【C】Z軸の加速度を利用して、ボールを3次元的に動かしてみよう。一人で羽根つきができるかもしれない。

クロック

【A】背景画像や針の画像を入れ替えて、オリジナル・デザインの時計を作ろう。
【B】24時間制の時計や鏡像のように逆回転する時計を作ろう。
【B】1秒ごとに秒針が小刻みに動くのではなく、連続的にスムースに動くようにしよう。
【B】アラームが鳴っている時に、盤面が点滅するなど視覚的な効果を加えよう。
【C】アラームを12時直前に設定した場合、アラーム動作に不都合が生じる場合がある。この原因と解決策を考えよう。

エイジ

【B】年齢を時間単位、分単位、秒単位でも表示してみよう。
【C】任意の日における年齢が表示できるようにしよう。
【C】起点となる日付と日数を設定すると、終了日となる日付を表示できるにしよう。
【B】グレゴリオ歴以外の暦のカレンダーを表示してみよう。
【C】時分秒単位の時間計算機を作ってみよう。

パイル

【B】パイルを多言語対応させ、日本語でも表示されるようにしよう。
【B】合成時のブレンド・モードやアルファ値を選択できるようにしよう。
【B】最初に読み込んだ写真に合わせて、合成画像のサイズが設定されるようにしよう。
【B】撮影時や選択時に写真の一部を抜き出せるようにしよう。これはイメージ・ピッカーのプロパティで設定可能だ。
【B】写真の縦横比が4:3でなくても、正しい比率で写真を合成できるようにしよう。

続・iPhone SDKの教科書はどこにある?

ようやくという感じで、5月頭に「iPhone SDKの教科書」が増刷されたそうで、その第2刷本も最近届きました。でも、未だにAmazonでは注文不可のままで、インターネット書店一括検索で調べると、リアル書店のジュンク堂でも品切れを起こしていますね。増刷分が一瞬で売り切れたとは考えにくいので、訳が分かりません。配本や流通がどうなってるのか、ますます不可解です。買いたいと思った人が、買いたい時に買えると良いのですが….前回と状況は変わっていませんね。

real-bookcover

5/15は名古屋でセミナー

5/15に名古屋で講演をします。iPhoneを巡る社会の動向からiPhoneアプリケーション開発の概要まで、あれこれお話をしようと思っています。「10分でできる〜」はツリですが(笑)、Hello World程度なら10分もかかりませんからね。

東海インターネット協議会併設講演会のご案内

東海インターネット協議会では、総会併設講演会として、以下のテーマで講演会を開催します。

日時:2009年5月15日(金) 16:00〜
場所:あいちベンチャーハウス 3Fセミナー室 【地図】

16:00 セミナー受付

16:30 「10分でできるiPhoneアプリケーション開発」
講師:IAMAS 国際情報科学芸術アカデミー 教授 赤松正行氏
概要:iPhoneアプリケーションは現代のゴールドラッシュとも呼ばれ、発売後僅か9ヵ月で総数2万個のラインナップと10億回のダウンロードを達成しました。しかも、参入や流通のコストが低く、使い易い開発ツールが提供されていますから、開発者にとっては極めて魅力的なプラットフォームだと言えます。ここでは、iPhoneアプリケーション開発の概要を紹介するとともに、制作のノウハウや苦労話についてもお話ししたいと思います。

18:00 「iPhoneアプリケーションを市場に出したら・・」
講師:サウンドウォークジャパン 加藤久昭氏
概要:iPhoneアプリケーションデペロッパーとして、6ヶ月の実績と教訓。今後の市場における新たな展開、またOS 3,0市場、製品、広告モデルのビジネスプランなどについてお話しします。

19:00 懇親会(会費制)

詳細は以下をご覧ください。
http://www.tokai-ic.or.jp/web-content/whatsnew.html
申し込みは5月12日までに、以下からお願いします。
https://www.tokai-ic.or.jp/oss/entry/soukai2009.html

MacのオーディオをiPhoneでモニタ

先のポストはMacで作成している画像をiPhone上で確認するってことだけど、同じようにMacで作成しているサウンドがiPhoneでどのように聴こえるかも重要。iPhoneのスピーカーは小さいので、まともなスピーカーとはまるで違って聴こえますからね。

単純には、サウンドをファイル・サーバに入れて、iPhoneのクライアント・アプリで再生すればいいけど、一連の手順が面倒過ぎる。サウンドを鳴らしながら、音質などの調整をしたいよね。このためには、iPhoneのスピーカーのIRレスポンスを測定して、Altiverbなどでコンボリューション演算して再生する方法があります。だけど、これはモニタしているスピーカーやヘッドフォンにも影響されるのでイマイチかも。

そこで私は、Macのオーディオ出力をiPhoneにライン入力して、iPhoneのスピーカーで鳴らしています。現在のiPhoneにはライン入力はないみたいですが、ちょっと手間をかければできちゃいます。

  • 市販のAVケーブルの4極ミニプラグをiPhoneのヘッドフォン端子に接続。
  • 抵抗入りのオーディオ・ケーブルをMacのオーディオ出力に接続。
  • iPhoneからのAVケーブルとMacからのオーディオ・ケーブルを接続。
  • iPhoneでEchochopsを起動。
    • Delayを0.2sくらいに、Feedbackを0.00%に設定。
    • OptionのOutputをSpeakerに設定。
    • Playボタンをタップして処理開始。

audio-through

このようにしてMacでオーディオを再生すると、iPhoneのスピーカから音が聴こえるはずです。後はMSPでもSuperColliderでも、お好みのソフトウェアを使ってサウンド・デザインをしてくださいませ。正確に同じ音とは言えないまでも、おおよその雰囲気を掴むには充分かと思います。これで全世界300万人(ウソ)のiPhoneサウンド・クリエータの悩みが解決します(たぶん)。

注意点としては、AVケーブルのミニプラグ4極のうち、根元側をオーディオ入力、その次をグランドとして用いる必要があることです。この手のケーブルは標準規格がないらしく、モノによっては使えないかもしれません。また、これは本来マイク付きヘッドフォンを使うための端子なので、オーディオ入力はマイク・レベルでなければなりません。Macのオーディオ出力はライン・レベルなので、抵抗を入れなければiPhoneでの音は歪んでしまいますよ。

あと、ロジテックのLIC-iREC01なども使えるかもしれませんが、持っていないので分かりません。AirPhonesAirfoil Speakers Touchは手軽でいいんだけど、音質的にイマイチなので、この手の用途には向かないと思うな。誰か、非圧縮(or 高音質)版を作ってください。

iPhoneとMacの画面をライブ表示

MacでiPhoneのGUIをデザインしてる時に、それがiPhone上でどう見えるのかを確認したくなるよね。あるいは、デモのためにiPhoneの画面をMacに表示したり、画面キャプチャーを取りたいこともあります。そんな場合には、以下のユーティリティでバッチリです。

Macの画面をiPhoneで表示

iPhoneの画面をMacで表示(要Jailbreak)

  • MacとiPhoneをLANに接続。
  • iPhoneでScreenSplitrを起動(すぐに終了してOnマークが付く)。
  • MacでDemoGodを起動。
  • Macのウィンドウに表示されるiPhoneの名前をクリック。
  • iPhoneで承諾を求められるので、Acceptをタップ。

この2つを同時にやってみました(笑)。少し暗めのところで撮影したので、実物のiPhoneのボディは黒く写っていて、Macの画面上のiPhone(つまり仮想のiPhone)は銀色の縁まではっきり写っています。

iphone-quartet

右下がScreenSpliterが動作しているiPhone(横置き)で、その画面が転送されて左上のDemoGodのiPhone風のウィンドウ(横置き)に表示されています。中央のiPhone風ウィンドウ(縦置き)がLiveView ScreenCasterで、このウィンドウの内側に透けて見えるMacの画面の一部が転送され、左下のiPhone(縦置き)のLiveView iPhone Applicationに表示されている、という次第です(ふぅ、説明難しい)。

いずれも、リモート操作なしのVNCと言えばそれまでですが、簡単に操作できるので便利に使えます。特にMac→iPhoneは必携。MacとiPhoneでは画面の解像度が違うし、色合いも随分と違うので、Mac上の作業だけだと必ず失敗しますからね。iPhone→Macは表示のフレーム・レートが低いので、リアルなデモには無理があります。

ついでに、ありがちなフィードバックも試してみました。画像の圧縮率が高いためか、すぐに色が濃くなってブラック・アウトしちゃいます。

iphone-feedback

【追記】ScreenSpliterはApple純正のAVケーブル(Dockコネクタ接続)にも出力できるけど、この場合でもフレーム・レイトは低いです。