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

EDAMTimestamp と NSDate の相互変換

Evernote SDKを使ったアプリで EDAMTimestamp を DBに格納する前に NSD

記事を読む

no image

プログラムを使ってiPhoneアプリを終了する方法

「ゲームを終了しますか? YES」的なダイアログを出してアプリを終了しようと思ったときに、どうするか

記事を読む

[iOS本] Objective-CによるAutoLayout 解説本 (iOS7/iOS8)

UIKit徹底解説 iOSユーザーインターフェイスの開発 posted with カエ

記事を読む

英単語学習アプリ EverLearn Ver.1.2.5 が公開されました

2016/03/05 Updateこの記事は公開時(2013年10月)から時間が経って古い内容になっ

記事を読む

no image

2歳の娘がiPadを離しません タッチ! うごく うたえほん

開発用に買ったのでアプリ開発時以外はあまり使っていなかったiPadはここしばらく完全に2歳の娘用にな

記事を読む

LogLocations レビューいただきました

4 star review for LogLocations: 愛用してます | LaunchKi

記事を読む

no image

iPhoneアプリ おんぷちゃん開発日記 iPad版をアップデート

iPhoneアプリサポートページ の方に書きましたが、4月30日にようやくiPad用のアップデート版

記事を読む

[iOS8] BlocksKit で不具合発生

iOS8 にアップデートしたところ、BlocksKit の UIAlertView と UI

記事を読む

新作アプリReibunを@marie__100さんに紹介していただきました

@marie__100さんに英語学習アプリ Reibunを紹介いただきました。ありがとうございました

記事を読む

no image

Head First SQL

@akabekobeko 氏の記事を見て購入。確かにこれはいい本だ。 非常に懇切丁寧に教えてくれるの

記事を読む

Message

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

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

Apple Special Event 2019

https://japanese.engadget.com/2019

WatchKitのAVSpeechSynthesizerで音が鳴らない

自作英単語学習アプリ EverLearn には watchOS用アプ

進撃の巨人10周年キャンペーン

2019/09/18まで、進撃の巨人10周年キャンペーン最終回まで一

ブログネタメモ

書きたいことがいろいろあるのだが書けていない。そのうちに忘れてしまう

リズムくんがタイ表示に対応しました

長らくお待たせしました。リズム学習アプリ「リズムくん」iPhone版

→もっと見る

PAGE TOP ↑