Macintosh Developer Online (MDOnline)


2001年12月21日発行号 - Mac OS X 10.1.2がリリース



昨日の配信でお願いしたMajordomoの件ですが、何人かの方々からメールをいただきました。ありがとうございます。助かりました。ちゃんと調べればあちらこちらで書かれているみたいでした。とは言うものの、実は調べている時間がなかったというのもありまして…昨日は配信後、会社のサーバのBIND9と格闘しておりました。というのは、これまでに動かしていたDNSサーバはBIND8だったんですけど、設定ファイルをそのまま使うと案の定、ゾーンファイルでエラーが出ます。DNSとは言っても、ローカルなアクセスからのスルーをしているだけではありますが、社内のインターネットサーバの逆引きもさせているので、火急的な対応はいいとしてもいつかはやらないといけない…と思っていたら、それまで動いていたDNSサーバが落ち始めたので慌てて新しいサーバを設定していたというわけです。BIND9については、あまり情報がみつからなかったのですが、よく考えれば先月に大津さんがMDOnlineで書いてられたのを思い出し、設定ファイルを参考に書き直しました。ゾーンファイルのチェッカーとかがあるので、楽は楽なのですが、チェッカーでエラーになっても起動するとエラーにならないとかなんか挙動がいまいち自信を持てません。とりあえず、名前解決は動いているので良しということにしてしまいました。
今日は朝から突然の雪ですが、さすがに少しつもっています。ただ、路面が嫌な感じにシャーベット状になっているので、夜中に凍結は必至の状況ですね。そんな雪の中、赤松さん執筆の広文社刊『Cocoa+Java』を郵便局に持ち込み発送してきました。当選者は以下の方々です(敬称略)。

Java+Cocoa本当選者:沖本聡、nein、谷川 享、Moto、長谷川 暢宏

なお、来週の月曜は祝日ですので、出版スケジュールに従って、この土日月には発行はありません。次回の発行は火曜日の25日の予定です。年末年始ですが、27日までは通常とおり発行し、1月は5,6,7日の土日月から1回発行から通常スケジュールに戻す予定です。その間に緊急に何かあれば、発行はあるかもしれません。

それから、今年最後のプレゼントは、「Cocoa入門」です。オライリー・ジャパンさんが提供してくれました。なお、オライリーさんからは、卓上カレンダー、メモシート(A5サイズ。ちぎって使えるペーパー)もいただいています。で、ついでと言ってはなんですが、シマンテックさんからも卓上カレンダーをもらっているので、まとめて募集します。

===============================プレゼント
入門Carbon(3冊、オライリー・ジャパン提供)ほか
――――――――――――――――――――――――――――――――――――
(1)入門Carbon、(2)オライリーのカレンダー、(3)オライリーのメモシート、(4)シマンテックのカレンダーを賞品とします。なお、申し込みメールには不要な賞品があれば明記してください。抽選の上位から上記の商品を、記載の順序に割り当てることにします。不要な賞品の記載があり、それよりも順位の低い賞品がある場合にはそれが当選となります(なんか、ややこしい日本語…)。


