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

関連記事

iOS デバイスサポート最終バージョン

iOS9からGKSession over Bluetoothが無効に なってしまったので Multi

記事を読む

[iOS 開発本] iOSフラットデザインの作法

iOS7で採用されたフラットデザインに関して、個人的には Windows 8のMetroのイ

記事を読む

no image

iPhoneアプリをぬるぬるとつくろう。

かごおたさんのこの記事 はポイントが簡易にまとまっていてiPhoneアプリを作り始める際にはよい

記事を読む

no image

ジョブズ・ウェイ 世界を変えるリーダーシップ を読んでみた 2011/08/27

ジョブズ本は賞賛本も批判本もいろいろ読んでいるつもりだけれども、この本は完全に賞賛本。 元ジョブズの

記事を読む

no image

ARM付き基板本 トランジスタ技術増刊 ARMマイコンパーフェクト学習基板 2010年 09月号

こんな楽しそうな本があるとは。基板付きでこんな値段で買えるんですなあ。買ってみよう。 こちらで教え

記事を読む

ドラムちゃんに電子ドラムiWordを接続する

ドラム譜学習アプリ「ドラムちゃん」に、安価なMIDI電子ドラム iWord を接続する方法を説明し

記事を読む

no image

Web+DB Vol.71 で Heroku 特集

Web+DB は Vol.71 はHerokuの特集があり、Rails、Java、PostgreSQ

記事を読む

[iOS SDK] iTunes Connect ではまる

iOS8リリースに合わせてiTunes Connect のUIが大幅に変わっており、下記のページの方

記事を読む

no image

[iPhone開発本][洋書] iPhone 3D Programming

たまたまApp Storeで O'reilly Media で検索したら、600円の本がわんさか表示

記事を読む

no image

これは便利 iPhoneプログラミングUIKit詳解リファレンス

Amazonでの評判も良いし、書店で立ち読みしていくつか有用な情報を見つけたので、iPhoneプログ

記事を読む

Message

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

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

iPad 第7世代がほしい

自分は iPad mini 4 を使っているが、これだと画面

.heicファイルをAutomatorで変換する

iPhone 11 Pro Maxで撮った写真をいつものようにAir

macOS用BDドライブを購入

子どもの学芸会を撮影したので、実家の親にDVDを送ろうと思い

watchOS6でWKRefreshBackgroundTaskが動かない

自作アプリ Watch Battery Loggerの改良版を作って

Xcode 11.2 Release

Xcode 11.2 がようやくリリースされた。これにより、

→もっと見る

PAGE TOP ↑