Macintosh Developer Online (MDOnline)


2002年1月23日発行号 - iMac Developer Noteが公開



鶴薗さんの記事のPDFがけっこう好評なので、他の記事もPDF化を…というお声もいただいていますが、すみません、ちょっと実現しそうにないです。メールでは読みづらいですし、かといってWebだといいとうわけではないのは重々承知しています。いずれにしても、創刊時からの違いと言えば、Webの記事に画像がエンベッドされるようになったくらいで本質は同じままになっているのは確かです。なんとかしたいですし、すでにWebやメールの技術は固まっているので、今解決すれば長年持つことは分かっているのですが、いかんせん弱小媒体の悲しさ、予算がまったくないため、私の手元でできる範囲ということになってしまいます。いずれは、記事を指定すると自動的にPDFを作成する…というところをやりたいです。個人でニューズレターをやるとなると、PDF作成は自動化しないとさすがに追い付きません。個別に手作業をするとすれば、記事量は半分になると思っていただいていいでしょう。今のMDOnlineはある意味では、紙の出版物で言う流通をバイパスしているだけでなく、実は編集と言う作業もかなりバイパスしています。何らかの方法で実現したいという意志はありますので、その点はご理解下さい。だけど、サーバすら買えないに近い状況なのに、PDF関連のライブラリで使いやすそうなのはけっこう高価ですよね…。Mac OS XでPDFに落とすのが実はいちばん楽な方法かもしれませんが、サーバ周りの状況って変化が大きいので常にウォッチが必要ですね。
それで、記事を書きっぱなしというのもどうかと思いました。もちろん、過去記事のリライトも必要ではありますが、それもなかなか手が付けられません。強いニーズがあればやりますが、どうなんでしょうか。そこで、MDOnlineで蓄積された記事をなんとか書籍として出版するということを考えていますし、実際に動きだしています。書籍になるのであれば、収入になるので、仕事として成立するわけです。ただ、MDOnlineでお金を払って、また書籍でお金を出すのかよと思われるかもしれませんが、そこのところは平にご容赦ください。やはりビジネスとして成り立たせるためにこうしたことが優先されるのはご理解ください。ただ、書店で買ってくれというのもなんですから、割り引き販売を可能な限り行います。ただし、通販となりますが、コンビニ決済のSmartPitで準備を進めています。よろしくお願いします。出版スケジュールに入ったくらいに予告をします。
(新居雅行 msyk@mdonline.jp


【MacWIRE配信予定】小池邦人のプログラミング日記》2002/1/23<Dockのからメニューをポップアップさせる>

今回から、何回かに分けて、Carbonアプリケーションから利用できるMac OS X 10.1特有の機能を紹介したいと思います。まずは、Mac OS X 10.1に搭載されているDock Managerを活用してみます。最初は、アプリケーションが起動するとDockから利用できるようになる、Dockメニューについての解説です。

最近、Macintoshのハードウェア方面は、新機種発表などで活気があるのですが、システムを含めたソフトウェア方面に関しては、随分と静かな日々が続いております(笑)。CarbonLibの新しいバージョンも登場していませんし、Mac SO X 10.2についての噂もすっかり途絶えてしまいました。3月のMACWORLD Expo/TokyoでのMac OS X 10.2発表は、ちょっと無理でしょうか(紹介ぐらいあると嬉しい)。この調子だと、正式発表はWWDC 2002という事になりそうです。ソフトウェアと同様に、CarbonやMac OS Xに関する新しいドキュメントの登場も、今年になってピタリと止まってしまい、まったく進展がありません。

Dock Managerについての参考資料は、昨年の8月に登録された2つPDFドキュメントが最後です。それらは、以下のApple Carbon Documentサイトからダウンロードすることができます。

◇Dock Manager
 http://developer.apple.com/techpubs/macosx/Carbon/HumanInterfaceToolbox/DockManager/dockmanager.html

そのうちの「Customizing Your Application Dock Tile」は、20ページのドキュメントで、もう片方の「Dock Manager Reference」は、わずか10ページのドキュメントです。「Customizing Your Application Dock Tile」の方には、Dockのタイル(何故だかアイコンとは呼ばない)上に画像を描画する方法や、その上部にアプリケーション固有のメニューをポップアップさせる方法などが詳しく解説されています。「Dock Manager Reference」の方は、そうした仕組みを提供するために使われる、Dock Manager API(全部で10種類)の引数の意味や使用方法などが解説されています。

特別な用意をしていないアプリケーションの場合には、以下の様なDockメニューが表示します。

 

アプリケーションがDockに未登録であれば、「Finderに表示する」という項目の上に「Dockに保存する」という項目が追加されます。メニューの最上部には、現在アプリケーションでオープンされているウィンドウのタイトルが並び、それを選択することでウィンドウの切り替えを行えます。この仕組みは、システムのウィンドウメニューが提供している機能と同等です。アプリケーションは、このタイトル項目の下に、独自のメニュー項目を追加することが可能なわけです。

アプリケーションのメニュー構築に、"MENU’リソースを利用している場合には、Dock ManagerのSetApplicationDockTileMenu() APIを使えば、簡単にDockメニューを作成することができます。

 

上記のsetUpMenu()ルーチンでは、メニューバーを構築した後に、ID=131番の"MENU’リソースを呼び込み、その最初の項目にチェックマークを付けてから、SetApplicationDockTileMenu()でDockメニューとして登録しています。ですから、このアプリケーションでは、ウィンドウメニューの左側のメニューとまったく同じ内容の物が、そのままDockメニューに利用されるわけです。

 

では、Dockメニューが選択された時の処理は、どのように記述したら良いのでしょうか?これは、通常のメニュー処理とまったく同じです。‘xmnu’リソースに各メニュー項目のコマンドID(OSType)を登録しておき、それをCarbon Event Handlerで受け取って処理を分岐させます。今回のように、メニューバーのメニューの一部をDockメニューとして再利用している場合には、処理はどちらも同じですので、Dockメニュー用に特別な処理を記述する必要はありません。

次に、アプリケーションがNibファイルからメニューを構築している場合についてです。まず、Interface Builderを起動し、「DockMenu」という名称のメニューオブジェクトを作成します。各メニュー項目には、InfoウィンドウでコマンドIDを割り当てておくことを忘れないでください。

 

メニューオブジェクトが完成したら、そのNibファイルに「DockMenu.nib」と名称を付け保存します。その後、Project Builderを起動させ、保存しておいたNibファイルをプロジェクトウィンドウの「Resources」グループに登録します。

 

続いて、プロジェクトウィンドウからファイルリスト右側の「ターゲット」ダブを選び、アプリケーションと同じのターゲット名をクリックします。すると、ウィンドウの右側にターゲットに対して各種設定をするためのダイアログが表示されます。そこの「アプリケーション設定」ダブを選んで、右上部の「詳細設定」ボタンをクリックします。

 

そこには、アプリケーションバンドルに含まれる「Info.plist」(XMLテキスト)の内容が表示されています。そこで、プロパティリスト「AppleDockMenu」、クラス「文字列」、値「DockMenu」を一行追加します。値として代入する「DockMenu」が、自動で読み込まれるNibファイルの名称なのですが、「.nib」の拡張子部分は省略します。設定が終了したら、アプリケーションをメイクして起動させると、Nibファイルで保存しておいたメニューをDockメニューとして利用できます。メニュー選択による処理の実行は、SetApplicationDockTileMenu() の場合とまったく同じで、メニュー項目に付けたコマンドIDを認識してCarbon Event Handllerで行います。

 

アプリケーションの状況により、メニュー項目の内容を差し替えたい場合には、イベントクラスがkEventClassApplicationで、イベント種類がkEventAppGetDockTileMenuでのCarbonイベントを受け取った時点で処理するのが便利です。このイベントは、ユーザがDockでメニューを表示した場合に発生します。以下は、そのEvent Handlerルーチンの一部です。

 

ここでは、強制的にID=131番のメニューへと内容を差し替えています。差し替えるMenuRefの値は、SetEventParameter()ルーチンでシステムに渡してやればOKです。

次回は、Dockのタイル上に、オリジナルの図形や画像を描画する方法の話です。Mac OS X 10.1付属のMailアプリケーションが、未読メール数をDockタイルに表示していますが、あの機能を実現している仕組みについて解説する予定です。
[小池邦人/オッティモ]

関連リンク:オッティモ
カテゴリ:ユーザインタフェース, Carbon/CF, 小池邦人のプログラミング日記


鶴薗賢吾のCocoaはやっぱり!出張版》7. UNIXコマンドの実行(3)

では、細かく見ていきます。


// 実行準備
task = [ [ NSTask alloc ] init ]; // 生成と初期化
[ task setStandardOutput : [ NSPipe pipe ] ]; // 標準出力変更
[ task setStandardError : [ task standardOutput ] ]; // 標準エラー変更

まず、最初にNSTaskの生成と初期化をallocとinitで行います。

UNIXコマンドの多くは、実行結果を標準出力に出力します。そのため、何もしないと結果はコンソールに出力されてしまいます。このサンプルでは、テキストフィールドに出力していますので、コンソールに出力させずに、アプリケーション側で受け取る必要があります。NSTaskには、標準出力の出力先を変更する setStandardOutput : というメソッドがありますので、これを使います。

出力先には、ファイルハンドル ( NSFileHandle ) とパイプ ( NSPipe ) のどちらかが使用できます。ファイルハンドルを使用すると、指定のファイルへ書き出すことが出来ますし、パイプを使用するとパイプに出力内容がたまりますので、そこからファイルハンドルを使って読み出すことが出来ます。このサンプルでは、パイプに出力させて、そこから読み出してテキストフィールドに書き込んでいます。

標準エラーも同じく出力先をパイプにしておきます。メソッドはsetStandardError : を使います。

 ★ NSTask : コマンドの標準出力先を変更
  [書式] - (void) setStandardOutput : (id) file
  [入力] file : 出力先のファイル(NSFileHandle)かパイプ(NSPipe)を指定する。

 ★ NSTask : コマンドの標準出力先を取得
  [書式] - (id) standardOutput
  [出力] 返り値 : 設定されているファイル(NSFileHandle)かパイプ(NSPipe)
          のインスタンス。

 ★ NSTask : コマンドの標準エラーの出力先を変更
  [書式] - (void) setStandardError : (id) file
  [入力] file : ファイル(NSFileHandle)かパイプ(NSPipe)を指定する。

 ★ NSTask : コマンドの標準エラーの出力先を取得
  [書式] - (id) standardError
  [入力]
  [出力] 返り値 : 設定されているファイル(NSFileHandle)かパイプ(NSPipe)
          のインスタンス。

パイプを作るには、NSPipeのクラスメソッドであるpipeを実行するだけです。

 ★ NSPipe : パイプのインスタンスを生成
  [書式] + (id) pipe
  [出力] 返り値 : パイプのインスタンス。

続いて、実行するコマンドをsetLaunchPath : で設定し、コマンドに渡すパラメータをsetArguments : で設定します。

[ task setLaunchPath : [ arguments objectAtIndex : 0 ] ];
// コマンド設定
[ task setArguments : [ arguments subarrayWithRange :
NSMakeRange( 1, ([arguments count] - 1) ) ] ];
// パラメータ設定

 ★ NSTask : 起動するコマンドのパスを変更
  [書式] - (void) setLaunchPath : (NSString *) path
  [入力] path : 起動するコマンドのフルパスを指定する。

 ★ NSTask : 起動するコマンドのパスを取得
  [書式] - (NSString *) launchPath
  [出力] 返り値 : 起動するコマンドのフルパス。
 
 ★ NSTask : コマンドに渡すパラメータを変更
  [書式] - (void) setArguments : (NSArray *) arguments
  [入力] arguments : コマンドに渡すパラメータ。

 ★ NSTask : コマンドに渡すパラメータを取得
  [書式] - (NSArray *) arguments
  [出力] 返り値 : コマンドに渡すパラメータ。

このサンプルでは使用していませんが、カレントディレクトリを指定したり、取得したりするメソッドも用意されています。

 ★ NSTask : 実行時のカレントディレクトリを変更
  [書式] - (void) setCurrentDirectoryPath : (NSString *) path
  [入力] path : 実行時のカレントでディレクトリのフルパス。

 ★ NSTask : 実行時のカレントディレクトリを取得
  [書式] - (NSString *) currentDirectoryPath
  [出力] 返り値 : 実行時のカレントでディレクトリのフルパス。

通知設定のところは後回しにして、最後のlaunchメソッドを先に説明します。このlaunchメソッドを実行することで、UNIXコマンドが実行されます。UNIXコマンドは非同期で動きますので、このlaunchメソッドを呼んでもすぐに制御は戻ってきます。

[ task launch ]; // コマンド実行

 ★ NSTask : コマンドを実行
  [書式] - (void) launch
  [備考] コマンドは非同期に実行されるため、すぐに制御が戻ってくる。
  [出力] 返り値 :

◎ 通知を用いた実行結果の読み出し
先程、標準出力をパイプに変更しました。そして、パイプからの出力を読み出すのにはファイルハンドルを用いると説明しました。具体的には以下のようにしてファイルハンドルを得ることが出来ます。

NSFileHandle *fout = [ [ task standardOutput ] fileHandleForReading ] ];

