あまつぶ

11.11【適切なディスクとドメイン】

 ADC(Apple Developer Connection)の検索ページの検索エンジンがGoogleになったそうだ。これによって検索の精度がどう変わるってのはなんともわからないが、アドレスバーからの検索にGoogleを使えるというだけの理由でNetscape6に乗り換えてしまうGoogleファンな私としては、うれしい感じ。

 Netscape6と言えば、少し前に6.2というバージョンがリリースされた。しばらく試してみていたのだが、うちではなぜか調子が悪く(アドレスバーにアドレスを入力してEnterを押してもページが表示されず、一度カーソルキーでカーソルを移動してからEnterキーを押せば反応する、とか)、結局6.1に戻してしまった。6.1に戻してからも、時々(ちゃんと表示されるはずの)Webページで「ホストに接続できなかった」とかいうエラーが発生してしまってなんだか変なのだが、とりあえずそのまま使い続けている。
 IE5のアドレスバーからGoogleを使えるようにするパッチというのもあるらしくてちょっと気になっているのだが、ちょくちょく交換するのも面倒なのでこのままいくつもり。XのNetscape6はなんだか重いのでもうしばらく待ちかな……。

 Phut(on OS X)で、パレットに登録されたアイテムをごみ箱へドラッグしたら消すという処理がうまく動いてくれていなかったのだが、Carbon Tips & Tricksというページを読んでいたら、下の方にまさにそのやり方が書いてあった。どこかに情報はないかなと思っていたのだけど、こんなところにあったのね……。ずっと気がついてなかった(汗)。
 流れは、これまでのFinderへのドラッグ処理とほとんど同じで、違うのはPBGetCatInfoSync()を呼んでいるところと、ごみ箱のフォルダを調べるところでkOnAppropriateDiskという定数を使っているところ。PBGetCatInfoSync()を呼んでいる理由はよくわからないが、ドロップ先のFSSpecが正しいかどうかの確認だろうか。kOnAppropriateDiskについては、Folders.hでkOnSystemDiskの次に定義されていて、その説明によれば、ほとんどの場合kOnSystemDiskと同じだが、ブートディスクと同じとは限らないとのこと。うーん、どういう場合に違うんだろう。マルチユーザ環境とか関係あるのかな?
 気になるので早速新しくなった検索で調べてみると、Mac OS 9のTechnoteがヒット。説明は……、日本語になってるけどよく意味がわからない(汗)。appropriateって、「適切な」って意味だよなぁ。某前大統領の発言で有名になった(?)やつね。適切なディスクって言われると、その意味はわかるけど、どの場合になにが適切っていうのがよくわからない。ごみ箱ってどのディスクにも存在したりするけど、そういうことを言っているのかな? 試しに原文も読んでみたけど、ほとんど同じことが書いてあるだけで、やっぱりわからない。
 他の検索結果では、Volume Constantというのもある。これは上記のヘッダファイルと同じような内容だけど、一部決定的に違うところが。ここには、「Mac OS Xでは、kOnSystemDiskの代わりにこの定数を使え」と明記されているのだ。そうか、なるほど。理由はよくわからないけど、そうしろと書いてあるからにはそうすべきなのね。FindFolderを使用する場合には常にそうすべきということだから、初期設定フォルダやテンポラリフォルダを探すときも同様ということかな。
 残る問題は、どういう場合にこの定数を使うべきかってこと。Mac OS 9のTechnoteに載っているということはMac OS 9からはサポートされているということだろう。CarbonLibでは……どうだろう。ヘッダファイルにはそのあたりの記述はない。試しに、Gestalt.hを覗いてみると、FindFolder関係の定数がいくつか定義されている。しかし、ここにも詳しい情報はなし。はて??
 今度は、FindFolderのリファレンスをチェック。ん、んー、また違うことが書いてあるぞ。例えばフォントフォルダだと、/System/Library/Fontsと/Library/Fontsと~/Fontsを区別しないといけないから、「ドメイン」という概念を使ってさらに細かく区別するらしい。初期設定なんかでも、マシン全体(使うユーザ全体)に影響するところとか、そのユーザにしか影響しないところとかあるんだっけ。ってことは、この場合、kUserDomainってのを使うべきなのかな? うーむ、ますますわからなくなってしまった……。
 ドメイン関係の定数は、Carbonでしかサポートされていないみたいなので、CarbonでMac OS Xで動いている場合はドメインを使い、Mac OS 9であればkOnAppropriateDiskを使い、それ以外の場合はkOnSystemDiskを使うという流れになるのかな? そしておそらく、Gestalt()でそれらの環境の区別ができるのだろうけど、それについてはいまいちわからない。ドメインは名前からするとgestaltFolderMgrSupportsDomainsが該当するのだろうけど、Appropriateの方はどれだろ。順番からするとその上のgestaltFolderMgrSupportsExtendedCallsかなぁとも思うけど、これはFindFolderExtended()に対応しているような気がする。とりあえずは、OSのバージョンで判別するのが無難なのかなぁ。
 この件に関し、なにかわかり次第随時報告するつもり。

 同じTips & Tricksのページには、アプリケーションがクラッシュしたときにログを残す方法なども掲載されている。10.1以前ではTerminalでコマンドラインを入力しなければいけなかったらしいけど10.1ではGUIで設定できるみたい。これは便利そうなのでそのうちやってみようと思う。

 Mac OS Xでのキー配列の変更について。iJectDoubleCommandというソフトが存在するという情報をいただいた。前者は、iBookのF12キーのCD-ROMイジェクトを無効にして、Shift-F12に変更するもの、後者はスペースバーの右にあるenterキーをcommandキーの代わりにするというものだ。どちらも、Kernel Extensionという機能を使っているようで(というか、DoubleCommandはiJectのソースをもとに作られたものらしい) 、ソースも公開されている。
 これを使ってfn→ctrlも実現可能かと思ったのだが、今のところうまくいっていない。元がモディファイアキーなので、やはり方法が違うのだろうか。なにかの参考になるかと思い、Drawinのソース(ユーザ登録が必要。関係する部分はおそらくIOHIDSystem)もダウンロードしてみたが、進展なし。
 こちらについても、随時報告予定。


November 4, 2001 ↑ November index → November 25, 2001