Macintosh Developer Online (MDOnline)


2001年5月1日発行号 - CarbonLib SDK 1.3.1が公開



世間はすっかりゴールデンウィークですが、今日と明日はMDOnlineは発行します。5月だというのに今日はえらく寒いですね。足下では電気ストーブのスイッチが入っています。5月と言えば、今日から私の住まいは「浦和市」から「さいたま市」になりました。浦和、大宮、与野の3つの市が合併して、人口が103万人の都市になるということです。埼玉の県庁所在地も、みんなは大宮だと思っているけど実は浦和です…というギャグもかませなくなりました。もちろん、「さいたま市」が県庁所在地になります。で、いきなり政令指定都市になるのかと思ったら、2年後の指定を目指すそうです。ふつうは区ができるのだと思いますが、結局、さいたま市の発足時には区の策定はできなかったようで、うちの住所にはまだ「区」がありません。だから、そのうちまた住所が変わるというところでしょうか。大宮と浦和で同じ町名のあるところ以外は、単に市の名前が変わるだけです。もちろん、郵便番号や電話番号も同じですし、その意味では混乱はないとは言うものの、実感もないというところでしょうか。市長選挙が近々あって一部では盛り上がっている見たいですが…。というわけで、今日からMDOnlineはさいたま市からお届けすることになります。郵便番号検索のデータは、すでに「浦和市」「大宮市」では検索できなくなっていますが、これって3/1現在のデータとして配布されているものなのですけど、ちょっとフライングではないかなと思います。
(新居雅行 msyk@mdonline.jp


CarbonLib SDK 1.3.1がGM版として公開、キー入力の問題は解消へ

CarbonLib対応のアプリケーションなどを開発するための素材を提供する「CarbonLib SDK」はVer.1.3がADC会員にだけに公開される形で開発が進められていたが、Ver.1.3.1として公開された。シートウインドウのサポートや、ファイルのデータフォークを利用したリソース保存などの機能に対応し、イベント処理などでMac OS Xの機能との互換性を高めている。変更点については、DocumentationフォルダにあるCarbonLib 1.3.1 TN.pdfを参照すると良いだろう。このSDKに付属するCarbonLib(Implementation Librariesフォルダにある)を、日本語版のMac OS 9.1にインストールし、AppleWorks 6を利用してみた。以前のバージョンだと、control+Kなどのキーがことえりに伝わらずに、カナ変換などができなかったが、Ver.1.3.1はきちんとカナ変換ができることが確認できた。Jeditのように、Mac OS向けにCarbonLibを使わないバージョンを用意するなどCarbonLibを避ける傾向はあったが、Ver.1.3.1では利用環境での進歩があることから、CarbonLibに対する見方も変化が出てくるかも知れない。
なお、CarbonLib SDK 1.3.1は、Mac OS 8.6〜9.1向けのCarbon対応アプリケーションを作成するための素材が含まれたものではあるが、サンプルコードやドキュメントについてはMac OS X向けの開発を行っている場合にも利用可能なものだ。サンプルコードには、Project Builderのプロジェクトが入っている場合もある。Mac OS X向けに開発している人も、SDKは入手しておくのが良いだろう。

関連リンク:CarbonLib SDK 1.3.1
カテゴリ:Carbon/CF


REALbasic 3.2のベータリリースが開始、Core Graphicsの機能を利用へ

開発ツールのREALbasic 3.1が正式発売されたばかりだが、次期バージョンのVer.3.2のベータリリースが早くも開始された。現在、Ver.3.2b2がリリースされている。Ver.3.1ではMac OS X 10.0への適合が行われたが、Ver.3.2ではフォント表示においてCore Graphicsの機能を利用して描画を行うというのが最大の変更点となっているが、その他にもバグ修正や機能の向上なども行われている。

関連リンク:REALbasic 3.2b2
カテゴリ:REALbasic


今から始めるCocoaプログラミング》ドラッグ&ドロップでファイルを開く(2)オープン処理の組み込み

Cocoaのアプリケーションで、Finderでのドラッグ&ドロップに対応する方法についての続きをお届けする。前回は、概念の説明だけであった。Delegateという機能を使って、イベント処理やあるいはNotifyの受け取りを、別のオブジェクトにまかせるという手法が基調にあることを説明した。それでは、実際にどのようにすれば、アプリケーションのイベントがDelegateされるのかを具体的に説明していくことにしよう。

それでは、ここで、Project Builderを使って、ポイントになる部分を紹介するが、以前と同じように、操作ステップを追って説明することにする。まずはプロジェクトを用意する。今回はドキュメントとの関連までは説明しないので「Cocoa-Java Application」をプロジェクトのテンプレートとして選ぶことにする。新規にプロジェクトを作るには、FileメニューからNew Project(Command+shift+N)を選択する。プロジェクト名や保存先のフォルダについては任意に指定をすればよい。今回はAppDelegateTrial1という名前のプロジェクトにした。
さっそくInterface Builder側の作業に移ろう。テンプレートには、MainMenu.nibというInterface Builderの文書が最初から用意されているので、Project Builderの左側に表示される一覧部分でダブルクリックして開く。Resourcesグループに含まれているはずだ。

□Interface BuilderファイルのMainMenu.nibをダブルクリックして開く


MainMenu.nibには、最初からいくつかのオブジェクトが存在する。MainMenuというのがアプリケーションのメニューであり、Windowというのは起動したらとりあえずは自動的に表示されるウインドウである。これらに加えて、File’s Ownerと First Responderというオブジェクトが見られる。このうち、今回注目するのはFile’s Ownerの方だ。このオブジェクトは最初から作られているが、インスペクタで確認すると分かるのだが、NSApplicationクラスのオブジェクトとなっている。つまり、アプリケーションそのもののオブジェクトがFile’s Ownerであると考えてよい。

□MainMenu.nibの最初の状態


続いて、アプリケーションからDelegateされるオブジェクトを作ることにする。まずは、MainMenu.nibファイルのウインドウで、Classesのタブを選択し、そちらで新たにクラスを定義する。Delegateされるクラスは特定のクラスを継承する必要は特にはないので、ここではNSObjectを継承したクラスを作ることにする。クラス一覧でNSObjectを選択して、ClassesメニューからSubclassを選択する。

□ClassesメニューからSubclassを選択


すると、新しいクラスがMyObjectという名前で作成されて行が増える。ここでは「DocOpenHandler」という名前のクラスにするために、キータイプをしてクラス名を書き換えておいた。クラス名についても、この名前でないというわけではなく、もちろん別の名前でもかまわない。

□新しいクラスの名前をDocOpenHandlerとした


作成したクラスを一覧で選択した状態で、インスペクタのウインドウを表示する(たとえば、Command+Shift+I)。そして、インスペクタ上部のポップアップメニューでAttributesを選択し、属性を表示する。ここではクラスの中身を記述する言語を定義できるが、今回もやはりJavaでプログラムを作成するので、Javaを選択しておく。

□クラスの言語はJavaを選択する


続いて、作成したクラスのプログラムを記述するファイルを選択する。クラス一覧で、作成したDocOpenHandlerを選択したした状態で、ClassesメニューのCreate Filesを選択する。保存するファイルや場所を指定するダイアログボックスが表示されるので、そのまま設定は特に変えずにChooseボタンをクリックする。そうすれば、Project Builderで開いているプロジェクトの側にファイルが追加される。

□クラスのファイルを作成する

□プロジェクトのフォルダに保存され、プロジェクトに追加されるようにする


続いて、作成したクラスのインスタンス化を行っておく。やはり、クラスのリストでDocOpenHandlerを選択しておいて、ClassesメニューからInstantiateを選択する。すると、MainMenu.nibファイルのInstancesのタブで、DocOpenHandlerという名前でインスタンス化したオブジェクトがアイコンとして見えるようになっている。

□ClassesメニューからInstantiateを選択

□インスタンス化したオブジェクトが見える


以上の手順は、とにかく新たにクラスを作って、そのプログラムを記述するファイルを作っておき、さらにインスタンス化するということである。
(別の記事へ続く)

カテゴリ:ProjectBuilder/Interface Builder, Cocoa, 今から始めるCocoaプログラミング


今から始めるCocoaプログラミング》ドラッグ&ドロップでファイルを開く(2)オープン処理の組み込み(続き)

続いていよいよDelegateする設定を行う。MainMenu.nibのウインドウのInstancesのウインドウで、controlキーを押しながら、File’s Ownerから、定義したDocOpenHandlerに向かってドラッグを行う。すると、ドラッグもとからドラッグ先に向かって線が引かれると同時に、インスペクタがConnectionsの設定を表示するように開く。ここではOutletsとしてはdelegateだけが選択されているはずなので、それを確認してインスペクタのConnectボタンをクリックする。そうすると、File’s Owner、つまりNSApplicationをインスタンス化したオブジェクトのdelegateを、DocOpenHandlerに設定するということになる。

□File’s OwnerからDocOpenHandlerに向かってドラッグ

□Outletのdelegateを接続する


つまり、NSApplicationクラスでは、delegateというOutletが定義されているのである。そのOutletを特定のインスタンスに結びつけることで、結びつけられたインスタンスがイベントなどが発生したときに呼び出されるというわけだ。
Interface Builderでの作業はとりあえずここまでなので、Command+Sなどによって文書を保存しておこう。

Project Builderのほうに移動すると、DocOpenHandler.javaというソースファイルが作成されていること分かる。File’s OwnerからこのクラスのインスタンスにDelegateされているのだから、規定のメソッドの呼び出しが発生するはずだ。具体的にどのようなイベントでの呼び出しが発生するのかは、NSApplicationクラスの解説文書の最後の方に書かれている。

◇NSApplication(Java)
 http://developer.apple.com/techpubs/macosx/Cocoa/Reference/ApplicationKit/Java/Classes/NSApplication.html

ここではかなりたくさんのイベントに対応したメソッドが利用できることが分かるが、これらはすべて定義する必要はなく、使う必要のあるイベントに対応したものだけをメソッドとして定義すれば良い。Finderなどでファイルをドラッグ&ドロップしたときに呼び出されるのは、applicationOpenFileというメソッドなので、そのメソッドをDocOpenHandler.javaの中に定義する。引数は、NSApplicationのドキュメントに記載されているように2つを指定する。たとえば、ドラッグしてきたファイルのパスを標準出力に出力するようなアプリケーションとしては、図のようなプログラムを作成すればよい。

□メソッドapplicationOpenFileを追加する


こうしてアプリケーションを実際にビルドして起動する。Dockに起動したアプリケーションのアイコンが表示されるはずだ。そのアイコンに対して、何でもいいので適当にファイルをドラッグ&ドロップしてみよう。ただ、そのままだとアプリケーションのアイコンは反応しないので、Command+optionを押しながらアイコンにドラッグすることで、強制的に反応させることができ、アプリケーションアイコンは黒く選択されるはずだ。すると、Project Builderの標準出力の部分にドラッグしてきたファイルのパスが表示されているはずである。

□アプリケーションのアイコンにドラッグ&ドロップしたファイルのパスが見えている


アプリケーションは、Command+Qなどで通常通り終了できる。こうした基本的な処理はテンプレートあるいはフレームワークで定義されているので、何もしなくても機能が組み込まれた状態になっている。

いずれにしても、DelegateされたクラスのapplicationOpenFileというメソッドが、ドラッグ&ドロップによって呼び出される。applicationOpenFileメソッドの中では、引数にあるようにNSApplicationクラスへの参照がまず得られる。また、ドラッグしたファイルのパスをStringクラスで得られる。つまり、フルパス名が文字列として得られるのである。ファイルの中身を開くなどの処理は、たとえばjava.io.Fileクラスを利用するなどして処理を組み立てていけばいいということになる。いずれにしても、こうしてCocoaのアプリケーションにFinderのドラッグ&ドロップを受け付けるメソッドを記述することができるようになるということである。

ところで、以上のように自分で定義したクラス(ここではDocOpenHandler)にメソッドを追加するのであれば、Interface BuilderでDocOpenHandlerクラスにActionなどを定義した方がいいのではないかと考えるところかもしれない。だが、Actionを指定しても、引数などの指定を変更しなければならず、メソッド名しか引き継がれないので、手間の上ではかえってInterface Builderでの余分な作業が増えるのではないだろうか。それに、applicationOpenFileメソッドをActionとして定義しても、そのActionに対して結合を行うわけではない。NSApplicationのdelegateというOutletを、クラスのインスタンスに対して結合をするので、applicationOpenFileはActionとして存在している必要は特にないのである。だから、applicationOpenFileメソッドはソースファイルでいきなり書くことで問題はないだろう。

次回は、ダブルクリックして起動したときと、ドラッグ&ドロップで起動したときで処理を分ける方法など、NSApplictaionでのほかのイベントやNotificationについて説明をしよう。

カテゴリ:


WWDC 2001で開催されるUNIX関連のセッションをまとめたページが公開

Macintoshの開発者向けカンファレンス「WWDC 2001」が2001年5月21日〜25日に開催されるが、たくさん開催されるセッションのうちUNIX関連のセッションについての概要と、関連セッションの一覧が、Appleのサイトに掲載された。Darwinやオープンソース、UNIX関連ツールなどのトピックが紹介されており、セッションの一覧が掲載されている。この分野にフォーカスしたい人にとっては格好のガイドとなるだろう。

◇UNIX at WWDC 2001
 http://developer.apple.com/wwdc2001/unixwwdc.html

◇UNIX関連セッションのリスト
 http://developer.apple.com/wwdc2001/darwin.html

カテゴリ:イベント


TIL》ファームウエアのアップデートによるパスワード保護機能の使い方は未公開

Firmware Update 4.1.7/4.1.8を利用することで、ファームウエアにパスワード保護の機能が組み込まれることがTech Info Libraryの文書で掲載されている。ただし、Appleからはパスワードを設定するユーティリティや、あるいはパスワードの設定を行う方法については非公開となっている。サードパーティのユーティリティなどを使って設定を行った場合にコンピュータに対してダメージとなる場合も考えられ、そのときには保証による修理は受け付けないということが説明されている。

関連リンク:Macintosh: Open Firmware Password Protection
カテゴリ:Knowledge Base(旧TIL), OS関連ソフトウエア


TIL》QuickTime 5で有効なProキーと有効でないもの

Tech Info LibraryにQuickTime Proキーに関する情報が掲載されている。Proキーを購入してその番号を設定をすることで、QuickTime Playerでのムービー編集ができるようになるなど、機能アップする。プロキーには、QuickTime 3および4で有効な「QuickTime 3/4キー」と、QuickTime 4および5で有効な「QuickTime 4/5キー」がある。前者は、QuickTime 5でのProキーとしては利用できない。2000年10月12日以降に販売されたものは「QuickTime 4/5キー」となっている。

関連リンク:QuickTime 5: Enabling Pro Features
カテゴリ:Knowledge Base(旧TIL), QuickTime


クロスプラットフォーム対応のフレームワークCPLATがバージョンアップ

ksoftは、Mac OSおよびWindows向けのアプリケーションを生成できるフレームワーク「CPLAT 3.1」をリリースした。RAD Tool/Resource Editorも付属しており、GUIのツールでアイコンやメニューなどの定義もできる。フレームワークはC++で利用するのが基本となっている。$50でソースコードを含む開発ライセンスが入手でき、これを利用した配付アプリケーションに対してはライセンスは必要無い。Mac OS X向けのアプリケーション作成にもCarbonをベースに対応している。Ver.3.1ではシートダイアログのサポートやCore Graphicsを利用した描画機能の組み込み、イベント処理の向上などが行われている。

関連リンク:CPLAT 3.1
カテゴリ:ライブラリ


TIL》Mac OS XでのiTools利用はシステム環境設定をきちんと行っておく

Tech Info Libraryに掲載された文書によると、iToolsの機能を利用するには、システム環境設定の「インターネット」にあるiToolsのタブで、アカウントやパスワードをきちんと設定しておく必要がある。iDiskへの接続にはこの情報が使われる。また、「電子メール」の設定では、iToolsの設定を使ってメールを利用するためのオプションも用意されている。iToolsのアカウントをまだ取得していないのであれば、ボタンをクリックしてアカウントの取得も行えるようになっている。

関連リンク:Mac OS X 10.0: iTools and Internet System Preferences
カテゴリ:Knowledge Base(旧TIL), インターネット全般