オレ流ユニバーサルバイナリの作り方

サルでき.jp > 97.サルでき本 原稿以前 > オレ流ユニバーサルバイナリの作り方

2011/12/11 13:18 投稿先 97.サルでき本 原稿以前 投稿者 カワサキ タカシ

い天気。気分が晴れるわ〜。

今を遡ること20年くらい前、当時の少年少女たちの間を、ある不吉な噂が流れていった。「スーパーファミコンは、どうやらファミコンのカセットが使えないらしい」、というものである。「ええっ!じゃぁ今持っているカセットはどうなっちゃうの!?」「お金返してくれるの!?」。友達の手前、恥ずかしくて口には出せないものの、皆表情は暗い。ファミコンを買ってもらうのにも四苦八苦したのだ。使えなくなるなんて、そんな状況、誰が納得できようか。責任者出てこい。一般的な家庭用ゲーム機として爆発的に普及したファミコンであったが、「初代」というものにはいつだって「認識不足」という問題が付いて回る。我々は知らなかったのだ、「互換性」という言語と、その意味を。

時は流れて、現在。我々は新しいハードが登場すると、すぐさま互換性を確認するようになった。せっかく新しいものが出ても、やれることが少なくては楽しくないことを、イヤというほど経験したからである。ノーモア、「これでしかできない」。ということで、iPadが登場したときに、当然のように我々は思ったのである。「iPhoneのアプリは、iPadで使えるのだろうか」と。どう見てもサイズが違うし、新機能とか追加されるんだろうし。「同じような雰囲気をした別物」だったらどうしよう。だが、その心配は杞憂に終わった。アップルは抜かりなくその部分を考えていたのだ。そう、iPadでお馴染み、「2倍」拡大機能である。

すごいねー。さすがアップル。完。
これでこの話を終わらせてしまっても構わないと言えば構わないのだが、あの「2倍」拡大機能。少々残念な気がするのはワタシだけではありますまい。その場しのぎというか、突貫工事と言うか。画像の縦横比には対応のしようがないので、拡大後に黒い帯が入ってしまうし。うーん。なんとかしたいなー、と、そんな時に出てくるのが、ユニバーサルバイナリである。

iPhoneアプリ用語で、「iPhoneとiPad両方に対応するアプリ」のことを、ユニバーサルバイナリと言う。ユニバーサル、随分大きく出たものだ。もう何でも来んかい、くらいの勢いである。アンドロイド?そんなもんは知らん。Xcodeでは、このユニバーサルバイナリを作るための方法を様々にサポートしている。一見親切そうなのだが、様々、とワタシが言う場合は、大抵「めんどくさー」という気持ちでを含んで言っている。これもそう。まともにやろうとすると、いろいろしなければいけないことが出てくるのだ。

ここで、大胆に仮定してみよう。おそらくアナタは、iPhoneとiPadで、「ほとんど同じ見た目のアプリ」を作りたいのではないだろうか。「え?それはそうでしょう?」、と思ったアナタ。良かった良かった。そんなアナタは、ワタシ流の裏ルールを覚えておけばよろしい。Xcodeに用意されているユニバーサルバイナリ用の設定を全て行う必要がある人というのは、「iPhoneとiPadで、各々が最適になるようなアプリを作りたい」という人だけなのだ。あるでしょう?iPhoneアプリとは完全に見た目の違う、iPad専用の見た目をしたアプリ。標準アプリのメールとか。ああいうのを作ることになってしまった人、ゴメンナサイ。

そういう前提で、ワタシ流のルールをご紹介しよう。いつものように思いっきり簡単に考えて欲しい。iPhoneとiPadで、違いが問題になる部分は、縦横比だ。(960×640ピクセルのiPhoneに対して、1024×768ピクセルのiPad)その影響がモロに出てくるのが背景画像で、拡大縮小しようと、iPhone用のサイズでは、iPadでは横が足りなくなってしまうし、iPad用のサイズでは、iPhoneでは縦が足りなくなってしまう。まず、それを解消するために、背景画像だけは二種類(960×640ピクセルと1024×768ピクセル)用意しておこう。

で、ここからがポイント。プログラムの中で、現在の画面の横幅と縦幅は、いつでも算出できるのである。算出した結果、iPhoneのサイズなら、iPhone用の画像を配置をし、iPadのサイズなら、iPad用の画像を配置する。これだけで背景画像問題は解決する。次に、算出した横幅(縦幅)を一旦データとして保管しておいて、ボタンやラベルを設置するときに、横幅が、iPhoneサイズの場合はこう、iPadサイズの場合はこう、とサイズを指定しておく。これで、準備は終了だ。あとは、「このアプリ、ユニバーサルっす」、と、Xcode上でチェックしておけば、iPhoneでも、iPadでも同じような見た目のアプリができるのである。

面白そうなiPhoneアプリなのに、ボクのiPadではクールな見た目になってない。次世代の少年少女が、ションボリすることがないよう、我々オジサン、オネエサマ世代は気をつけていきたいものである。自分はまだピチピチの学生で、オジサンじゃない?10歳以下の少年少女からしてみれば、18歳以上の人間なんて等しくオジサン、オネエサマである。わっはっは。いらっしゃい。

関連する記事:


Advertisement