Mac OS X は安定性を重視するため、QuicKeys のようなユーティリティがほとんどどんなことでも自動化できるようにするシステムレベルの鉤フックを取り除いて柔軟性を犠牲とした。この柔軟性が今や Jaguar にも戻ってきた。Matt Neuburg が AppleScript だけで今すぐどの様にそれを使えるかを説明する!更に今週は、Glenn Fleishman がコンピュータを必要としないネットワークストレージ装置を見てみる。新リリースでは、Keynote 1.0.1, iMovie 3.0.2, そして Security Update 2003-03-03 についてお伝えする。
記事:
Copyright 2005 TidBITS: Reuse governed by Creative Commons license
<http://www.tidbits.com/terms/> Contact: editors@tidbits.com>
本号の TidBITS のスポンサーは:
読者のみなさん! あなたのカンパで TidBITS を応援してみませんか?
<http://www.tidbits.com/about/support/contributors.html>
今週は Erik Carlson氏 そして
Prospect Hill Publishing Services の暖かい支援に感謝!
<http://www.tidbits.com/about/support/contributors.html>
SMALL DOG ELECTRONICS: G4 800 MHz iMacs with AppleCare
iMac G4/800 15-inch 256/60/SuperDrive/Speakers
Plus AppleCare - Limited Quantities! $1,429!
Visit: <http://www.smalldog.com/tb/> 802-496-7171
SIX DEGREES puts your email back to work for you. It eliminates
the need to refile email or search for that elusive message.
Your email isn't going away, so you may as well put it to work.
========> <http://www.creo.com/sixdegrees/index.asp?id=tidbits>
Bare Bones Software TextWrangler 1.0 -- New general-purpose and
richly featured tool for composing, modifying, and transforming
text stored in plain-text files. For more info, to download a
demo, or to purchase: <http://www.barebones.com/>
Java 1.4.1 アップデート -- 今日の午後遅く Apple は Mac 上の Java 環境への重要なアップデートである Java 1.4.1 をリリースした。Apple によれば、Java Internet Plug-in に対応する Safari やその他の Web ブラウザでの Java 対応が改善されていて、更に Java で書かれたアプリケーションは Mac OS X の Aqua インターフェースや Quartz Extreme レンダリング能力を更に有効に使える。これで最新の Sun の Java と肩を並べることになり、XML ベースの Web サービス対応が内蔵され、そして安定性が向上した。Java アプリケーションは Jaguar の Universal Access 機能を使うことができ、Apple の新しい UI Scripting 技術を使った AppleScript で Java アプリケーションをコントロールすることが出来るようになる (この号の後半の Matt Neuburg の記事 "Mac OS X でスクリプト化不能だったことを可能にする" を参照)。Java 1.4.1 は 26.1 MB のダウンロードである。[JLC](カメ)
<http://www.apple.com/java/>
<http://www.apple.com/applescript/GUI/>
Keynote 1.0.1 アップデート -- Apple は Keynote 1.0.1 を Software Update でリリースした。同社によれば、新バージョンでこのプレゼンテーションソフトウェアは、日本語、フランス語、ドイツ語、オランダ語、イタリア語、スペイン語対応となる。そして、Keynote 1.0.1 では内容は明らかにされていないが、いくつかのバグ修正もなされていることを Apple との話で確認できているので、英語対応しかいらない人に対しても価値のあるダウンロードとなっている。コメントを少々:ディスクの空きが比較的小さかった私の iBook では、Keynote が最高に働くためには 1 GB の空きディスクスペースが必要である旨の警告を受けた;これは Keynote の箱にも確かに書いてあるが、私にとっては驚きであった。更に、Keynote は起動ボリュームにインストールされていなければならない。Keynote 1.0.1 は 9 MB のダウンロードである。[ACE](カメ)
<http://docs.info.apple.com/article.html?artnum=120193>
セキュリティアップデート 2003-03-03 -- Unix 前線でのセキュリティ改善に歩調を合わせる努力の一つとして、Apple は Security Update 2003-03-03 をリリースした。クラッカーがシステムに入り込むのを許してしまう穴を塞ぐ新しいバージョンの sendmail を提供している。sendmail はデフォールトではオフとなっているので、多くの Mac ユーザーにとって、これは重大な問題とはなっていなかった。更に OpenSSL もアップデートされていて、データの守秘性が改善されている。この sendmail の問題は、Mac OS X 10.2.4 のみならず 10.1.5 にも影響するので、Jaguar にアップデートしていない Mac OS X ユーザーに対してのアップデートも用意されている。Jaguar バージョンのアップデートは 1.7 MB のダウンロードで、10.1.5 バージョンは 705K のダウンロードとなっている。[ACE](カメ)
<http://docs.info.apple.com/article.html?artnum=120195>
<http://docs.info.apple.com/article.html?artnum=120196>
iMovie 3.0.2 アップデート -- Apple の防疫部は iMovie 3 に対するメンテナンスアップデートをリリースした。これには、有望だが問題の多い、このビデオ編集アプリケーション (TidBITS-665 の "iMovie、3 撮目" を参照) に対する、内容は明らかにされていないバグ修正が取り入れられている。Apple からは、バージョン 3.0.2 で何が変わったのかについての詳細はまだ何もリリースされていないが、再生性能は向上し、そしてアプリケーションも前のバージョンよりは少々きびきびした感じがする (それでも iMovie 2 の足元にも及ばないが)。他のオンライン報告によれば、iMovie 3.0.2 ではオーディオの同期問題は依然として残り、ムービーをテープに戻すエクスポートにも問題があるという。さらに、インポートされた静止写真にはデフォルトで Ken Burns Effect(パン&ズーム)が適用されてしまうことも記しておきたい。これ自体は一つの機能であろうが、バグのように振舞う。しかしながら、iMovie 3.0.2 では、Photos ペインから画像をドラッグする前に、Zoom レベルを Start と Finish 点に対して 1.00(最小値)に設定でき、iMovie はその画像を、レンダーされたムービークリップとしてではなく一つの静止画像として扱う。
iMovie 3.0.2 アップデートは Software Update 経由か、個別の 1.9 MB ダウンロードとして入手可である。注意して欲しいのは、このアップデータは Applications ホルダの中の "iMovie" というアプリケーションを探すことである;従って、もしこのプログラムを移動させたり名前を変更したりしていると、このアップデータは働かない。私は、このアップデートを走らせる前に既存の iMovie アプリケーションを別のドライブにコピーを取ることを強くお奨めする、そして、このアップデートを当てた後 Apple の Disk Utility を使ってあなたの起動ディスクの権限を修復しておくのもいい考えである。[JLC](カメ)
<http://www.apple.com/imovie/>
<http://db.tidbits.com/getbits.acgi?tbart=07059>(日本語)iMovie 3 撮目
<http://docs.info.apple.com/article.html?artnum=120187>
文: Glenn Fleishman <glenn@glennf.com>
訳: 倉石毅雄 <takeo.kuraishi@attglobal.net>
もう何年も前の System 7 のリリース以降、古い Mac をネットワークのファイルサーバとして使用するのは非常に簡単な手順しか必要としなかった。共有アカウントをいくつか作成し、フォルダの許可を設定して、ファイル共有を起動すれば良い。
大き目のハードドライブとその機種で使用できる最新の Mac OS 版さえ加えればファイルサーバとして使用できるような古い Mac を持っている人は多いはずだ。もしくは既に古いタワー型やラップトップを中央保存設備として使用しているかもしれない。
しかし一から始める場合や、 Windows/Mac/Linux が混在するネットワークがある場合は、コンピュータを一台設定するコストや時間を避ける方法がある。何年か前からコンセプトとして存在していたが、ようやく手が出るような値段まで下がってきたネットワーク接続ストレージ (NAS) の使用だ。
NAS は、いわばハードドライブを Ethernet ネットワークにつなげているようなものだ。コンピュータ、モニタ、キーボードなど不要だ。ユーザの追加や他の管理作業などは、特別なソフトか大抵の場合には機器に接続している Web ブラウザを通して行う (ネットワークに接続できる最近の他の機器同様、これにも小さな Web サーバが走っている)。
ネットワーク接続ストレージ機器は単純さと価格の面で有利だ。ローエンドの NAS 機器より安い値段で同じだけのハードドライブ容量と Windows/Linux ファイルサーバー互換性を備えた中古 Mac を買うことは出来ない。それに (モニタやキーボードを接続していない) 頭無しの Mac を走らせるのは Tibuktu や VNC などの遠隔操作ソフトを使用しても苛立つことだろう。
Linksys EtherFast Instant GigaDrive -- 私は最近 Linksys EtherFast Instant GigaDrive を評価する機会があった。これは 80 GB の NAS 機器で、Windows 型 SMB ファイル共有 (Mac OS X 10.2 Jaguar もしくは Mac OS 9 では Thursby の Dave で、そしてほとんどの Linux の種類でサポートされている)、FTP アップロードとダウンロード、そして Web-ベースのダウンロードなどを提供している。
<http://amazon.com/exec/obidos/ASIN/B00006JI71/searchbyisbn/>
<http://www.linksys.com/Products/product.asp?grid=27&prid=447>
<http://www.thursby.com/products/dave.html>
Instant GigaDrive は 10/100 Mbps Ethernet ポートを一つ、Windows 型プリンター共有のためにパラレルポート一つ、そして二つの取り換え可能なドライブスペースを備えている。Instant GigaDrive には 80 GB ドライブが一台装着されているが、120 GB までの大きさのドライブで置き換えるか、新たに追加することが出来る。
Instant GigaDrive は Internet Printing Protocol (IPP) を使用してプリンター共有を提供している。これは Jaguar 内蔵の CUPS プリンターサポートと互換性があるはずだ。だが、何を試しても、Mac OS X 10.2 システムから接続が出来なかった。Web 上での IPP と CUPS の説明は希少だが、オープンソースの Gimp-Print ドライバを使用すればうまくいったかもしれない。
<http://www.cups.org/>
<http://gimp-print.sourceforge.net/MacOSX.php3>
Instant GigaDrive の一番の難点はその値段だ。店頭価格は約 $500 だ。しかし、このハードウェアに詰めこまれた機能を全部足して、使用や管理の容易さを考えると、初期設定に何時間も費やし、金も払ってでなければ同じだけの価値を得るのは難しいだろう。いくつかの Linux システムの販売業者を調べてみたが、同じだけの装備を持った PC でモニタなし、80 GB ハードドライブ、そして Linux インストール済みでぎりぎり $500 を下回る製品を見つけた。同様に、同じような機能を備えた Windows のシステムを $500 程で入手できるだろうが、モニタを接続するか、遠隔操作ソフトを入れ、守り (これが楽ではない)、そしてシステム全体を維持しなくてはならない。
中を見ると、Instant GigaDrive は簡潔そのものだ。その中核は 16 MB の Compact Flash カードに搭載されている Linux システムだ。もしドライブが駄目になったら、カードを取り外して、替わりの機器にはめ込み、自分の設定、ユーザ、グループなどの色々なパラメータをそのまま移せる。
もし二つ目のドライブを追加したら、単純なバックアップとして、片方のドライブの中身を全てもう一つへ移すように Instant GigaDrive を設定できる。もしくは、二つ目のドライブをもネットワークストレージとして使用できる。
他の Linksys 製品同様、この機器は初期設定のために Windows ベースの PC を必要とするかのように装っている。これの場合は、同じ“私用”のネットワークにつないでなくても Instant GigaDrive のデフォルトのネットワーク番号を見つけてアクセスするという機能だけをもった特別な PC プログラムだけを提供している。手許に Windows コンピュータが無かったため、ちょっと回り道をして個人用のネットワーク範囲を設定する必要があった。
私用 Linksys ネットワーク範囲の追加 -- 他の Linksys 製品同様、Instant GigaDrive は 192.168.1.0 ネットワーク中の IP アドレスを既に与えられている。もし LAN で固定 IP アドレスを使用しているか、他の範囲で私用アドレスを提供する DHCP サーバを私用しているのであれば、Instant GigaDrive のアドレスを再設定できる。Mac を一時的に 192.168.1.0 ネットワークへ切り替え、変更を加え、元のネットワーク範囲に戻す。この手順は (ワイアレスではなく) 直接つながっていなければ出来ない。また、一時的にコンピュータのネットワーク接続を妨害するため、ファイルサーバなどをあらかじめアンマウントするように。
Mac OS 9 以前では、TCP/IP コントロールパネルを立ち上げ、「ファイル」メニューから「設定...」を選択し、基本設定を「複製...」する。複製を選択し、“私用 192.168.1.0”か何か似た名前に変更する。経由先ポップアップメニューで「Ethernet」を選択し、設定方法ポップアップメニューから「手入力」を選択する。IP アドレスとして 192.16 8.1.99 を入力する。サブネットマスクは 255.255.255.0 に設定する。ルータアドレスは空欄でも良いし、192.168.1.1 を入力しても良い。終了し、確認ダイアログで「保存」をクリックする。
Mac OS X では、システム環境設定 の 「ネットワーク」を開く。表示メニューから 「ネットワークポート設定」を選択する。「内蔵 Ethernet」 を選択し、「複製」をクリックする。それを“私用 192.168.1.0”へ名前を変更しても良い。「表示」からそれを選択し、TCP/IP タブをクリックする。 設定ポップアップメニューから 「手入力」を選択する。IP アドレスとして 192.168.1.99 を入力する。サブネットマスクは 255.255.255.0 に設定する。ルータ:アドレスは空欄でも良いし、192.168.1.1 を入力しても良い。「今すぐ適用」をクリックする。
前述の通り、Linksys のゲートウェーやネットワーク製品はデフォルトで 192.168.1.0 の範囲の私用ネットワークアドレスを使用している。Instant GigaDrive の IP 番号は 192.168.1.77 だ。Web ブラウザで番号を入力すると、Instant GigaDrive の設定スクリーンが出てくる。デフォルトのユーザ名は“administrator”だ。マニュアルの説明とは異なり、全て小文字で大文字の A ではない。そしてパスワードもない。
ストレージをつなげる -- Instant GigaDrive を使用するためには、ユーザやグループを設定する。それぞれに全体的な容量制限を与えられる。私はまず自分のアカウント“glennf”を設定し、1 GB の制限をつけた。そして Connect to Server ダイアログで“smb://192.168.1.77”と入力して(上記を参照) 、私の“glennf”ボリュームを選択し、プロンプトでユーザ名とパスワードを入力して、ドライブを Jaguar でマウントした。すると Instant GigaDrive パーティションが一ギガバイトのボリュームとして Desktop に現れた。
いくつかの設定オプションで自動的に問題を探知できるように設定もできる。すると、Instant GigaDrive は毎晩、自分で最適化を行ったり、ディスクチェックを走らせることが出来る。また、 S.M.A.R.T. ディスクもサポートしている。これは自己監視ハードウェアとソフトウェアを内蔵していて、問題が起こる前に報告してくれるハードドライブだ。Instant GigaDrive はこれらのレポートや警告を電子メールで送ることもできる。
Instant GigaDrive は全てのネットワークのためとは言えない。安い Mac で用が足りているような場合などが良い例だ。だが、システム管理の訓練を受けていない人がオペレーティングシステム全体を維持する手間を必要とせずに信用に足りるファイルサーバを運営するためには手軽な方法だ。
PayBITS: ネットワークストレージの追加を考えている?
PayPal を通して数ドルの寄付で Glenn をサポートしましょう!
<https://www.paypal.com/xclick/business=glenn%40glennf.com>
PayBITS の説明 <http://www.tidbits.com/tb-issues/lang/jp/paybits-jp.html>
文: Matt Neuburg <matt@tidbits.com>
訳: Mark Nagata <nagata@kurims.kyoto-u.ac.jp>
これはアメリカ合衆国のある法令と、Cupertino に本社を置くあるコンピュータ会社と、そしてあなたのコンピュータの中で、もしもあなたが Mac OS X 10.2 Jaguar を使っているならば静かに起こりつつある、1つのささやかな革命とにまつわる物語である。
この革命とは何かを理解するためには、まずマクロプログラムとは何かを知っておく必要がある。過去何年かにわたって、私はそういうプログラムに関する記事を TidBITS に書いてきた。簡単に言えば、コンピュータでよく使う、あるいは繰り返し使うことがある、そういう作業を自動化できたらいいのに、と思うことがあるだろう。もしもそういう作業を実行するプログラムがもともとスクリプト化可能なものならば、そういう自動化はたやすいことが多い。つまり、そのプログラムがあらかじめ用意された AppleScript コマンドに反応するように作られているならば、あなたはただやりたいことをそのままスクリプトに書くだけでよいのだ。けれども、そのプログラムがスクリプト化可能でなかった場合は、どうすればよいのだろうか?
Mac とマクロをめぐって、再考 -- 過去の歴代の Mac OS では、このような場合マクロプログラムを使うのが非常にうまく行く方法だった。そういうマクロプログラムは、Mac OS 自体の内部にハッキングを加えることによって、いわば「幽霊のユーザー」がいるかのように、実際のユーザーがするのと同じ形でキーを押したりマウスを動かしたりクリックしたりしてくれるのだった。そういうアクションをうまく組み合わせることで、アプリケーションにスクリプト化の能力がない場合でもそれに代わってコンピュータに望みの動作をさせることが可能になり得た。これまでに私が使ってみたマクロプログラムには、PreFab Player、QuicKeys、OneClick、それに KeyQuencer がある。
<http://db.tidbits.com/getbits.acgi?tbart=00801>(日本語)Mac とマクロをめぐって
<http://db.tidbits.com/getbits.acgi?tbser=1044>
(日本語)
<形態、機能と Quickeys 3.5 (第一部)
<形態、機能と Quickeys 3.5(第二部)
<OneClick - スーパーユーティリティ
<KeyQuencer - QuicKeys キラーになるか ?
<Mac とマクロをめぐって
<気になる QuicKeys 4
<ボタンを押す自由 - OneClick 2.0
<QuicKeys X: 幽霊の再来
さて、時は進んで Mac OS X の時代になった。ここでの問題は、今私が書いたばかりの「ハッキング」という言葉だ。Mac OS X が導入された一番の要点として挙げられるものの一つは、ユーザーがオペレーティングシステム自体にハッキングを加えることができなくなった、ということだった。Apple は、過去にそのようなハッキングを可能にしていたタイプのシステム機能拡張の仕組みを廃止してしまったのだ。残念ながら、その結果としてマクロプログラムは Mac OS X ではうまく働かなくなった。QuicKeys の Mac OS X 対応版が出た時、私はその動作のあまりの貧弱さに唖然としてしまった。ある種のアクション、例えばメニューから項目を選んだりボタンを押したり、といったアクションは実行不能、さらに悪いことにはどんなメニュー項目やボタンが存在しているのかを「見る」ことさえもできなくなったので、理知的な判断ができなくなり、例えば望みのウィンドウが現われるのを待つというようなこともできなくなってしまったのだ。
<http://db.tidbits.com/getbits.acgi?tbart=06603>(日本語)QuicKeys X: 幽霊の再来
もちろん、こうした機能の限界は QuicKeys が悪いのではない。QuicKeys が Mac OS X の内部にハッキングを加えることができなくなったので、特別に Apple の提供したいくつかのアプリケーション・プログラミング・インターフェイス (API) で許容されているもの以外の物事は見えず、許容されている以外の方法では動作できなくなってしまったのだ。さらに Apple は、コンピュータの安定性を重視するあまり、そこらの勝手なプログラムが他のプログラムのウィンドウやメニューに手を出して介入することを許さないようになった。原因としてのこのような事情がいくらわかっても問題は何ら解決しない、というわけでユーザーたちは何とかならないものかと願いながら QuicKeys の新バージョンを待ち続けるしかなかった。その後、新バージョンは何回か現われたが、状況は大して改善されなかった。
<http://db.tidbits.com/getbits.acgi?tbart=07022>(日本語)QuicKeys X 1.5.4 がメニュー選択を改良
<http://db.tidbits.com/getbits.acgi?tbart=06786>(日本語)QuicKeys X 1.5 メニューサポートを追加
さて、革命の話に移ろう。ユーザーたちが別の方向を(つまり QuicKeys ばかりを)向いている間に、問題は Apple 自身の手によって解決されつつあった。そして、何とその解決(それは一般的解決でもあり、また将来の QuicKeys の新バージョンへの道を開くものでもある)は、現在、すでに実現されている。あなたは、たった今、スクリプト化不可能なアプリケーションにおいても、メニューやウィンドウ、ボタンなどを操作したり、テキストをタイプしたり、ということをスクリプトによって実現させられるのだ。なぜか Apple がこのことをあまり公表しようとしなかったため、まだ知る人が少ない、というだけのことなのだ。
合衆国政府の登場 -- いったいどうやってそんなことが起こり得たのだろうか? そして、なぜそれが起こったのだろうか? その答えのすべては“the Workforce Investment Act of 1998”という合衆国法令、いわゆる“Section 508”と呼ばれるものに端を発するのだ。この法令は、政府機関が電子情報テクノロジー機器を調達するに際しては、そのテクノロジーが、障害を持つ人々も障害を持たない人々と同等に情報へのアクセスを得られるようなものでなければならない、と定めているものだ。簡単な言葉で言えば、コンピュータ製造元は、自社の製品を1つでも政府機関に買ってもらいたいと思うならば、そのコンピュータを障害を持つ人々が完璧に操作できるものにしておかなければならない、ということだ。
<http://www.usdoj.gov/crt/508/508law.html>
この法令が Apple Computer, Inc. という会社にとってどんな意味を持つのかを見るために、ちょっと Apple Computer, Inc. 内部の人の身になって考えてみよう。その人は、Mac が障害を持つ誰かによって操作されているところを想像している:「障害のために、キーボードもマウスも使えないユーザーだったとしよう。おぉっと! それならば何か他のデバイスで、例えば息の吸い吐きで操作できるあのジョイスティックのようなもので、ユーザーインターフェイスのすべてを操作できるように、Mac OS X の中で手段を提供しておかなければ、政府機関への売り上げがゼロになってしまう、ということじゃないか。」もちろんそれは、「ユニバーサルアクセス」や「キーボード」の環境設定パネルで設定できるような、何個かのキーボードショートカットでマウスの代替にする程度のことでは遥かに及ばない、もっと全般の操作方法の提供でなければならないはずだ。つまり、システム自体がすべてのアプリケーションの個々のインターフェイス要素すべてを「見る」ことが可能でなければ、ジョイスティックなり、その他の補助デバイスなりを使って、あらゆるボタンが押せて、あらゆるテキストボックスがクリックでき、その他画面上に表示されるすべてのインターフェイス要素に何らかの方法で手を届かせる道を提供することはできないのだ。
<http://www.apple.com/macosx/jaguar/universalaccess.html>
<http://www.abilityhub.com/mouse/joystick.htm>
そこで、生まれたアイデアはこうだ。Mac OS X 上で動くアプリケーションはどんなものでも、それが現在どんなインターフェイス要素を画面上に表示しているのかを、他のアプリケーションから見て取ることが可能でなければならない。その、他のアプリケーションからは、それらの要素を「見る」こと(例えば、「現在“OK”と書いたボタンがある」と知ること)ができるのはもちろん、それらの要素へのアクセス(例えばその“OK”ボタンを押すこと)も可能でなければならない。Apple はこの問題に取り組み、その結果として、初めて Jaguar の中で公衆の前に登場したのが、Accessibility API だった。ここで実際には、2つの事柄が同時進行している。表面から見えないところでは、Apple は何か非常に深い魔法を駆使して、オペレーションシステム自体を変身させ、画面上のインターフェイス要素すべてについての読み取りとアクセスとを可能にする条件を整えた。そして、表面に近い目に見える部分では、Apple はその API を提供することで、プログラマーがこの魔法の成果を利用できるための一連のコマンドを使えるようにした。
<http://developer.apple.com/techpubs/macosx/Cocoa/TasksAndConcepts/ProgrammingTopics/Accessibility/>
<http://developer.apple.com/techpubs/macosx/Carbon/HumanInterfaceToolbox/Accessibility/MakingAppsAccessible/>
さて、ここでちょっと立ち止まって、今私が述べたことをよく考えてみてもらいたい。このことはすべて、今現在、Jaguar の中(Mac OS X 10.2.3 以降)に存在しているのだ。だから、他のすべてのプログラムのインターフェイス要素を読み取ってアクセスできるようなプログラムを書くことは、誰でも、今すぐにできるのだ。でも、それならそのプログラムは、実際のところ、マクロプログラムそのものではないか! 端的に言えば、QuicKeys の Mac OS X 対応版が最初に登場した時にできなかったさまざまのこと、QuicKeys が Mac OS 内部へのハッキングができないために実現されなかったさまざまのことが、今やどんなプログラムにもできるようになった、そしてそれは Accessibility API のおかげなのだ、ということだ。
でも、もっといいことがある。続きを読んで頂こう。
Blessed (System) イベント -- いつの時点かはわからないが、Apple 社内の誰かが2と2を足して、次のような結論を引き出したに違いない:「一方では、我々の手には Accessibility API があって、どんなプログラムも他のすべてのプログラムのインターフェイス要素にアクセスできるようになっている。でも、他方では、我々の手には AppleScript もあって、一人一人のユーザーがスクリプトを書いてスクリプト化可能などんなプログラムにでもコマンドを送れるようになっている。それなら、この両者を組み合わせたらどうだろう? どんなユーザーでも、スクリプトを書いてコマンドをスクリプト化可能なプログラムに送り、そのプログラムが Accessibility API を使うことでどんなプログラムのインターフェイス要素にもアクセスできるようになるではないか。」このことの意味がおわかりだろうか。真ん中の仲介者の説明を省いて考えればどうなるだろう? どんなユーザーでも、スクリプトを書くだけでどんなプログラムのインターフェイス要素にもアクセスできるようになる、と言っているのだ。つまり、AppleScript を使って、どんなユーザーでもスクリプト化不能なプログラムをスクリプトでコントロールできるのだ! 特別なマクロプログラムを用意する必要もない。なぜなら AppleScript はすでにあなたのコンピュータに装備されており、その AppleScript 自身が、いわばマクロ言語になってくれるのだから。
もちろん、これを実現させるためには、その「仲介者」つまり AppleScript コマンドを受け取って Accessibility API に語りかけてくれるアプリケーションが必要になる。このアプリケーションは System Events と呼ばれ、実はもうすでにあなたのコンピュータ内、/System/Library/Core Services に存在している。ただし、あなたのコンピュータ内の System Events アプリケーションはおそらく旧バージョンのもので、Accessibility API のことを認識できるバージョンの System Events ではないだろう。このバージョンは現在のところまだベータ版の段階で、標準の Mac OS X リリースに組み入れられるまでには至っていないからだ。これを使うには、別途ダウンロードしてインストールしなければならない。入手するには Apple の GUI Scripting ウェブページを使う:
<http://www.apple.com/applescript/GUI/>
早速使ってみよう! そのためには、2つの準備段階が必要になる:
上記のベータ版の System Events をダウンロードしてインストールする。
「ユニバーサルアクセス」環境設定パネルで、下の方にある「補助装置にアクセスできるようにする」のボックスをチェックする。これは重要なステップで、このチェックボックスが Accessibility API の動作を有効にさせるためのスイッチを入れる働きをする。
さて、実験のためには作用の対象となるべきスクリプト化不能なアプリケーションも必要だ。ここでは、例として私自身が書いたフリーウェアの MemoryStick を使うことにしよう。というわけで、まだこれをお持ちでない方は(まだお持ちでなかったんですか?)どうぞダウンロードして頂きたい。
<http://pages.sbcglobal.net/mattneub/downloads/MemoryStick%20Installer.dmg.gz>
MemoryStick はスクリプト化可能ではない。もともと私はこれをスクリプト化可能にする意図はなかった。それにもかかわらず、まるで魔法のように、これからその設定ウィンドウを開き、“Poll”タブ項目を選び、MemoryStick がシステムをチェックする頻度がどう設定されているかを調べて、つまみを上下に必要な回数だけクリックして設定が“5 seconds”に落ち着くようにし、最後に設定ウィンドウを閉じる、これだけのことを全部スクリプトで実行させてみよう。いいですか?
まず、MemoryStick を起動(もしもすでに動作しているのでなければ)させる。それから Script Editor(/Applications/AppleScript 内にある)を開いて、次のスクリプトをペーストする:
tell application "MemoryStick" to activate tell application "System Events" tell application process "MemoryStick" click menu item "Preferences..." of menu "MemoryStick" of menu bar 1 tell tab group 1 of window "MemoryStick Preferences" click radio button "Poll" get value of static text 3 copy the result as number to theVal set theDec to theVal - 5 if theDec > 0 then repeat theDec times decrement incrementor 1 end repeat else if theDec < 0 then set thedec to 0 - thedec repeat thedec times increment incrementor 1 end repeat end if end tell click button "done" of window "memorystick preferences" end tell end tell
さて、このスクリプトを走らせて、何が起こるかを眺めてみよう。まばたきは禁物! 一瞬で事は終わってしまうから。
将来の方向 -- ここまで来たところで、きっとあなたはこう叫んでいることだろう:「ワーォ! これは素晴しい。どんなアプリケーションにも送れるコマンドって、どんなものがあるのか、AppleScript をマクロプログラミング言語に変えて、スクリプト化できなかったアプリケーションもスクリプト化するには、どんなコマンドを使えばいいのか、どうやったらわかるのか?」と。
幸いにも、そのための良い方法がある。それが PreFab UI Browser で、これは PreFab Player や TextMachine を生み出してくれた PreFab Software の Scott Lawton と、有名な AppleScript 熟達者であり Cocoa Recipes for Mac OS X の著者でもある Bill Cheeseman との共著のソフトウェアだ。小さいながら輝かしい傑作のこのプログラムは、Accessibility API を利用して現在動作しているすべてのアプリケーションのすべてのインターフェイス要素を「見る」ことができ、それらの要素をクリックしたり、読んだり、そこにタイプしたりなど、あなたが操作を行なうようなどんなことでも、対応する AppleScript コマンドを生成することができるのだ。価格は $25(ただしこれは 4 月中旬までの価格で、それ以後は値上げされる)で、30 日間有効のデモ版もある。
<http://www.prefab.com/uibrowser/>
<http://db.tidbits.com/getbits.acgi?tbart=04198>(日本語)グレッパー冥利:Text Machine
<http://www.applescriptsourcebook.com/>
<http://www.amazon.com/exec/obidos/ASIN/0201878011/tidbitselectro00>
今後、どんな新しいアプリケーションが登場して Accessibility API の有効利用を実現してくれるのか、私は楽しみだ。例えば、昔私が愛用していたユーティリティの一つに、すべての動作中のアプリケーションのすべてのウィンドウをリストしてくれ、どのアプリケーションの中からでも望みのウィンドウに直接スイッチできる機能拡張があった。Accessibility API が登場するまでは、そのようなユーティリティは Mac OS X では実現不可能だった。なぜなら、どんなアプリケーションも他のアプリケーションのウィンドウの存在を「見る」ことさえできず、もちろんそれらの間でスイッチすることもできなかったからだ。確かにドックにはそれができたのだが、これはドックが Apple によるものであって、他の誰にも明かされていないシステムレベルの秘密情報にタッチできるものだったからに過ぎない。けれども今は、そういうユーティリティを誰でも簡単に書くことができるようになったというわけだ。
けれどもこれで話が終わりというわけではない。1つには Accessibility API も Scripting Events のベータ版も、ともにまだ生まれたてで、開発中の段階のものであり、まだまだバグを抱えているからだ。それでも、先程の実例の示す通り、実際に動作することは確かだ。いずれは、この新しいバージョンの Scripting Events がベータ版の段階を脱して、Mac OS X の標準リリースに組み込まれる日が来るだろう。ひょっとしたら次回の Mac OS X のメジャーアップデートで実現されるかも知れない。とりあえず今のところはあなたもこの秘密を知ったわけだから、早速いろいろと AppleScript で実験して、Mac OS X におけるマクロ言語としてのその新たな役割の素晴しさを味わってみてはいかがだろうか。
実験にあたっては、Accessibility API といえども、奇跡を起こすことはできないということを忘れてはならない。Mac OS X 内蔵のツールボックスを使って構築されたもの以外のインターフェイス要素は探知することができない。ただ、標準でないインターフェイス要素を使ったプログラムであっても、意図的に Accessibility API のアクセスを提供するように書くことは可能なのだが、もしも意図的にそのように作られていないのならばそのプログラムに対しては Accessibility API は盲目になってしまう。例を挙げれば、Accessibility API は Microsoft Word のメニューやツールバーを見ることはできないし、文書中のテキストを読み取ることさえもできない。
もちろん、Microsoft Word はすでにそれ自体完全にスクリプト化可能なので、実際には問題はない。ということでもう一つの論点が浮かび上がる。つまり、何者も真のスクリプト可能性に取って代わることはできない、ということだ。本物のパワーのあるアプリケーションを書きたいのならば、ぜひともそれに AppleScript で操作できる能力を装備させておくべきだ。わかっていてそれをしないのは、良いプログラミングの作法とは言えないだろう。以上をまとめれば、もしもあなたがこれまであなたの作業段階の中でスクリプト化不能だった部分を Accessibility API によるスクリプト化で自動化できるのなら、それは素晴しいことだ。けれども、もしも問題のプログラムが現在まだ開発中のものだったならば、あなたはぜひともその開発者に手紙を書いて、その機能を真にスクリプト化可能なものに作り替えて欲しい、とお願いしてみるべきだろう。
PayBITS: Matt の記事であなたにも一味違うスクリプトが書けたなら、
彼にも PayPal 経由で少額のお金を送りましょう!
<https://www.paypal.com/xclick/business=matt%40tidbits.com>
PayBITS の説明 <http://www.tidbits.com/tb-issues/lang/jp/paybits-jp.html>
非営利、非商用の出版物およびウェブサイトは、フルクレジットを明記すれば記事を転載またはウェブページにリンクすることが できます。それ以外の場合はお問い合わせ下さい。記事が正確であることの保証はありませ ん。書名、製品名および会社名は、それぞれ該当する権利者の登録商標または権利です。TidBITS ISSN 1090-7017
, , 日本語版最終更新:2005年 12月 26日 月曜日, S. HOSOKAWA