2011年5月28日土曜日

Provisioning Portal の謎 ~ひとまず訳してみる 004~App ID の概要

App IDs

App ID はiOS開発とProvisioning プロセスの統合的なパートであり、これによってApple Push Notification service および/もしくは 外部ハードウェアアクセサリとの通信が可能になります。さらに、App ID はキーチェーンデータ(パスワードのような)をアプリケーションセット間で共有するために使用できます。

App ID は10文字の一意な “Bundle Seed ID” と呼ばれる文字列と、traditional な(訳注:この部分、訳者は MacOS での開発経験がないので適切な訳語が選べない) CF Bundle ID(もしくは Bundle Identifier) から構成されます。App ID におけるBundle Seed ID の部分は、単一 App ID を用いてあなたが開発する複数のアプリケーション間でキーチェーンアクセスを共有する為に使用できます。さらに、iOSアプリケーションとペアで使いたい外部ハードウェアアクセサリに組み込むことも出来ます。Apple Push Notificaton service (APNs) を使用するため、および、In App Purchases にアプリケーションを登録するためにも、App ID の登録は必要です。
App ID の Bundle Identifier 部分はワイルドカードキャラクター(アスタリスク “*”)で置き換えることも出来ます。これにより、一つのApp ID を複数のアプリケーションをビルドしてインストールする目的で使用で>きます。ワイルドカードキャラクターを使用しない場合、アプリケーションをあなたのデバイスにインストールするためには、App ID のBundle Identifier 部分をXcode のCF Bundle ID として入力する必要があります。Bundle Seed ID の部分は Xcode に入力する必要はありません。ワイルドカード App ID は、Apple Push Notification Service および In App Purchase と共に使用することは出来ません。

Apple Push Notification Service について更に詳しくは、 Local およびPush Notification プログラミングガイド, App ID How-To および、 Apple Push Notification topic in the Apple Developer Forumsを参照ください。

In App Purchases をアプリケーションに組み込むためのさらに詳しい情報は、 Store Kit Programming Guide, App ID How-ToiTunes Connect ユーザーガイドを参照ください。

キーチェーンアクセスに関して詳しくは Keychain Services Reference を参照ください。

iOSアプリケーションと通信する外部アクセサリーについて詳しくは MFi Program を参照ください。

Provisioning Portal の謎 ~ひとまず訳してみる 003~App ID

Provisioning Portal の App ID パートの "How To" タブには次の記述がある:

~~~

App ID の生成


App ID は一意の識別子(identifier)であり、これによってAppleからの通知サービス(Apple Push Notification Service), アプリケーションとのキーチェーンデータの共有、自作のiOSアプリケーションプログラムと関連づけたい外部ハードウェアアクセサリとの通信が可能になります。iOSベースのデバイスに自作アプリケーションをインストールするには、App ID の生成が必要となります。

個々のApp ID は、 10文字の一意な “Bundle Seed ID” プレフィックスと、”Bundle Identifier” から構成されます。”Bundle Seed ID” は Apple によって生成され、”Bundle Identifier” はチーム管理者がProvisioning Portal に入力します。App ID の”Bundle Identifier” 部分には、ドメイン名を逆から記述した形式が推奨されます。App ID は例えば次のような形式です: 8E549T7128.com.apple.AddressBook.

同じキーチェーンアクセスを共有するアプリケーションのセット(例:アプリケーション間でパスワードを共有するようなアプリケーション群)を生成する場合、もしくは、全くキーチェーンへのアクセスを必要としない場合、アスタリスク”*”をワイルドカードキャラクターとして後置してアプリケーションセット用に単一のApp ID を生成することが出来ます。ワイルドカードキャラクターはApp ID 文字列の一番最後の文字でなければなりません。この種のApp ID は次のようになります:R2T24EVAEE.com.domainname.* もしくは R2T24EVAEE.*

こうしたワイルドカードを使う場合、Xcode の “CF Bundle Identifier” フィールドに単純にアスタリスクを入力すれば良いだけです。

