タイトル今から始めるCocoaプログラミング》文書ファイルを扱うアプリケーションを作る(1)久しぶりにお届けしますカテゴリーユーザインタフェース, Cocoa, 今から始めるCocoaプログラミング
作成日2001/12/11 16:54:16作成者新居雅行
久しぶりで「今から始めるCocoaプログラミング」の記事をお届けしたい。このシリーズを初めた頃の記事は、Mac OS XはPublic BetaベースだったためにProject Builderのバージョンも古く、厳密には記事の通りに物事は進まなくなってしまっているのであるが、基本は変わらないということで、以前の記事も参考にしていただきたい。Interface Builderを使ってユーザーインタフェースを作るというのは、いわばアプリケーション見ての通り状態なので、それこそなんとか使っているうちに分かる範囲だと思われる。むしろ、難しいのは、Interface Builderでのクラスの設計やオブジェクトのインスタンス化の部分である。そして、あるインスタンスで別のオブジェクトを参照するというOutletや、あるいは何らかの動作で別のインスタンスのメソッドを呼び出すというactionといった概念を理解することである。これまでの部分ではそうしたところを極力重点的に解説を行ってきたつもりである。
そして、もう1つのハードルはCocoaというフレームワークの理解だろう。これはCocoaには限らないが、大量にクラスが定義されていて大量にメソッドなどがあるわけで、いきなりクラスの仕様書を見て面喰らうのは誰でも同じである。ただ、プログラミングを行うにはそうしたところをどうしてもハードルとしてこえないといけないのであるが、いちばんポイントになる部分から攻めて行くことで、それなりに見通しが良くなれば、最初はさっぱり訳の分からなかったクラスのリファレンスも徐々に見えてくるというものである。
前回までは、単純な1ウインドウのアプリケーションを作ってみた。ある意味では単純なのであるが、ファイルオープンの機能を組み込むとなるとちょっと難しくなってくるという側面もあった。それで半年も間が空いてしまって大変申し訳ないのだが、改めてここで少し長めに推移すると思うが、文書ファイルを扱うアプリケーションをCocoaのフレームワークで作る方法を解説したい。たとえば、エディタとかビューアとかそうしたものを作成する機能だ。なお、Cocoaについては、MDOnlineでは鶴薗さんが「Cocoaはやっぱり!出張版」でも解説をお願いしていることもあるのだが、新居の連載の方ではJavaで開発することを基本に今後も続けさせていただくことにする。

そういうわけで、今回からしばらく「文書ファイルを扱うアプリケーションを作る」というテーマで、何度かに渡って記事をお届けするが、アプリケーションに対して要請される機能についても、順次追加して、かなり引っ張って行くつもりである。だから、五月雨的に何ヶ月か続くということもあり得る点はご了承いただきたい。ベースになるのは、2001年12月9日に、MOSA Software Meetingの「Cocoa-Javaで何かアプリケーションを作ってみる」という講演である。あまりに中身のないタイトルに笑いとひんしゅくを買ってしまったかもしれないが、いろいろ事情があってタイトル決定までに時間がなかったというわけでお許しいただきたい。明確に「文書ファイルを扱うアプリケーションを作る」とタイトルを付ければよかったのだが、準備ができなかった場合も想定してちょっと逃げ道を造ってしまったと言う次第だ。申し訳ない。
セミナーに参加した方は分かるように、最終的に単にテキストエディタ作るだけのことであれば、1時間もかからないで終わってしまう作業である。具体的にはCocoaのApplication KitにあるNSDocumentというクラスを中心にしたいくつかのクラスを利用することで、文書ファイルを利用するアプリケーションは作成できてしまう。ユーザインタフェースもCocoaにあるものをそのまま使うのならもうほとんど出来上がったも同然だ。Appleが提供しているドキュメントは以下のアドレスにあるが、けっこう長いので読むのにめげる人もいるかもしれない。もちろん、いろいろな考え方は重要ではるのだけど、端的にどうすればいいかということだけを説明すると、MOSAのセミナーのときのようにシンプルに終わってしまうのである。それだけ、Cocoaがうまく作られていることに尽きるのであるが、いちおう今回からの一連の記事ではすでに説明したことも含めて、細部まで丁寧に解説を行う予定である。

◇Cocoa: Programming Topic: Document Based Applications
 http://devworld.apple.com/techpubs/macosx/Cocoa/TasksAndConcepts/ProgrammingTopics/Documents/index.html

しかし、ここでも「プログラミング」と名売っているけど、実際のところ、コアな部分だけを構築するには、いわゆるコードをちまちま打ち込む作業はほんとに少ない(MOSAの資料をお持ちの方は御覧いただけるはずだ)。というか、動くソースを打ち込むだけならほんとうに少ししかプログラムは出てこない。もちろん、実用的なアプリケーションを作るにはそこから大量のコーディングは必要になるとは言え、もはやフレームワークベースの開発ではソースコードよりも別のところに払うエネルギーの方が多いことも意味しているだろう。そういうわけで、プログラミングだけど、要はInterface Builderでの設定などの方が、ある意味では重要なポイントになってきている点は意識していただきたいところだ。

なお、MOSAの講義で、ちょっとうまく行かなかったRevertができなかったことと、画像が埋め込めなかった点は、理由が分かったので、それも織りまぜて説明をするつもりだ(NSTextViewのアトリビュートに設定するチェックボックスの問題であった)。
(この項続く)
関連リンク