24 | 8月 | 2011 | HMDT Blog

カテゴリー : 2011年 8月24日

MacでARMでUniversal Binaryの悪夢再び?


マイコミジャーナルより、『加速する「MacでARM採用」の噂、議論の存在をIntelが認める』。

マジすかー。PowerPCとIntelのUniversal Binary対応が終わったと思ったら、次はIntelとARMのUniversal Binaryすか。3つ同時にサポートすることは、共通して動くOS Xのバージョンがないから、考えなくてもいいな。

しかし、PowerPCからARMだったら、基本のエンディアンが同じだからまだ楽だったろうに。間にIntel挟むから面倒。ま、上位の方しか作らないアプリ開発屋は、あんまりエンディアンの影響受けないけどね。

iPhoneアプリでUDIDを使いたいケースその2


追記による注意:この記事は、はなはだしい勘違いに基づいていて、内容が破綻しています。修正しようにも、最も大事なところが勘違いしているためほぼ全部書き換えになってしまうので、しょうがないのでそのままにしておきます。最後に何が問題だったか書いておくので、そちらを参照して下さい。ということで、そのままの中身を信じないで下さい。

前回に続いて、iPhoneアプリでUDIDを使いたくなるケーススタディ。

あるiOSアプリがあったとして、自宅ではiPadの広い画面でゆうゆうと使いたい。通勤中はiPhoneで使いたい。それぞれのデバイスで、作業を別々に進めていく。どこかで同期を行う必要がある。こういった状況を考えよう。

まず大前提として、iOSのモデルは1アカウントに対して複数デバイスを運用する。これらのデバイスは、iTunesを通じてアプリおよび書類を同期できる。逆に言うと、複数デバイスで異なるデータを保持し続けることを想定していない。

もちろん、ほとんどの状況において、データの同期は善だ。iPhoneとiPadとで違うデータがたまり続けたら目もあてられない。そのためにiTunesを使ったり、同期のための独自サーバを立てたりする。iOS 5からはiCloudも提供される。

でも実際にアプリを使っていると、同期したくないデータも出てくる。たとえば、ブックビューワみたいなアプリを考える。iPhoneでもiPadでも同じ本棚を共有して本が読めるとする。このとき、iPhoneで呼んだ続きをそのままiPadで読みたい、という要求があるだろう。それと同時に、iPhoneで読んだ本はiPhoneで読み続けて、iPadではiPadのものを読み続けたい、という要求も発生するだろう。

現在の同期モデルだと、前者しかできない。すべての書類が同期されてしまうので、「前回読んだ本」を表すデータもただ一つしか存在できないからだ。となると、そのデータをデバイス毎にひも付けた形で保存しておきたいことになる。、、、UDIDさんの出番ですよー。

UDIDが使えれば、それをキーとしてデータを保存しておけばいい。生のデータを使うのが嫌であれば、ハッシュ値でも何でもとればいい。UDIDが使えないとなると、デバイスを識別する方法がなくなっちゃう。仮に自前のUUID作ったとしても、それがデバイス間で同期されたら意味ないし。

デバイスのモデル名を使うという方法があるかもしれない。UIDeviceクラスからは、@”iPhone”や@”iPad”という現在使っているデバイスのモデル名が取得できる。なるほど、これならiPhoneとiPadは識別できるな。、、、一人でiPad二台使ってたらどうすんの?

というわけで、やっぱりUDIDは欲しい。ま、これに関してはMACアドレスで代用は可能だけど。ネットにつながない「閉じた」アプリケーションであっても、複数デバイスを運用する限り、どのデバイス上で動いているか識別したい要求は存在する。

追記による注意:はい、どこが勘違いしていたでしょうか?「iTunesの同期によって、デバイス間の書類も同期される」というところです。実際は、同期されません。したがってUDIDを取得する必要もありませんでした。

もともとこの記事は、UDIDが必要になるケースって何があるかな?と考えて、複数デバイスを使い回しているときにUDIDを意識することがあるかも、というところから書いていきました。その結果、都合のいい勘違いを自分の中で作ってしまったようです。ということで、迷惑をかけた人がいたら、申し訳ありませんでした。