iPhone SDK勉強会
iPhone 開発の勉強会をしよう、ということになったので、それ向けにメモを書いてみる。
相手はいろいろな言語を使いこなしている強者なので、あまり懇切丁寧な説明は不要。なので、ざっとXcodeでサンプルプログラムを作ってみて、それを説明していけばよい気がする。しかしその場になるといろいろ忘れそうなので、ざっくり説明することをメモしてみる。
Objective-C
Objective-C はCにオブジェクト指向の考えを追加したもの。Smalltalkに影響を受けている。同様の言語にC++があるが、拡張の仕方が随分違う。
考え方に関しては、Wikipedia 日本語版 英語版が参考になると思われる。OKLabのObjective-C 入門 もよさそう。
Objective-Cでは[]が多用されており、はじめた当初は非常に読みづらかったが、だんだん慣れてくる。
Wikipediaには PosingとかiPhone開発では知らなくても良さそうなことも結構書いてある。説明時にうまく取捨選択する必要はありそうだ。
Apple Developer Connection のページは、ちょっと細かすぎて勉強会向きでは無さそう。
iPhone開発ではObjective-Cを全く使わないわけにはいかないが、しかしほとんどをCで書いたり、C++で書いたりすることは可能。
実際、iPhone Game Projects などの本を読むと、処理速度命のゲームではObjective-Cはなるべく使わないようにしているようだ。
また、マルチプラットフォームで展開するためにObjective-Cを極力避けると言うこともあるようだ。
ただ、パズルゲームなど、それほど処理速度が必要ない場合にはObjective-CというかCocoaを活用して作るという手もある。
Objective-CとC++はかなりちゃんぽんが可能で、本当に混ぜて使うことができる。そのあたりは、Objective-C逆引きハンドブックなどが詳しい。
iPhone & Android クロスプラットフォームアプリケーション開発 もC++を使った開発方法が紹介されている。
個人的にはObjective-CとC++を混ぜて使うとかなり頭が混乱するのでどっちかにしたいが。
iPhone開発をやっていると、自然と
@property (nonatomic, retain) NSString name;
などの記述が出てきてしまうので、ざっくりとこのあたりも説明したい。
プロパティへのnil代入がreleaseの代わりになる理由 が参考になる。
オブジェクトの管理は参照カウンタ(リテインカウンタ)方式で行われるが、これも説明したい。
- init, copy, などで始まるメソッドを使ったら、release をする必要があるが、それ以外の場合はautoreleaseが呼ばれているので、releaeseする必要がない。
- NSArrayなどコレクションクラスに入れたら、その際にカウンタが増やされるので、入れた後にreleaseする
などのことは伝えておこう。まだ全部は読んでいないが、混沌さんのページによくまとまっているように見える。
NSArrayやNSDictionaryなど、よく使うコレクションクラスや NSXMLなどよく使うクラスも説明しておきたい。
iPhone SDKではXMLパーサーはSAXであり、DOMは基本的にサポートされていない(ライブラリを持ってくれば使える)のもどこかで伝えたい。
Xcode
Xcodeで新規プロジェクトを作る場合、テンプレートがいろいろあって、それぞれ何のために存在するのかが分かりづらい。全部自分で作るなら、Window-Based Applicationや、View-Based Application を使って作ればよい。すでにUITableView と UINavigationController を使うことが決まっている、とかあればNavigation-Based Applicationを使えばよい。
まずはテンプレートを使ってプロジェクトを使って何かHello World的なものを作って、その際にいろいろと説明するのがよさそう。
- Xcode上のグループ構成。それぞれのグループに何が入っているか
- XIB とは何か
- info.plist とは何か
- File’s Owner
View-Based ApplicationからNavigation-Based Applicationに相当するものを作ってみせればかなり理解が深まると思うが意外に面倒ではある。
Xcode は個人的にはオールインワンのレイアウトが好みだが、デフォルトでは違うのでそういうところも説明したい。
- Command + Option + ↑ でヘッダと実装切替
- Control+. でマクロ展開(?)
- ESCで補完選択肢
- Control+/ で次のプレースフォルダ
- エディタを縦に分割できる
バージョン番号を変えたり、アプリ名を変えたりする info.plist も説明する。Bundle Identifierを変えないと実機転送できないので必須だ。
iPhone Simulator のTipsも紹介しておくと後で役に立ちそう
- Command+→で回転できる
- Option + Click でマルチタッチもできる
- Option + Shift + Click でマルチタッチで平行移動もできる
Interface Builder
IBOutletやIBActionを使って、Interface Builderと連携する方法を伝える。
Interface Builder 上のボタンとコードを結びつける方法が最初なかなか理解することができなかったが説明されればきっとすぐ分かるだろう。
慣れてくると段々Interface Builderは使わなくなる、という話をよく聞くが、本当にそうなのかと最初は思っていたが確かにそうだった。
ただ、Interface Builderを使った方が早いこともあるので使った場合何が起きるのかは知っておいた方がよいだろう。
UIKit
Interface Builderを説明する流れで、UIWindow, UIView, UIViewController, UIApplicationDelegate, を説明したい。UITableView、UINavigationController も説明する。Modal Dialogを表示するための、presentModalDialog の使い方や、UIAlertViewなどもそのうち使うと思うので興味があれば説明する。
UIViewController
- viewDidLoad
- viewWillAppear, viewDidAppear, etc.
- shouldAutorotateToInterfaceOrientation
UITableView
- numberOfSectionsInTableView
- numberOfRowsInSection
- cellForRowAtIndexPath
- didSelectRowAtIndexPath
iPad
iPad に対応するために特別に必要な事項を並べてみる。Developer NetworkでもうNDA表示がなくなったので書いても良くなったものと思われる。
- 解像度が1024×768。iPhoneアプリ(480×320)を動かすとその差に驚く
- 基本的に全方向への回転に対応することが推奨されている
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeRight
- UIInterfaceOrientationLandscapeLeft
- 起動画面もPortraitとLandscapeに対応する必要があり、ファイルも2つ用意する必要がある (Default-Portrait.png, Default-Landscape.png)
- アプリアイコンの解像度が異なる(iPad用は48×48と72×72、iPhone用は57×57)
- UIPopoverControl や、UISplitView など、現状iPadでしか使えないUI部品がある
iPadとiPhone両方で動くユニバーサルバイナリを作ることも可能だが、面倒そうだったので自分は調べていない。
その他
- ローカライズの仕方
- ネットワーク関係のほわほわ表示
- デバッガの便利な使い方 (NSZombieEnabledなど)
- Instruments を使ってメモリ使用量やリークを調べる
- マルチタッチの扱い
- 参考になる書籍
などなど、いろいろ説明したいことはある。
しかしとりあえずこれくらい教えてもらったらいきなり立ち上がれそうだ。うらやましいことだ。
書き途中だがとりあえず失われると困るので公開。
追記
後から便利そうなページへのリンクをいろいろ追加してみたが、その際に発見した混沌のiPhoneアプリケーション工房 の iPhoneアプリケーション開発入門(cocoa touch,Objective-C関連)まとめ がすばらしい。
ここを読むといろいろなことが学習できそう。
各ページにある説明が改行がなくて読みづらいのが唯一の問題か。
詳解 Objective-C 2.0 | |
ソフトバンククリエイティブ 2008-05-28 売り上げランキング : 6790 おすすめ平均 |
iPhone SDK アプリケーション開発ガイド | |
近藤 誠 (監訳)
オライリージャパン 2009-09-07 おすすめ平均 |
Objective-C逆引きハンドブック | |
シーアンドアール研究所 2010-02-26 売り上げランキング : 3990 by G-Tools |
iPhone&Androidクロスプラットフォームアプリケーション開発~スマートフォン用グラフィックスツール作成で学ぶ~ | |
毎日コミュニケーションズ 2010-02-26 売り上げランキング : 102461 おすすめ平均 |
関連記事
-
20歳のときに知っておきたかったこと ティナ・シーリグ
しばらく前に読み終わっていたが感想を書いていなかった。 基本的に、失敗を恐れずに新しいことに挑戦しよ
-
Topeak iPhone6 Plus 用ライドケースセットを買ってみた
家から最寄り駅まで歩くと結構時間がかかってしまうため、駅前に駐輪場を借りてそこまで自転車で通勤してい
-
「CodeIgniter 徹底入門」でPHP学習中
サーバー側のプログラミングに手を出してみたいと思い、何冊かPHP本を買ったりしてみたが、どうもしっく
-
iPhone アプリアイコン設定
AppStore でアプリを売る一連の流れを知るために作っているアプリが大体できてきたので、ついにア
-
達人出版会の本をKindleで読んでみる(Windows編)
最近話題の「当事者」の時代の電子書籍版(パブー)や、エキスパート Objective-C プログラミ
-
薄い iPad2用ケース eggshell for iPad2 TUN-PD-000079 購入 2011/06/27
不具合報告があったので、当初予定がなかったiPad2を購入。 それはまた別に書くとして、まずは一緒に
-
[本]ちゃんとした音楽理論を読む前に読んでおく本
以前読んである程度わかった気になっていたが、しぱらくするとほとんど中身を忘れていた本。
-
TableView関連で苦労
iPhoneアプリ開発をやっていると数日に一度何らかの問題にぶつかって、しばらくはまる。本を読んだり
-
TestFlight を使ったベータテストについて
アプリのベータテストにご協力いただきありがとうございます。ベータテストには、AppleのTestFl
-
iOS15にアップデート
2021/09/21にiOS15が公開され、そろそろ初期不具合もわかってきた頃だと思いアッ