Feeds:
投稿
コメント

Archive for the ‘Cocoa’ Category

Final Presentations-1

     *     *     *

第19回:Final Presentations

19回目はいよいよ最後の講義。3か月の iPhone プログラミングの授業を受けた学生たちがその成果を競う発表会(Final Project Presentations)だ。

28 組の学生たちが成果を競う様子は必見だ。

プレゼンにはいくつかの制限がある。2分以内という枠、講義に使われたのと同じラップトップを使用、事前に学校側の OK をとる、など。

今回は内容の要約はしないので、ぜひともご自分の目で確かめていただきたい。

プロジェクトを製作した学生たちの姿も、画像の一部に表示しておいた。ヒーローたちの晴れ姿だ。

     *     *     *

[発表されたプロジェクト]

1. Basic Vector Program

Basic Vector Prog

2. PING

Ping

3. VocalBeater

Vocalbeater

4. UpQuest

Upquest

5. Friction Circle

Friction Circle

6. Pop Friction

Pop Friction

7. GRAViTAS

Gravitas

8. Scopa!

Scopa

9. Tone-Matrix

Tone Matrix

10. SweetSpot

Sweetspot

11. Tribal Atmosphere

Tribal Atmosphere

12. TodayScreen

Todayscreen

13. Towers

Towers

14. Nemesis

Nemesis

15. Marguerita Tracker

Marguerita Tracker

16. Block Attack

Block Attack

17. Timesheet

Timesheet

18. TodayList

Todaylist

19. SFGate

Sfgate

20. Pirate’s Dice

Prates Dice

21. Motivate

Motivate

22. RockJourney

Rockjourney

23. Musical Magnetic Poetry

Musical Magnetic Poetry

24. Pilcrow

Pilcrow

25. Goapet

Goapet

26. uPoet

Upoetjpg

27. Blackjack Card Counter

Blackjack Card Counter-1

28. inMoustache

Inmoustache

     *     *     *

完成度の高さ

まず驚かされるのは完成度の高さだろう。

技術的な内容までは理解できないが、それでも3か月の講義でここまでくるとは・・・

講義や宿題と平行して自分のプロジェクトをここまで立ち上げられるのはやはりただ者ではない。

ぜひともご自分の目でそれぞれの作品をご覧になっていただきたい。

     *     *     *

プレゼンのおもしろさ

発表作品そのものもだが、アイデアを凝らしたプレゼンがこれまたおもしろい。

2分間という枠をものともせず、みな様々な工夫を凝らす。

15分の内容を2分間に凝縮してみせるプレゼンとしてもこれは一見の価値がある。(世間には逆のケースが多々あるが・・・)

     *     *     *

外国人学生が多い

すぐ気付くことは外国人留学生(?)の活躍かもしれない。

これまで講義ビデオには教室の風景や学生の様子は一度も映らなかった。

アジア系、とくに中国系と思われる顔がたくさん登場する。(残念ながら日本人はいない。)

彼らがソフト開発の最前線に立つとき何が起きるだろうか。

そのとき日本はどこに位置しているのだろうか。

もうすぐ来る未来の姿を垣間みるような気がした。

     *     *     *

Thank You-1

10週間のスタンフォード講義は以上で終わる。

プログラミングのことを一切知らない筆者がなぜ無謀な受講をしようと思ったのか・・・それにはきっかけがあった。

ケータイにも、したがって iPhone にも興味のなかった自分の気持ちが動いたのは iPhone 3G が発表された 2008 年 WWDC のときだった。

新しいプラットフォームの予感が自分を突き動かしたのだと思う。

もっと知りたい。何がマックと違うのか、何がマックと同じなのか・・・

そんな時に出会ったのがスタンフォードの講義だった。

しかしすぐ難しさに直面した。次の講義に進めるだろうか、3回戦ボーイで終わるのではないか・・・

いま10週間たって振り返ると、もう一度じっくり見直してみたいという気がしている。

やっとスタートラインに立てた・・・そんな気持ちだ。

ここまで導いてくれたスタンフォードの講義には心から感謝したい。

It’s been a fun quarter… Thank you!

     *     *     *

[講義概要]

iPhone Application Programming Course (CS 193P)

– 講義ビデオもここからアクセスできる
– デモのサンプルコードもこちらから入手できる
– 教材を利用できる期間は限られているので、必要なものはダウンロードしておくといい

     *     *     *

同時進行でみるスタンフォード iPhone プログラミング

[全講義のリスト]

第19回:Final Presentations
第18回講義:Unit Testing ほか
第17回講義:開発のヒント
補講:OpenGL の最適化
第16回講義:オーディオ・ビデオ
第15回講義:Device API
第14回講義:マルチタッチコントロール
第13回講義:Notification ほか
第12回講義:アドレスブック
補講:Stanford 大学院生 Steve Marmon
補講:Tweetie の Loren Brichter
第11回講義:テキスト入力とモーダルコンテンツ
第10回講義:パフォーマンス
第9回講義:データ処理
第8回講義:スクロール
第7回講義:Navigation Controller
第6回講義:Designing iPhone Applications
第5回講義:Views
第4回講義:HelloPoly
第3回講義:メモリー管理
第2回講義:Objective-C
第1回開講

Technorati Tags: , , , , , ,

Read Full Post »

Ge Wang

[Ge Wang – Smule]

やっと10週目までたどりついた。

第17回講義は Ocarina や Leaf Trombone の大ヒットソフトを開発した Ge Wang がゲストだ。

講義ビデオの中でも白眉。iPhone アプリの開発者には必見だ。

彼についてはアップルも WWDC のサイトでフィーチャーしているほか、USAToday のインタビューもある。

YouTube – Apple WWDC09 Dr. Ge Wang From Smule
YouTube – Talking Tech: Smule

     *     *     *

第17回講義:開発のヒント

講義のシラバスでは、つぎのように紹介する。

