iOS開発修行中に参考になった本を紹介

■木下誠 「たのしいCocoaプログラミング」

iPhoneのSDKが一般公開された頃から、自分でアプリ作ってみたいと思ってMac miniまで買いそろえたりしていたものの、昔から「C」と名のつく言語(というかポインタ?)が苦手だし、オブジェクト指向も概念はわかるもののいまいちとっつきにくくて、長らく放置していました。

が、MacBook Airを買ったり、ちょっと仕事絡みで相談を受けたりを機にようやく重い腰をあげてみたのがこの年末年始。でもやっぱりObjective-CもXcodeも敷居が高くてTwitterでプログラマの友人達に助言を請うたりしつつ、1月は本当に頭を悩ませていました。本を何冊も買っては、説明がスッキリしなかったりサンプルのビルドが通らなかったりで投げ出したりの繰り返し。

そんな中で急速にObjective-CやXcodeに関する理解が進んだ感があったのが、木下誠氏の「たのしいCocoaプログラミング」でした。この本は正確にはiOS開発について触れた書籍ではなく、MacOSXに関するものです。ただObjective-CやXcodeに関しては共通事項もおおいということで、随分前にTiger版を買ってあったのを手にとってパラパラと読み返してみたところ、その前に何冊か読んでいてイマイチすっきりしてなかったところが急激に納得いくようになりました。Xcode 2.xと現行の3.xでは随分作法もかわっているということなので改訂されたLeopard版を速攻で注文。

以前友人向けにVB.NETで作った簡単なWindowsアプリをOSXにさっくり移植できてしまいました。最初からこれ一冊で足りたかどうかは定かではありませんが、断片的だった知識をこの本が再構成してくれた感は高いです。特に他の書籍ではXcodeやInterface Builder上での操作が手順でしか示されていなかったのに対し、この本ではその意味についても触れてくれていたのが大きいような気がします。.hファイルと.mファイルがペアで1つのクラスを表している、といった極基本的な事も、この本でようやく気付いたというレベル(他の本は.hにこう書け、.mにこう書け、ほら動いたでしょ、というノリ)。Objective-Cについても、例えばimport文で宣言ファイルを指定するのに、<>で括るのと””で括る意味の違いまで触れていたのはこの本が初めてでした。そういうレベルの入門者には、(iOS開発を目的とした場合やや遠回りに思えるかも知れませんが)一読の価値があると思います。

■所友太「iPhoneプログラミング UIKit詳細リファレンス」

続けて重宝したのがこちら。「たのしい~」でObjective-CとXcodeの雰囲気がつかめたので、あとはiOS特有の部分を差分的に読めればいいやってことで。iOS 3.x世代の解説本ですが、入門レベルの要素は網羅されているので支障はない気がします。まぁ、もしかするとiOS4.xなら同じことをより簡単にできるようになったりはしてるかも知れませんが。

この本を参考にして、相談を受けた極簡単なアプリのデモ版を完成させることができました。データ保存もネット通信もしないごくごくプリミティブなアプリですが、何冊も投げてきたσ(^^)としては、格段の進歩という気がしています。詳しい人にソースを見せると、とてもオブジェクト指向的とは言えないような作りかも知れませんが、それは今までのVB.NETで作ってきたツールも同じだしw。

「あとは本でもネットでも公式リファレンスでも見ながら猿真似していけば(σ(^^)個人が作る規模のアプリなら)なんとかなるんじゃないか?」という気がVB並にしてきたのは(錯覚だったとしても)大きい。あとはそのドキュメントがVBに比べるとやはり少ないのが難点ですね。

■てことで逆引き本2冊

というワケで、やりたいことがサクっと調べられるよう、いわゆる逆引き本をObjective-CとiOSで1冊ずつ買って見ました。これらはまだ活用には至ってないので、(「原則として自分で使ってみたものをレビューする」という本ブログの主旨には反しますが)紹介まで。

1冊目はObjective-Cという言語に関するもの。「文字列を文字列で分割する」とかそういうレベルの調べもの用。おそらく現時点で日本語で読める逆引き本としては唯一なんじゃないかと。先日立ち寄った書店でも2010年のプログラミング関連書籍ランキングで3位になってました。

もう1冊はiOS特化の方で、「アプリ内から写真撮影をするには」とかいったAPIレベルのノウハウが数多く収録されているようです。世代的にもiOS4.x対応なので心強いです。

 

当面この後マスターしたいのはテーブルビュー(リスト画面)とCoreData(データの保存関係)ですね(フルグラフィックなアプリを作ることはないだろうし)。それを習得できれば簡単な実用アプリは書けるようになる気がします。なんか手頃なお題を物色中。

