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 おすすめ平均 |
関連記事
-
「伝わる英語」習得術 理系の巨匠に学ぶ が良かったので感想
何気なくKindleで読んだらいろいろ得るところがあったので紹介。 これ一冊をネタにしてかなりいろ
-
Photoshop Webデザイン即効技60
書店で平積みされていてたまたま手に取ったら良さそうだった本。 ありがちな本ぽいが、使ってみたい実例が
-
【電子版】雰囲気でOAuth2.0を使っているエンジニアがOAuth2.0を整理して、手を動かしながら学べる本
台風で家にこもっているので、気になっていた 【電子版】雰囲気でOAuth2.0を使っているエンジニ
-
LogLocations 1.4.0 写真表示対応
行動ログは取りたいが、何も操作したくない。という自分のようなずぼらなログ好きユーザ向けのアプリ、L
-
iPhone/iPad にMIDIキーボードを接続する
iPhone や iPad に MIDI キーボードが接続できると、実際のキーボードをつかって操作が
-
[iPhone開発本] iPhoneではじめるOpenGL ESプログラミング
2010/07/13(火)発売。昨日書店で立ち読みしてみたら良さそうな本だった。 パンカクの本も良か
-
おんぷちゃん for iPad リアル鍵盤で回答
おんぷちゃん for iPad は五線譜上に表示される音符をスクリーン上のキーボードや、USBやB
-
初代 iPad mini 16GB ブラックスレート注文
予約は10/26(金)16:00 きっかりに開始され、iPad mini 16GB ブラックスレート
-
simplism 0.7mm Ultra Thin Case for iPhone 6 Plus(5.5inch)購入
Amazonを見ているとiPhone 6 Plus の筐体はそれなりに傷が付きや