こんにちは。Mac / iOS アプリ開発担当の金内(Emacs 派)です。
UNIX ベースである Mac OS X は、たくさんのオープンソースソフトウェアから成り立っています。基盤である Darwin はカーネルを含む OS そのものがオープンソースですし、
OS X の兄弟にあたる iOS や Xcode を中心とした開発環境もまた、オープンソースソフトウェアを多く含んでいます。
いろいろと秘密主義で有名な Apple ですが、ソースコードを公開・共有することでオープンソースの世界に多くの貢献をしているのも事実です。
WebKit
Apple とオープンソースといったときに最もピンとくるのは WebKit プロジェクトではないでしょうか。
フェンリルのウェブブラウザ Sleipnir とも切っても切れない関係にある、ウェブコンテンツのレンダリングエンジンです。
KDE プロジェクトでうまれた KHTML を起源に、Safari のレンダリングエンジンとして開発された WebKit は、発表当初からオープンソースとしてリリースされ、後に Google Chrome をはじめ多くのブラウザに採用されました(もちろん Sleipnir も)。
その後、Google Chrome は WebKit をベースにさらに新しいレンダリングエンジン Blink への取り組みを発表していますね。こちらも目が離せません。
Mac OS Forge
Apple のオープンソースへの取り組みの中心地をあげるとしたら、Mac OS Forge と考えてよいでしょう。
OS X や iOS で重要な役割を演じているソフトウェアの開発プロジェクトをホストしています。
iTunes で使う Apple Lossless コーデックや、ネットワークサービスを自動で見つけてくれる Bonjour、並列処理をサポートしてくれる Grand Central Dispatch (GCD) の実装である libdispatch などのプロジェクトもホストされています。
Mac OS Forge に追加されたいちばん新しいプロジェクトは SCAP-on-Apple です。その名のとおり Secure Content Automation Protocol (SCAP) に関するプロジェクトです。
他にも UNIX 系ツールのパッケージマネージャである MacPorts や、Mac 用の X Window System である XQuartz の名前もありますね。
LLVM
Apple が深く関係しているオープンソースプロジェクトのなかでも最近存在感を増しているのがコンパイラ周辺技術を開発している LLVM です。
Apple は Mac や iPhone アプリの開発に使う標準コンパイラに LLVM を採用しています。
Mac や iOS 用の Sleipnir のコンパイルにも、もちろん LLVM を使っています。
Apple Open Source
ちょっと奥まったところにある Apple Open Source というページでは OS X や iOS、Xcode に含まれているオープンソースソフトウェアのソースコードが公開されています。
各バージョンごとにあって、ちゃんと最新の OS X 10.8.3 や iOS 6.1 のものも反映されています。
awk や zsh といったおなじみのものから、AppleFileSystemDriver のような Apple 独自っぽいものまでいろいろです。
Core Foundation や CFNetwork はオープンソース
意外と知られていなかったりもしますが、CFArray、CFString、CFHost などを含む Core Foundation や CFNetwork はソースコードが公開されています。
Source Browser のページには OS のバージョンごとではなく、各ツール、モジュールごとにソースコードをブラウズできるようになっており、
この中にある CF が Core Foundation です。CFNetwork はそのまま CFNetwork ですね。
OS の心臓部分であるカーネルは xnu という名前です。アルファベット順だとずいぶん下のほうになってしまいますが、何といってもカーネルです。お見逃しなく。
Apple のソースコードを味わう
公開されているソースコードのほとんどは、GUI やアニメーションといった華やかな部分とは離れた、ネットワークやファイルシステムといったシステムの基盤モジュールとなっています。Apple プラットフォームの開発言語としてすっかり定着した Objective-C もあまりなく、多くは C 言語のコードです。
それでも、サンプルコードなどとは違い、実際に世界中で毎日活躍している iPhone や Mac の基盤として動いているコードです。地味なモジュールでも、ソースコードのバージョン履歴を見ると着々と進化しているのがわかります。
ゴリゴリの C 言語のソースコードを「Apple のエンジニアだから、やっぱ Xcode で書いてるのかなぁ。それとも…」などと妄想しながら読んでみると、Mac や iPhone の違った魅力を感じる機会になるかもしれません。