standardOutputメソッドからパイプ ( NSPipe ) のインスタンスが返ってきますので、NSPipe読み込み用のファイルハンドルを取得するfileHandleForReadingを呼ぶことでファイルハンドルが得られます。

 ★ NSPipe : パイプから情報を読み出すためのファイルハンドルを取得
  [書式] - (NSFileHandle *) fileHandleForReading
  [出力] 返り値 : パイプから情報を読み出すためのファイルハンドルの
         インスタンス。availableData、readDataToEndOfFile、
         readDataOfLengthで読み出す。

 ★ NSPipe : パイプに情報を書き込むためのファイルハンドルを取得
  [書式] - (NSFileHandle *) fileHandleForWriting
  [出力] 返り値 : パイプに情報を書き込むためのファイルハンドルの
         インスタンス。writeDataで書き込む。

後は読み出し用のメソッドavailableDataなどを用いれば、読み出しが行えます。ただし、どういったタイミングで、パイプからデータが出力されてくるのかは、実行するUNIXコマンドに依存します。今回のlocateコマンドでは、瞬時にデータが出てきますが、インターネットから情報を取ってくるようなコマンドもあります。そのため、このサンプルでは、読み出しメソッドを呼ぶのではなくデータが得られた時にファイルハンドルに通知してもらうようなスタイルを採っています。
(この項続く)
[鶴薗賢吾]