App ID の生成


  1. チームメンバーもしくはチーム管理者がProvisioning Portal の “App ID” セクションに行きます。
  2. “Add ID” をクリックします。
  3. App ID 用の共通名を入力します。これはProvisioning Portal ないで参照を容易にするための名称です。
  4. Bundle Identifier をテキストフィールドに入力します。”com.domainname.applicationname” のように、ドメイン名を逆転したような記法を推奨します。同じキーチェーンアクセスを共有するようなアプリケーションセット用には、Bundle Identifier としてワイルドカードキャラクターを使用する必要があります。(例: com.domainname.* もしくは *)。このBundle Identifier はXcode内の自作アプリケーション用のあらゆるCF Bundle Identifier に合致する必要があります。
  5. この時点で “Submit” をクリックすると、10文字のBundle Seed ID が生成され、すでに入力ずみのBundele Identifier と結合されます。この文字列はApp ID 文字列となります。注意:Bundle Seed ID は、Xcode に入力する必要はありません。
  6. 共通のキーチェーンアクセスを必要とするアプリケーションセットそれぞれにApp ID を生成します。キーチェーンアクセスを必要とするアプリケーションセット(アプリケーション間でパスワードを共有するような)を作成したり、キーチェーンアクセス不要なアプリケーションセットを作成する場合、アスタリスクをワイルドカードキャラクターとして後置した単一のApp ID を全てのアプリケーション用に生成します。


App ID をApple 通知サービス(Apple Push Notification service)に登録する


  1. Provisioning Portal のApp ID セクションでは、Apple 通知サービス(Apple Push Notification service)に使用したいApp ID を設定することが出来ます。APNに使用できるのは特定のBundle ID を持つApp ID のみです。ワイルドカードApp ID を使用することは出来ません。Apple 通知サービス(Apple Push Notification service)カラム内の”Available” を参照してこのApp ID を登録すると共に、このApp ID のための証明書を設定する必要があります。
  2. 使用したいApp ID の横の “Configure” をクリックします。
  3. Configure App ID ページにおいて、Push Notification Services ボックスを使用可能にチェックして、Configure ボタンをクリックします。このボタンをクリックすると APN アシスタントが起動されます。APNアシスタントは、あなたのApp ID に特有のクライアントのSSL証明書を生成するための一連の手順を提示してくれます。
  4. クライアントSSL証明書を任意の場所にダウンロードします。ダウンロードした証明書ファイル(拡張子は .cer)をダブルクリックして、キーチェーン内にインストールします。
  5. 終了したら、APNSアシスタント内で”Done”をクリックします。
  6. キーチェーンアクセスを起動します。プロバイダー開発用に使用しているコンピュータのログインキーチェーンに証明書をインストールしてください。APNs SSL 証明書は通知サーバ(notification server)にインストールされます。
  7. これらのステップを完了したら、iOS Dev Center Portal のConfigure App ID ページにもどっります。証明書は緑の丸でマークされ、”Enabled” と表示されます。
  8. APNのセットアッププロセスを完了するには、APNで使用可能なApp ID を含むprovisioning profile を生成する必要があります。


App Purchases とゲームセンター用にApp ID を登録する

注意:In App Purchases Sandbox をテストに使用するためには、iTunes Connect 内のIn App Purchase Test User アカウントを新に生成する必要があります。iTunes もしくは iOS 用の既存のいかなるアカウントもsandboxテスト用には使用できません。これらテストアカウントを生成する方法については”iTunes Connect Developer Guide” を参照ください。 Game Center Sandbox をテスト用に使用するには、あなたのデバイスのGame Center application 内に、Game Center テストユーザーアカウントを新たに生成する必要があります。


  1. 全ての明示的なApp ID は自動的にIn App Purchase と Game Center で使用できるように設定されます。ワイルドカード App ID と既存のApp ID を複製したApp ID は、In App Purcases と Game Center では不適格となり使用できません。
  2. In App Purcase をセットアップするために iTunes Connect の Manage In App Purcase モジュールを使用して下さい。

