あまつぶ

7.10(3)

 らんだむかべがみのバグ(っていうか…)について。PowerMacで動かしたとき、「パターン管理」に複数のピクチャクリッピングをドロップすると、違うパターンを登録したはずが全部同じものになってしまうというバグが見つかっている。68kMacで動かした場合にはこのようなバグは生じない。
 細かくいろいろとチェックしてみたのだが、ソースにおかしなところは見つからず、試しにppc用にコンパイルし直してみたが症状は同じだった。これはひょっとするとppc用のDragManagerのバグなのかもしれないと思い、他のDrag&Dropに対応したアプリケーションで試してみたところ、CuTE 0.60a1、VisualPage 1.1.1、POSTINO 1.1で同様の症状が再現された。アップル純正のデスクトップピクチャ(J1-1.0.1)ではどうかというと、複数のクリッピングファイルをドロップしたときにはドロップに反応しないようになっていた。もちろん、1つずつやれば反応する。もうひとつスクラップブック(J2-7.5.2)でも試してみたところ、同じ絵が3つ追加された。
 これらから考えるに、たぶんDragManagerのバグなのではないだろうか。TILやらQ&Aやらチェックしてみたけどそれらしいものは見つからなかった。デスクトップピクチャではわざわざ回避してあってスクラップブックではおかしな動作をするところから見るとバグっぽいんだけどなぁ…。
 それはともかく、なんとか回避する方法を考えないといけないかなとも思う。1つの手は、デスクトップピクチャと同じように複数のクリッピングファイルがドロップされたときには反応しないようにする、というものか。これはまあできそうかな。68k上で動いているかppc上で動いているかを判断して分岐するようにすればいちばんいいか。もう一つは、ドロップされたときにきっと同時に'hfs 'のデータが送られてきているはずだから(Finderからのドロップなら、という前提だが)それを使ってファイルのリソースから直接取り出す方法、か。これなら確実かなと思うが、かなり厄介そうだな。
 あ、そういえば、Finder以外からドラッグしたときはどうなるんだろう。気になるが、それを実験できるプログラムがなさそうだ。ひょっとしたらFinderのバグなのかもしれないから…。

 それはそれで、その他の部分で多少アップデート。「パターン管理」を動かしている状態で「らんだむかべがみ」を起動できない問題への対処。動かせるようになった。それと上記の問題に関する記述をドキュメントに書いて、0.42b1をリリース予定。この問題を「仕様」とするならそろそろバグもなくなったかなと思う。まだ若干気になる部分(システム終了の時に変更した場合に再起動したら戻ってしまうことがある)もあるがこれも原因がわからないし…。ま、βのままでもいいかなと思ったりもするけど。。



7.10(2)

 同じ日になってしまったけどまあいいや。予定通り(っての久々かも)「AppleScriptでSMIを作る」。AppleScriptの話題って初めてかな?
 まず最初に断わっておくと、まだ実用レベルには達していない。これを書き始めた時点ではいまいち使い方がわからず「An AppleEvent error occured」と何度も怒られていて、改めて用語説明を読んでみたらやっと使い方がわかったくらいだから。そのうちもう少しまとめてみるかもしれないけど、とりあえずは簡単な使い方だけ。AppleScriptについてはかなり素人だったりするのでいまいちよくわかってないし…。。
 DiskCopyの用語説明を開くと、Special Eventsの中に「create SMI」というのが見つかる。これがおそらくSMIを作るための命令だろう。説明には「Creates a self-mounting image (SMI) from a list of NDIF disk images」と書いてあるから、まずNDIFのイメージを作っておいて(これにはcreateを使うのであろう)その後に変換するということになるのだろうか。使い方は「create SMI (SMIのファイル) source images (元になるNDIFのファイルのリスト)」で、まああとはいくつかオプションが指定できるようだ。よくわからないのは、source imagesの方はファイルのリストでSMIは1つのファイルということだが、いくつかのイメージをまとめて1つに…ということなんだろうか。
 まずは試しにこんなスクリプトを書いてみた。

tell application "Disk Copy"
	create SMI (file "Macintosh HD:Disk Copy:あ.smi") source images 
		{file "Macintosh HD:Disk Copy:あ.img"}
end tell

