[Alan Cannistraro]
これから毎週2回の講義だ。それが10週間続く。結局講義の回数、すなわちビデオの本数は倍ということになる。講義ビデオを見るだけでも大変だ。
* * *
第2回講義:Objective-C
第2回目は Alan Cannistraro が講師で、Objective-C と Foundation framework の話。
まず、OOP(オブジェクト指向プログラミング)の用語を列挙(10分ごろから)、続いて Objective-C の概要(17分ごろから)、Foundation framework の説明(57分ごろから)となる。
これがコトバによる解説だけなので、初心者にはさっぱり実感が湧かない。
図らしきものはこれだけで、あとはコトバによる説明だけ。
OOP の基礎概念である Class、Instance、Method からして、初心者には聞き慣れぬ用語の羅列なので初めからひっかかってしまう。
説明の仕方も「言い換え」が主だ。Class とは設計図(blue-print)のこと、それによって作られたものが(product)が Instance、Method とはコードのこと(code)などと繰り返し言い換える。その都度頭の中でコトバを置き換えてイメージするのだがこれがなかなか・・
「泳ぐ」といえば済むところを「水中で手足の筋肉を稼働させる」といっているみたいな感じだ。
最後の方は時間が押して駆け足状態で、終わったときは呆然としている筆者だけが取り残されていた。
* * *
第3回講義:メモリー管理
第3回目の講義は少し具体的(?)だ。まず Class の説明から。ついで Object Lifecycle の話が 20 分ごろから。Objective-C Properties の話が 60 分ごろから。
まず、復習を兼ねて設計図である Class をもう少し詳しく説明。
これが .h ファイルや .m ファイルにつながることになる。
* * *
今回のメインは Object Lifecycle だ。C と比較しながら Object-C におけるメモリー管理の重要性についてについてたっぷり時間をかける。
やっかいなメモリー管理を autorelease がいかにうまくやってくれるかということらしい・・・
まだよく分らないが、メモリー空間の大きいマックと比べて、低スペックな iPhone ではメモリーの処理がいかに重要かということなのだろう・・・
* * *
ところで、上のような method = code の説明がどんどん出てくる。こちらにとっては暗号みたいなコードの羅列だがそれを講師は実にスラスラと説明していく。というか、頭から英語で読み下していく。
プログラミングとはつまるところ「英語」なのだなあと妙なところで感心する。英語を母国語とする人間にとっては暗号の羅列がそのまま英語の文章に見えるのだろうか。
しかしまあ、これで Object-C やメモリー管理を学習したということになるのではとてもたまったものじゃない。
* * *
講義ビデオさえ見ればプログラミングツールの使い方や Object-C のことが分ると考えた筆者が甘かった。
なんとかしないとこのままでは今回でギブアップということになる。
予習をして、宿題をやって、それから復習して、それでやっと授業についていけた学生時代のことを思い出した。
当時も成績どころではなかった・・・
* * *
すばらしい教材
これではならじと、せっぱ詰ってあちこち探していたら、すばらしい教材を見つけた。
木下誠氏の「Cocoaセミナー初級編」。アップルのセミナーで使われた教材がアップル ADC サイトの日本語 Documentation から入手できる。
藁にもすがる思いで初級編をダウンロードした。
スライドとそれをテキストにしたものがあって、これが実に素晴らしい。
Mac でのプログラミング(iPhone ではないが)について理解するためのすばらしい教材となっている。
* * *
Cocoa Design Patterns
Cocoa とは木下氏によれば Mac OS X が搭載するソフトウェアコンポーネントのこと。「マックらしい」ソフトが可能になるのは Cocoa のお蔭だ。
まず最初に、Cocoa でのプログラミング(すなわちマックでのプログラミング)の全体的流れを掴む。これが「Cocoa Design Patterns」[Cocoa プログラミングの型紙]と呼ばれるもの。
その中心的概念が Model、View、Controller という「MVC アーキテクチャ」。
ボタン、テキストフィールドなど画面に表示されるユーザーインターフェイス(UI)が View。そしてアプリケーションのデータ部分が Model。この二つをつなぐのが Controller で、制御を行なう部分ということになる。
アプリケーション開発は、このコントローラ(Controller)が中心になる。
UI からデータを受け取る(Outlet)か、UI の操作を行なう(Action)か、その方向の違いがのちのち大変重要になる。
* * *
クラスとインスタンスとメソッド
そしてオブジェクト指向プログラミング(OOP)の中心概念である Class、Instance、Method の説明がくる。
プログラミングで出来上がる製品(product)が Instance であり、そのための設計図(blueprint)が Class、実際の処理を行なう部分すなわちコード(code)が Method というわけだ。
木下氏の解説が大変優れているのは、まず全体像を掴ませるところから始めている点だ。今どこにいるのか、これからどこへ行こうとしているのか、初心者が自分の現在位置を確かめられるのはありがたい。
* * *
Hello World プログラミングの実際
その上で、具体的なプログラミングの作業が始まる。
「Cocoa セミナー初級編」の前半は「Hello World」、後半は「電卓アプリケーション」という Cocoa アプリケーションの作成にあてられる。
木下氏の「Hello World」はちょっと凝っていて、ボタンを押すと、Hello World というテキストが表示される仕掛けになっている。
ひとまず「Hello World」の 10 ページ余を一生懸命読んだ。
ひとつひとつステップが順次示されるので、それに付いていくだけでツール(Xcode/Interface Builder)や Objective-C の書き方が分る。
Xcode と Interface Builder を使ってパーツを作っていくが、説明は最小限に絞られているので、初めてのシロウトにも読み進むのが苦にならない。
* * *
Objective-C はそのあとで
そして Hello World が出来上がったあとに Objective-C の説明がくる。
まず実際に作ってみて、必要な理屈はあとから学習するというわけ。それを 10 ページ余に収めてしまった木下氏の手腕は大したものだ。
プログラミングというとまず Objective-C(あるいはその基となっている C)を勉強しなければならないと思い込んでしまい勝ちだが、やみくもに厚い Objective-C(あるいは C)の解説書にとりついたところで、富士の樹海に身を沈めてしまう結果になるのは目に見えている。
* * *
簡単なサンプルプログラムを作ってみて、それに必要な範囲で Objective-C を説明する。シロウトの初心者にも理解できるそんなすばらしい教材を作ってくださった木下誠氏には心から感謝したい。
これまでエイリアンのコトバのように思えていた Objective-C の姿が少しずつ見えてくるような気がする。
スタンフォードの講義にもう一度チャレンジしてみようという元気も出てくる。
今回はスタンフォードの講義というより、「Cocoaセミナー初級編」の感想みたいになってしまったが、闇に道を失いかけていた筆者に一筋の光明を与えてくださった木下氏には心から感謝したい。
* * *
[参考]
講義ビデオ:
コース概要とスライド:
木下誠氏の「Cocoaセミナー初級編」:
木下誠氏インタビュー:
• AppBank: “木下誠氏インタビュー。HMDT流iPhoneアプリ開発とビジネス。“: 10 April 2009
• AppBank: “HMDT木下誠氏インタビュー。アプリケーション開発とデザイン。そして、知への探究心。“: 10 April 2009
* * *
同時進行でみるスタンフォード iPhone プログラミング
[つぎの講義]:第4回
[前回の講義]:第1回開講
Technorati Tags: Cocoa, iPhone, iTunes U, Programming, Stanford, 木下誠
[…] via: 同時進行でみるスタンフォード iPhone プログラミング:第2回 Object-C・第… […]
完全文系なので、開発はハードルが高すぎると諦めかけていました。
この記事は、そんな私にも光明となりました。ありがとうございます。
[…] 同時進行でみるスタンフォード iPhone プログラミング:第2回 Object-C・第… 去年と同じ資料だ。 Tap of the Dead すごいゲームが出た。タイピングでいいじゃん! 初めての海外メディア広告 – Keep Crazy;shi3zの日記 これはいい話。誰かappbankにも広告ください。 […]
ネット上にもiPhone プログラミング講座らしきものが、多く存在しているようですが、木下誠氏のサイトは確かに初心者には解り易い感じです。
英語が不得手な私としては、スタンフォード大より、大いに参考になります。
有り難うございました。
> yazawatamio さん
当方も 完全文系です
不安な初心者にとって 木下さんのような存在は大変ありがたいですね
一方プロについても 木下さんはつぎのような発言をしておられます
「プログラマの人にもっと表に出てきてもらいたい。スタープログラマーと呼ばれるような方が。このiPhoneというプラットフォームを使ってソフトをつくり、名前を出して活躍してほしいです。」
> TORIO さん
たしかにコトバの問題もありますが 教え方やひとをやる気にさせるには なにか大切な視点というものがあるのではないか そんなことを考えさせられています
「富士の樹海」とは絶妙な例えですね
初心者が陥りがちな「木を見て森を見ない」という
状況を良く表しています。
全体を理解した後に、細かいディテールに入るという
木下氏の教え方、学び方の良い示唆になっていると思います。
Shiroさんの悪戦苦闘ぶりと、ひとつずつドアをくぐっていく
そんな様子が学ぶ事の楽しさを教えてくれます。
いつの日か
「App Storeで、iPhoneアプリ販売中です♪」
なんて告知を聞ける日が来るのを
想像するのも楽しみですね (^^)
> kiichi さん
古くからの読者に 尻を叩いていただくと 元気が出ます
App Store(?)より 次の講義に進めるだろうかと 崖っぷちの毎日です
それにしても プログラミングがこれほど大変だとは 予想以上でした
世のプログラマーに 改めて敬意を表したい気分です
まだ誰も指摘してないようなので。
完全な素人が手を出すならば、ただ本を読んだり、ビデオを見るのでなく実際に、自分で手を動かして、サンプルプログラムを書いてみることが必要不可欠です。
そして、そのサンプルプログラムを少し書き換えてみて、それに応じてプログラムの振る舞いがどう変化するのか、実際にやってみる。
経験者が新しい言語を学ぶなら、本を読むだけで、すっと頭に入りますが、素人の場合、絶対に、手を動かすべきです。木下さんのサンプルにしても
見て分かった気になるだけでは、絶対に、その先へは進めません。
まさに「英語と同じ」です。文法書(Stanford)を読むだけでは使えない。文法を知らずに簡単な例文ばかり覚えても(木下)、例文以上の英語は使えない。両方必要です。行ったり来たりすることが。
素人が手を出すのは、本当に良い事だと思います。とりわけそれが影響力のあるブロガーである場合。応援しています。頑張って下さい。
> 通りすがり さん
ご指摘のとおり 「行ったり来たり」が必須だろうと 直感的には感じています
探してきたサンプルプログラムの 一部を書き換えて その振る舞いがどう変わるかやってみる そんなに出来たらどんなにいいだろうと思います
悲しいかな「完全なシロウト」の身では 何から始めればよいのか それすら迷っている状態です
ここは先達のご指導が ぜひとも必要だと考えます
お気づきの点がありましたら どうか応援とご指導をぜひともよろしくお願いいたします
木下さんの「たのしいCocoaプログラミング[Leopard対応版]」は非常に優れた入門書だと聞いています。
まずはこうした本を入手し、そこで紹介されているサンプルプログラムを実際に、そっくり真似して作ってみるのをお薦めします。
Objective-CはC, C++, Javaなどに比べてネット上での初心者向けチュートリアルや情報が少ないです。である以上、仕方ないですが、本を購入しない限り、初心者は先には進みにくいと思います。上記の本は、簡単なCの紹介も載っているそうなので、そもそもポインタやアレイ(配列)を知らない人でも、なんとか先に進めるようです。
できるならば、関連書籍を大量に買い込む富豪型学習法をお薦めします。そもそも、プログラミングの本は、レベルが異なる人向けに書かれているので、1冊で終わりということはありませんし、1冊の中でも、分かる/分からない部分がでてきます。分からなくなったら、別の本を読むと分かる事も多いです。
http://www.amazon.co.jp/iPhoneプログラミングは楽しいぞ/lm/R80QL29K8G3GL/ref=cm_lmt_dtpa_f_1_rdssss1
> 通りすがり さん
さっそくのアドバイス ありがとうございます
「サンプルプログラムを実際に、そっくり真似して作ってみる」ことは ぜひとも試みたいと思っています
それにしても 参考書の数もすごいですね
講義ビデオの海から こんどは参考書の海に 溺れてしまいそう・・・
実はもっといい加減なことを考えていて サンプルがそのままコピーしてこれるサイトがあったらいいなあ などと考えたりしています