iPhone4カバー買い換え パワサポ Air Jacket ラバーコーティング

iPhone4のカバー(NUDE)が割れてしまったので買い換えました。少し前に買った静電容量タッチパネル対応手袋が滑りすぎて危ない感じだったので、ラバーコーティングのものをチョイス。既に同社の保護フィルムを2種類とも保持していてかつ余っている(2枚組なので)身としては、抱き合わせ販売で割高感があったんですが、パワサポのエアジャケットにしてみました。

店頭の見本ではあまり感じなかったんですが、実機にはめてみるとラバーコーティングの感触が思いのほか手に馴染んでしっくり来ます。適度な摩擦で安心感があります。それでいて手持ちのベルトケースの出し入れがひっかかるほどでもなく。ラバーだけに汚れ(特に皮脂的なもの)や傷付きやすさは不安ですが、その辺は少し使い込んでみないとなんともですね。でも今の印象でいえば、ダメになったらまた買うかも、というレベル。基本クリアが好きなので、最悪ラバーコーティングは冬の間用(手袋対策)と割り切るつもりで買ったんですが…。iPhone4って3/3GSと比べて角張ってる上にガラスで冷たいので硬質な印象が強いんですが、適度な温もりのようなものを感じて手にもった時にホッとします(ちょい大袈裟)。

SDIM0975

本体上部の写真。エッジ部分に微妙な段差がついていてちょっぴり高級感があります。前のケースは音量ボタンのところから割れてきてしまったんですが、こちらの方が若干強度がありそう。そもそもクリアケースではゴミが入ったのが気になって時々外して拭いたりしてたんですが、それが見えないとなればそう滅多につけはずししない気しますし。スイッチ類の押しにくさは全くありません。

 

SDIM0974

こちらが下側。スピーカー&マイクが一部隠れてるのが気になります。強度的に必要だったんでしょうか?開口部こそ拾いですが、はまり方はピッチリしていて、勝手に緩んだりしそうな気配は今のところ皆無です。もちろんいくら薄いといっても純正Dockには刺さりません。

 

SDIM0976

こちらが本ケースの特徴の1つ、フラッシュガードパーツ。フラッシュ撮影時に光の反射がレンズに映り込むのを軽減するんだそうです。ホントかしらって気がしますが、まぁついてる方がカッコイイ気がするのでつけておきます。ちなみに1つ予備がついてきます。

 

当初、単品でも比較的高価な部類の液晶保護フィルムがセットになってて割高感があったんですが、使ってみると予想よりしっくりして気に入りました。保護フィルムの品質は折り紙付きなので、まだ液晶保護フィルムも買ってないという人はまとめてこのセットはオススメですよ。

iOS4.2.x 動画周り検証メモ

iPadユーザー待望のiOS 4.2.x(以下iOS4.2)がリリースされましたね。早速iPad、iPhone4ともに更新し、動画周りをチェックしてみました。なお、AppleTVは2台も買ったものの両方とも実家なので、AirPlay周りはAirMac Expressでしか検証できてません。

■iPad

チャプタースキップには対応。ただしチャプターリストを表示することはできない模様。

またHTTPストリーミング時はやはりチャプターには非対応の様子。ただ、SafariでBASIC認証がかかっている場合でも正常に再生できます。

AirPlayはAMEなので音声のみしか試せてないですが、音ズレがヒドく実用には今一歩という印象です。特にシークするとボロボロです。

■iPhone4

まず困ったことにiPodアプリで「テレビ番組」の番組名別表示ができなくなりました。分類表示が廃止されたという見方もできなくもないですが、トップ階層でAという番組名が出ているのにもかかわらず掘り下げるとA,B,Cのファイルがごっちゃになって表示されるので、やはりバグではないかと。早々に治るといいなぁ。

同日補足:

2chにて以下の書き込み発見。

697 :iPhone774G :sage :2010/11/23(火) 17:22:12 ID:JT5kbgv/0

>>599
今まではビデオタグの番組でグループ分けされていたのが、4.2だと情報タグのアーティストで
グループ分けされてる(ただし、グループ名はビデオタグの番組名)。
今まで通りのグループにするにはアーティスト名編集するしかない・・・。
ただ、バグがあるみたいでアーティスト名を日本語にするとiPhone上でグループ名が出ない場合
があった(アーティスト名を英語にすれば解決した)。

 

んー、これがバグで一時的なものなのか、将来的に確定した仕様変更なのかで対応が違ってきますねぇ。