Ge Wang は Smule の共同設立者で、Ocarina や Leaf Trombone の開発者だ。今日の講義では iPhone メタフォール、感性豊かなソーシャルメディアの創造などについてタップリと語る。アプリのアイデアを探しているひとは、是非ともこの講義を聞くべきだ。

Ge Wang, co-founder of Smule and developer of Ocarina and Leaf Trombone, spoke at length today on metaphors for the iPhone and creating expressive social mediums for the phone. If you’re looking for inspriation for your own apps, you should definitely check out this lecture.

     *     *     *

Laptop Orchestra

ラップトップオーケストラなど、音楽のインタラクティブな側面に関心を持っていた Ge Wang は iPhone SDK をきっかけに iPhone への関心を深めていく。

Joystick Demo

ジョイスティックによるデモ[11 分ごろから]があるが、これがなんともおもしろい。まるでひとの声を操るみたいだ。

     *     *     *

Ge Wang はそもそも iPhone とは何か(What is this, really?)、何をさせられるか(What else can it be?)というところから出発する。

まず、第1の答えが Sonic Lighter だ。

Sonic Lighter

すべての元になったのが、この Sonic Lighter・・・

ゆらめく火を傾けると iPhone の縁をこがす。ほかの iPhone を近づけると火が移る。息を吹きかけると火が消える。

つぎつぎにアイデア(new type of interaction)を加えていくことによって可能性がどんどん広がる。

     *     *     *

Ocarina

第2の答えがオカリナ。

楽器としての Ocarina の可能性、マルチタッチのあらゆる可能性を探る。[21 分ごろから]

Ocarina は発売4日目で App Store のトップに躍り出た。ダウンロードは合計で百万をこえたという。

Ocarina Design

Ocarina のデザインについて語るところが興味深い。[27 分ごろから]

・小さくスタートする(start small)
・形は変えない(preserve physicality)
・技術をひとに合わせる、逆ではない(adapt technology for the human)

そもそも iPhone はどの PC より personal, intimate computer だという発言が繰り返される。

     *     *     *

つぎに着目したのは「community」という視点。[33 分ごろから]

Ocarina World

世界中に Ocarina の奏者というコミュニティが生まれる。プロではないけれど音楽好きなコミュニティ。

Music Soore

シロウトでも読めるオカリナ楽譜ができる。その曲が投稿される。

Ocarina Contest

オカリナ奏者のコンテストが始まる。World Stage で優勝者を決める。

予期しない利用法がつぎつぎと生まれる。

広がる、広がる! 世界が広がる!

ひとつのことから次の発想が生まれるところがおもしろい。

     *     *     *

これからどこへ?

Where To Go

ひとつは、楽器(instrument)そのものの可能性を試す。

Instrument Side

スピーカーを両手に装着してiPhone を演奏する[39 分ごろから]

     *     *     *

もうひとつは、コミュニティとしての側面を探る。

Leaf Trombone World Stage[45 分ごろから]

world_stage_judge

演奏の上手下手を判定するジャッジが登場する。

     *     *     *

つぎに進むべき方向は?

テクノロジーは絶え間なく変化する。人間性(human nature)はあまり変化しない。テクノロジーと人間性の納まりどころ(sweet spot)を探るのがつぎの方向。

     *     *     *

What Is This

そしてすべては iPhone とは何かという問いに帰着する。(What is this, really?)

iPhone はパーソナルで、ひとと親密で、持ち運びのできるコンピュータだ(personal, intimate, mobile computer)という表現が何度も繰り返されるのが印象的。

デベロッパとは、iPhone にさらに何をさせられるか想像力を駆使する人間だ、と・・・

Developers exercise our imagination what else can it be?

     *     *     *

Thoughts

iPhone プログラミングとは単にコーディング技術ではなく、創造性にあるということをこれほど雄弁に物語るプレゼンテーションはないのではないか。

つぎからつぎへと広がっていくアイデアと創造性こそ、iPhone 開発が目指すべき方向だという指摘は、大きな成功を収めたデベロッパの発言だけに重い。

夢を持ったすばらしいアプリが日本からも世界に羽ばたき、みんなの夢をかき立てることを心から希望したい。

     *     *     *

第18回講義:Unit Testing ほか

Evan Doll

[Evan Doll]

最後の授業は Unit Test や Localization のほか、質問の多かった項目を取り上げる。

     *     *     *

Unit Testing

まずは開発サイクルにテストを組み込むための手段 Unit Test について。プロジェクトに Unit Test を組み込むことによってビルドフェーズでテストが自動化される。

Why Unit Test

Unit Testing が重要な理由。早期にバグをみつけ、バグの数を減らし、袋小路を避け、開発プロセスをすっきりさせることを可能にする。

コーディングの都度、まずテストから書けということらしい。(compiler は syntax をチェックし、unit test は semantics をチェックする?)

Unit Test は重要だが、かかる手間と効果のバランスを比較考量すべき。

Ocunit

Objective-C の Unit Test 用のフレームワークが OCUnit。

Unit Test のデモ[14 分ごろから]

     *     *     *

Objective-C の強力な機能

Inspecting Methods のデモ[26 分ごろから]

Inspecting Methods

Method Swizzling  のデモ[34 分ごろから]

Method Swizzling

Swizzling – カテゴリーをオーバーライドする方法。強力なので潜在的危険性をはらむ?

     *     *     *

未公開の API を使う危険性

Private Api

未公開の API はまだ未完成かもしれないし、消えてなくなるかもしれない。「未公開の API を使うのは高速道路 280 号線を勝手に横断するようなもの。」(“Calling unpublished APIs is like jaywalking across 280”)

     *     *     *

Localization

Localizing Resource

各国語にローカライズする問題。(lproj = localized project)[43 分ごろから]

Two Steps

Internationalization(l18n)と Localization(l10n)の2つの方法。

String File Example

     *     *     *

アプリを Landscape で立ち上げるには?

Landscape Lauch

アプリを Landscape で立ち上げられるようにするためには2つのステップ。

Launch Steps

Landscape のデモ[55 分ごろから]

     *     *     *

