Home>History>

2007.10-12

2007.12.25

StringEngine 1.8.3

AppleScript によるテキスト処理ルーチンを集めたモジュールです。基本的なテキスト処理ルーチンを、ほぼすべて網羅していると思います。

AppleScript を新しく始めた方のための、サンプルコードとしても悪くないと思います。

Large Icon View 1.0

最前面の Finder ウィンドウを、アイコン表示にしてアイコンのサイズの最大(128×128)に変更します。画像ファイルをプレビューするのに便利です。

スクリプトメニューや DragThing, Quicksilver など、スクリプトファイルを実行できるユーティリーを使って実行してください。

2007.12.19

QuickDMG 2.1.1

いただいたレポートのおかげで QuickDMG の問題を特定することができました。

Leopard 云々という問題ではなく、ただのバグでした。初期設定ファイルの読み込み処理に問題があり、version 2.0.8 を使ってくれていた人には問題ないけど、新しいユーザの環境では発現すると。

QuickDMG は・・・フォルダやファイルから、とにかく手早くディスクイメージファイルを作ることができるアプリケーションです。ぜひお試しください(そして、問題があったら教えてください)。

求む!! Leopard での QuickDMG の動作報告。

どなたか、先日公開した QuickDMG 2.1 が Leopard でも動くとか動かないとか教えてもらえませんでしょうか。「QuickDMG はちゃんと動くよ」という報告が一つある一方で、「悲惨なほどまともに動作しない」という報告が一報あります。

動くとか、動かんとか、一言でいいからコメントしてもらえませんでしょうか。

もっとも、僕が Leopard でテストしていないのがいけないのだけど・・・

でも、リスクを冒して現在の快適な Mac OS X 10.4 を捨てる気にはなかなか慣れない。また、一度 Leopard に移行してしまったら、僕の software は Tiger との互換性を捨てることを意味する。複数の OS で動作テストをすることは現実的ではないし(そこまで手間をかけられない。マルチブード環境を構築するほど ディスクスペースに空きがない)、折角新しい OS に移行したのなら新しい機能を使いたいじゃない?

Mac OS 9 以前は OS が不安定だったから、ちょっとでも安定性が向上していることを期待して、新しいシステムに飛びついた物です。それと比べれば、今はシステムのマイナーアップデートをするときしか再起動なんてしない。う〜む、やっぱり移行する motivataion が高まらないな・・・・。

つらつらと、Leopard に移行しない言い訳を書いてみたけど、そんなこととは別に、人様のお役に立ちたいとは思う。という訳で、QuickDMG の動作レポートを頂けないでしょうか?

2007.12.18

Help Search 1.0

ヘルプビューアで検索を実行する AppleScript です。指定した語句を、ヘルプビューアに登録されているすべての Help Book から検索します。

スクリプトメニューや DragThing に登録して実行することもできますが、QuickSilver の Action としても使用することができます。

通常では、すべてのヘルプを検索したくなるケースはあまり無いかもしれません。ほとんどの場合は、各アプリケーションのヘルプメニューから起動されるでしょう。

僕の場合は、自分でつくった AppleScript モジュール(代表的な物は XModules に公開しています)のリファレンスをヘルプビューアに表示できるようにしています。あるハンドラの使い方を思い出したい時に Help Search を使うと、目的のリファレンスに素早くたどりつくことができるので重宝しています。

2007.12.17

XHandler 1.1.1

ハンドラを文字列で指定して実行することができます。

スクリプト実行時に実際に実行するハンドラを決定したり、Chain of Responder や method forwarding など、動的な振る舞いの実現に訳にたちます。

AppleScript の言語レベルではサポートされていない機能を実現する AppleScript モジュールです。

2007.12.10

Update Selection 1.0

Finder で選択されているファイル/フォルダの表示を更新します。AppleScript を起動できる適当なユーティリティー(スクリプトメニュー、DragThingQuickSilver など) に登録して実行してください。

まれに、Finder でファイルのアイコンがクリエータ/ファイルタイプを正しく反映していないことがあります。そんなとき、このスクリプトで表示を更新できます。

また、Subversion と SCPlugin を使って、ファイルのバージョン管理を行っている時にも役に立ちます。SCPlugin を使うと Finder で表示しているファイルのアイコンに budge として、Subversion の status を表示させることができますが、この budge は適切に更新されないことが少なくありません。Terminal から svn コマンドを使った結果などが自動的に Finder の表示に反映されることはないです。

Update Selection は、このバージョン管理の状態を表す budge を更新させることができます。手動で、実行しなければならないのが玉に傷ですが、更新できないよりはましでしょう。

2007.12.04

XList 1.1.1

Iterator, Queue, Stack として使えるリストのラッパーオブジェクトを提供する AppleScript のモジュールです。

AppleScript のリストの欠けている機能の多くを補完します。

また、AppleScript のリストはリファレンスを経由して要素を参照しないと速度が大きく低下するという性質があります。XList は内部で、常にリファレンスを経由してリストにアクセスする為、常に良好な動作速度が得られます。

2007.12.03

Putaway Disk Image File 1.1

マウントされているディスクイメージボリュームをアンマウントして、そのボリュームのディスクイメージファイルをゴミ箱に入れます。オンラインソフトのインストール作業の後片付けに便利です。

多くのオンラインソフトはディスクイメージファイルとして配布されております。必要なものをコピーした後は、ディスクイメージファイルは不必要になるので、

  1. ディスクイメージボリュームをアンマウント
  2. Finder でディスクイメージファイルを表示させる。
  3. ディスクイメージファイルをゴミ箱に入れる。

という手順で後片付けをされているかと思います。煩雑な作業だと思うのは僕だけでしょうか?Putaway Disk Image File は、上記の作業を一気に行います。

