GO HOME

「新AppleScriptでゼンマイびゅんびゅん!!」追補情報


※ここは、拙著のAppleScript本「新AppleScriptでゼンマイびゅんびゅん!!」(アスキー出版局、324頁CD-ROM付、1600円)に関するコーナーです。校正情報やよくある質問の答えなどをここでまとめて掲載します。

 ★バグ情報★

※ここでは、ソースコードや内容に関する記述間違いについて整理します。もし、スクリプトに間違いなどを見つけた方は、どうぞ御連絡ください。ここで報告させていただきます。

 

★161頁、「フォルダ内のファイルをナンバリングする」★

このページの2行目にある文を以下のように修正

set Str1 to text from character 1 to character (3 - (length of Str1)) of "000" & Str1
  ↓
if length of Str1 < 3 then set Str1 to text from character 1 to character (3 - (length of Str1)) of "000" & Str1

わかりますか?「if length of Str1 < 3 then」というのを前につけるわけです。これは、ファイル名に3桁の番号をつけるスクリプトですが、ファイル数が100以上になるとこのままではエラーが起きてしまうことが確認できました。2桁までは数字の前に0を付け足す処理が必要ですが、3桁ではいらないのです。したがって、番号の文字数<3の場合のみ実行するように修正する必要があります。これは読者の田中さんより御指摘いただきました。

 また、これは3桁でナンバリングするスクリプトですので、1000個以上のファイルをナンバリングすることはできません。御注意を。

 ★スクリプト追加情報★

※掲載されたスクリプトに関する追補情報です。掲載してあるスクリプトよりもっと簡単でわかりやすい方法がある!というようなことがあれば、どうぞ御連絡ください。ここで紹介させていただきます。

★319頁、「リストを逆ならびにする」★

ここでは、リストの順番を逆にする方法について説明してありますが、実はもっと簡単な方法がありました。

set theList to {…リストの設定…}
set revList to reverse of theList

このように、「reverse of」を使うことで、簡単に逆順にすることができます。これは、MacPowerにAppleScriptの連載をされている大串さんより御指摘いただきました。reverse ofは完全に頭から抜けていて見過ごしていました。――掲載してあるスクリプトは、「複数の値の順番を逆にする」という方法として考えていますので、リストについては上記の方法の方が遥かに簡単です。

★306頁、「平方根を求める」★

AppleScriptには平方根の関数がありませんので、それを自作してあります。が、これも実はもっと簡単な方法があります。プログラミングをかじっている方なら御存じのように、平方根は値を0.5乗すれば得られます。例えば、2の平方根であれば、「2 ^ 0.5」とすることで得られるわけです。

 ここでは、「平方根を求める計算方法」の例としてスクリプトを作っていますので、単純に計算で利用するのであれば0.5乗を使った方が良いでしょう。




 ★FAQコーナー★

※ここでは、本書の内容についての質問にお答えします。読んでいて不明な点などありましたら、どうぞお問い合わせください。 その際、お使いのMacOS及びAppleScriptのバージョンなど明記して下さい。



●先の「びゅんびゅん」では、「日本語を使え、責任は自分が取る」と書いてありましたね。どう責任をとっていただけるんでしょう?

