【コラム】
前回の予告通り、Objective-Cランタイムの解説を始めよう。そのまえに、いくつか準備が必要だ。
まず、Objective-Cランタイムのソースコードの在処を紹介しよう。本連載を読むのにソースコードは必須ではないが、手元にあると何かと便利なことが多いので、ダウンロードしておくことをお勧めする。
この連載では、Mac OS XでのObjective-C実装をもとに解説を行なう。ご存知の方もいると思うが、Mac OS Xは商用OSではあるが、カーネルとBSDレイヤのソースコードは、Darwinと呼ばれるオープンソースプロジェクトの下で公開されている。Objective-Cランタイムのソースコードも、これに含まれている。
ただし、Darwinのソースコードにアクセスするには、ADC (Apple Developer Connection)への登録が必要になる。登録は次のアドレスから行える。Online会員ならば無料である。
ADC Membership
Darwinで公開されているソースコードは、次のアドレスから参照することができる。現在のバージョンは、Mac OS Xは10.4.3、Darwinはそれに合わせた8.3となっている。
Apple - Mac OS X 10.4.3 (Darwin 8.3)
Darwinに含まれる、多数のプロジェクトのソースコードがあると思う。この中の、「objc4」が目的のObjective-Cランタイムである。現在はobjc4-267というバージョンになっている。これをダウンロードしよう。
また、Mac OS Xにも標準で、Objective-Cランタイムのヘッダファイルが含まれている。/usr/include/objcディレクトリにあるファイルがそれだ。こちらを参照してもいいだろう。
ランタイムでは、APIドキュメントも公開されている。こちらも合わせて紹介しておこう。以下のページで見ることができる。
Objective-CランタイムAPIドキュメント
このドキュメントの最初のページにも書かれているが、ランタイムAPIは仕様として決まっているものではなく、それぞれの実装に依存している。あくまで、このドキュメントは、Mac OS X版のランタイムAPIということになる。
これで準備は完了だ。では、始めよう。
まず、クラスとは何か、というところから始めよう。ここでは、オブジェクト指向においてクラスとはどういう概念か、ということではなく、Objective-Cでクラスはどう実装されているのか、ということを解説する。
スタート地点として、まず言語仕様を確認しよう。Objective-Cでは、クラスはClass型で表現する。つまり、このClass型の定義が、クラス調査の入り口となる。
Class型の宣言を見てみよう。ダウンロードしたファイルか、includeディレクトリにある、objc.hファイルの中で宣言されている。
つまり、Class型とは、構造体objc_classのポインタであるということが分かる。続いて、この構造体objc_classを調べよう。objc-class.hに定義がある。
これが、クラスの実体だ。クラスとは何か、という問いに対する最も端的な答えは、この構造体になる。もちろん、これだけ見ても全く意味がつかめないので、内部を詳しく調べよう。
クラス構造体で使われている変数は、以下のように分けることができるだろう。
|
|
objc_class構造体 |
この構造体を見ると、まず一般的なオブジェクト指向の構成要素である、インスタンス変数とメソッドの情報を含むことが分かるだろう。この情報には、メソッドとインスタンス変数の型と名前も含まれている。これが、メソッドおよびインスタンス変数のメタ情報となる。
他にも、クラスの情報が豊富にあったり、Objective-C特有のものとしてプロトコルの情報があることにも気づくだろう。
次回は、実際にプログラムを動かしながら、もっと詳しく調べていこう。
【コラム】ライトニングJava 第26回 アノテーション(1) - Javaの大きな変貌、アノテーションの導入
【コラム】ライトニングJava 第25回 Generic Java(6) - Genericを使ってAPIを作成する その3
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
[9nine]制服姿見納め? セーラー服で登場も川島海荷「4人はコスプレ」 [19:15 5/27] エンタメ |
|
「NO.6」4巻は書き下ろしドラマCD付、木乃のサイン会も [18:49 5/27] ホビー |
|
[今週の新刊]マンガ大賞3回ノミネート「アイアムアヒーロー」 カープ愛「球場ラヴァーズ」も [18:33 5/27] ホビー |
|
「ゆりてつ」サイン会は作者と都電に揺られるツアー仕立て [17:45 5/27] ホビー |
|
【ネタバレもありの徹底解明コラム】『サザエさん』タマの意外な事実 [17:30 5/27] ホビー |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。