関連リンク:Cocoaはやっぱり!
カテゴリ:Cocoa, 鶴薗賢吾のCocoaはやっぱり!出張版


鶴薗賢吾のCocoaはやっぱり!出張版》7. UNIXコマンドの実行(4)

Cocoaのフレームワークには、通知 ( Notification ) の仕組みがあります。「 こういうことが起きたらここに通知してほしい 」ということを通知センター ( NSNotificationCenter ) に知らせておくと、通知が発生した時点で、指定のインスタンスの指定のメソッドを呼んでくれます。そのメソッドには通知情報 ( NSNotification ) が送られますので、その中身を見ると、通知の種類や通知に附随するデータなどを取得することができます。

この通知というのは、単なるコールバックの仕組みではありません。あるオブジェクトが通知センターに通知を登録したら、その通知を待っている全てのオブジェクト対して通知が送られるのです。この通知を待っているオブジェクトのことをオブザーバ ( Observer ) と呼びます。

◇通知の概念図
 

ファイルハンドルは、読み出せるデータがあるときに通知をする機能がありますので、TaskWrapperは、その通知を受け取れるように通知センターにオブザーバ登録を行います。それを行っているのが以下です。


// 標準出力からのデータを受け取るための通知設定
[ [ NSNotificationCenter defaultCenter ]
addObserver : self
selector : @selector(getData:)
name : NSFileHandleReadCompletionNotification
object : [ [ task standardOutput ] fileHandleForReading ] ];