UIKit View のカスタマイズ[58 分ごろから]

     *     *     *

クールなアイコンはどうやって探す?[1 時間 05 分ごろから]

Cool Free Icons

     *     *     *

iPhone アプリが作れればマックのアプリも可能か?[1 時間 07 分ごろから]

Build Mac App

隔世の感がある質問。答えは「within your reach」(もうちょっと)。

     *     *     *

結びのことば

Thank You

第19回講義に添えられた説明。

CS193P のウェブサイトについて。このサイトに載せられたコンテンツは、夏の間はほぼ入手可能だが、夏が終わる頃には削除されるので入手不可能となる。欲しい材料はそれまでにダウンロードしておくようお勧めする。いったん削除されたら、もう入手は不可能だ。

One note about the class website. The content will remain available for most of the summer, but towards the end of the summer it will be taken down and the materials will no longer be available. It would be a good idea to download all the materials you need now so that when the website is cleaned you’re not left missing stuff. Once it’s gone, it’s gone.

秋学期にもまた授業を再開したいと考えているが、詳しいことは夏の終わり頃までにはこのサイトに発表する予定。授業が iTunes U や SCPD で同じように公開されるかどうかは目下のところ不明。それも夏の間には発表できると思う。

We are expecting to run the class again in the Fall quarter, keep an eye here for more details as that time draws near. At the moment we don’t know if it will be available on iTunes U or SCPD again, we’ll post more over the summer.

みんな授業を楽しんでもらえたことと思う。これからもすばらしい iPhone アプリの開発を止めないでほしい。ほんとにたのしい学期だった。それじゃまた!

We hope you all have had a good time in this class and that you’ll continue on the path of building some amazing iPhone applications. We really enjoyed the quarter! Take care and stay in touch.

     *     *     *

10週に及んだスタンフォードの講義は以上で終了した。

あとは学生が作成したソフトの発表会だけだ。最後の19回目講義がそれにあたる。

それにしても、プログラミングにまったく無知なシロウトがここまで来たのだから感無量・・・

     *     *     *

最後にごく初歩的なアプリを・・・

My Hello World

Hello World をいじったバリエーション。日本語入力も可能だ。

My Hello World2

ま、このぐらいでご容赦願いたい・・・

     *     *     *

[講義概要]

iPhone Application Programming Course (CS 193P)

– 講義ビデオもここからアクセスできる
– デモのサンプルコードもこちらから入手できる
– 教材を利用できる期間は限られているので、必要なものはダウンロードしておくといい

     *     *     *

同時進行でみるスタンフォード iPhone プログラミング

[つぎの講義]第19回

[これまでの講義]

補講:OpenGL の最適化
第16回講義:オーディオ・ビデオ
第15回講義:Device API
第14回講義:マルチタッチコントロール
第13回講義:Notification ほか
第12回講義:アドレスブック
補講:Stanford 大学院生 Steve Marmon
補講:Tweetie の Loren Brichter
第11回講義:テキスト入力とモーダルコンテンツ
第10回講義:パフォーマンス
第9回講義:データ処理
第8回講義:スクロール
第7回講義:Navigation Controller
第6回講義:Designing iPhone Applications
第5回講義:Views
第4回講義:HelloPoly
第3回講義:メモリー管理
第2回講義:Objective-C
第1回開講

Technorati Tags: , , , , , ,

Read Full Post »

Alan Cannistraro-1

[Alan Cannistraro – Apple]

スタンフォードの講義も第9週目。いよいよ余すところ1週となった。

学生も最後の自由課題に取り組んでいる最中なので、講義の方はこれまで取り残したテーマやゲストスピーカーの話題になっている。

     *     *     *

第16回講義:オーディオ・ビデオ

前週のマルチタッチやデバイス API につづき、iPhone の魅力のひとつであるオーディオやビデオがテーマだ。

     *     *     *

オーディオ

まず Audio だが、単純なビープサウンドから曲のフルプレイバックまで、必要に応じてたくさんの手法がある。

Core Audio

短い音声には System Sound API や AVAudioPlayer class が用いられる。[6 分ごろから]

AVAudioPlayer

この他に複雑なレベルの音声コントロールを行なうために次のようなものがある。[28 分ごろから]

・Audio Toolbox – レコードや再生のフルコントロール
・Audio Units – オーディオ処理
・OpenAL – 3D サウンド

     *     *     *

Audio のデモ

Short Sound Demo

ボタンを押すと様々な音を出すデモ。[20 分ごろから]

     *     *     *

ビデオ

つづいて Video だ。音声の場合と異なり、いつもフルスクリーンのひとつのクラスしかない。MPMoviePlayerController という API がそれだ。[32 分ごろから]

Mpmovieplayercontroller

     *     *     *

Video のデモ

Video Demo

コントロール有/無の再生デモ。[35 分ごろから]

     *     *     *

Web コンテンツの表示

もうひとつのテーマはWeb コンテンツの表示。[43 分ごろから]

Uiwebview

Web コンテンツの表示するために使うクラスが UIWebView、そのためのデリゲートメソッドが UIWebViewDelegate だ。

     *     *     *

UIWebView のデモ

Uiwebview Demo

Web コンテンツを表示するデモ。[48 分ごろから]

     *     *     *

設定(Settings)

最後の話題が設定(Settings)。[55 分ごろから]

Settings Ui

特別に設定画面を作るより、アプリの中に溶け込ませる方がいいということらしいがこのあたりはよく分らない。

     *     *     *

Setting Bundle のデモ[59 分ごろから]

Settings Bundles

     *     *     *

講義スライドではこの後も View Transition、Flipper Example などがあるが、時間がなくて省略。

     *     *     *

補講:OpenGL の最適化

他言語とのブリッジについてはこれまでも取り上げられたが[第9回、第12回]、グラフィックスの高速化に効果的な OpenGL とのブリッジが今回のテーマ。

Tim Omernick

[Tim Omernick – ngmoco:)]

