0.はじめに
このとろころ、食べものネタばかりでした・・(-_-); 久々に開発に近いネタを…
iOSのアプリケーションを開発し実機でのテストを行うとき、Appleは勝手にアプリケーションが配布されないようにガードをかけている。
開発契約1契約につき最大100台までのデバイスをテスト機に用いることができるようになっており、不特定のデバイスで動作させるには、AppStore経由か、エンタプライズ契約が必要となっている。
一般には、100台以上のテスト機でテストすることは無いであろうから、これで十分な数と言える。
では100台をどのように限定しているかだが、デバイスを特定するためにデバイスの割り振られているUDIDという識別子を用いる。
開発者は、テストするデバイスのUDIDをAppleの開発ポータルに登録して、プロビジョニングプロファイルというファイルを作成し、開発したアプリケーションと一緒にテストするデバイスにインストールしてもらうことで、そのデバイス上で動作させることが可能となりテストが実施できる。
このUDIDは、iTunesでも確認することができるが、iTunesでは、このUDIDをコピーすることができないので画面を見ながら手打ちすることになる。
これでは間違いの元であるし、そもそもiTunesはテストのための使用には適さない。
そこで登場するのが、[iPhone構成ユーティリティ]というアプリケーションだ。
このアプリケーションを使った方が、はるかに楽にテスト用のアプリケーションを入れやすいし、ログの確認も行えるため非常によい。
また、iPhoneのセキュリティ設定などにも使えるため他の機能も一通り目を通しておくとよいだろう。
1.iPhone構成ユーティリティの入手
iPhone構成ユーティリティはAppleのサイトからダウンロードしてインストールする。
執筆時点でのダウンロード先URLは、http://support.apple.com/kb/DL851?viewlocale=ja_JP となっている。
これは、Mac版3.3のものだ。Lionでも動作することを確認した。
Windows版や、新しいものはURLが変更になると思うので、適宜 Apple のサイトで検索して正しいものを入手して欲しい。
このダウンロードサイトから入手したイメージファイルをダブルクリックして、デスクトップにマウントすると、中にインストーラパッケージが入っているので、ダブルクリックしてインストールを実施する。
インストールが完了すると、アプリケーションフォルダ下のユーティリティフォルダに、iPhone 構成ユーティリティがインストールされる。
2.UDIDの調査
iPhone構成ユーティリティを起動し、テスト用のデバイスを接続する。
すると、左側の「デバイス」欄に、接続したデバイスがリストされるので選択する。
右側のエリアで「概要」タブを選択し、デバイスの情報を表示させる。
このとき、表示される「識別子」が、UDIDだ。(シリアル番号ではないので注意)
この識別子の値はマウスで選択してコピーできるので、メールなどに貼付けやすいだろう。
このUDIDを開発者に連絡することになる。
ここで、開発者が欲しい情報を付与して連絡してあげるとよいだろう。
それは次のようなものだ。
- 識別子:これは先ほど調べたもの
- 機種:iPhone 3GS, iPhone 4, iPad, iPad 2 などの情報
- ソフトウェアバージョン:iOSのバージョン。ソフトウェアバージョンの部分に表示されている
これらも情報と一緒に開発者に連携するとよい。
iPhone構成ユーティリティにデバイスを接続したときの画面を参考までに掲載しておく。

iPhone構成ユーティリティ
準備
MacPorts をインストール
Ragel をインストール
- $ sudo port install ragel
PCRE をインストール
- http://pcre.sourceforge.net/
- $ ./configure –enable-utf8
- $ make
- $ sudo make install
Ohcountのインストール
Ohcount の入手
- http://sourceforge.net/projects/ohcount/develop
ダウンロードしたファイルを展開し、ターミナルで展開したフォルダに移動する。
Ohcount のインストール
- $ ./build
- $ ./build ruby
- $ sudo cp bin/ohcount /usr/local/bin
Ohcount の使い方
以下、ソースコードのディレクトリに移動して使用する。
| 単純にソースコードのステップ数をサマリ表示する |
$ ohcount -s |
| ターゲットと識別するファイルを出力する |
$ ohcount –detect |
| 各ファイルごとのステップ数をカウントする |
$ ohcount -i |
| ファイルを指定してカウントする |
$ ohcount test.m |
その他、オプションがいくつかあるので、ドキュメント(docs)を参照する。
iPhoneの開発をとりまく環境は、コミュニティで叩かれている。その殆どはSDKに関するライセンス要項だ。とにかく普及しづらいライセンスとなっていて、AppleがiPhoneについて、どれだけ重要な生命線と位置付けているのかが解る。
しかし、Appleは逆にこのままではiPhoneのアプリ開発も普及しづらいと判断したようで、少しゆるやかになった。そのおかげか、iPhone SDKに関する書籍がようやく登場する。
ワタシもiPhoneのアプリのアイデアがあり、この開発をしたくて、普段使っているauのパケ放題を解約し、auでは一切インターネットをしない(必要最低限のメールのみ)ことにして、オクサマにお願いして買ってもらったが、なかなかに開発に関する情報が少なく、あったとしても、Appleから提供されている英語のドキュメントと英語のPodCastをたよりにしている状態だったので、遅々として進まなかった。
やはり母国語のドキュメントの方が理解も早いし、なにせ日本語の特徴は、眺めただけでおよその意味が見えるのがいい(漢字の力はスゴイということだ)。
まだ出荷されていないが、正月に間に合えばいいのになと思っている。楽しみだ

