【特集】
先週の金曜日に正式版が登場したLeopard。Appleも多くの新機能を喧伝しており、それらを試している方も多いだろう。
この記事では、見方を変えて、開発者から見るとLeopardにはどのような機能が追加されているのか、紹介したいと思う。先に述べておくが、追加機能は非常に多い。この記事に入りきらなかった新機能や、従来の機能の強化もたくさんある。Tigerのときも大きく機能は広がったが、Leopardではさらにその上に積み重ねられている。Machカーネル、Cocoaフレームワークといった強固な基盤の上に、次々と機能が花開いている。
Leopardで拡張された開発分野の機能のうち、最も大きい影響があるのが、Objective-C 2.0の導入だろう。Objective-Cは、いまやMac OS Xでアプリケーションを開発するときの主流の言語だ。動的で柔軟なオブジェクト指向と、C言語のローレベルなライブラリにアクセスできるという、両面を併せ持っている。しかし、その仕様が定まってから、すでに20年以上が経過している。テコ入れをして、もっとモダンにしようとしたのが、Objective-C 2.0だ。
「2.0」という大仰な名前がついているが、文法面での追加は少ない。むしろ、ランタイムの強化、改良に力を入れたという印象だ。その中で注目すべきは、ガベージコレクションの導入だろう。
自動的なメモリ管理を行ってくれるガベージコレクションは、いまや必須の機能だろう。これまでObjective-CおよびCocoaには、ガベージコレクションは存在せず、参照カウンタによるオブジェクトの管理を行っていた。あるオブジェクトが他のオブジェクトから参照されている数を、retainとreleaseというメソッドを使って、プログラマが手で管理していたのだ。このretain/release、それに加えてautoreleaseを使った管理は、ある程度熟練すれば問題はないのだが、仕組みを理解するには時間がかかり、やはりバグの温床になってきたと考えるべきだろう。
ようやく満を持して登場したガベージコレクションであるが、Objective-Cの特殊事情を配慮したものとなっている。それをよく表しているのが、C言語やC++へのポインタをも使ったアクセスが可能である、という点だ。言ってみれば、他の多くのオブジェクト指向言語が自身の言語で作られたオブジェクトしか対象にしない「クローズ」なものに対して、「オープン」であるとも言える。このため、「保守的(conservative)」ガベージコレクションがベースになっている。ただし、Cocoaのオブジェクトだけ見れば「クローズ」となるので、その辺りのバランスをとった実装になっているようだ。また、世代別ガベージコレクションも採用している。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
【レポート】「appliko」がオススメAndroidアプリを紹介!! - 1月31日~2月8日のAndroidアプリランキング [01:30 2/11] 携帯 |
|
【レポート】人気の無料/有料アプリを毎週紹介 - 1月31日~2月8日のAndroidアプリランキング [01:00 2/11] 携帯 |
|
渡部篤郎主演でドラマ化!地元新聞社が伝え続けた東日本大震災の物語 [00:08 2/11] キャリア |
|
沖縄発ヒーロー革命!「琉神マブヤー」が海を越えハワイを目指す! [00:08 2/11] キャリア |
|
中国四川省、パンダの保護と生態研究の最新情報とは? [00:08 2/11] キャリア |