ゲスト講師は ngmoco:) の Tim Omernick だ。

     *     *     *

花火(Firework)のデモ

花火のデモを具体例としながら話を進める。[8 分ごろから]

Firework01

ベースとなるのは OpenGL で描かれた回転する四角。

Firework02

これを次第に細かい小片(particle)にしていくことによって花火らしく見せる。

Firework03

様々なカラーの無数の小片を何度も描くためにスピードが遅くなる。そのため OpenGL を高速化(最適化)する必要が生じる。

     *     *     *

スピードアップさせる最適化はつぎのような方法で行なう。[13 分ごろから]

• Batch Geometry
• Texture Atlases
• Interleaved Arrays
• Indexed Triangles
• Floats vs. Shorts

最適化のデモは 19 分ごろから。

結果は大幅なスピードアップが図られるのだが、このあたりは難しくて理解できないので省略。

     *     *     *

Arsenal

ngmoco:) が開発中のゲーム「arsenal」のデモも見せる。iPhoneでこんなゲームまで出来るのかと興味深い。[24 分ごろから]

最後に 28 分ごろから Q&A があるが、これがなかなかおもしろい。

・今回の花火のデモは2日で作った

・iPhone 3G より iPod touch の方が遥かに早い。シミュレータはマック上で動くので、デバイスの違いを反映させるには不十分。[29 分ごろ]

・iPhone は携帯ゲーム機器(mobile device for gaming)ではない、コンピュータだ。(a lot closer to a computer)[33 分ごろ]

     *     *     *

「同時進行でみるスタンフォード iPhone プログラミング」について

スタンフォードの講義は、シロウトにとっては毎回胸突き八丁の岩場みたいだ。第2回目の講義で、ああ、もうこれはダメだと思った。

2、3日おきに1時間モノのビデオがつぎからつぎへ登場するので、とても咀嚼し、宿題をやるだけの余裕はない。見るだけで精一杯・・・

それでも不思議なもので、なんとなく雰囲気だけは感じられるようになった気がする。

スタンフォードの講義ビデオの素晴らしさは、テーマ毎にプログラミングの実際を実演してみせる「デモ」とよく考えられた「宿題」だろう。

そこで自分の気持ちを切り替えた。

シロウトなのだから一度で分ろうとすまい、あとでもう一度帰ってこよう・・・と。

とりあえず iPhone プログラミングとはどんなものか、まず全体の感じを掴むことに集中しよう・・・と。

あとでもう一度ビデオを見て、デモを復習し、宿題をやってみよう。そのためにどのビデオのどこを見ればいいのか、自分のためのメモを残しておこうというわけ。

スライド教材を挿絵がわりにして、どんなテーマが扱われたか、ビデオの何分ごろにそのデモがあるか・・・そんな自分用のメモが「同時進行でみるスタンフォード iPhone プログラミング」となった。

9週間かけてこの程度というのはなんとも情けないが、まったくのシロウトということでご容赦願うことにしよう。

     *     *     *

Evan Counts

第11回講義の冒頭に印象的な場面があった。[2 分ごろ]

講師の Evan Doll が学生たちに尋ねる。「君たちのうちで App Store にアプリを出したことがあるひとはどれくらいいる?」

手を挙げたのが 3.5 人。40 人ほどのクラスだから1割に近い。スタートの時点ではやくもこうなのだ。世間の 2.5% の壁とは大違いだ。

そんな優秀で経験もある学生を相手にアップル自らが最新の内容を教えるのが CS193P だ。

そもそもオブジェクト指向プログラミングのなんたるかも一切知らないシロウトが付いていける代物ではなかった。

でも、一回だけで分ろうとせず、もう一度帰ってきたら・・・プログラミングそのものに絞ってもう一度やれば・・・なんとか食らいついていけるところはあるのではないか・・・

第9週まで来て、まだそんなことを考えている。

     *     *     *

[講義概要]

iPhone Application Programming Course (CS 193P)

講義ビデオもここからアクセスできる
デモのサンプルコードもこちらから入手できる

     *     *     *

同時進行でみるスタンフォード iPhone プログラミング

[つぎの講義]第17回・第18回

[これまでの講義]

第15回講義:Device API
第14回講義:マルチタッチコントロール
第13回講義:Notification ほか
第12回講義:アドレスブック
補講:Stanford 大学院生 Steve Marmon
補講:Tweetie の Loren Brichter
第11回講義:テキスト入力とモーダルコンテンツ
第10回講義:パフォーマンス
第9回講義:データ処理
第8回講義:スクロール
第7回講義:Navigation Controller
第6回講義:Designing iPhone Applications
第5回講義:Views
第4回講義:HelloPoly
第3回講義:メモリー管理
第2回講義:Objective-C
第1回開講

Technorati Tags: , , , , , ,

Read Full Post »

Steve Demeter

Steve Demeter by Peter DaSilva/New York Times

WWDC でスタンフォードの講義がしばらくお留守になった。

第8週目はマルチタッチコントロールや Device API など iPhone らしい機能を中心とした講義だ。

     *     *     *

第14回講義:マルチタッチコントロール

Steve Demeter2

[Steve Demeter – Demiforce]

前半は Trism で大ヒットした Demiforce の Steve Demeter がゲストスピーカー。ゲーム開発者には見逃せない内容だ。

     *     *     *

5 Control Schemes

一応型通り5つのマルチタッチコントロールについて解説する。[10 分ごろから]

1)Sliders
2)Swivels
3)Direct Touch
4)Face Buttons, Simulated D-Pad
5)Create Your Own!

     *     *     *

Finger Size

タッチする指のサイズを、Trism では 64×64 pixel に決めた話がおもしろい。[8 分ごろから]

     *     *     *

アップルの開発者ページにフィーチャーされた Steve Demeter はこちら

YouTube – Apple WWDC09 Steve Demeter From Demiforce