(新居雅行 msyk@mdonline.jp


【MacWIRE配信予定】Mac OS X 10.1.2がリリース、PCカードストレージやIrDAモデムに対応

Mac OS X 10.1.2がリリースされた。ビルド番号が10.1.1の5M28から、5P48となっている。ソフトウエア・アップデートでの更新が可能で、ダウンロードサイズは30.3MBである。
まず、FireWireやUSB関連のアップデートが行われ、デジタルカメラのサポートの追加などが行われている。PCカードでは、ストレージカードのサポートが行われた。たとえば、CFカードを差し込んだPCカードをPowerBook G4に差し込むと、ハードディスクと同じアイコンでマウントされた。また、同時にImageCaptureアプリケーションも起動する。ディスクの情報を見ると、MS-DOSフォーマットとして認識をしているようである。ファイル処理はもちろんハードディスクと同様に行える。マウントにはやや時間がかかるようなので、慌てないで待つのがよい。なお、PCカードモデムには残念ながら対応はしていない。

 

さらに、FireWire搭載のPowerBookでのIrDAモデムサポートが行われた。これまではGigabit EthernetタイプのPowerBook G4のみの対応であったが、PowerBook G3の2000年モデル以降は対応したことになるだろう。
ここで、システム環境設定の「ネットワーク」を選択すると、次のようにIrDAモデムが利用できるようになったことが自動的に認識されるので、OKボタンをクリックすると現在の設定に、IrDAモデムの接続設定が追加される。

 

IrDAモデムの接続設定は、内蔵モデムと基本的に同じでTCP/IP等の設定があるが、IrDAというタブがある。ここではモデムスクリプトなどを選ぶが、メニューバーにIrDAモデムの接続を管理するメニューが追加できる。

 

その他、オーディオ、ディスプレイ、およびスピーチの機能向上、ネットワーク機能とプリント機能の向上といった改善項目が挙げられている。AirMac 2.0に加え、Apacheは1.3.22となった。AppleScriptはVer.1.8になったとしているが、AppleScript Studioのインストールですでに1.8になっているものと思われる。ClassicのAppleScriptは1.7のままである。なお、AppleScriptKit.frameworkというフレームワークは、AppleScript Studioで作成したアプリケーションの稼働に必要となる。AppleScript Studioで作成したアプリケーションは「Mac OS X 10.1.2以降で対応」となることは意識しておく必要があるだろう。

IrDA対応により、モバイルでのインターネットの接続方法にバリエーションが増えたのは確かではある。だが、実際に使えるものとなると、携帯電話向けのアダプタ、あるいはノキアのIrDA対応携帯電話、さらにはICカード公衆電話といったものであり、またこれらが実際にMac OS Xで利用できるのかといった情報はまだない。IrDAはBruetoothへのつなぎ的な見方もされているだけに対応製品も少なく、これと言った手段とはならないのも事実だろう。なお、IrDAについては、以下のサイトが詳しいだろう。

◇赤外線通信(IrDA)対応ソフトウェア/ドキュメント/リンクリスト
 http://hp.vector.co.jp/authors/VA005810/irda/

関連リンク:Mac OS X Upgrade
カテゴリ:OS関連ソフトウエア, Mac OS X, Mac OSテクノロジー


鶴薗賢吾のCocoaはやっぱり!出張版》#6 - ツールバー(8)

―――――必須ではないデリゲートメソッド

ここでは、必須ではないデリゲートメソッドを紹介していきます。必須ではないので、実装しなくてもツールバーは動きますが、より細かい制御をしたい場合にはこれらのメソッドを実装するとよいでしょう。

 ̄ ̄ ̄ツールバーアイテムの登録通知___

Controller.mにはtoolbarWillAddItem : というメソッドもありますが、これは、ツールバーにアイテムが登録される直前に呼ばれます ( toolbar : itemForItemIdentifier : willBeInsertedToolbar : よりは後 )。主に、標準アイテムの属性を変更するのに使用します。ここでは、Printのツールチップとターゲットの変更を行っています。パラメータのNSNotificationのuserInfoのitemにNSToolbarItemが入っていますので、取り出して、setToolTip : とsetTarget : を実行しています。ちなみに、標準では、ツールチップは「 Print 」で、ターゲットはファーストレスポンダーになっています。

◇Controller.m → toolbarWillAddItem


- (void) toolbarWillAddItem : (NSNotification *) notif {

NSToolbarItem *addedItem = [ [ notif userInfo ] objectForKey : @"item" ];

if ( [ [ addedItem itemIdentifier ]
isEqual : NSToolbarPrintItemIdentifier ] ) { // Printの場合
[ addedItem setToolTip : @"Print your document" ]; // ツールチップ変更
[ addedItem setTarget : self ]; // ターゲット変更
}
}

 ★ NSToolbarNotifications : ツールバーアイテム登録通知
  [書式] - (void) toolbarWillAddItem : (NSNotification *) notification
  [入力] notification : 通知情報
 

 ̄ ̄ ̄ツールバーアイテムの削除通知___

登録通知の逆で、ツールバー上から取り除かれた後にも通知がきます。例えば、ツールバーアイテムの初期化時にメモリを確保しているようなものの場合は、ここで破棄を行います。

◇Controller.m → toolbarDidRemoveItem
- (void) toolbarDidRemoveItem : (NSNotification *) notif {

NSToolbarItem *removedItem = [ [ notif userInfo ] objectForKey : @"item" ];
: removedItemに対する終了処理
}

 ★ NSToolbarNotifications : ツールバーアイテム削除通知
  [書式] - (void) toolbarDidRemoveItem : (NSNotification *) notification
  [入力] notification : 通知情報

 ̄ ̄ ̄ツールバーのバリデーション___

状況によって一時的にツールバーアイテムを使用不可にしたいことがありますが、これを制御するにはバリデーションの機構 ( 有効かどうかを返す ) を使います。ツールバーアイテムのターゲットのインスタンスにvalidateToolbarItem : メソッドを書いておきますと、バリデーションが必要な時にツールバーアイテム単位でこのメソッドが呼ばれます。

◇Controller.m → validateToolbarItem :

- (BOOL) validateToolbarItem : (NSToolbarItem *) theItem {

// NSLog( @"validateToolbarItem : %@", [ theItem label ] ); // 追加

return YES; // or NO
}

パラメータにツールバーアイテムのインスタンスが渡ってきますので、判断をして有効ならばYESを無効ならばNOを返すようにします。上のようにNSLogを入れておきますと分かりますが、マウスが動いただけでこのメソッドは呼ばれることがあります。

 ★ NSToolbarItemValidation : ツールバーアイテムが有効かどうかを返す
  [書式] - (BOOL) validateToolbarItem : (NSToolbarItem *) theItem
  [入力] theItem: 対象のツールバーアイテム
  [出力] 返り値 : 有効 = YES、無効 = NO
  [備考] イメージアイテムにのみ有効

 ̄ ̄ ̄メニューのバリデーション___

ツールバーアイテムにメニューがついていて、Text Onlyモードやオーバーフローメニューになった場合は、validateMenuItem : が代わりに呼ばれるようになります。メニューがクリックされてプルダウンする直前に呼ばれますので、この中でメニューにチェックマークをつけるなどの処理も行うのが楽でいいでしょう。このサンプルでもこの中でチェックを付けています。

◇Controller.m → validateMenuItem :

- (BOOL) validateMenuItem : (NSMenuItem *) menuItem {

if ( [ menuItem action ] == @selector( changeFontStyle : ) ) {
if ( [ menuItem tag ] == fontStylePicked )
[ menuItem setState : NSOnState ]; // チェックをつける
}

return YES; // or NO
}

 ★ NSMenuValidation : メニューが有効かどうかを返す
  [書式] - (BOOL) validateMenuItem : (id ) menuItem
  [入力] menuItem : 対象のメニューアイテム
  [出力] 返り値 : 有効 = YES、無効 = NO

―――――メニューバーからの操作

 ̄ ̄ ̄ツールバーを隠す___

ツールバーは不要な場合は、ユーザーが隠すことが出来るようになっています。ウィンドウの右上にあるボタンで隠したり表示したり出来るので、特に何もしなくてもとりあえずは大丈夫ですが、一般的にはウィンドウメニューや表示メニューなどに「 Hide Toolbar ( ツールバーを隠す )」というメニューをつけることが多いです。このメニューは、ツールバーが隠されている場合は「 Show Toolbar ( ツールバーを表示 )」というタイトルに切り替わります。

このメニューを実現したい場合は、メニューを作って、ウィンドウのtoggleToolbarShown : というアクションにコネクトするだけで作業は完了です。メニューのタイトルもツールバーの状態によって自動的に変わりますので、タイトルを付けておく必要もありませんし、コーディングの必要はありません。さらに、設定パレットを表示している間は、自動的に使えなくなります。

◇Hide Toolbarメニューの挙動
 

このサンプルでは、toggleToolbarShown : のコネクトをウィンドウに対して行っていますが、複数のウィンドウを持つアプリケーションの場合は、ファーストレスポンダ ( First Responder ) にコネクトすることになります ( この方が一般的だと思います )。こうしておくと、ツールバーを持たないウィンドウがアクティブな時にはメニューが自動的に使えなくなってくれます。このサンプルでは、アバウトパネルをアクティブにしておくとメニューが使えなくなります。

 ̄ ̄ ̄設定パレットの表示___

設定パレットの表示も同様です。メニューを作って、ウィンドウの runToolbarCustomizationPalette : アクションにコネクトするだけです。このメニューも同様に、ファーストレスポンダにコネクトするのが一般的といえます。コネクトをするだけで、設定パネルが表示されて、閉じられるまでの操作も全てフレームワークが行ってくれます ( ツールバーからアイテムを取り除いた時の爆発のアニメーションも自動です )。
(この項続く)
[鶴薗賢吾]

関連リンク:Cocoaはやっぱり!
カテゴリ:ユーザインタフェース, Cocoa, 鶴薗賢吾のCocoaはやっぱり!出張版


鶴薗賢吾のCocoaはやっぱり!出張版》#6 - ツールバー(9)

―――――ツールバーの日本語化

 ̄ ̄ ̄nibファイルの日本語化___

ここでは、ツールバーの日本語化を扱っていきます。一般のアプリケーションの日本語化と基本的に同じですが、フレームワークによって自動的に日本語化される部分もありますので、その辺りに注目してください。

まず、Project BuilderでMainMenu.nibを選択して、「 プロジェクト → 情報を見る 」メニューを選択します。

◇情報パネル
 

「 地域情報とプラットフォーム 」というポップアップボタンから「 異なる地域情報を追加... 」を選択して、「 Japanese 」と入力してOKボタンをクリックすると、日本語用のMainMenu.nibが追加されます。このまま何もせずに、ビルドして実行すると以下のようになります。

◇日本語のMainMenu.nibによる設定パレット
 

 ̄ ̄ ̄アイテム辞書の日本語化___

シート上の説明も日本語になりますし、標準アイテムのラベルなども自動的に日本語になりますので、ほとんど何もする必要はありません。ただし、カスタムアイテムは自動的に日本語になりませんので、コードの一部をマルチリンガル対応する必要があります。このサンプルでは、awakeFromNibを修正するのが一番簡単ではないかと思います。Blue Textアイテムのラベルだけ日本語化してみたソースが以下のものです。

◇Controller.m → awakeFromNib


// Blue Textを辞書に追加 ( イメージアイテム )
addToolbarItem( toolbarItems,
@"BlueLetter", NSLocalizedString( @"BlueLetter", @"" ),
@"Blue Text",
@"This toggles blue text on/off",
self, @selector(setImage:),
[ NSImage imageNamed : @"blueLetter.tif" ],
@selector(blueText:), fontSizeMenu );

NSLocalizedString関数は、プロジェクト内のLocalizable.stringsというファイルを参照しますので、このファイルを作ってMainMenu.nibと同様の手順でマルチリンガル化して、日本語用のファイルに以下のように記述しておきます。文字コードはUnicodeにしておきます ( 「 形式 → ファイルエンコーディング → Unicode 」メニューを選択します )。

◇Localizable.strings > Japanese

"BlueLetter" = "文字を青くする";

すると、以下のように日本語化されます。

◇ツールバーアイテムを日本語化したところ
 

メニューは以下のようになります。「 Hide Toolbar 」は自動的に日本語化されますが、「 Customize Toolbar... 」は日本語化されませんので、こちらは編集する必要があります。

◇日本語のMainMenu.nibによるメニュー
 

―――――もう1つのサンプル : SimpleToolbar

Appleから提供されているツールバーのサンプルはもう1つあります。これは、Developer Toolsによってインストールされるもので、SimpleToolbarというものです。起動ドライブの以下の場所にあります。

◇SimpleToolbar
 /Developer/Examples/AppKit/SimpleToolbar/

こちらのサンプルはドキュメントベースのアプリケーションにツールバーを実装したものになっています。そのため、複数のウィンドウにツールバーを表示するようなアプリケーションの動きを追うにはこちらを使うのがいいかもしれません。

◇SimpleToolbarのウィンドウ
 

この図を見ると、手前のウィンドウはテキストが編集されているためにSaveアイテムが有効になっていて、奥のウィンドウは無効になっていることが分かります。

また、ツールバーのインスタンス取得メソッドであるtoolbar : itemForItemIdentifier : willBeInsertedIntoToolbar : メソッドは、ToolbarSampleとちょっと違った書き方になっています。アイテム辞書を用意するのではなくて、アイテムの識別子をif文でアイテムの数だけ比較するというやり方になっています。アイテム辞書を使う場合は便利ですが、全てのアイテムを統一的な処理で書けるようにする必要があります。複雑なツールバーアイテムを使っているような場合は、こういうやり方が楽なこともあるかもしれません。

◇MyDocument.m → toolbar : itemForItemIdentifier : willBeInsertedIntoToolbar :

- (NSToolbarItem *) toolbar : (NSToolbar *) toolbar
itemForItemIdentifier : (NSString *) itemIdent
willBeInsertedIntoToolbar : (BOOL ) flag {
: 省略
if ( [ itemIdent isEqual : SaveDocToolbarItemIdentifier ] ) {
} else if ( ... ) {
} else if ( ... ) {
: 省略

―――――ツールバー作成手順

この記事は、サンプルコードの解説ということで書いていますので、実際に作る時の手順の説明にはなっていません。そこで、最後に手順を書いておきます。もちろん、この順番どおりでないと作れないわけではありません。

―――――まとめ

個人的にはCocoaアプリケーションなので、ツールバーはグラフィカルな操作で作れるのかと思っていましたが、そうではなくてコーディングがそれなりに必要です。Interface Builderでのサポートがもっとあるとよいのですが、今後の改善に期待したいところです。とはいえ、フレームワーク側の補助もかなりあるため、慣れれば、さほどの時間をかけずにツールバーをつけることが可能です。是非チャレンジを。
(この項、以上)
[鶴薗賢吾]

関連リンク:Cocoaはやっぱり!
カテゴリ:ユーザインタフェース, Cocoa, 鶴薗賢吾のCocoaはやっぱり!出張版


鶴薗賢吾のCocoaはやっぱり!出張版》#6 - ツールバー(追加)

「Cocoaはやっぱり!出張版」のコーナで「#6 - ツールバー」として公開してきた一連の文書は、以下のアドレスのPDFで御覧いただける。筆者の鶴薗さんが元原稿レベルで作成されたものである。紹介が最後になってしまった点はお許し頂きたい。

関連リンク:鶴薗賢吾のCocoaはやっぱり!出張版》6 - ツールバー
カテゴリ:ユーザインタフェース, Cocoa, 鶴薗賢吾のCocoaはやっぱり!出張版


【MacWIRE配信予定】Learing Carbonが翻訳され「入門Carbon」として出版

オライリー・ジャパンより出版された「入門Carbon」は、2001年5月に米国で出版された「Learning Carbon」の翻訳書である。著者はApple Computer, Inc.で、長瀬嘉秀氏の監訳、株式会社テクノロジックアートの翻訳となっている。Carbonに関して日本語で読める解説書としては初めてのものである。内容は、nibファイルでリソースを定義し、CarbonイベントをインプリメントするタイプのCarbonアプリケーションについてのチュートリアル的な解説となっている。月旅行計画というアプリケーションを題材に取り、Project Builderでの作業や、Interface Builderでのメニューやダイアログボックスの設計、そしてアプリケーション化に必要な機能についての解説が掲載されている。ローカライズや印刷、ファイル処理についても説明されている。いずれも手順を示しながらなの説明となっているので、指示通りに作業をすることで理解を深めることができるだろう。プロパティやヘルプ、アイコンといった仕上げに必要な情報も説明されている。さらに、AppleScript対応やスレッドと言った高度な話題についても簡単ではあるがプログラム例を交えて取り上げている。付録にはCarbon Eventの定義定数やパラメータの一覧があるのも便利なところだ。C言語が知っている程度のプログラマであれば、Carbon対応、つまりMac OS Xのネイティブなフレームワークを使ったプログラム作成を初歩から学習することができるだろう。また、Mac OS時代のToolboxの知識がある人なら、Mac OS X対応のアプリケーションを作成するいちばん早い方法として、Carbonへの完全対応の方法を学習することができる。CarbonフレームワークはToolboxの機能との互換性があることから膨大な機能があるが、Mac OS X向けにふさわしいプログラミングの作りがどういったものかということも、本書を通じて得られる重要な情報となるだろう。その意味では入門書ではあるものの、Carbonプログラマにとっての“標準”を知るための書籍でもある。

関連リンク:入門 Carbon
カテゴリ:雑誌、書籍, ProjectBuilder/Interface Builder, Carbon/CF


【MacWIRE配信予定】REALbasic 3.5日本語版ライセンスパックをリリース

アスキーは、日本語版REALbasicの印刷マニュアルやCDを含んだ「REALbasic 3.5 日本語版ユーザーライセンスパック」の販売を2001年12月26日から開始する。REALbasicはオンラインでライセンス購入によって利用することもできるが、印刷されたマニュアルやインストール用CD-ROMが欲しい場合には、ライセンスパックを入手することになる。オンラインで購入できるが書店での購入や取り寄せが可能となっている。「REALbasic 3.5 Standard 日本語版ユーザーライセンスパック」が19,500円、「REALbasic 3.5 Pro 日本語版ユーザーライセンスパック」が50,000円となっていて、ライセンスだけの購入よりも2,000円高くなる。前バージョンからのアップグレードも受け付けられるが、Ver.2.0から3.0へのアップグレードは、12月26日で終了する。REALbasic 3.5の新機能マニュアルPDF版も公開された。

関連リンク:REALbasic日本語版
カテゴリ:REALbasic


今から始めるCocoaプログラミング》文書ファイルを扱うアプリケーションを作る(4)プロジェクトの用意

今回から実際にDeloper Toolsを使ってプログラミングに入ろう。もっとも、プログラミングとは言ってもコードを書くのはほんのちょっとだけであるが…。仕様するツールは、December 2001版のDeveloper Toolsである。

まずは、Project Builderでプロジェクトを作成する。「ファイル」メニューから「新規プロジェクト」(Command+shift+N)を選択し、ダイアログボックスで「Cocoa-Java Document-based Application」を選択する。そして、プロジェクト名とそのフォルダを保存するフォルダを指定する。今回の一連のプログラムはMOSAEditorということにしよう。

◇Cocoa-Java Document-based Applicationを選択する
 
◇プロジェクト名と保存フォルダを指定する
 

作成されたプロジェクトを見て見よう。まず、アプリケーションで必ず必要になるmain.mがあるが、これはそのままでOKである点は他のアプリケーションと変わらない。そして、nibファイルが2つあるところが目に付く。ここではまず、MainMenu.nibがあるのだが、それに加えて、MyDocument.nibというnibファイルもある。そして、Javaのソースファイルとして、MyDocument.javaというものもある。まず、これらの基本となるファイル群をチェックしておこう。

◇作成したばかりのCocoa-Java Document-based Applicationのプロジェクト
 

必要なファイルを先にプロジェクトに登録しておこう。前回、アイコンファイルを3つ作ったが、そのファイルを、プロジェクトのフォルダにFinderでコピーしておく。そして「プロジェクト」メニューの「ファイルを追加」(Command+option+A)を選択して表示されるダイアログボックスで、3アイコンファイルをまとめて選択して、「開く」ボタンをクリックすれば良い。その後に、登録するターゲットなどの設定シートが表示されるが、プロジェクトの中のファイルの場合はデフォルトで問題はないだろう。

◇アイコンファイルをプロジェクトに追加する
 
◇ファイルの追加方法はそのままでOK
 
◇アイコンのファイルがプロジェクトに追加された
 

ファイルがプロジェクトに追加されると、左側のリストに出てくる。必要ならグループを作るなどして分類していいだろう。ファイル名の左にあるチェックボックスは、現在のターゲット(ターゲットはビルド方法に関する1つの設定)で利用されるかどうかを示している。通常はチェックが最初から入っているのだが、新しいターゲットを作ったときなどはこのチェックボックスで、必要なものや不要なものを振り分けるということができる。

とりあえず必要なファイルを組み込むことができたので、次は、アプリケーションに必要な設定を行うことにしよう。「プロジェクト」メニューから「アクティブターゲットの編集」(Command+shift+E)を選択して、ターゲットの編集パネルを表示する。そこにある「アプリケーション設定」を選択する。
まずは「基本情報」を見て見よう。「実行可能ファイル」はプロジェクト名がそのままなので、これはそれでいいだろう。識別子は特に指定は必要ない。タイプとシグネチャは設定の必要がある。シグネチャ(クリエイタ)は、ここではome9に書き換えるとする。Mac OS Xでもシステムはシグネチャを使ってアプリケーションを特定するという対応付けを行っている。もちろん、シグネチャはAppleに申請して唯一のものを取得する必要がある。バージョンは任意に設定すればいい。

◇アプリケーション設定の基本情報を設定する
 

続いて、「アイコン」の部分ではアプリケーションのアイコンファイルのファイル名をキータイプして入力する。さきほど追加したアイコンファイルのファイル名をここに入力すれば良い。
「Cocoa固有の設定」は最初からすでに記入されているが、ここが重要である。主要クラスがNSAplication、メインnibファイルがMainMenuとなっている。この「メインnibファイル」という設定は、このアプリケーションを起動したときに自動的にロードされるnibファイルを指定するのである。つまり、MainMenu.nibファイルに定義したオブジェクトは、起動した段階で自動的に展開されるということである。実際にここではメニューなどを定義しているが、メニューがこうしたメカニズムで自動的にインスタンスとなってアプリケーションの中で利用できると考えておけばよいだろう。

◇アプリケーション設定のアイコンとCocoa特有の設定
 

続いて「書類のタイプ」という部分の設定を行う。ここでは、文書ファイルの定義に従った設定を行うが、すでに1つの設定が組み込まれている。まず、この設定を書き直すのであるが、一覧の中の設定をクリックして選択すると、下側の部分に設定内容が表示される。ここで書き直して「変更」ボタンをクリックすれば良い。
まずは、リッチテキストフォーマットの文書を保存する設定を定義する。書類タイプの情報の「名前」は書類の名前を指定するが、これはFinderの文書情報の種類に出てくる文字であることを意識しておく必要がある。「役割」はEditorでいいだろう。続いて「拡張子」はあらかじめ決めておいたmeditを指定する。「OSタイプ」は、ファイルタイプであるが、ここで指定したファイルタイプも同様なフォーマットであるとして読み込み可能にすると考えればよい(これだとリッチテキストのファイルタイプとしては不適格かもしれないが…)。ファイルタイプとの兼ね合いなどは実際にプログラムを加えてファイル処理ができるようになってから改めてチェックしよう。「アイコンファイル」はもちろん用意したファイルのファイル名を指定する。「書類のクラス」は最初からMyDocumentが設定されているがこれが非常に重要な意味を持つ。すでに作られているMyDocument.javaファイルで定義されたクラス名が指定されるが、ここではmedit拡張子のファイルを開いたとき、そのドキュメントの管理をMyDocumentクラスのインスタンスで行うということを意味する。つまり、ファイルと処理を行うクラスの対応付けを、「書類のクラス」の設定で行うというわけだ。

◇medit拡張子のファイルの文書ファイルとしての定義を行う
 

続いて、テキストファイルに関する定義も追加する。その場合は、リストの下側にある領域に必要な項目をとにかく記入して、「追加」ボタンをクリックすれば良い。ここでは「OSタイプ」にはテキストファイルのタイプであるTEXTをしっかり記載しておく必要があるだろう。

◇テキストファイルの文書ファイルとしての定義を行う
 

まだ、nibファイルなどを確認はしていないものの、このままとりあえず実行してみよう。プログラムを1行も追加していないので、まずは問題なくコンパイルして実行できるはずだ。実行はツールバーの左から3つ目のボタンをクリックするか、Command+Rで行う。すると、次のようにとにかくMOSAEditorが起動した。アプリケーションアイコンはさっそく、作成したアイコンファイルが見えている。メニューは英語であるがとにかく存在する。また、ウインドウが1つ開いている。Your Document Contents Hereとあるのだが、とりあえずは何もできない。

◇プログラムに変更を加えない状態で起動してみた。メニューやウインドウがすでに出ている
 

実際の設定との兼ね合いは改めて説明するが、メニューについては、MainMenu.nibに定義されたものがそのままアプリケーションで利用されている。ウインドウについては、MyDocument.nibで定義されたものが表示されているのである。これらは当然ながらカスタマイズしないといけないのだが、その方法は次回以降で説明しよう。
(この項、続く)

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


今から始めるCocoaプログラミング》文書ファイルを扱うアプリケーションを作る(5)初期状態での動きを見る

まずはテンプレートのままの状態で動いているアプリケーションの動作を追って行く。実は、何のプログラミングをしなくてもここまで動くというのがフレームワークの強力なところなのである。アプリケーションメニューを見てみよう。英語ではあるが、終了もできるし、隠すこともできる。一部のメニュー項目がNewApplicationになっているが、これは後から変更しないといけない。ここで、About NewApplicationを選択すると、すでにデフォルトのアバウトウインドウが表示する。この内容は、プロジェクトファイルにあるCredits.rtfの中身である。このように、RTFファイルを用意すれば簡単なアバウトウインドウまでもサポートしてしまっているのである。

◇アプリケーションメニューは既に使える状態にある
 
◇アバウト画面のメッセージはRTFファイルで与えることができる
 

Fileメニューを見てみよう。こちらも、ほぼ、必要なメニュー項目が揃っているのが分かるが、ここで、Newを選択してもらいたい。もちろん、Command+Nでもかまわない。ショートカットも何もしなくても機能している。

◇Fileメニュー
 

Newを選択すると、新たにウインドウがいくつも作られる。ウインドウをいくつも作ってWindowメニューを見てもらいたい。すると、すでに作られたウインドウの項目が見えている。また、FileメニューのClose(Command+W)も機能している。これら、基本的なマルチウインドウ処理は、何もしなくてもアプリケーションに組み込まれてしまっている。もちろん、ウインドウのタイトルバーをドラッグして移動したり、サイズを変更するという処理も、特に何もしなくても組み込まれているのである。

◇Windowメニューのメンテナンスも自動的に行われている
 

ここで、FileメニューからSave(Command+S)を選択してみよう。すると、保存するファイルとフォルダを指定するシートが出てくる。File Formatを注目してもらいたいが、ここで、すでにアプリケーション設定の「書類のタイプ」で指定したタイプの名前がポップアップに並んでいる。実際に保存しようとしても、エラーメッセージが出る。これは正常な動作である。保存に際しては、データの取り出しを自分でプログラムしないといけないのだが、初期状態ではそうしたプログラムは含まれていないし、エラーが出るようになっているというわけだ。

◇ファイルへの保存をやってみる。すでに書類タイプを認識している
 
◇保存しようとしたがエラーになる。これは正常な動作だ
 

今度は、FileメニューからOpen(Command+O)を選択してみよう。ダイアログボックスが表示されるが、ここでもやはり書類タイプの認識が行われている。たとえば図に見えている拡張子が.txtのテキストファイルはTextEditによるもので、ファイルタイプは未設定だ。一方のJedit4書類のテキストは拡張子はtextなのだがファイルタイプはTEXTである。つまり、書類タイプで指定した拡張子やファイルタイプのあるものはグレーにならずに選択できるようになっており、定義に含まれないファイルはグレーとなって選択できないのである。ここでも書類タイプの認識をきちんと行っている。

◇ファイルを開く場合でもすでに書類の種類の認識が行われている
 

ここでファイルを開いても、ウインドウには何も出てこないが、ウインドウのタイトルだけは開いた書類のアイコンやファイル名が記載される。こうしてつらつらといくつかのファイルを開くと、FileメニューのOpen Recentに開いたファイル名が記録されていく。そして、選択すれば再度開くといったことが行われる。このOpen Recent(最近開いた書類)についても、実はフレームワークですべてメンテナンスしてくれるので、プログラマは何もしなくても(というのは大げさだけど)この機能が使えるというわけである。

◇Open Recentの追加は自動的に行っている
 

以上のように、一切プログラミングを行わない状態でも、マルチウインドウ、マルチドキュメントのアプリケーションとして動いてしまうほど、Cocoaの中で機能が作り込まれている。後は、必要なメソッドの組み込みなどをすればOKである。逆に言えば、どこまでが自動化されていて、どの部分を自分で組み込む必要があるのかを知るのが、Documentベースのアプリケーション作成のポイントであると言えるだろう。次回はユーザインタフェースを組み込むことにしよう。
(この項、続く)

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


実装されているよりも少ないメモリ量を認識させる方法

Technical Q&Aで、メモリが少ない状態で起動して、各種のテストを実行する方法が公開されている。Mac OS XであればOpen Firmwareでの設定で可能になる。nvramコマンドを利用することで、実際に搭載されているメモリよりも少ないメモリでのシステム起動が可能となる。つまり、本体を開いて少ないメモリにしてのテストをするという必要はないわけである。また、Open Firmwareのコマンドを利用した方法など、メモリ認識のさまざまな変更方法が記載されている。

関連リンク:QA1099: Reducing the size of Physical Memory in Open Firmware
カテゴリ:Technical Q&A, 開発情報, Mac OS X


Mac OS Xでのライブラリの命名規則

Project Builderでのビルド時に、自分で作成したライブラリのリンクができない点についてのTechnical Q&Aが掲載されている。Mac OS Xではライブラリのファイル名については一定の決まりに従ってつけられている必要がある。ファイル名はlibではじまり、スタティックなライブラリは.a、ダイナミックライブラリは.dylibという拡張子にしておく必要がある。ライブラリの名前を変更した後は、それを取り込んでいるプロジェクトの設定も見直す必要がある。

関連リンク:QA1101: Library naming conventions for proper building and linking with the Mac OS X Developer Tools
カテゴリ:Technical Q&A, 開発情報, Mac OS X


KBase》起動ディスク以外での起動をできなくするセキュリティツールが公開

Macintoshのセキュリティを向上させるツール「Open Firmware Password」が公開された。Mac OS X 10.1版であるが、英語版のみである。アプリケーションで設定を行うと、起動ディスクとして指定されたディスク以外の起動ができなくなる。たとえば、CD-ROMやFireWireハードディスクを新たにつないで他のドライブで起動するということができなくなる。ただし、起動時にoptionキーを押したままにして、起動ドライブを選択することは可能となるが、設定されている起動ドライブ以外で起動するにはパスワード入力が必要になる。従って、CD-ROMや持ち込んだハードディスクで起動して、Macintoshの内蔵ハードディスクをセキュリティなしにアクセスするということができない状態にすることができる。

関連リンク:Open Firmware Password 1.0.2: Information and Download
カテゴリ:ユーザ管理, Mac OS X


KBase》TextEditやSherlockで設定ファイルを管理するポイント

Knowledge Baseに、Mac OS X Serverでの設定ファイルについての文書が掲載されている。Mac OS X Serverで稼働させるサーバプロセスなどは、設定ファイルをテキストファイルで指定した位置に作成しておく必要がある。そのファイルの作成方法としては、TextEditを使うことができるが、環境設定を変更しておき、プレーンなテキストをデフォルトの文書形式にしておくと便利である。また、設定ファイルの探し方としてはSherlockを使うことを説明しているが、非表示ファイルも検索できるようにしておかないと、設定ファイルの置き場所としてよく利用される/etcなどのディレクトリが検索できないということもある。以上の点について手順などが詳細に記載されているが、いずれにしても、サーバー管理のコツとしての記載である。

関連リンク:Mac OS X Server: How to Locate and Edit Configuration Files
カテゴリ:Knowledge Base(旧TIL), ネットワーク管理, サーバー製品, Mac OS X Server


2002年のPalmSourceは3月末に開催

Palmプラットフォームの開発者会議「PalmSource Japan Forum 2002」が、2002年3月28日(木)〜29日(金)に東京・赤坂プリンスホテルで開催されることが公開された。パームコンピューティングが主催し、キースリーメディア・イベントが運営する。今回はARMアーキテクチャに移行することが決まっている次期Palm OSに関する情報や、技術動向、製品戦略などがテーマとして扱われる予定となっている。Palmの開発者やPalmでビジネスをしている人にとっては要チェックなイベントとなるだろう。

関連リンク:パーム コンピューティング「PamSource(R) Japan Forum 2002」を2002年3月に開催
カテゴリ:Palm & PDA, イベント


KBase》マルチモニタ使用時にはClassicでのOpenGLは動作が遅くなる

Mac OS X 10.1をマルチモニタで使っている場合、Classic環境でのOpenGLのアクセラレーションはオフになる。そのため、ゲームなどの動作が非常に遅くなる場合がある。スリープさせるか終了させてモニタの接続を1つだけにして利用すれば、アクセラレーションが有効になる。

関連リンク:Mac OS X 10.1: No OpenGL Acceleration in Classic When Using Multiple Monitors
カテゴリ:Knowledge Base(旧TIL), グラフィックス, Classic


KBase》モデムの自動接続をオンにしていると場合によっては起動時にダイアルアップ

Mac OS Xの起動時に、ダイアルアップ接続を自動的に行ってしまう場合があることが、Knowledge Baseで公開されている。モデムによるネットワーク接続で、TCP/IPアプリケーションのリクエストで自動接続するオプションがあり、それがオンになっていて、さらにWeb共有(Apache)の機能がアクティブになっていると、起動時にモデム接続を行おうとする。その場合いは、自動接続のオプションを切っておけば良い。

関連リンク:Mac OS X: Some Services Cause Modem Connection During Startup
カテゴリ:Knowledge Base(旧TIL), インターネット全般, ネットワーク