iPhone SDK勉強会

公開日: : 最終更新日:2011/09/07 iPad, iPhone, , ,

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する

などのことは伝えておこう。まだ全部は読んでいないが、混沌さんのページによくまとまっているように見える。

NSArrayNSDictionaryなど、よく使うコレクションクラスや 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, を説明したい。UITableViewUINavigationController も説明する。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
詳解 Objective-C 2.0
ソフトバンククリエイティブ 2008-05-28
売り上げランキング : 6790

おすすめ平均 star
star説明が下手だと思う。
stariPhoneアプリ開発で初めてObjective-C触る人に勧めたい
star常に手元にあるべき本

Amazonで詳しく見る by G-Tools

iPhone SDK アプリケーション開発ガイド
iPhone SDK アプリケーション開発ガイド 近藤 誠 (監訳)

オライリージャパン 2009-09-07
売り上げランキング : 3115

おすすめ平均 star
star中上級者向け
stariPhone 関連で一番の良書

Amazonで詳しく見る by G-Tools

Objective-C逆引きハンドブック
Objective-C逆引きハンドブック
シーアンドアール研究所 2010-02-26
売り上げランキング : 3990

Amazonで詳しく見る by G-Tools

iPhone&Androidクロスプラットフォームアプリケーション開発~スマートフォン用グラフィックスツール作成で学ぶ~
iPhone&Androidクロスプラットフォームアプリケーション開発~スマートフォン用グラフィックスツール作成で学ぶ~
毎日コミュニケーションズ 2010-02-26
売り上げランキング : 102461

おすすめ平均 star
starまれな書籍。マルチな設計者向け

Amazonで詳しく見る by G-Tools

関連記事

no image

iPhone アプリアイコン設定

AppStore でアプリを売る一連の流れを知るために作っているアプリが大体できてきたので、ついにア

記事を読む

新アプリ「コードちゃん」を公開しました

速報:新 iPad 発表。Apple Pencil対応で3万7800円から - Engadget 日

記事を読む

[iOS] INNER JOIN に失敗する

非常に面妖な状況でにわかには信じがたいのだが、iPhone 6 Plus だと問題なく動作する

記事を読む

no image

アップルiPodイベント 2009.9.9

9月9日のアップルのiPodイベント rock and roll が迫ってきた。 しばらく前から楽し

記事を読む

no image

iOS 4.2.1, iOS SDK 4.2, Xcode 3.2.5 にアップデート

iPhone 3GSを、昨晩でたと思われる、iOS 4.2.1にアップデートしてみる。 iOS 4.

記事を読む

no image

iPhone/Androidアプリで週末起業(山崎潤一郎著) を読んでみた。

前著を読んで、ちょっと楽観的に書きすぎていると思ったけれどもとりあえず最新版が出たので読んでみた。

記事を読む

TestFlight を使ったベータテストについて

アプリのベータテストにご協力いただきありがとうございます。ベータテストには、AppleのTestFl

記事を読む

no image

変えたい習慣があるなら「習慣の力 」

まわりに推薦している人がいたので読んでみたら、出だしから引き込まれた。 影響力の武器と同じように、

記事を読む

no image

ついにヒレガス本第3版が出るらしい

以前から、いつかは出るかな、いやもういまさらでないかなと思っていたヒレガス本の第3版が11月についに

記事を読む

MacOS版1Password を3.8.22から 5.4.1にアップグレード

3.xからの1Password ユーザで、MacOS版もiOS版も有料版を3.xの頃に購入して、

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Rinker 導入でInternal Server Error発生

商品リンク管理プラグインRinker(リンカー)の公式サイト | お

新しいAirPodsを買ってみた

2019年3月20日に突如発表された、新しい AirPods を買っ

Apple Developer Program更新2019

今年も更新。税別 11800円だった。 2009年から

ボーカロイド技術論

よくこんなマニアックな本を出したものだし、よくここまで内情を書いたも

さくらVPSのPHPを5.3から7.2にアップデート

iPhoneから転送した写真をWordpressブログにアップロード

→もっと見る

PAGE TOP ↑