講義そのものより、開発者にとっては 16 分ごろからの Q&A の方が興味深いのではないかと思う。iPhone をみて機会来れりと思ったこと、WWDC までの限られた日時しかなかったこと、アップルとの協力関係に助けられたことなど、ゲーム開発者が関心を持ちそうな苦労話だ。

     *     *     *

Josh Shaffer

[Josh Shaffer – Apple]

後半はアップルの講師によるマルチタッチのより詳しい講義。Josh Shaffer は UIKit チームのメンバーだ。

     *     *     *

Josh がカバーするのは、マルチタッチのすべての局面。「基本的なことを理解しておけばそれだけ書くコードも少なくてすむ」と彼はいう。これはマルチタッチに関するアップルの考えを知る絶好の機会だろう。

Uiresponder

マルチタッチに関する様々なクラスの全体像は上の図のようになっている。

     *     *     *

UITouch UIEvent[25 分ごろから]

Uievent

     *     *     *

Single Touch のデモ[35 分ごろから]

Single Touch Demo

     *     *     *

Mutiple Touches のデモ[47 分ごろから]

Multiple Touch Demo

指を2本使う場合。(最大5つのタッチまで可能:25 分ごろ)

     *     *     *

Multiple Views のデモ[53 分ごろから]

Multiple Views Demo

同時にタッチした指のどちらを優先するかという問題。

     *     *     *

Hit Testing[59 分ごろから]

Hit Testing

どこに触れたかをチェックする。

     *     *     *

UIControl のデモ[1 時間 04 分ごろから]

Uicontrol Demo

     *     *     *

Josh02

クラス名やメソッドを速射砲のように早口で語るのでなかなか付いていけないが、それでも開発の最前線にいるトップランナーが初心者である受講者に対して丁寧に答える真摯な態度はすばらしいと思う。

     *     *     *

第15回講義:Device API

今回もまたアップルのゲスト講師。ソフトウェアエンジニアの Justin Santamaria だ。

Justin Santamaria

[Justin Santamaria]

iPhone というデバイスに固有の機能を利用する API がテーマ。

Device Hardware と呼ばれるカメラ、位置情報(Core Location)、加速時計(Accelerometer)の3つについて。

     *     *     *

Image Picker

Image Picker

まずカメラという Device Hardware の画像を利用するため、Image Picker Interface について学ぶ。[5  分ごろから]

Image Picker Interface

Image Picker で使用するクラスはつぎのとうり。

UIImagePickerController
UIImagePickerControllerDelegate
UIImagePickerControllerOriginalImage
UIImagePickerControllerCropRect
UIImageWriteToSavedPhotosAlbum

UIImagePickerController について気をつけるべき点:

– ソースが利用できるかを常にチェック
– クリーンアップは delegate メソッドを利用
– メモリーをなるべく食わないように

     *     *     *

Core Location (位置情報)[17 分ごろから]

Core Location

精度に応じて使用可能な位置データがある(Bootstrap、Cross-check、Complement)

Core Location Framework

Core Location のフレームワーク:

CLLocationManager
CLLocation
CLLocationManagerDelegate

常時細かいデータを必要とするわけではないので適宜精度(accuracy level)を選ぶ。

またエラーやデータが取れない場合の対処も必要。

kCLErrorDenied
kCLErrorLocationUnknown

     *     *     *

Accelerometer(加速時計)[37分ごろから]

Accelerometer

向き(orientation)を察知するのに使われる。

向きには2種類ある。デバイスそのものの物理的向き(Physical Orientation)とステイタスバーの向き(Interface Orientation)だ。

Accelerometer Interface

UIDevice
UIApplication
UIViewController
UIAccelerometer
UIAcceleration
UIAccelerometerDelegate

大きな動きを捉えるか(low-pass filter)、小さな動きまで捉えるか(high-pass filter)によってフーリエ変換(Fourier Transform)された Accelerometer のデータをフィルターする。

Filtering Accelerometer Data

     *     *     *

水準器(Bubble Level)によるフィルタリングのデモ[48 分ごろから]

Demo Filtering Accelerometer Data

シミュレータがサポートしないので、Macのカメラで実演。

Bubble Level Demo-1

     *     *     *