ファイル指定がフルパスで中に埋め込まれているので何の汎用性もないが…、最初の実験としてはこんなもんだろう。先に「あ.img」(我ながら安直なネーミングだ…)を手動で作成しておいて、スクリプトを実行すると「あ.smi」を作成してくれる、というもの。これはめでたく一発で動いてくれた。で、気になる「source images」がリストになっていることに関してだが、先ほどと同じフォルダに「い.img」を新たに作成して

tell application "Disk Copy"
	create SMI (file "Macintosh HD:Disk Copy:あ.smi") source images 
		{file "Macintosh HD:Disk Copy:あ.img",file 
		"Macintosh HD:Disk Copy:い.img"}
end tell

こんなスクリプトを書いてみたところ、何ごともなく「あ.smi」が作成できた。ダブルクリックしてみると、「あ.img」と「い.img」の2つのディスクイメージがマウントできた。おお。要するに複数のイメージを同時にマウントするようなものを作ることができるということらしい。作成できるSMIは一度に1つだけだから、いくつか作りたいときは自前でループを作成して…っていうことになるんだろうな。
 そんなわけでとりあえずドロップしたイメージファイルを元にSMIを作ってくれるスクリプトなんだけど…、、ほんとはイメージファイルの「.img」を「.smi」に置き換えてくれるように…とか思ったんだけどなんかうまくいかないので単に「.smi」を追加するという…。

on open image
	set imagename to ((item 1 of image) as text)
	set sminame to imagename & ".smi"
	tell application "Disk Copy"
		create SMI (file sminame) source images (image)
	end tell
end open

複数のイメージをドロップした場合にはリストの最初のものの名前に「.smi」を追加するという仕様…。別々に作ろうと思ったらrepeatでくり返すようにしたらできるかな。最終的にはフォルダをドロップしたときに自動的にイメージファイルを作って…という感じにしたいけど結構めんどくさいかも…。フォルダの中にあるファイルの容量がわからないといけないのがだるそうかなー。

 それはそれとして、SMIに変換したときにどのくらいファイルサイズが変わるかというと…、47,720バイトのイメージを変換すると166,184バイトになりました。約120kくらい増えるみたい。もともと容量の多きなものを配付する場合にはいいかなと思うけど小さいものの場合はどうかなってところか。
 中身が同じものをLHAで圧縮すると18,847バイト、まいまいで自動展開のファイルを作ると35,253バイトだから、これをレジストして自動展開のファイルとして配付するのが一番いいかなと思ったりも…(笑)。ま、この件に関してはもう少し考えてみることにしようか。



7.10

 DiskCopy 6.3ってのが出たみたいなので例のバグがひょっとして直っていたりしないかなと思ったんだけど結果は相変わらず直っていない…。
 ドキュメントを見ると、System 7.0.1以降で動作するようなのでこのあたりは大きな改善かな。あとはNavigation Serviceに対応したのも結構気持ちがいい。あと気になるのはSMI(Self-mounting Image)に関する記述かな。ドキュメントには詳しいことが書かれていないのでわからないが、「詳しくはAppleScriptの用語説明を読め」ということか。OS8.1以降でないと作成することはできないけど作成されたイメージは7.0.1以降でマウントできるとのことだからこれは結構便利かもしれない。ただ、うちではNetscapeNavigatorのキャッシュを保存しておく場所をディスクイメージで作っているのだけど、そのイメージをマウントした状態でSMIをダブルクリックすると「ドライバがアップデートできなくてマウントできない。ディスクイメージをアンマウントしてから実行してくれ」とかいわれてしまうのだけどこれはなぜだろう。日本語版のDiskCopyでイメージをマウントしたあとに英語版のDiskCopyで作成したSMIをマウントするとうまく動かないってことなのかなぁ。んー、よくわからん。
 とりあえずSMIが作成できるのは気になるのであとで見てみようと思う。AppleScriptでできるってことは、フォルダをドロップしたら自動的にSMIを作ってくれるとかそういうのを作成できるかもしれないってことかな? それ、よさそうだなー。

 MkLinuxに関しては、なにも進んでないから保留。とりあえず今回はこれまで。たぶん次回は「AppleScriptでSMIを作る」かな(笑)。


to July 9, 1998 ↑ to July Index → to July 11,1998