連載
» 2009年10月27日 00時00分 公開

ここが大変だよiPhone開発(4):ここが大変だよiPhone実機テスト+iPhone OS 3.0の新機能 (2/3)

[佐々木義一郎,コニット]

Xcodeのプロジェクト設定

 次に、プロジェクト設定のコード署名IDに作成したプロビジョニングプロファイルを選択します。「Any iPhone OS Device」をクリックすると、プルダウンでプロビジョニングのリストが表示されるので該当するプロビジョニングを選択します。

プロビジョニングプロファイルのリスト

 表示されない場合や、グレーアウトで選択できない場合は、上記の手順で失敗している可能性があるので、再確認してください。例えば、AppIDとBundleIdentifierが異なる、キーチェーンに証明書が登録されていない、プロビジョニングプロファイルの配置場所が間違っているなど、さまざまな理由で選択できなくなります。

iPhoneの接続

 Xcodeを立ち上げている状態で、USBケーブル経由でiPhoneを接続します。初めて接続するときは、開発に使用するかを聞くダイアログが表示されるので、「はい」を選択しましょう。

オーガナイザでプロビジョニングをインストール

 署名したアプリをiPhoneで動かすためには、iPhoneにもプロビジョニングプロファイルをインストールしておかなければなりません。Xcodeの[ウィンドウ]メニューから[オーガナイザ]をクリックし、起動します。

オーガナイザでプロビジョニングの追加と削除ができる

 画面左の[DEVICES]に接続中のiPhoneが表示されるので緑ランプが付いていることを確認し選択します(黄色ランプの場合は、何らかの問題があることを意味しています。まず接続の問題を解決してください)。

 画面中央にインストール済みのプロビジョニングプロファイルが表示される欄があり、枠の下に「+(プラス)」と「−(マイナス)」記号のボタンがあります。今回は、新規追加なのでプラスボタンを押し、先ほどのプロビジョニングプロファイルを選択して追加します。

 以上で、初期設定は終了です。「iPhone Developer Program」での設定やプロビジョニングについては、下記記事もご参照ください。

実機テストを始めると見えてくる“違い”

Xcodeでデバッグ実行開始

 いよいよ実機で実行です。アクティブSDKでiPhoneデバイス3.0を選択し(Xcode 3.2の場合)、実行ボタンを押しましょう。どうでしょうか、動きましたか?

 基本的にオーガナイザで緑ランプ点灯の場合は動くはずです。動かない場合は、XcodeやiPhoneを再起動したり、USBケーブルを再接続したりすると直る場合が多いです。

エミュレータと実機で何が違うの?

 本当のテストはここからです。数GHzで動いているシミュレータでは快適だったのに、実機では遅くて使いものにならなかったり、画像や音楽を多用したアプリでは、メモリ不足が頻発したりします。ネットワークを使ったアプリでは、圏外だったり3G回線だと使いものにならない仕様だったりします。またiPhoneは電話なので、電話やSMSメールが割り込んできます。iPhone 3GSでは、動くのにiPhone 3Gでは動かないなどの現象も起きます。

 このように、シミュレータでは起きなかったエラーが続々と出てくるので、頑張って解決してください。

 初めて実機でアプリが動いたときは、非常に感動しました。職業プログラマの方もホビープログラマの方も、ぜひ自作アプリを作ってiPhoneを120%使い倒してしまいましょう。

【おまけ】iPhone OS 3以降の新機能、主な3つ

 2009年6月にiPhone OS 3.0がリリースされ、非常に重要な機能の追加が行われました。多過ぎて書き切れないため、3つに絞って説明したいと思います(下記リストはインデックスになっています)。

  1. アプリ内課金「InAppPurchase」
  2. ユーザーにメッセージを通知「Push Notification」
  3. Bluetooth通信「Game Kit」

【1】アプリ内課金「InAppPurchase」

 これまでiPhoneアプリというと、有料アプリ、無料アプリの2種類で有料アプリは初回販売時の売り上げしかない、いわゆる売り切り型の方法しかありませんでした。この方法だと、サーバを使用するアプリはサーバコストが毎月発生するようなアプリでは参入しにくく、マンガなどのコンテンツアプリは、毎号毎号別のアプリとしてリリースしなければならない状況でした。

 筆者の勤めるコニットのオンライン対戦チェスゲーム「SamuraiChess」では、サーバ費用をアプリ価格に上乗せせざるを得ない状況で、これではよくネット対戦する人とたまにしかネット対戦しない人では、不公平が生じます。

 InAppPurchaseの課金方式は3種類で、消耗品、非消耗品、期間課金があります。コンテンツアプリは1度購入したら永続的に見られるものですから、非消耗品型に分類されます。「SamuraiChess」のネット対戦サーバ費は期間で課金されるべきものですから、期間課金型に分類されます。主に、ゲームなどで使う武器、宝石や回復薬などは、消耗品型に分類されます。

 すでに多数のInAppPurchaseを使用したアプリが登場しており、アプリベンダ側としても非常に重要な新機能となっています。

【2】ユーザーにメッセージを通知「Push Notification」

 これまでは、アプリをダウンロード、または購入してくれたユーザーに、メッセージを伝えたいときには独自にメールアドレスを収集するか、アプリを起動してもらう以外にありませんでした。

 メールアドレスを収集するのには抵抗がありますし、新しくダウンロードコンテンツの追加を行ってもアプリを起動しなければ伝えられないのは非常に残念でした。ユーザーの匿名性を維持しながら、ユーザーにメッセージを送れるのは、アプリベンダ側としても非常に重要な新機能です。

 また、メッセージ通知機能により新しい形態のアプリが作れるようになりアプリの幅が非常に広がりました。

 例えば、ネット対戦のチェスゲームでは、新形態としてメッセージ駆動のゲームが作れるようになります。ネットワーク状況が不安定なモバイルゲームにとって、15分や30分連続でゲームし続けることはハードルが高いことなので、相手が次の手を指したら通知が来て、アプリを立ち上げ次の手を打つなど、10〜20分拘束されるより、1手が非常に長いスパンで1週間〜1カ月で1局を対戦するような方式がいいのかもしれません。

 「Push Notification」機能や、その例となるiPhoneアプリについては、下記記事もご参照ください。

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。