バッテリーについて(Power Management[52 分ごろから]

Power Consumption

どんな作業がバッテリーを食うという比較がおもしろい。大きい方から電波(Baseband, Wi-Fi, Bluetooth, GPS )、CPU/GPU、Display、ハードウェアモジュールの順で電力を食う。

したがって Device API は使わないときはオフにしておくことが肝心。

またデバイスそのものも使わない場合はなるべくスリープ状態にするようにという注意。

     *     *     *

[参考:講義内容]

iPhone Application Programming Course (CS 193P)

講義ビデオもここからアクセスできる
デモのサンプルコードもこちらから入手できる

     *     *     *

同時進行でみるスタンフォード iPhone プログラミング

[つぎの講義]第16回・補講

[これまでの講義]

第13回講義:Notification ほか
第12回講義:アドレスブック
補講:Stanford 大学院生 Steve Marmon
補講:Tweetie の Loren Brichter
第11回講義:テキスト入力とモーダルコンテンツ
第10回講義:パフォーマンス
第9回講義:データ処理
第8回講義:スクロール
第7回講義:Navigation Controller
第6回講義:Designing iPhone Applications
第5回講義:Views
第4回講義:HelloPoly
第3回講義:メモリー管理
第2回講義:Objective-C
第1回開講

Technorati Tags: , , , , , ,

Read Full Post »

Alex Aybes

[Alex Aybes – Apple]

iPhone 知らず、プログラミング知らずのスタンフォード講義受講も第7週目にはいった。

講義内容はますますプログラミングの実際に合わせたより実践的なものになっていく。

     *     *     *

第12回講義:アドレスブック

講師はゲストスピーカー Alex Aybes。やはりアップルの iPhone ソフトウェアエンジニアだ。[冒頭画像参照]

Evan Alan

[Evan and Alan]

いつもの Evan と Alan は最前列で Alex をフォローする。

     *     *     *

アドレスブック

今回のテーマはアドレスブック。冒頭の「アドレスブックの Hello World」というデモが印象的。

Empty Screen

iPhone のカラッポのスクリーンが、ほんの数行のコードを加えるだけで、本物のアドレスブックが持つすべての UI を利用できるようになる。これはなかなかの圧巻だ。

Edit Phone Screen

たぶんこれが iPhone プログラミングの威力なのだろう。

どのコードがどの UI に対応するものか、デモをじっくり見ながら、加えたり削除したりすれば、たった一行のもたらす威力が実感できるはず。

     *     *     *

ローレベル C API の利用

アドレスブックで個人データを処理し、表示するためには、ローレベルの C API の利用が必須となる。

これらの背後にあるのが CoreFoundation だ。C ベースで書かれたフレームワークで、Objective-C 用のもの。(7分ごろから)

Corefoundation

C と Objective-C をミックスして用いるときに効力を発揮する。C と Objective-C が自由にミックスして使えるため、ローレベルでは純粋 C にすることが可能で、このためオーバーヘッドを減らすことができる。相互乗り入れ自由なことを「無料の高速道路ブリッジ」(Toll-Free Bridging)に例える。

Toll Free Bridging

     *     *     *

ネットワーク上の個人データ:手順

アドレスブックがもっと威力を発揮するのは、ネットワーク上の個人データを読み込むときだ。

Social Networking Website の個人データは、次のような手順で読み込む。(18 分ごろから)

Social Networking Website

Step 1: Search
ダウンロードしたデータから個人名を探す。

Search

Step 2: Update
アドレスブックを更新する

Update

Step 3: Display
結果をソートして表示する

Display

     *     *     *

ネットワーク上の個人データ:デモ

Social Networking Website から個人データを読み込むデモは 35 分ごろから。

全体の処理をコード毎に解説しながら実演する。必要な関数を加えれば、ホンモノと同じ UI が利用できるようになるわけで、これはなかなかのものだ。ただし結構長いので、一度見るだけでは分りにくい。

Person List Demo

     *     *     *

データの表示は View Controller

そのほかアドレスブックの具体的ケースを想定して、そこで生じる問題を解説する。

・複雑な情報の取り扱い(46 分ごろから)

Adding Contacts

・未知の個人の処理(48 分ごろから)

 ABPersonViewController
 ABUnknownPersonViewController

Unknown Person

・Eメールアドレスの処理(56 分ごろから)
 ABPeoplePickerNavigationController

Picking People

・Notification(60 分ごろから)

     *     *     *

第13回講義:Notification ほか

今回の講義も前回同様非常に実践的。宿題「Presence」をやる過程で遭遇する様々な問題について解決方法を解説し、そのデモを行なう。

     *     *     *

例外(Exception

予想外の事態 Exception(例外)に遭遇するとアプリはクラッシュする。Exception を見つけるのはなかなか難しいが、それをどうやってデバッギングするかという問題。

Debugging Exceptions

任意の箇所にブレイクポイントを挿入して Exceptions を見つけるデモが 4 分ごろから。

Debugging Demo

     *     *     *

検索(Searching

検索に用いる UISearchBar の解説。

Uisearchbar

データがマッチしたときにどう処理するかというデモが 11 分ごろから。

Data Matched

     *     *     *

通知(Notification

UIKit で多用される Notification がどういう仕掛けになっているかという舞台裏について。

Notification

強力かつフレキシブルだが、デバッグはむずかしい。

Receiving Notification

Keyboard Notification の例として、キーボードを使う際、キーボードがかぶったリストをどう短縮して表示するかというデモが 26 分ごろから。

Shortened Lists

     *     *     *

Key-Value CodingKVC)と Key-Value ObservingKVO

Kvc Kvo Demo

変数の値(Value)が変化したことを知らせる Notification の例として、Key-Value Coding(KVC)と Key-Value Observing(KVO)について。

Kvc

Kvo

入力に応じてデータを変更する KVC のデモが 33 分ごろから。

Kvc Demo-1

誰かの社会保障番号(SSN)を変えようとするとアラートがでるデモが 48 分ごろから。

Warnig Alert

     *     *     *

こうしてみると、それぞれ如何にも実践的な講義であることが分る。サンプルコードもダウンロードできるので、模範的なコードを「盗んで」自分のプログラミングをブラッシュアップすることも可能なわけだ。

折しも、スタンフォードの iPhone プログラミングコースが開講されたこの7週間で、無料講義のダウンロードが 100 万回に達したとスタンフォード大が発表している。世界的な関心の高まりを示すわけで、大変なことだと思う。このうち 13 回分は当ブログも寄与していることになる。

また、いよいよアップルが6月の WWDC に向けて、「プッシュ通知機能」(Push Notification)のテストをサードパーティに依頼したという話も伝わってきた。

新しいプラットフォームとしての iPhone の開発動向はますます目が離せなくなっている。

     *     *     *

[参考]

iPhone Application Programming Course (CS 193P)

講義ビデオもここからアクセスできる
デモのサンプルコードもここから入手できる

     *     *     *

同時進行でみるスタンフォード iPhone プログラミング

[つぎの講義]第14回・第15回

[これまでの講義]

補講:Stanford 大学院生 Steve Marmon
補講:Tweetie の Loren Brichter
第11回講義:テキスト入力とモーダルコンテンツ
第10回講義:パフォーマンス
第9回講義:データ処理
第8回講義:スクロール
第7回講義:Navigation Controller
第6回講義:Designing iPhone Applications
第5回講義:Views
第4回講義:HelloPoly
第3回講義:メモリー管理
第2回講義:Objective-C
第1回開講

Technorati Tags: , , , , , ,

Read Full Post »

200905121636

[Loren Brichter]

連休でぽけっとしている間もスタンフォードの講義は着々と進む。第6週目も2回の講義が行なわれた。

それだけではない。補講の2回分もアップされている。

で、今週は都合4本のビデオ講義について・・・

     *     *     *

第10回講義:パフォーマンス

iPhone の限られたメモリー、遅い CPU、遅いネットワークはパフォーマンスにとって限界となる。

どうしたらパフォーマンスを上げられるかが iPhone プログラミングの重要な課題だ。

今回の講義ではメモリーと並列処理(concurrency)についての問題点を取り上げる。

     *     *     *

限られたメモリー

限られたメモリーを有効に活用するために・・・

1)必要なとき必要なデータだけ読み込む(4 分ごろから)

200905121638

講師はこれを「怠け者のデータ読み込み」(load lazily)という。なるほど。ココアプログラミングの要諦にも通じる。

2)メモリーリークを防ぐ(7分ごろから)

リーク(leak)はメモリー管理の大敵。Autorelease を多用するとメモリーなどすぐ使い切ってしまう。(1万回のループなど。)リークを見つけるための武器がパフォーマンスツールだ。そのデモが 12 分ごろから。

200905121639

Spike

3)オーバーヘッドを減らす(デモは 21 分ごろから)

