Macintosh Developer Online (MDOnline)


2001年12月11日発行号 - Cocoaでアプリを



MOSAのセミナーでお話ししたことの記事を開始しました。やっぱりデモしながらの解説はなかなか思うように行きませんし、当然、しゃべるよりも書く方が得意なので、もっと分かりやすくお届けできるかと思います。しばらくは、Office関連の記事などなど、並行していろいろ動かしているので、ネタはいっぱいありそうですが…。
そういえば、iTunesのラジオで、全然何も聞けないカテゴリがiTunes 2のリリース時にはあったりしましたけど、最近はそういうこともなく、ラジオ曲の一覧がきちんと更新されていますね。いつのまにかきちんとなっていたということでしょうか。で、さっき気が付いたのですが、iTunesを起動してから、USBスピーカー(Sound Sticksですが〜)をつないだら、即座に切り替わりますね。10.0.xでは確かカーネルパニックになったりしたはずです。10.1でも落ちないまでもできなかったと思うのですが、これは10.1.1でのアップデート点なんでしょうか。こういうところをもっとアピールしてほしいという気もしたりもします。
さて、iMovie本の当選者の方々は以下の通りです。おそらく本日、佐川急便で発送されているかと思いますので、よろしくお願いします。さらに次のプレゼント企画もありますので、当たらなかった方もお楽しみに〜。

iMovie本当選者(敬称略):RATS、大槻頼克、ken604、chobi、
      高木一雄、橋詰、戸松、岸田浩一、jundatta、Theta
(新居雅行 msyk@mdonline.jp


今から始めるCocoaプログラミング》文書ファイルを扱うアプリケーションを作る(1)久しぶりにお届けします

久しぶりで「今から始める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のアトリビュートに設定するチェックボックスの問題であった)。
(この項続く)

カテゴリ:ユーザインタフェース, Cocoa, 今から始めるCocoaプログラミング


Carbonへの移植の文書についての追加が公開、ファイルのロックついての変更など

Carbonアプリケーションへの移行やMac OS Xネイティブ化に関する解説ドキュメントであるCarbon Porting Guideの追加版として「Carbon Porting Guide Addendum」が公開している。2001年6月にCarbon Porting Guideがリリースされているが、それにさらに追加する内容が記載されたものだ。Carbonアプリケーションを開発している人は、必ず目を通しておくべきものだろう。内容をかいつまんで紹介しておこう。
まず、Mac OS Xでは、Mac OSのようにデフォルトでファイルがロックされることはないので、「ロックファイル」という手法でファイルのロックを自分で組み込む必要がある。これは、現在開いているファイルに対して、その名前に.lockを付けた名前のファイルを作っておき、そのファイルが存在すれば開いていることを示すという方法である。もちろん、ファイルを閉じたときにはそのファイルを削除する。この手法について、そしてファイルの中の部分的なロックについては、サンプルプログラムのGrabBagを見てほしいとしている。また、関連するTechnoteを用意していると解説されている。(ただ、ロックファイルの手法だと、異なるアプリケーションから開いている文書に対するブロックは完全にはできないようになる。いずれにしても、開いているファイルは自動的にロックされるというMac OSのファイルシステムの大きな特徴は完全になくなったと言えそうだ。)ほかには、CarbonLibで稼働させるプログラムに必要なリソースの一覧、DataBrowserに関する文書へのリンク、CodeWarriorでMach-Oがサポートされたこと、include文変換のスクリプトについての説明がある。

関連リンク:Carbon Porting Guide Addendum
カテゴリ:アップルからの開発資料, Carbon/CF


【MacWIRE配信予定】4Dの日本語版もアカデミック向けに無償提供を開始

フォーディー・ジャパンは、データベースソフトの4th Dimension(4D)Ver.6.7を教育機関向けに無償で配付することを発表した。教育機関や教職員、学生を対象としており、2001年12月20日よりダウンロードでの配付を開始する。また、教育機関に付属する医療施設や特定非営利活動法人も対象となる。ただし、入手にはファクスで別途申し込みを行う必要がある。フリーで提供される4Dは製品版との違いはまったくないとしている。WindowsおよびMacintoshで利用できる。英語版で米国向けなどでは、2001年11月よりアカデミック対象に無償での提供を開始している。

関連リンク:一部のアカデミック製品の無償提供を12/20(木)より開始
カテゴリ:データベース, 各種プロダクツ


Mac OS Xでのgdbの使い方を解説した文書が公開

Technical Noteに、Mac OS Xで標準的に使われるデバッガであるgdbについての解説が掲載された。Project Builderでのデバッグでは、GUIを通じてステップ操作などが行えるが背後ではgdbが稼働しており、gdbにコマンドを与えての操作もできるので、Mac OS Xのプログラマはgdbの機能や使い方についてはひととおりの知識を備えておくのが望ましいだろう。gdbはフリーソフトウエアとして流通しているツールだが、Mac OS X向けのドキュメントを改めて用意している点は高く評価できるだろう。まず、gdbは、C/C++およびObjective-Cでの開発で利用されるデバッガである。Project Builderでの利用方法が説明された後、gdbを起動してアプリケーションなどをアタッチする方法、ブレークポイントやトレース、逆アセンブル、ソースや変数の見方などが、具体的にコマンドと実行例を示しながら解説されている。以前にはMacsBugに詳しい人向けのgdbの使い方についてのTechnoteが掲載されているが、こちらは一般的な解説となっている。

関連リンク:Getting Started in GDB
カテゴリ:Technote, 開発情報


KBase》Mac OS Xで複数のアプリケーションを同時に起動できない場合がある

Knowledge Baseに、Mac OS Xでは複数のアプリケーションを一気にまとめて起動使用としても、Dockでいつまでもバウンドしたり、起動してもウインドウが出ないと言う中途半端な起動状態になる件についての文書が公開された。それを避けるためには、Finderで操作しているときにはアプリケーションを1つ1つ完全に起動するのを待って起動するようにという説明がある。また、ログイン時にたくさんのアプリケーションが起動されるようになっているのなら、それを避けるということが記載されている。(つまり、根本的な解決策は示されていない。)

関連リンク:Mac OS X: Issues When Opening Multiple Applications
カテゴリ:Knowledge Base(旧TIL), Mac OS X


KBase,TIL》iPodのアップデータが公開、ファームウエアをアップデート

サウンドプレイヤのiPodのファームウエアをアップデートするソフトウエアが公開されている。Mac OS X 10.1およびMac OS 9.2.1で利用でき、日本語版もすでに利用できる。アップデートの作業と、初期状態に復帰する作業ができるようになっている。また、アップデートによりスペイン語、イタリア語、オランダ語が追加される。また、バッテリー残量が少ないときにスリープから復帰しなくなるという問題がこのアップデータにより解消される。

◇iPod Software Updater 1.0.2: Information and Download
 http://www.info.apple.com/kbnum/n120077

◇iPod Software Updater 1.0.2 に関する情報とソフトウェアのダウンロード
 http://til.info.apple.co.jp/cgi-bin/artnum?id=120077JC

◇iPodがスリープから戻らない場合
 http://www.apple.co.jp/ipod/alert/index.html

カテゴリ:Tech Info Library-J, Knowledge Base(旧TIL), メディアプレイヤ