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

NSURLConnnection オブジェクトをいつ解放するか 2011/08/06

NSURLConnection の -[NSURLConnection initWithReque

記事を読む

安くなったPFUのSnapLiteを買ってみた

昔からほしかったが高くて手が出なかったPFUのSnapLiteが2018年3月に販売終了になったらし

記事を読む

no image

iOSアプリの Ad Hoc 配布の悪夢から解放される TestFlight

面倒だった Adhoc 版のやりとりを格段に楽にしてくれる TestFlight | つくる社LL

記事を読む

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

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

記事を読む

no image

iPhone SDK 3.1.2 のお知らせ

Appleより、iPhone SDK 3.1.2 のお知らせが来た。 3.1.2 はバグフィックスリ

記事を読む

no image

[iOS] iPhone とつながるG-SHOCKの注意すべき仕様

CASIO 腕時計 G-SHOCK ジー・ショック Bluetooth Low Energy対応

記事を読む

LSSupportsOpeningDocumentsInPlace

拙作英単語学習アプリ EverLearn で LSSupportsOpeningDocuments

記事を読む

no image

メイドインジャパンとiPad、どこが違う? 世界で勝てるデジタル家電 感想

西田宗千佳氏の本はいつも面白い。 今回も予想に違わず面白かった。 自分も同じような情報は知っているは

記事を読む

no image

MacPeople 2012 5月号にはほしいガジェットがたくさん紹介されてる

定期購読しているMacPeopleの今月号(5月号)で面白い製品がたくさん紹介されていたのでメモを書

記事を読む

no image

論理思考は万能ではない 松丘 啓司

この本はいい。 元コンサルタントが、コンサルタントが思考のベースにしている論理思考の重度の依存や思い

記事を読む

Message

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

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

Wi-Fi6Eルータ TP-Link AXE5400購入

Wi-Fi6E を試してみたくなり、TP-Link AXE5

児童手当 認定請求書申請 2024 「請求者が養育をする18歳に達する日以降の最初の3月31日までの子の数」とは?

2024年に受給していない人には手紙が届くらしい。 電子申請も

Vision Proアプリ開発本 8/24、8/26に発売

Vision Proアプリ開発入門 P400が 8/24 に発売、V

Developer Strap が日本でも購入可能に

USアカウントでしか購入できなかった Vision Pro 用 De

Vision Pro カバーケースを買ってみた

[itemlink post_id="11629"]

→もっと見る

PAGE TOP ↑