一体どのくらいメモリーを使っているか(maximum autorelease footprint)、ピークはどうか(High-Water Mark:最高水位)をチェックし、オーバーヘッドを減らすことを心掛ける。

200905121641

Autorelease を使わないようにしたり、オブジェクトの再利用(Reusing Objects )を図るのもその方法だ。

4)システムからのメモリー警告(Memory Warnings)(28 分ごろから)

What To Release-1

メモリーを使い切ったときシステムから発せられるメモリー警告は重大な結果をもたらす。結局は何を捨てるかということに帰する。

     *     *     *

並列処理(Concurrency

もうひとつ iPhone プログラミングで重要な問題はスレッド(Threads)のような同時進行の処理だ。スレッドはパフォーマンスの低下をもたらす。(30 分ごろから)

Threaded Flickr Loading

スレッドの問題はデバッグが大変むずかしいということらしい。NSThread、NSOperation、NSOperationQueue などに関して Xcode を使ったデモが 37 分ごろからあるがなかなかむずかしくてよく分からない。また Flickr からスレッドを読み込むデモは 54 分ごろから。

     *     *     *

第11回講義:テキスト入力とモーダルコンテンツ

第11回目の講義は宿題 Presence をやるのに必要なテーマを取り上げる。テキスト入力(Text Input)とモーダルコンテンツ(Modal Content)だ。

     *     *     *

Clang Static Analyzer

その前に、前回の復習を兼ねてデバッギングツールのデモがある。オープンソースの Clang Static Analyzer だ。(9 分ごろから)

Clang Static Analyzer

C/Objective-C コードの静的分析(static analysis)を行なうツールで、バグの可能性を見つける。コマンドラインから起動するのだが、結果が Safari に出力されるところがクールだ。

     *     *     *

iPhone Keyboard

まず最初に iPhone Keyboard について(18 分ごろから)。

Virtual Keyboard

Japanese Kana

これらのキーボードから入力されるテキストには様々な特性(traits)がある。その特性をどう反映させるかという問題。

     *     *     *

テキスト入力をカスタマイズする

テキスト入力をカスタマイズするデモについては 26 分ごろから。

Text Containers

Text Input Traits

Keyboard Adopts Traits

Text Input Demo

     *     *     *

モーダルコンテンツ(Modal Content

もうひとつの話題はモーダルコンテンツ。

Presenting Content Modally

モーダルダイアログボックス(modal dialog)といえば、一度開いたダイアログボックスを閉じるまで、他の操作をできなくするタイプのダイアログボックスのことだ。話題にされるのはそんなモーダルな形で提供されるコンテンツのこと。

View Controller

モーダルコンテンツは操作の選択肢が限られる。どうやって片付けるかという問題と、メモリー管理上如何にうまくやるかという問題が生じる。

Dismissing Modal View Controller

このあたり delegate method と絡むほか、retain はダメで assign ならいいとかむずかしくてよく分らない。さらには delegation と notification の話なども出てきてややっこしい。

     *     *     *

以上が今週の講義だが、毎週月・水2回の講義のほか、金曜日にも講義が行なわれる。補講だ。ゲストによるものはなかなかおもしろい。

     *     *     *

補講:Tweetie Loren Brichter

例えば今回アップされている Tweetie の Loren Brichter が5月1日におこなった金曜セッション。App Store でヒットしたアプリのサクセスストーリーだ。

実際に App Store で一儲けしようとと考えているものにとっては、ひょっとしたら講義よりオモシロいのではないか。

Tweetie Sales

[Loren Brichter が作った Tweetie の売り上げグラフ]

Tweetie 売り上げのグラフを示しながら、それぞれ売り上げ急上昇の時点で何が起きたかを説明するので、デベロッパや学生でなくても聞きたくなる。

これこそまさに App Store に向けた実践的講義だ。

     *     *     *

補講:Stanford 大学院生 Steve Marmon

Steve Marmon

[タンフォード大生の Steve Marmon]

こちらはハウツーもの。「カッコいい iPhone アプリを作るための10のステップ」(How to Build an iPhone App That Doesn’t Suck! in 10 Easy Steps)なるタイトル。

現役のスタンフォード大学院修士過程の学生で、アップルへの就職が決まっているらしい。

Iphone Prototype

[iPhone のプロトタイプ?]

     *     *     *

スタンフォードで iPhone 講義をするということ自体、新しいプラットフォームのユーザーベースを確立するのに大変役立つであろうことは明らかだ。

世界的な有名大学で講義をすればアップルブランドにも資する。さらには優秀な学生をリクルートする場にもなるわけで、二重、三重の役割を果たしているように思われる。

かかる産学協同は果たして日本でも実現可能だろうか・・・

     *     *     *

[参考]

iPhone Application Programming Course (CS 193P)

講義ビデオも中からアクセスできる
デモのコードサンプルもこちらから入手できる

     *     *     *

同時進行でみるスタンフォード iPhone プログラミング

[つぎの講義]第12回・第13回

[これまでの講義]

第9回講義:データ処理
第8回講義:スクロール
第7回講義:Navigation Controller
第6回講義:Designing iPhone Applications
第5回講義:Views
第4回講義:HelloPoly
第3回講義:メモリー管理
第2回講義:Objective-C
第1回開講

Technorati Tags: , , , ,

Read Full Post »

Jason Beaver

[Jason Beaver – Apple UIKit Team]

早いもので第5週にはいった。マラソンでいえば折り返し地点だ。

驀進(ばくしん)する機関車に必死でしがみついて振り落とされないようにしているというのが毎回の正直なところ・・・

     *     *     *

第8回講義:スクロール

指一本動かすだけで iPhone の画面が上下にスクロールするところはマルチタッチの醍醐味(だいごみ)だろう。

L02 Drag Scroll2 019-1223

今回の授業ではその仕掛けを取り上げる。

講師はアップルの UIKit チームに属する Jason Beaver だ。現役パリパリを引っぱり出してくるところから、この講義に対するアップルの熱意が窺える。

     *     *     *

Table View:リスト
Table View Styles

スクロールの対象になるのがリストだ。iPhone には様々なリストがある。それが Table View だ。

Table View Anatomy

今回スクロールに関して取り上げられるのはつぎのようなオブジェクトだ。

UITableView
UITableViewCell
UITableViewController
UITextView
UIImageView
UIScrollView
UIScrollViewDelegate

     *     *     *

Delegation

必要最小限ということが何度も強調される。リストには多くのデータが含まれるが、その都度ゼロからリストを再構築して描画したりしないで、最小限スクリーン表示に必要な範囲に限るべきだと。煩雑さを避け、限られたメモリーの中で対応するためだ。

それはまたアルゴリズムと View を分けるという考え方にもつながるのだろう。

いちいち描き直さないためには Delegation という考えが大切になるということらしい。

Uiscrollview Delegate

Implement A Delegate

     *     *     *

デモ:
Demo

講義にはたくさんのデモが含まれている。スライドでは Demo と一枚だけ表示されるだけだが、実はこの部分が大変重要だ。スタンフォード講義のお値打ち部分といえる。

今回はぜんぶで4つのデモがある。

教科書的に概論を教える部分が講義だとすると、問題解決にあたる実技の部分がデモということになる。

さらにはデモの部分のコードサンプルも zip ファイルの形でダウンロードできるようになっている。

     *     *     *

Person Selected

・どうやってリストにデータを表示するか
・表示されたデータをどう選択するか
・コンテンツのカスタマイズはどうするか

概論のあとデモという形で解説が続く。

     *     *     *

第9回講義:データ処理

第9回のテーマはデータの話だ。

データといってもいろいろある。iPhone の中のデータと、雲の上(インターネット上)のデータと。ローカルデータとリモートデータ。

     *     *     *

Property List

あまり大きくないローカルなデータを load/save するには Property List が便利だ。

Property List

     *     *     *

SQLite

一方、インターネット上のデータにアクセスするには別の手法を使う。

最もエレガントなのがオープンソースの SQLite だ。具体的には C API を使う。(30 分ごろから)

Sqlite C Api

Sqlite

     *     *     *

JSON

あまりオーバーヘッドがかからない手法(iPhone では特に重要)としては XML や JSON がある。

JSON(JavaScript Object Notation) とは軽量のデータ記述言語(Open source json-framework wrapper for Objective-C)のこと。

JSON のコードはこんな感じ・・・

Json String

JSON を使って Flickr の画像を利用するデモが行なわれる。(60 分ごろから)

Json Demo

Flickr

     *     *     *

講義内容がどんどん広がって行くので、あとを追っかけるのが精一杯。とてもちゃんとデモまで理解するところまでいかない。

Objective-C もよく分らないのに、C から XML、JSON と無限に広がって行く。まあウェブ端末としての iPhone の性格上当然のことかもしれないが、講義についていく方はたまったものじゃない。

頭の中が爆発してしまいそうだ。宇宙に飛び出す Wall-E か・・・

     *     *     *

今回もまためくるめく爆発の中で宇宙の果てに放り出されてしまった。

どこまで理解したのか自分でも心許ない。きっとあちこち大きな間違いを犯しているのではないかと不安だ。

iPhone プログラミングの先達にぜひともお願いしたい。

過ちや理解不足にお気づきでしたらどうか訂正してくださるようよろしくお願いいたします。

(訂正するほどの内容もないといわれてしまいそうですが・・・)

     *     *     *

[参考]

iPhone Application Programming Course (CS 193P)

講義ビデオも中からアクセスできる
デモのコードサンプルもこちらから入手できる

     *     *     *

同時進行でみるスタンフォード iPhone プログラミング

[つぎの講義]第10回・第11回

[これまでの講義]

第7回講義:Navigation Controller
第6回講義:Designing iPhone Applications
第5回講義:Views
第4回講義:HelloPoly
第3回講義:メモリー管理
第2回講義:Objective-C
第1回開講

     *     *     *

追記(5月5日)

スタンフォードの iPhone 講座について書かれたプロのサイトを発見した(というか不勉強のせいで今まで気がつかなかった)。

コロラド在住のソフトウェアエンジニア tomute 氏のブログ「Tomute’s Notes」だ。

スタンフォード講座については4月4日から連載が始まっているが、とくに4月29日の記事が講座受講の前提となる知識、必要な英語力、学習に必要な時間など全体を簡潔にまとめて大変参考になる。

さらにはリンク先も充実しており、iPhone アプリ開発に関心をお持ちの方はぜひともご覧になることをお奨めしたい。

プロのプログラマーが書くとこうなるというすばらしい見本だ。(ド素人の筆者は恥ずかしい。)

Tomute’s Notes: “スタンフォード大学のiPhone アプリ開発講座の感想” by tomute: 29 April 2009

またひとつすばらしいサイトを見つけてうれしい・・・

Technorati Tags: , , , ,

Read Full Post »

Older Posts »