2011年5月21日土曜日

iPhone プログラミングのおすすめ教科書 その2

iPhone関係のプログラミング解説書はいろいろと読んだが、今のところ決定版はこの一冊「よくわかるiPhoneアプリ開発の教科書」ではないかと思う。いろいろなところでこの本は好評で、特に図やイラストの多さが評価されているが、なにより「初心者がわかりにくいところ、混乱するところ」が見事に説明されているところが非常に良いと思う。

AppStore に公開したプログラムも、この本を見ながらサンプルプログラムを入力していて、それをちょっと拡張して作ったのである。非常に基本的なところが抑えられているので、入り口への導入としては非常に良い本だと思う。

朝日新聞 for iPad に非難ゴーゴー

2011年5月18日に公開された「朝日新聞 for iPad」。

産経新聞は論調が右寄りすぎてアレだし、日経新聞電子版は紙面構成じゃない上に動作が遅いし、ということで紙面構成風の朝日新聞が iPad で見られる!ということで早速ダウンロード。

しかし、このアプリにはフリートライアルという方式はなく、まずはアカウント登録しなければならないのである。News Week とか iTmedia なんかフリーなのに、まずはクレジットカード登録してアカウント設定しないと1ページたりとも読めないのである。

まあしかし、これも仕方ないなと言うことでとりあえずアカウントを作り、ダウンロード。

私はすっかり勘違いしていたのだが、当然 iPhone 用のアプリもあると思っていたのである。が、iPhone から検索するとない。朝日新聞デジタルがない。iPhone 用アプリは無かったのである。アンドロイド用にはあるのに、iPhone 用には無いのである!

これは困った。iPad は常時持ち歩いている訳じゃないからなー。家で読む分には、実物の朝日新聞があるからなー。

ということで案の定 AppStore のレビューは非難ゴーゴーである。

後から気づいたのだが、「ののちゃん」がどこにも載っていないのである。はっきり言って朝日新聞は嫌いなのだが「ののちゃん」があるから朝日新聞を読んでいるのである。その「ののちゃん」が掲載されていないのである。

しかも今日紙面をダウンロードしようとしたら、タイムアウトでダウンロードできない。おそらくアクセス集中に耐えきれなかったのであろう。

これは企画段階から無理があるよな。なんか操作性も微妙だしな。まあ、今後の改善に期待だな。
誰がこんなのにゴーサイン出したのかな。

2011年5月20日金曜日

コネクタケーブルを買い替えた


iPhone4 に買い替えてから、透明プラスチックのカバーをかぶせたのだが、そうすると今まで使っていた巻き取りケーブルのコネクタがでかすぎて(厚みがありすぎて)干渉するようになった。

なので、アップル純正のコネクタみたいな薄型コネクタが付いている伸縮ケーブルに買い替えたのである。充電も同期もちゃんとできる。細い方がなにかとありがたい。

2011年5月19日木曜日

iPhone プログラミング:おすすめの教科書その1


iPhone のプログラミングをやるにあたって、やはり Objective-C という言語はちゃんと理解しておきたかった。アップルのサイトからダウンロードできるドキュメントは、あまりに簡素を装っている割には内容が濃いため難解である。例えばダイナミックメモリを管理する際の「参照カウント」についても、読者はガベージコレクションの基本がわかっているものとしてあっさり書かれすぎていて、具体イメージがよくわからないという問題がある。

もっと簡単に説明してくれる Objective-C の入門書はないものかと探しているうち、世界一わかりやすいObjective‐Cプログラミングの授業という本に出会った。表紙には iPhone や iPad の写真が描かれているが、どうも内容を読んでいると、元々は MacOS プログラミング用に書かれていたものを、多少 iPhone 用にアレンジしているらしい雰囲気が随所ににじんでいる。

