Cocoaフレームワークの大きな特徴である、文書ファイルを伴うアプリケーションを作成する機能についての解説にさっそく入ろう。文書ファイル、たとえばテキストエディタとか、画像編集ソフトのように、アプリケーションとは別にデータをファイルに保存し、そのファイルをウインドウに開いて編集するという形式のアプリケーションは、もはや定番というのもおかしなくらい、パソコンでは当たり前になっている。そうしたアプリケーションを作るためには、オブジェクト指向以前(その意味では現在のCarbonも含む)のAPIでは、ウインドウを画面に出すだけでもけっこうなプログラミングが必要であった。10年くらい前のマックのプログラミング本だと、延々とプログラミングを行って、やっとシンプルなテキストエディタができました…という感じであった。 しかしながら、オブジェクト指向が一般的になったことで、差分だけを与えるというやり方がうまく機能するようになった。つまり、どのアプリケーションにも共通するような機能については、あらかじめフレームワークで作り込んでおく。たとえば、ウインドウを表示し、ウインドウの大きさを変えたりウインドウの位置を変更するといった動作は、ワープロでも画像ソフトでもほぼ共通だ。そうした機能はすでにフレームワークで用意しましょうというわけである。そして、ウインドウに表示する中身は、アプリケーションごとに作って下さいという具合である。もちろん、その中身を作る上でもオブジェクト指向によって部品が容易に使えてさらにはカスタマイズもできるなど、フレームワークの機能はふんだんに利用できる。そして、ウインドウといったコンポーネントだけでなく、「文書ファイルを扱うアプリケーション」という機能もフレームワークに含まれることが多い。いくらか複雑な仕組みになってしまうのであるが、それでもこうした機能を使えば、従来のやり方に比べて遥かに容易にアプリケーションができてしまうのである。なお、PowerPlantでも文書ファイルを扱うクラスは存在している。一方、SwingなどのPure Javaでは明確には存在していない。その意味では、Mac OS Xのネイティブ環境であるCocoaで対応があるということは、Cocoaの魅力であると言ってもいいだろう。ちなみに、Cocoaではこうした種類のアプリケーションを「Document Based Application」と呼んでいるので、以下「ドキュメントベースのアプリケーション」などと呼ぶことにする。