これについては、多くの方からメールをいただいています。おっしゃる通り、前書にて、「AppleScriptは日本語で書こう」と提唱しましたが、御存じのように日本語による記述方式は廃止され、英語のみとなってしまいました。
 当初、私なりに考えた責任の取り方は「以後、AppleScriptの仕事から身を引く」ということでした。私が提唱した考えは否定されたわけですから、私にAppleScriptについてモノをいう資格はない、と判断したためです。後は、英語表記を支持する方々にお任せするしかない、と考えたわけです。
 が、AppleScriptの環境はそれ以後もほとんど変化がありませんでした。待てど暮らせど、AppleScriptの入門書や手軽に学べる本は登場しませんでした。小林豊さんらにより「AppleScriptリファレンス」という素晴らしいリファレンスガイドが出版されましたが、これは中級者向きですし、それ以外にまともに使えそうな本は全く出ませんでした。あれだけ強く英語を支持された方々は、なぜ日本語表記がなくなった現在、英語表記によるわかりやすい入門書の一冊も出版できなかったのでしょうか。
 私のコンピュータに関する基本的スタンスは「今、あるものを使おう(無い物ねだりはよそう)」 「誰もやらないなら、自分でやろう」ということです。私は今でも「スクリプトはそれぞれの母国語で書く」という方式が正しいと信じていますが、残念ながらそれは今、ありません。そして今ある英語表記では、誰もビギナー向けの書籍を出してくれません。ならば、自分で書くしかないだろう――ということで、本書の改訂を引き受けました。
 これで、日本語を推した責任をとったとは考えていません。非常にお利口さんな言い方かも知れませんが、今後の仕事で責任をとっていくしかないと考えています。AppleScriptに関しては私以上にもっと適任の方がたくさんいることでしょう。が、そうした方々がビギナー向けの書籍を出そうとしないのであれば、私がやるしかないと考えています。「なにを偉そうに」と思われることでしょうが、それが私なりに考えた末の責任の取り方です。
  納得できない方は、この件に関するどのような批難中傷罵詈雑言も甘んじて受けますので、どうぞメールで文句をいうなりネットで悪口を書きまくるなり好きにしてくださって結構です。それで鬱憤が晴れるのであれば、甘んじてお受けします。まあ、慣れてますから、存分にどうぞ(笑)。


●第2章で紹介している「強化版ゴミ箱」ですが、エイリアスをドロップすると、そのオリジナルファイルの方を削除してしまうんですが。

これは、おっしゃる通りで、このドロップレットでは、エイリアスファイルをドロップすると(ドロップしたエイリアスファイルではなく)そのオリジナルのファイルを削除します。いきなりオリジナルが削除されて慌てた方もいるかも知れません。注意書きなどをつけておかなかった点、こちらの不備でした。
 これは、実はこのスクリプトの問題ではなく、AppleScriptのドロップレット機能そのものの問題なのです。ドロップレットでは、openというハンドラでドロップしたファイルのリストを受け取るようになっています。が、このとき、エイリアスファイルの場合はエイリアスファイルが渡されるのではなく、オリジナルのほうが渡されるのです。つまりエイリアスファイルそのものをopenで受け取ることはできないのです。――ごく単純なスクリプトですが、以下のようなものを作って試してみましょう。

on open ObjList
display dialog (item 1 of ObjList) as string
end open

 これはドロップしたファイルの1つ目のもののフルパスを表示するスクリプトです。これをアプリケーションとして保存し、ファイルをドロップしてみて下さい。 エイリアスをドロップすると、そのオリジナルのパスが表示されます。ドロップされた段階で、既にオリジナルが渡されていることがわかるでしょう。
 従って、このopenを使っている限り、渡されたリストだけでエイリアスかどうかを判断する方法はないように思えます。私の場合、どうしても判断しないといけない場合は、tell application "Finder"で、Selectionで選択されたファイルを調べ、それを利用する、という回避策を用いることが多いです。ファイルをドロップする時は、必ずそれらのファイルが選択されているはずですから。(ただしポップアップウィンドウ内の項目をドロップした場合には選択が解除されるのでこの方法は使えません)

on open ObjList
tell application "Finder"
set obj to selection
end tell
display dialog (item 1 of obj) as string
end open

 上のドロップレットを、このようにして試してみて下さい。今度はちゃんとエイリアスファイルは(オリジナルではなく)エイリアス自身が取りだせるはずです。ただし、これはドロップされたものではなく、Finderで選択されたものを操作しているわけなので、この方法で常に問題なくドロップされたファイルを処理できるかは保証しかねます。
 要するに、Finderを通すとエイリアスはエイリアスとして取りだせるが、Finderを通さない場合は、エイリアスをシステムが解決してしまい、オリジナルとして渡してしまう、ということのようですね。


●添付CD-ROMに入っていたアプレットで、うまく動かないのがあるんですが。

これは、プロパティを使ったものではないかと思います。アプレットの中には、フォルダやファイルの情報などをプロパティとして保存して動作するものもあります。注意はしたのですが、中にはその情報が筆者や編集部の環境情報を保持したまま収録されているものがあるかも知れません。そのためにうまく動作しない可能性もあります。
 本書55頁に「アプレットの初期化はどうするの?」というコラムがありますので、ここに書いてある手順でアプレットを初期化してください。それできちんと動作するようになるはずです。




GO BACK
GO HOME