通知センターのインスタンスはdefaultCenterメソッドで得られます。このインスタンスに対して、addObserver : selector : name : object : メソッドを使って、オブザーバを登録します。

 ★ NSNotificationCenter : オブザーバ登録
  [書式] - (void) addObserver : (id ) anObserver
          selector : (SEL ) aSelector
          name : (NSString *) notificationName
          object : (id ) anObject
  [入力] anObserver : 通知先のインスタンス。
     selector : 通知先のインスタンスの実行するメソッド。
     name : 通知してほしい通知の種類。nilにすると全ての通知を受ける。
     object : 通知の発信先の指定。nilにすると全てのインスタンスからの
          通知を受ける。

最初の2つのパラメータがオブザーバの設定で、通知先を自分 ( self ) に、実行するメソッドをgetData : にしています。残りの2つのパラメータは、受け取りたい通知の指定を行っています。nameにNSFileHandleReadCompletionNotification を指定することで、ファイルハンドルからデータが読み出せるようになった時の通知が来ます。objectには、パイプの読み出し用のファイルハンドルを指定していますので、もし、アプリケーションの中にこれ以外のファイルハンドルがあったとしても、そのインスタンスからの通知は届きません。

さて、ここでUNIXのコマンドを起動してから出力結果がどのような流れで通知されるかを簡単な図にしてみましたので、これでイメージを掴んでください。

