スタンフォード大学のiPhoneアプリ開発講座のまとめ
「http://journal.mycom.co.jp/news/2009/04/03/008/」にあるように、スタンフォード大学が「iPhone Application Programming (CS 193P)」という講義(10週間)を、iTunes Uで無料公開するとのこと(iTunesのURL)。
ということで、その公開された内容を以下にメモとして残して置きたいと思う。
(注:講義の動画へのリンク等は次回のセメスターが始まった段階で無効になる可能性が高いので、早めにダウンロードしておく事をお奨めする)
- Week 1: 4/1
- 4/1: Intro to Mac OS X and Cocoa Touch, Objective-C, Dev Tools(Mac OS XとCocoa Touch、Objective-C、開発ツールの簡単な紹介)
- Assignment: Hello Stanford and Command Line Tool I (due 4/9) (宿題:Hello StanfordというiPhoneアプリの作成と簡単なコマンドラインツール1の作成)
- メモ: 初回は講義の概要や進め方の話が中心。技術的な話が出て来るのは40分ぐらいから。最後に簡単なアプリの開発デモあり(実演に失敗するのはご愛嬌か)。既にiPhoneアプリを少しでも作った事がある人に取ってはパスしてもよい回かも。宿題のHello Stanfordは非常に簡単であるが、コマンドラインツールの方はObjective-Cの簡単な演習で、それなりに時間が掛かった(Command Line Tool Iの回答)。
- Week 2: 4/6 & 4/8
- 4/6: Using Objective-C, Foundation framework(オブジェクト指向、Objective-Cの概要説明とFoundation frameworkの簡単な紹介)
- 4/8: Custom classes, Memory Management, ObjC Properties(独自クラスの定義方法、メモリー管理の基本、プロパティの使い方等)
- Assignment: Command Line Tool II and HelloPoly I (due 4/14) (宿題:Command Line Tool IIはIを拡張する形で、ポリゴン用のクラスを作成する課題。このクラスはHelloPoly Iで使用する。HelloPoly Iはポリゴンを表示するiPhoneアプリで、かなりのボリュームである。)
- メモ: 2回目の授業ではiPhone固有の話はまったく無く、Objective-Cの概要説明とFoundation frameworkの簡単な紹介のみ。Command Line Tool Iの宿題をやっておくと理解が早いかも。Objective-Cを有る程度理解している人であればパスしてよい回かも。3回目の授業でもiPhone固有の話はないが、Objective-Cのメモリ管理の概要説明があり、これは結構勉強になった気がする。(Command Line Tool IIの回答)
- 補足資料1:後日公開された2回目、3回目の授業の補足資料。
- Week 3: 4/13 & 4/15
- 4/13: Interface Builder, Controls, Target-Action(Interface Builderの簡単な説明とMVCモデルの概説)
- 4/15: Views and Drawing, Animations(Viewの作成方法、CoreGraphicsを使った描画方法の説明等)
- Assignment: HelloPoly II (due 4/21) (宿題:HelloPoly Iの続きで、PolygonShapeのオブジェクトをView上に表示させる課題。内容的にそこそこ難しく、特にポリゴンをタッチに反応してローテーションさせる所等は難易度が高い気がする。)
- メモ: 4回目の授業はInterface Builderの紹介とiPhoneのMVCモデルについての簡単な説明。特に目新しい話は無かった。5回目の授業はCoreGraphicsを使った描画方法の説明が個人的に非常に勉強になった。(HelloPolyの回答)
- 補足資料2:後日公開された4回目、5回目の授業の補足資料。
- Week 4: 4/20 & 4/22
- 4/20: View Controllers Basics(MVCアーキテクチャの再学習、各種View Controllerの紹介と基本的な使い方の学習)。
- 4/22: Navigation Controllers (Navigation Controllerの詳細な説明、Tab Bar Controllerの概説、さらにこの二つのコンビネーション方法等の学習)。
- Assignment: Presence 1 (due 4/28) (宿題:Twitterアプリの下地となるアプリの作成演習)
- メモ: 6回目の授業ではいよいよTwitterクライアントアプリを作成するための学習開始という所。IB経由でのViewの追加とプログラムしての手動追加の二種類をそれぞれ紹介している辺りが勉強になった。7回目の授業では主にNavigation Controllerの使い方の学習が中心であったが、かなり詳しく説明されていたので勉強になった。(Presence 1の回答)
- 補足資料3:後日公開された6回目、7回目の授業の補足資料。
- Week 5: 4/27 & 4/29
- 4/27: Table Views(Scroll View、Table Viewの詳細な使い方の紹介。UITableViewControllerの簡単な説明も有。)
- 4/29: Dealing with Data: User Defaults, SQLite, Web Services(Property List、通常ファイル、SQLite等を使ったデータ管理方法の紹介、またWebサービスの利用方法に関する簡単な説明も有。)
- Assignment: Presence 2 (due 5/5), Final project proposals
- メモ:8、9回目の授業はかなり内容が高度になって来ているが、Table Viewの使い方等は非常に参考になった。またProperty List、通常ファイル、SQLite等の各データ管理方法の特徴や欠点・利点等の説明もためになった。(Presence 2の回答)
- Week 6: 5/4 & 5/6
- 5/4: Threading, Caching and Memory
- 5/6: Text Input, Responder Chain, Presenting Content Modally
- Assignment: Presence 3 (due 5/12)
- メモ:10回目の講義は主にマルチスレッドに関する話で、マルチスレッドに馴染みのない場合には非常に難しいかもしれない。講義を一度で理解するのは簡単ではなく、何回か見直す必要があったが、内容的には非常に役立つ物であった。11回目の講義はiPhoneのキーボード入力に関する話を中心に、View Controllerをモーダルに表示・非表示する方法の説明等もあった。また、Clang Static AnalyzerというObjective-Cのソースコード静的解析ツールの紹介もあり、このツールは結構お奨めかも。(Presence 3の回答)
- Week 7: 5/11 & 5/13
- 5/11: Address Book
- 5/13: Searching, Notifications
- Assignment: Presence 4 (due 5/19)
- メモ:12回目の授業はひたすらiPhone組み込みのアドレス帳にアクセス・操作する方法の説明。アドレス帳を扱うためのインタフェースがObjective-CではなくCベースというのはちょっと意外であった。13回目の授業はObjective-Cの例外、UISearchBarの使い方、Notifications、Key-Value Codingという盛り沢山な内容。最後のKVCは新しい概念であったが、なかなか面白そうなところなので、後でじっくり勉強したいと思う。(Presence 4の回答)
- Week 8: 5/18 & 5/20
- 5/18: Mulittouch
- 5/20: Device APIS: Image Picker, Core Location, Accelerometer, Battery Life
- Assignment: Final project (due week of 6/8, exact date TBD)
- メモ: 14回目の授業はひたすらタッチイベントに関するお話。冒頭の15分ほどはTrismというゲームアプリの開発者であるSteveさんのお話。ゲームアプリを作ろうと思っている人にはかなり参考になりそうな内容。その後はAppleのエンジニアJoshさんがタッチイベントの扱い方に関して説明するという流れであった。15回目の授業はカメラ、GPS、加速度計等のiPhoneのハードウェア絡みのAPIに関するお話。画像データを扱う時や、GPS情報を扱う時の注意事項等は非常に参考になった。
- Week 9: 5/27
- 5/25: Memorial Day Holiday, no classes
- 5/27: Audio, Video, Web Views
- Assignment: Final project (due week of 6/8, exact date TBD)
- メモ: 16回目の授業は音楽、ビデオ再生用のAPIとウェブページ表示用のAPIのお話。音楽APIとウェブページ表示用のAPIに関しては詳しく説明されていたので、比較的参考になった気がする。(Final projectの回答)
- Week 10: 6/1/& 6/3
- 6/1: Guest Lecture with Dr. Ge Wang
- 6/3: Unit testing, Objective-C fun, Internationalization
- Assignment: Final project (due week of 6/8, exact date TBD)
- Extra Session:
- 4/10: Intro to XCode and Debugging(XCodeを使ったデバッグ方法の紹介。動画の配信は無いが、講義で使ったスライドと教材は公開されている。)
- メモ: デバッグの講義で使われた教材にはあらかじめバグが埋め込まれており、そのバグをデバッガ等を使い修正するという演習。それほど難しくないが、デバッグをあまりやった事が無い人に取っては良い練習になるかも。
- 4/24: Publishing to the App Store(App Storeから開発したアプリを配信する方法の説明。動画の配信は無いが、講義で使ったスライドが公開されている。)
- メモ: App Storeからアプリを配信する際に必要な事がかなり詳しく説明されている。スライドだけの提供なので完全に理解出来ない部分もあるが、一読しておいて損はないと思われる。
- 5/1: Loren Brichter on Tweetie(Tweetieの開発者であるLorenさんの特別講義。動画の配信有)
- メモ: 人気のTwitterアプリ(Tweetie)の開発者ローレンさんの講義だが、なぜ自分のアプリが爆発的に売れたのかという話や、どうすれば良いiPhoneアプリが作れるか等、非常に面白い話が満載でとても参考になった。
- 5/8 How to Build an iPhone App that Doesn't Suck!(動画配信有)
- メモ: Stanfordの大学院生のSteve Marmonさんによる、iPhoneアプリのインターフェースデザインに関するお話。
- 5/15 From Upstart to Startup to Grownup(動画配信有)
- メモ: 元Appleの社員で現在はTap Tap Revenge等を開発しているTapulous社でディレクターをされているさんのJessicaさんの特別講義。成功するスタートアップの立ち上げ方、より良いアプリを作る方法等のお話。
- 5/22 Optimizing OpenGL for iPhone
- メモ: Rolando等のゲームアプリを開発しているngmoco:)社のTimさんの特別講義。主にOpenGLのお話。
- 6/9 Student iPhone App Presentation
- メモ: 本講座を受講していたスタンフォードの学生達が作成したアプリをプレゼンテーションする最後の授業。
- その他参考情報
- 本講義の公式ホームページ
- 本講義の公式メーリングリスト
- 本講義の公式ホームページのRSSフィード
- http://cs193p.com/(本講義の私設コミュニティページ)
- Google グループ(本講義の私設Google Group)
- http://blog.seiji.me/tag/cs193p(参考ブログ)
- A-Liaison BLOG: CS193P(参考ブログ)
- 同時進行でみるスタンフォード iPhone プログラミング:maclalala2(参考ブログ)
- [iPhone]スタンフォード大学iPhone app講義のpodcast第1回 | boreal-kiss.com(参考ブログ)
- http://nosue.blogsite.org/archives/dev/iphone/22(参考ブログ)
しかし、講師は現役のAppleのエンジニアというなんとも羨ましい話。ちなみに初回の講師をしていた、Evan Dollさん(AppleのSenior Software Engineer)のTwitterアカウントはhttp://twitter.com/edog1203。