多少気になるところはあれど、C言語は理解している人向けに、Objective-C の主な拡張点を段階的に説明してくれるのは非常にありがたい。

Objective-C のすべてを完全に説明しようとはせず、ある程度のとろで切り上げているのもわかりやすい。再度読み直すときに精神的負担が少ないからだ。とはいえ、この本を読んだだけだとコマンドラインレベルのテストプログラムくらいしか動かせないのだが、それでも C や UNIX をマスターした人には、かなり Objective-C の敷居を下げてくれる本だと言えよう。

アップル純正: iPhone プログラミングドキュメント

一年前よりずっと充実した iPhone デベロップメントの日本語ドキュメント。これは助かる。

2011年5月15日日曜日

Provisioning Portal の謎 ~ひとまず訳してみる 002~Certificate (証明書)  続き

証明書署名リクエストの受理

チームの代理人とチームの管理者はiOS Development Ceritificate リクエストを受理するか拒否する権限を有しています。チームメンバーのリクエストを受理もしくは拒絶するには、チーム管理者は最初に全員のCSRを発行する必要があります。承認のためにCSRが発行されたら、チーム管理者はCeritificatesセクションにおけるDevelopmentタブに誘導されます。ここにおいて、CSRは各リクエストに対応したアクションをクリックすることで受理もしくは拒絶されます。
  1. CSRが受理もしくは拒絶されると、リクエストを発行したチームメンバーはe-mailによって証明書のステータス変更を通知されます。CSRを発行したチームメンバーと、チーム管理者に対して、それぞれiOS Developer Certificate が存在します。



Development Ceritificate をダウンロードしてインストールする

  1. Portal の‘Certificates’ > ’Distribution’において、コントロールキーを押しながら"WWDR Intermediate Certificate" リンクをクリックし、"Saved Linked File to Downloads" を選択し、証明書のダウンロードを開始します。
  2. ローカルマシンにおいて、WWDR Intermadiate certificateをダブルクリックしてキーチェンアクセスを起動し、インストールします。
  3. CSR受理によりチームメンバーとチーム管理者は Provisioning Portal の 'Certificates' セクションを通して、それぞれの証明書をダウンロードできます。証明書の横に記載されている 'Download' をクリックすることでローカルマシンに iOS Development Certificate がダウンロードされます。
  4. ローカルマシンにおいて、ダウンロードされた .cer ファイルをクリックしてキーチェンアクセスを起動し、証明書をインストールします。
  5. チームメンバーは自分自身の iOS Development Certificates をダウンロードできるだけです。チーム管理者はチームメンバーの公開 certificates をダウンロードする権限を有しています。AppleはCSRのプライベートキーを受け取ることは決してありません。プライベートキーはオリジナルのキーチェーンを生成してシステムキーチェーンに保存したチームメンバー以外の誰にも利用できません。




プライベートキーを保存し、他のシステムに転送する
複数のマシンで開発したい、あるいはシステムOSを再インストールする必要がある場合に、プライベートキーをどこか安全な場所に保管しておくことが非常に重要です。プライベートキーが無ければ、Xcode においてバイナリーにサインは出来ませんし、Appleのデバイスにおいてあなたのアプリケーションをテストすることも出来ません。CSRが生成されたとき、キーチェーンアクセスアプリケーションはログインキーチェーンにプライベートキーを生成します。このプライベートキーはあなたのアカウントと結合されておりOSの再インストールなどで失われた場合には再生セイすることが出来ません。もしも複数のシステムで開発を行うのであれば、開発用マシンの全てにプライベートキーをインポートする必要があります。
  1. プライベートキーと証明書を安全に保管し、複数のマシンで開発を可能にするには、キーチェーンアクセスアプリケーションを開き、「鍵」カテゴリを開きます。
  2. iOS Development Certificate に関連づけられているプライベートキーをコントロールキーを押しながらクリックし、そしてメニューの「アイテムをエキスポート」をクリックします。プライベートキーは iOS Developer : <First Name> <Last Name> の公開証明書とペアになって特定されています。 
  3. Personal Information Exchange (.p12) ファイルフォーマットでキーを保存します。
  4. このキーを他のコンピュータへインポートする際に使用するパスワードの入力を求められます。
  5. .p12ファイルはシステム間でやりとりできます。.p12をダブルクリックしてシステムにインストールできます。その際、ステップ4で指定したパスワードの入力を求められます。