◇UNIXコマンドの起動と出力の流れ
 

ファイルハンドルは、読み出せるデータがあったとしても、通常は読み出しメソッドが呼ばれるのを待っています。そこで、ファイルハンドルから通知を受けるためには、そのファイルハンドルに通知を出すようにお願いをしておく必要があります。そのためには、readInBackgroundAndNotifyメソッドを実行しておきます。

[ [ [ task standardOutput ] fileHandleForReading ]
readInBackgroundAndNotify ];

 ★ NSFileHandle : バックグラウンドでの読み出しと通知の指定
  [書式] - (void) readInBackgroundAndNotify
  [備考] NSFileHandleから通知を受けるためには、このメソッドを
      予め実行しておく必要がある。
(この項続く)
[鶴薗賢吾]

関連リンク:Cocoaはやっぱり!
カテゴリ:Cocoa, 鶴薗賢吾のCocoaはやっぱり!出張版


鶴薗賢吾のCocoaはやっぱり!出張版》7. UNIXコマンドの実行(5)

◎ コマンドの実行結果の受け取り
これで通知が発生するようになりましたので、実行したコマンドからの出力の受け取りの方法について説明します。先程、通知が発生した時に呼び出されるメソッドに指定したgetData : を見ていきます。通知を受けるメソッドは、必ずNSNotificationクラスのパラメータを1つ持たなければなりませんので以下のようになっています。


// ソース:MoriarityController.m/メソッド:getData

- (void) getData : (NSNotification *) aNotification {

// 出力されたデータを取得
NSData *data = [ [ aNotification userInfo ]
objectForKey : NSFileHandleNotificationDataItem ];

if ( [ data length ] ) { // 文字列に変換して出力
[ controller appendOutput :
[ [ [ NSString alloc ] initWithData : data
encoding : NSUTF8StringEncoding ]
autorelease ] ];
} else {
[ self stopProcess ]; // データがとれなくなったら終了
}

if ( task ) { // タスクがある時は、再度、通知を発行してもらう
[ [ aNotification object ] readInBackgroundAndNotify ];
}
else { // タスクがなくなっていたら終了 ( エラー処理 )
[ self stopProcess ];
}
}

通知から出力データを取り出すにはuserInfoメソッドを使います。このuserInfoメソッドの返り値は辞書になっています ( 通知の種類によっては沢山の情報を持っているため ) ので、辞書からobjectForKey : メソッドを使って出力結果を取り出します。辞書から取り出すためのキーはNSFileHandleNotificationDataItemです。これで、UNIXコマンドが出力したデータがNSDataクラスとして得られるので、これを文字列に変換してappendOutput : メソッドを使って、コントローラに出力します。

 ★ NSNotification : 通知に添付されているデータを取得
  [書式] - (NSDictionary *) userInfo
  [出力] 返り値 : 通知に添付されているデータのインスタンス。
          データがない場合はnilが返る。

 ★ NSNotification : 通知の名前を取得
  [書式] - (NSString *) name
  [出力] 返り値 : 通知の名前。

 ★ NSNotification : 通知に関連するインスタンスを取得
  [書式] - (id) object
  [入力]
  [出力] 返り値 : 通知に関連するインスタンス。通知を行ったインスタンス
          のことが多いが、通知に依存する。インスタンスが無い
          場合はnilが返る。

