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 おすすめ平均 |
関連記事
-
Apple Special Event 2012
2012年は下記が発表された。 iPhone 5iPod touchiPod nano
-
iTunes Connect でアプリページを表示できない
いつからかわからないけれども、iTunes Connect で自分のアプリを表示できなくなってしまい
-
App Store にPreview動画をアップロードしてみた
現在新アプリの公開準備を進めているが、今回のアプリの使い方を知ってもらうには動画を見てもらうのが一番
-
必ず結果が出るブログ運営テクニック100 を読んでみた
ネタフルのコグレマサト氏と和洋風のするぷ氏のブログ本がTLで話題になっていたので買ってみた。 売れて
-
Android Hacks (株式会社ブリリアントサービス著) のメモ
日本で使える端末も増えてきたのでそろそろAndroid開発を学習しようと思い、今出版されている本を列
-
[感想] 教育×破壊的イノベーション クレイトン・クリステンセン
教育×破壊的イノベーション 教育現場を抜本的に変革するクレイトン・クリステンセン マイケル・ホーン
-
マジック・ツリーハウス 作品名一覧
かいけつゾロリを卒業したうちの小学2年生の娘が今はまっているのがマジック・ツリーハウス。 周りで流
-
iPhoneアプリをぬるぬるとつくろう。
かごおたさんのこの記事 はポイントが簡易にまとまっていてiPhoneアプリを作り始める際にはよい
-
ピーターの法則 ローレンス・J・ピーター
図書館で予約して借りてみた本。 「階層社会では、すべての人は昇進を重ね、おのおのの無能レベルに到達す
-
iPhone&Androidアプリ内課金プログラミング完全ガイド
こんなマニアックな本が11月に出ていたらしい。 立ち読みしてよさそうだったら買ってこよう。 売れ