2010年05月06日

Objective-Cに関わる言葉 @ iPod touch

随分昔に一度Objective-Cをやろうとした時にもはまった部分。それはObjective-Cの概念というか、もっと簡単に言えば言葉がよく分からなかった。

iPhoneアプリを作り始めてからも、実はその辺の考え方がイマイチ分からず、モヤモヤしたままに、機能の確認やサンプルを試して勉強し居る状態が続いていた。

簡単なところで言えば、ビューとコントローラー。この辺はすぐに理解出来る。時計で言えば、ビューが文字盤で、コントローラーが歯車。場合によってはコントローラーはモーターかもしれない。この辺のコントローラーをどれにするか示す事をターゲットと言えばよいかな。「この文字盤の(コントローラー)ターゲットは歯車だ」みたいな。もう少し追加すれば、この時計が、目覚まし時計だとすると、アラームの設定時間を保持しているところが、モデルって事かな。あまりMVCを明確に分ける必要のある仕組みを作った事がないので、正直この辺の自分の解釈はやや曖昧かも。アラームを設定すれば、アラームが鳴るわけで、そのアラームを止めるボタンって通常ありますよね。アラームが鳴るって部分は置いておくとして、止めるって行為には、ユーザーが操作するボタンがあり、それを押した時の挙動がコントローラーに用意したりしますね。これがアクションですね。

まぁ、ココまでは勉強を始めればすぐに理解出来る部分。問題はここから。正しい説明になっているか分かりませんが、今のところの自分の解釈を書いてみる。

先ずはデリゲート。代理処理とか、委譲とか説明されてますが、なかなか概念としてスッと入ってこない。言っている言葉は分かるのだけど・・・。で、もっと噛み砕いてみる。例えば、目覚まし時計というオブジェクトを使って、隣にあるラジオの電源を入れてみる。今まで目覚まし時計でセットしたタイマーではアラームを鳴らしていたのだけど、実行の部分をラジオの電源が入るという動きにしてしまう。この辺が代理処理(デリゲート)かなって感じ。

次はプロトコル。これはね。正直自分も説明難しいかも。まだ解釈が曖昧。要はオブジェクト同士のやり取りの規約がその物ずばりプロトコルなのだろうけど、そんな事は言葉の意味から推測出来る。今までの説明に沿った形で言えば、時計とラジオの間の通信部分の取り決めがプロトコルだよね。時計から電源を繋いでラジオの電源を入れる形(オーディオタイマーを使った様な状況)なのか、イーサやUSBなどもっと複雑な仕組みなのか、この辺がプロトコルなのかな。実際には電源ケーブルだったり、USBのケーブルみたいなところがプロトコルではなく、時計の中にプロトコルが必要なので、時計側に付いた電源コンセントだったり、USB端子や基板上のUSBコントローラーと言えば良いのかな。

ただ、プロトコルって書き方が
@interface MyObject : オブジェクト <プロトコル>
みたいな形なので、基本となるオブジェクトに、何らかの機能を追加したい時にプロトコルなのかなとも読めたり・・・。微妙に違う気もする。デザインパターンとかObjective-Cその物とか、詳しく書かれた本を買って勉強した方が良いかもなぁ。

オブジェクト指向って位だから多分、リアルに現実の物に置き換えて説明出来ると思うんだけどなぁ。ちょっとまだ理解が足らない感じ。もっと良い例えを思い付いたら書き直すかも。

閲覧数: 2718 / はてなブックマークusers

関連商品

amazon.co.jp・詳細ページへ

blog comments powered by Disqus

関連日記

アマゾン広告

この日記ページは閲覧数などの条件に応じて、閲覧制限を行っています。他からリンクしていただいても、そのリンクから辿った閲覧者が当ページの内容をご覧頂けない場合があります。ご了承下さい。

▼日記検索

Mac

Shade

3D

Flash

ゲーム

ウェブ

音楽

映画

デジカメ

Windows

Linux

携帯電話

テレビ

広島

電子工作

iOS

▼ 最近のトラックバック

▼ランキング

▼関連サイト