データが取れなくなってデータ長が0になったら終了処理を行います。そうでない場合は、再度ファイルハンドルに対して通知発行を依頼して、次の通知を待ちます。

続いては、コマンド実行中に、Stopボタンを押された場合の処理です。sleuth : メソッド経由でstopProcessメソッドが呼ばれます。ここでは、コントローラの終了処理を行った後、オブザーバの削除とコマンドの中止を行っています。

// ソース:MoriarityController.m/メソッド:stopProcess

- (void) stopProcess {

[ controller processFinished ]; // コントローラー終了処理
controller = nil;

// オブザーバー削除
[ [ NSNotificationCenter defaultCenter ]
removeObserver : self
name : NSFileHandleReadCompletionNotification
object : [ [ task standardOutput ] fileHandleForReading ] ];

[ task terminate ]; // コマンド実行中止

}

 ★ NSNotificationCenter : オブザーバーの削除
  [書式] - (void) removeObserver : (id ) anObserver
          name : (NSString *) notificationName
          object : (id ) anObject
  [入力] anObserver : 削除するオブザーバのインスタンス。
     name : 削除する通知の種類。nilにすると全ての通知を解除する。
     object : 削除する通知の発信先の指定。nilにすると全てのインス
          タンスの通知を解除する。

 ★ NSTask : 実行時を中止
  [書式] - (void) terminate

コマンドの実行を一時停止する機能もあります。suspendで一時停止、resumeで実行再開です。suspendを複数回実行した場合は、同じ回数resumeをすることで初めて実行が再開されます。

 ★ NSTask : 実行を一時停止
  [書式] - (BOOL) suspend
  [出力] 返り値 : 成功 - YES、失敗 - NO ( 実行されていない時など )
  [備考] 複数回実行可能で、同回数のresumeで実行が再開される。

 ★ NSTask : 実行を再開
  [書式] - (BOOL) resume
  [出力] 返り値 : 成功 - YES、
        失敗 - NO ( 実行されていない、suspendされていない時など )
  [備考] suspendと同回数実行すると再開される。

――――まとめ
以上のようにCocoaアプリケーションからは比較的簡単にUNIXのコマンドを呼び出すことが出来ます。UNIXのコマンドの中には便利なものも多いですし、既存のUNIXコマンドにGUIを付けて使いやすくすることもできるわけです。

また、Cocoaアプリケーションはパッケージ形式になっていて、色んなファイルをアプリケーションの中に閉じ込めておくことが出来ますので、今までと違った開発スタイルを採ることも出来ます。パッケージの中にUNIXのコマンドだけでなく、perlのスクリプトファイルを閉じ込めておいてperlを起動してスクリプトを実行させることも簡単です。

Cocoaを使って、UNIXのパワフルなアプリケーションに、Mac OSの使いやすさを付加したアプリケーションを作るというのも、これからの新しいスタイルとなるでしょう。
(この項、以上)
[鶴薗賢吾]

関連リンク:Cocoaはやっぱり!
カテゴリ:Cocoa, 鶴薗賢吾のCocoaはやっぱり!出張版


新型iMacに関するデベロッパ向け文書が公開

液晶ディスプレイタイプの新型iMacに関するDeveloper Noteが公開された。iMacに関する詳細なスペック、新機能の一覧、そして内部的なブロックダイアグラム、CPUやメモリ、入出力関連ポートの仕様などを参照することができる。メモリは、168ピンのDIMMスロットと144ピンのSO-DIMMスロットがあり、いずれも、PC133規格となっている。168ピンの方は本体内部にある。ユーザによる拡張ができるのは144ピンのSO-DIMMの側となっている。

関連リンク:iMac Developer Note
カテゴリ:アップルからの開発資料, iMac


KBase》Mac OS Xでパスワードを忘れたときの対処方法

◇Mac OS X: You Forgot Your Password
 http://www.info.apple.com/kbnum/n43144
◇Mac OS X: You Can’t Log On To Your Computer
 http://www.info.apple.com/kbnum/n43145

Mac OS Xにログインできないときやパスワードを忘れたときの対処が記載されている。まず、アカウント名やパスワードの大文字小文字に気をつける。それでもだめなら、管理権限のアカウントでログインしてパスワードを書き換える。管理権限のあるアカウントのパスワードを忘れたなら、Mac OS XのCD-ROMで起動しInstallerでパスワードのリセットを行う。