Provisioning Portal の謎 ~ひとまず訳してみる 002~Certificate (証明書)

Certificate パートの "How To" タブには次の記述がある:

iOS Development Certificate (iOS 開発者証明書) の取得


iOS Provisioning Portal の 'Certificates' セクションでは、個々の iOS Development Certificates を取得要求できます。正当な証明書を使って署名されていない iOS アプリケーションをAppleのデバイスで動かすことはできません。テストの為にアプリケーションに署名を行う場合、チームメンバーは iOS Developer Certificate が必要です。

デジタル証明書(digital identity) は秘密の「プライベートキー」と、公開の「パブリックキー」から構成される電子的な身分証明書です。このプライベートキーによって、Xcode はあなたの iOS アプリケーションのバイナリーコードに署名を行えます。

あなたが要求しダウンロードするデジタル証明書は、上記の証明情報に加えて、あなたの名前、e-mailアドレス、職業と言った情報も含む電子的文書です。iOS Development Certificate はアプリケーション開発にのみ使用が制限されており、有効期限も設けられています。Apple 証明書の所有者は、有効期限が切れる前にそれを無効(invalidate/revoke)にすることができます。
証明書署名リクエストの生成





  • 「キーチェーンアクセス」->「証明書アシスタント」->「認証局に証明書を要求...」を選択します。注意:この作業中に、キーチェン内でハイライト表示された非対応プライベートキーがある場合、証明書リクエストの結果はProvisioning Portal から受け入れられません。「認証局に証明書を要求...」を選択していることを確認して下さい。「<プライベートキー>を使用して認証局に証明書を要求...」を選択しないよう注意して下さい。










  • ユーザーのメールアドレス欄にはあなたのe-mailアドレスを入力します。iOS Developer として登録した際に使用したのと同じアドレスを使って下さい。



  • 通称フィールドにはあなたの名前を入力します。これもまた、iOS Developer として登録したときと同じ名前を使用して下さい。



  • CAのメールアドレスは不要です。以降のステップを実施すると「必須」表示は削除されます。 



  • 「ディスクに保存」ラジオボタンを選択して、「鍵ペア情報を指定」にチェックを入れて、「続ける」をクリックします。







  • 「鍵ペア情報を指定」を選択した場合、ファイルを指定して「保存」ボタンをクリックします。階のスクリーンでキーサイズとして ‘2048 bits’ を選択し、アルゴリズムには ‘RSA’ を選択して、「続ける」をクリックします。





  • アシスタントはCSRファイルをデスクトップに生成してくれます。 






    1. 証明書署名リクエストを発行する





    2. この作業により、チーム管理者はe-mail により証明書リクエストの通知を受けます。





    3. チーム管理者によりCSRが受理もしくは拒絶された場合、あなたにe-mailにて証明書のステータス変更が通知されます。





      1. Provisioning Portal の謎 ~ひとまず訳してみる 001~ホーム画面

        全ての iOS デベロッパーにとって避けて通れない iOS Provisioning Portal。"provision" とは "…するための" とか "…に対する用意・準備" ということらしいということも今知ったくらいである。

        なにがなんでも一刻も早くアプリを開発・公開したい一心で、あんまりちゃんと読まずにこの Provisioning Portal を流してやりすごしてきたのだが、やはりちゃんと理解しなければということで、一通り日本語に訳して吟味することにした。

        今日はその第一回である。

        まず、iOS Provisioning Portal の Home 画面に書かれている説明を訳してみる。