未だ日の目をみないiPhone
最近(遅ればせながら)、JUDEにはまっている。
いつも設計をどようにすれば会社間で意思疎通がスムーズにいくかに苦労するのだが、なかなかUMLを使ってみようという気持ちにならなかった。
それはUML自体には魅力があったが、有用なツールに巡り会えてなかったからだ。
しかし、JUDEのサイトを久しぶりに覗いてみると、かなりよくなっており、ワタシの好きなマインドマップとの連携に力が入っている(もしかしたら昔からかも知れませんが・・)。
Community版でお試ししてみたが、フリーのCommunity版ではモノ足りず、Professional版の試用ライセンスを使い始めたところ。これがまた具合がよいので、全面的に採用したくなっている。
で、指名ユーザライセンスならば、複数のクライアントにセットアップして使ってよいので、当然Macで使いたくなる。Java製品なのでサポート対象外のZipバイナリをダウンロードしてセットアップにチャレンジ。いくつかGoogleに聞いているうちに、JUDEコミュニティサイトで、Mac OS X用非公式リリースが配布されていることを知った。非公式なので当然、サポート対象外だし、いくつか動作しない機能もあるのを承知でダウンロードする。
入手したファイルを展開し、アプリケーションフォルダに入れて、JUDE-professional をダブルクリックするだけでMacメニューを伴って起動した。超カンタン!作成者に感謝!ライセンスキーは、Windows版のそれが使える。

JUDE-Professional起動
PHPで開発中のサイトで、動的にPDFファイルを生成して提供するページで、HTTPSで運用するときは注意が必要だ。テストサイトは社内にありHTTPでテストを実施したりすると、HTTPS環境ではうまく動かないことがある。PDFページを要求すると、IEが「ダウンロードできません。ファイルをキャッシュに書き込めませんでした」とのたまう。
MicrosoftのKBに「キャッシュファイルが作成できない場合はファイルのダウンロードに失敗する」というのがあった。
要は
- httpsを利用するようなときは秘匿性が要求されているのでクライアントキャッシュをさせないようにして、第三者にキャッシュファイルをコピーされる危険性を避ける
- ところがPDFのように外部アプリケーションを使う場合はキャッシュファイルが無いと開けない問題がある
ということだ。当たり前といえば当たり前の動きだ。ふむふむ。そこでMicrosoftはhotfixを提供したようだが、PHPなどで、Content-TypeとContent-Lengthなんかの最小限のヘッダしか送出しないように書いていると、実際は、Cache-Control: no-cache が送出されて、クライアントキャッシュしないようになるため、先のエラーが表示されることとなる。
これを回避するには
- header(‘Pragma: private’);
- header(‘Cache-Control: private’);
を送出するようにして、明示的にクライアントにキャッシュさせる必要がある。private にすることでプロキシなどにはキャッシュさせないようにしておく。
ここで留意すべき点は、
- HTTPSでも単にコンテンツを表示するだけならば、キャッシュさせなくてもよい
- つまり、個人情報やクレジット情報などのコンテンツはPDFで提供するのは好ましくない
- これらの動作を発注者も制作者もユーザも認識するよう注意表示すべき
といったところかと思う。
ちなみに、こちらにHTTPヘッダに関するすばらしい記事がある。(←このサイトが消えないことを強く強く望みます)
最近のコメント