カテゴリ:Knowledge Base(旧TIL), ユーザ管理, Mac OS X


REALbasic 4の英語版ライセンスをアスキーが販売を開始、2.0以降からのアップデートに対応

アスキーは、REALbasicの最新版Ver.4の英語版のライセンス販売を開始した。価格はStandard版が15,500円、Pro版が46,000円となっている。最近のアップデートでは直前のメジャーバージョンからのアップデートしか受け付けなかったが、Ver.4では、それ以前のVer.2.0や3.0からのアップデートも受け付けるようになった。また、2002年2月8日までに「英語版Ver.3.0から3.5へのアップグレード」を申し込んだ場合には、Ver.4.0への無償アップグレードができる。アップグレード価格は以下のサイトを参照していただきたい。なお、日本語版のVer.4.0については、後日にアナウンスがあるとしている。

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


AppleScriptのプログラムをアプリケーションの中から実行する方法

Technical Q&Aに、アプリケーションの中でAppleScriptの実行を行う方法が掲載されている。プログラム中でテキストで与えたAppleScriptのプログラムを実行する方法や、あるいはAppleEventの送信を行って、スクリプトと同等の処理を行う方法が、詳細なサンプルプログラム付きで示されている。題材にしているのは、Mailアプリケーションに対してスクリプト処理で自動的にメールを送信させるものである。いずれも、AppleEvent Managerや、OSA Component関連のAPIを利用するもので、Inside Macintosh: Interapplication Communications等で知られているものであるが、一部に微妙に違いがあるので、AppleScriptやAppleEvent関連のプログラムを作成しているプログラマはチェックを入れておくのが良いだろう。AppleScriptの実行に関しては、Inside MacintoshではOSAExecuteというAPIを使っているが、OSAExecuteEventを使っている。また、コンパイルしたスクリプトを保存しておき再利用する方法についてのヒントとなるようなことも記載されている。プログラムはC言語で示されているが、テキストで記載したAppleScriptのプログラムを実行する関数はほぼそのまま再利用できると言ってよいだろう。

関連リンク:QA1111:Calling an AppleScript and providing parameters from an Application
カテゴリ:Technical Q&A, AppleScript


KBase》AppleScriptのリリースノート

Mac OS X 10.1以降にリリースされたAppleScriptの各バージョンのリリースノートがKnowledge Baseで参照できるようになっている。文書へのリンクだけを紹介しておこう。

◇AppleScript 1.7 for Mac OS X 10.1: Release Notes
 http://www.info.apple.com/kbnum/n75205

◇AppleScript 1.8.1 for Mac OS X 10.1.2: Release Notes
 http://www.info.apple.com/kbnum/n75206

◇AppleScript 1.7 for Mac OS 9 and Classic: Release Notes
 http://www.info.apple.com/kbnum/n75207

カテゴリ:Knowledge Base(旧TIL), AppleScript


KBase》iDVDに関するチップスなどの文書が公開

◇iDVD: How to Create NTSC and PAL format DVD discs
 http://www.info.apple.com/kbnum/n50156
iDVDはNTSCとPALの両方の規格に対応している。新しいプロジェクトを作成するとき、システムの言語設定に対応して適切なものが作成される。環境設定で、どちらの規格のプロジェクトを作成するかを指定できる。既に作ったプロジェクトのNTSCとPALとの変換についてはサポートされていない。

◇iDVD: How to Manage Hard Disk Space
 http://www.info.apple.com/kbnum/n50157
iDVDではエンコード結果のファイルをハードディスクに作成する。60分のプロジェクトで12GBほどだが、エンコード結果は3.5GBほどのサイズになる。このエンコードファイルはプロジェクトのフォルダに残るが、不要であれば環境設定でプロジェクトを閉じるときに削除するという設定を利用すると良い。

◇iDVD: How to Prepare Your iMovie to Work with iDVD
 http://www.info.apple.com/kbnum/n50158
iMovieの編集結果をiDVDで使う場合、ムービーをQuickTimeムービーで書き出す必要がある。そのときの操作方法が説明されているが、iMovie 2.0.3以降では、iDVD向けの書き出し機能をメニューから呼び出せばよい。フォーマットは最高クオリティで大きいサイズに指定すれば良い。