今回の変更では、作業の進行状況を表示するために、Growl を使うようにしました。必須です。

AppleScript を開発していてストレスに感じるのは、作業状況をユーザにフィードバックする一般的な手段が無いということです。display dialog だと、ユーザにボタンを押してもらわないと、作業が進まなくなっちゃう。アプリケーション形式にすれば、AppleScript Studio/Cocoa を駆使して作り込む手はあるけど、スクリプトファイル形式だとそういう訳にもいかない。

というわけで、Growl を積極的に使っていこうと思う今日この頃です。サードパーティのアプリケーションを追加でインストールを要求するのは心苦しいけど(めんどくさいよね)、他に良い手が思いつかないからしょうがない。

あと、Leopard では未テスト。大丈夫だと思うけど。

2007.11.22

QuickDMG 2.1

QuickDMG はとにかく手早くにディスクイメージをつくれることを目指しているツールです。ディスクユーティリティでディスクイメージを作るのはめんどくさいでしょう?

ファイルのアーカイバはいろいろあるけど、圧縮ディスクイメージは「解凍しなくても中のファイルを開ける」という Zip や Stuff it では真似できない優れた特徴があります。というわけで、日常的なアーカイバとしてディスクイメージを活用しようよ!ということを提案していきたい訳です。

Version 2.1 では、任意の複数のソースをまとめてディスクイメージを作れるようにしました。ここしばらく、ソフトウェアの更新が無かったのは、力つきかけていただけではなく、この QuickDMG のメジャーアップデートを開発していたからです。

でも、Leopard では未テスト。でも、Jack さんが Leopard でもちゃんと動くとご報告いただいています。

2007.11.04

SmartActivate が Leopard では動かないらしい

なんでだろう?何も変わったことしていないのだけど。

すぐに対応できないのが、誠に残念。

マイナーアップデートが全くでていない Leopard をインストールするような勇者は、きっと自分でソースコードを見て問題解決してくれるにちがいない。

2007.11.03

Strip Styles of Text が Leopard では動かないらしい

Leopard では、 Strip Styles of Text が期待通りに動かないらしいです。Keizo さんからご報告を頂きました。

次のようなスクリプトで、プレインテキストをクリップボードに挿入して、適当なアプリケーション(例えば TextEdit)でペーストしても、ペースと位置でのスタイル情報に従わないようです。

set the clipboard to "hello"

なんでだろう?

2007.10.30

Leopard

世の中、Leopard の話題で盛り上がっているかと思います。でも・・・僕は、まだまだ移行しません。もし、僕が公開しているソフトウェアで何か問題があれば、ご報告いただければ幸いです。手探りになるけど、なんとかするように頑張ります。

Leopard には垂涎の昨日が目白押しだけど、仕事で Mac を使っている訳で今の環境を壊す危険性を犯すのはものすごく勇気がいる。また、MacPorts や fink のパッケージが出そろわない(Octave と gnuplot と TeX などなど)と仕事できなくなっちゃう。いつものことだけど、いくつかのマイナーアップデートがあって開発情報が出そろってから重い腰をゆっくり上げようと思っている。

もし、僕のソフトの早急な Leopard 対応を期待している人がいたら、ごめんなさい。オンラインソフトウェアの作者としてはよろしくない姿勢かと思うけど、無理な物はしょうがない。現実的に、たいして報告が無い(たいして利用されていない)であろうことが予想されるしね(悲しい)。

ところで、Leopard がリリースされると同時期に Apple の Bug Reporter に投稿したリクエスト/不具合報告の多くに返信があった。Bug Reporter に投稿することは結構意味があるみたい。一見、梨の礫に見えるけど、ちゃんと頑張ってくれているのね。

Bug Reporter からの返信があった項目は次のとおり。

  • AppleScript で Unicode text を含んだリストを as Unicode Text すると、システムのデフォルトエンコーディング(日本語なら Shift-JIS)に含まれない文字がなくなってしまう不具合の修正。
  • Terminal.app の do script コマンドが、コマンドを実行したwindow のリファレンスを返す。
  • Terminal.app でターミナルの CleanCommands に AppleScriptからアクセスできる。
  • Terminal.app でターミナルの tty名を に AppleScriptから取得できる。
  • System Events で property list fileに新しいentry を追加でき、ファイルに保存される。

Terminal.app へのリクエストはおおむね実装されたみたい。Terminal.app はかなり変更されているみたいなので、UnixScriptTools for miTeX Tools for mi がちゃんと動くかどうか心配だな。

2007.10.24

mi 2.1.8a8 リリース

長年、頼り切ってこれ無しでは仕事できなくなってしまっている mi の新バージョンがリリースされた。個人で開発されているフリーウェアだけど、長年継続的に開発されているのは本当にありがたい。

Emacs とかに浮気を試みたこともあるけど、小指が痛くなるし、設定が面倒だし、Emacs ほどの柔軟性と高機能は望めないけど、mi が一番心地よいという結論に達している。

今回のリリースで一番うれしいのは、モード設定ダイアログがモードレスになったこと。これで、モード設定の為に、ダイアログを開いたり閉じたりという、煩わしいサイクルから開放される。かなり前に送ったリクエストだけど、ちゃんと覚えていていただけたようでなによりです。

早速試してみたけど、さっそく一つバグを発見してしまった(バグ報告済み)。次の キャレットがある行番号を取得する AppleScript がちゃんと動きません。

tell application "mi"
get index of paragraph 1 of selection object 1 of document 1
end tell

なんかよくわからないけど、無茶苦茶な値が返ってくる。

このため、UnixScriptTools for miTeX Tools for mi の一部の機能が動きません。

残念ながら、2.1.8a8 には移行できそうも無い。無念。