【特集】
先週の金曜日に正式版が登場した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のオブジェクトだけ見れば「クローズ」となるので、その辺りのバランスをとった実装になっているようだ。また、世代別ガベージコレクションも採用している。
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
| マイナビ、3月より書籍連動型のクリエイティブ・デザイン系セミナー開講 [12:00 2/10] |
|
【レポート】スマートフォンを狙ったワンクリック詐欺やオンラインバンキングを狙うゼットボット - トレンドマイクロマンスリーレポート [20:43 2/10] パソコン |
|
【レポート】レノボ、大和研究所の開発陣らによる「ThinkPad X1 Hybrid」の技術解説 [20:41 2/10] パソコン |
|
【レポート】CP+2012 - 発表されたばかりの「SD1」後継機の「SD1 Merrill」が人気 - シグマ [20:29 2/10] 家電 |
|
【レポート】実は大変なことだらけ…「胸が大きい人」あるある [20:26 2/10] ライフ |
|
[オタク川柳]「海賊王? それより課長に なってパパ」などノミネート作品20句発表 ネット投票開始 [20:23 2/10] エンタメ |