◇iDVD: How to Monitor the Size of Your DVD Disc
 http://www.info.apple.com/kbnum/n50159
iDVDでの書き込むディスクのサイズと、残りのサイズを、分単位で表示することができる。その表示内容が記載されている。

◇iDVD: Players that Support DVD Discs Created with iDVD
 http://www.info.apple.com/kbnum/n50149
iDVDで作成したディスクは最近のDVDプレイヤでは参照ができる。ディスクがきちんと作成されたものかを確認するには、ドライブに装着して、DVD Playerを起動して再生できるかを調べれば良い。

カテゴリ:Knowledge Base(旧TIL), メディア制作


KBase》iTunes 2に関するトラブルシューティング関連文書

◇iTunes 2: Window Titles Are Blank
 http://www.info.apple.com/kbnum/n61030
ディスプレイの色数設定が256色だと、ウインドウのタイトルに何も表示されなくなってしまうので、32000色以上の設定にする必要がある。Mac OS XおよびMac OS 9のいずれのiTunesでもそうなる。

◇iTunes 2: ’Error -208 Cannot Open iTunes Music Library’ Alert
 http://www.info.apple.com/kbnum/n61031
iTunes Music Libraryが開けないというメッセージが出た場合、いったんiTunesを終了して、DocumentsフォルダにあるiTunesフォルダの中のiTunes Music Libraryファイルをゴミ箱に捨てる。そしてiTunesを起動するとファイルが作成できるが、場合によってはプレイリストの作り直しが必要になるかもしれない。

◇iTunes 2: Alert Appears When You Disconnect Nomad While Updloading
 http://www.info.apple.com/kbnum/n61034
Nomad Jukeboxに転送中にケーブルを抜くと、意味不明なメッセージが表示される。いずれにしても、転送されるのを待ってケーブルを抜くようにする。

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


KBase》iPhotoの利用方法についての文書が公開、外部エディタ使用時のことなど

◇iPhoto: How to Make a QuickTime Movie of Your Photos
 http://www.info.apple.com/kbnum/n50154
iPhotoでは写真のスライドショーをQuickTimeムービーにすることができる。その作成方法が説明されている。

◇iPhoto: Thumbnail Does Not Update After Photo Is Edited
 http://www.info.apple.com/kbnum/n61037
外部エディタで編集した写真のサムネイルが更新されない場合、一度iPhotoのエディタでなにか変更をしてそしてやり直しをして元に戻す。そうするとサムネイルが更新されている。

◇iPhoto: Revert to Original Dimmed After Editing With an External Editor
 http://www.info.apple.com/kbnum/n61036
外部エディタで編集した写真は、オリジナルに戻す機能は使えなくなる。

◇iPhoto: How to Rotate Photos
 http://www.info.apple.com/kbnum/n61035
iPhotoでは、写真を回転させるボタンがあり、それを図示している。クリックにより反時計回りに回転するが、optionキーを押しながらクリックすると時計回りになる。また、複数の画像に対しても適用できると同時に、「やり直し」にも対応している。

カテゴリ:Knowledge Base(旧TIL), デジタルカメラ


KBase》デュアルプロセッサ機での音切れはMac OS X 10.1.2へのアップデートで解消

デュアルプロセッサマシンで、サウンドを再生すると、音が途切れるという現象がMac OS X 10.1.1までに見られたが、10.1.2へアップデートすることでその問題は解消する。

関連リンク:Mac OS X: Audio Playback Skips on Computers With Dual Microprocessors
カテゴリ:Knowledge Base(旧TIL), Power Mac


KBase》QuickSilverのCD-RWのファームウエアアップデータ日本語版が公開

QuickSilverタイプのPower Mac G4に搭載されたCD-RWドライブのファームウエアの日本語版アップデータが公開されている。英語版はすでに公開されているが、日本語版とドイツ語版が新たに公開された。アップデートすることで、スリープ動作からの復帰後の動作が改善される。なお、アップデータは、Mac OS 9で起動して利用できるようになっている。

関連リンク:Power Macintosh G4 CD-RW Firmware Update: Information and Download
カテゴリ:Power Mac