というか、iPhone4もiPadのように「ビデオ」アプリを独立させて欲しいものです。

UTF-8だとAppleTVやiTunes 10.1上で文字化けしていたチャプター名ですが、iPhone4では引き続き正しく表示されます。仕様変更ではないようでホっとしました。AppleTV、QuickTimeの更新で治るといいなぁ(AppleTVも更新あったみたいなんだけどどうなんでしょうね)。

HTTPストリーミングに関しては、SafariでもiCabでも再生できなくてエラーになる確率が高くなった気がします。最近iPhoneではあまり使ってなかったので詳細な比較はできませんが。感覚的にはマルチトラック音声のファイルがダメな気がします。総ビットレートやファイルサイズのせいである可能性もありますが、試した範囲ではマルチトラック音声のファイルが100%ダメなようです。

 

まとめると、更新してよかったiPad、ちょっと待てばよかったiPhone4、って感じですかね。

万力型三脚アダプタ DN-100CC

携帯電話サイトの評価業務で、画面写真をたくさん撮ることになりそうなので、コレを買って見ました。携帯電話などのガジェットを万力的に固定して、自由雲台のついた三脚などに取り付けるアダプタです。

ガジェット系やモバイルサイトの評価レポートに掲載する写真は、画角が一定であれば大量に撮ったあとでもバッチ処理でトリミングとかできて楽なんです。

本来はこちらにカメラ付きケータイを固定して使う用でしょう。iPhone4でハンズフリーでFaceTimeするなんて用途にもいいかもです。

下の写真は先日買った一脚兼三脚(別途レビューします)にとりつけてF-04Bを固定してみた様子です(クリックで拡大)。

クランプの締め付けは右側のネジで行います。カーグッズのケータイホルダーなどにあるバネのタイプよりも柔軟性が高いですが、締め付けすぎるとデバイスを壊しかねないかもw。

似たような製品はヨドバシなどでも見かけますが、DN-100CCの特徴は399円と安いことじゃないでしょうか。残念ながら送料がかかるので通販だとこの値段でそのまま買えるワケではないですが、それでも1,000円しません。また以前見かけたことがある製品よりも小さい気がします。ひとつ持っていて損はないアイテムだと思います。

P.S.

そういえば、取り付けてみるまで考えてもいませんでしたが、F-04Bならキーボードが分離できるので、キー操作してるうちにだんだんズレる、なんてことがなくて更に良いかも。ちなみに分離したキーボードはカメラのシャッターにも使えますね。まぁ、σ(^^)的にはケータイのカメラで三脚+リモコンまで組み合わせて写真撮ることはないんですが…

iPhone4、iOS4に対応したコンポジット出力ケーブル

iPhone3GSをiOS4にアップデートしてから、カーナビ(CyberNavi AVIC-ZH9000)に動画を映せなくなってしまいました。iOS4になってテレビ出力周りの実装が変わったためアプリの対応が必要になったらしいのです。iPhone4に買い換えても同じで、しかたないのでAirVideoが対応してくれるのを待っていました。

しかし先日のアップデートでも対応したはずのテレビ出力は復活せず。2chでは復活したという人もいるにも関わらずです。で、パイオニアのサイトを久しぶりに見てみると「調査中」とあります。どうやらCyberNavi + 専用接続ケーブルの側にも問題があるようです。

ならばと、CyberNaviには通常のコンポジット入力もついてるので、そちら経由でもいいやと、2chで質問して確実に現在のバージョンで動作するものをゲットしてきました。

購入したのはLogitecのLHC-RCI01(写真上)です。教えてもらったのはLHC-RUI01(同下)ですが、シガーソケットから電源が取れた方が便利なので、同じシリーズのRCI01にしました。ちなみにRUI01の方はmini-BのUSB端子がついており、一般的なUSB充電器+ケーブルを使えば充電することはできます。そっちの方が汎用性の面で有利かとも思ったんですが、車載用としては確実にエンジンOFFで再生一時停止がかかって欲しいので、それを明示してあるRCI01にしました。RUI01+USB電源でも連動するんじゃないかとは思うんですが。あとRCI01の方にはノイズフィルターがついてるのも優位な点かと。

どちらもパッケージに「iPhone4対応」とシールが貼られているだけあり、バッチリ動作しました。久しぶりにAirVideoやiPodの動画、Safari上のHTTPストリーミング共にテレビ出力できました。(なぜかGood ReaderはNG)。

こうなると車載専用のiPod nano 4Gを新型iPod touchにリプレイスしたくなるなぁ…