Embedding scripts (URL Protocol Messaging)

HTMLの中にAppleScriptを埋込み,ブラウザからクライアント側のMacintoshを制御するシステムのサンプルです。クライアントがMacintoshに統一されたイントラネットなどでは有用だと思います。作成する側にとっては,標準のAppleScriptのインターフェースよりもはるかに表現力のあるHTMLを用いて,HyperCardよりも簡単にスクリプティングが行えるというメリットもあります。このページではAppleScript-HTMLの作り方を紹介します。このページ内のスクリプトはサンプルであると同時に,AS Runnerのさまざまな設定を行うためのスクリプトとしても機能します。

2種類のEmbedding scripts

AppleScriptをHTMLに組み込む方式は二つあります。いずれもURLエンコードされたAppleScriptのテキストをHTMLの<A HREF=""></A>タグに書き込み、web上で公開します。クライアントがブラウザの上でそのページの中のリンクをクリックすると、URLはスクリプトを実行するソフトに渡されて、URLデコードによって元のテキストに戻されてからAppleScriptとして実行されます。
このときに記述するURLの記述の方法により、二つの方式があります。
1990年代から利用されてきたのがascpt:プロトコルを利用した形式です。作り方は簡単で、ascpt:に続けてURLエンコードされたAppleScriptを記述するだけです。
ascpt: (URLエンコードされたAppleScript)

Mac OS X 10.3からシステム標準でサポートされるのがapplescript:プロトコルです。これは、URLを渡す先のアプリケーションを指定するコードと、受け取ったアプリケーションがそれをどう処理するべきかを指定するコードを含みます。詳しくはAppleの解説を参考にしてください(→URL Protocol Messaging)。
applescript:// (アプリケーションのID) ? action= (処理のタイプ) & script= (URLエンコードされたAppleScript)
本来は指定したアプリケーションで動作するはずですが、実際には標準ブラウザであるSafariに関してはスクリプトエディタ以外のアプリケーションにはデータを正しく渡さないようです。そのため、AS Runnerを実際に実行用のアプリケーションとして利用することは困難です。


動作条件

ascpt:

applescript:


プロトコルヘルパーの設定

Classic Mac OSにおいてascpt:の設定を行うためには、インターネットインター設定ネットコントロールパネル(InternetConfig)または Internet Explorerの「ヘルパー」の設定でAS Runnerをascpt:のヘルパーに設定します。
Mac OS X 10.3以上においてapplescript:プロトコルははじめから有効なので、特に設定は必要ありません。ただし、スクリプトエディタしか実行用のアプリケーションとして利用することができません(Safariのバグ?)。

InternetConfigのプロトコルヘルパーの設定
InternetConfigの設定

Internet Explorerのプロトコルヘルパーの設定
InternetConfigの設定

ブラウザが古いNetscapeの場合,インターネット設定の設定を参照できないため,WWW Browser Protocol Switcherを使用して下さい。ブラウザの種類によってはブラウザの再起動が必要です。最近のNetscapeの事情はよくわかりません。
設定が正しく行われたかどうか確認するため,ascpt:とapplescript:プロトコルのヘルパーとして登録されているソフトウエアの名称とバージョンを確認します。下のリンクをクリックしてみて下さい。
applescript:プロトコルの場合はそのままでは実行されませんので、ウインドウの実行ボタンを押してください。
applescript:はスクリプトの編集についての方法がAppleから提示されていますが、AS Runnerではこれらに加えて実行のための独自の拡張を追加し、そのままスクリプトを実行するrun命令に対応しています。この機能はAS Runner 1.75以降でサポートされていますが、Mac OS X 10.3.6およびSafari 1.2.4 (125.11)の段階ではきちんとサポートされていません。

スクリプトのサンプル

この機能はOSやブラウザ、HTMLの文字コード、AppleScriptのバージョンなど多くの条件によって微妙に互換性に差があります。このサンプルはShift-JIS文字コードのHTMLの上にMac OS X 10.3.6、AppleScript 1.9、スクリプトエディタ2.0用のAppleScriptを使用しています。

AS Runnerの初期設定

AS Runnerは上記の両方の方式を同時にサポートしています。以下の記述は、AS Runner用に書かれたAppleScriptのサンプルですが、同時に、このページそのものがAS Runnerの各種の初期設定を行うためのツールとなっています。処理速度がやや遅いという欠点はあるものの,webページと連動したAppleScriptは従来よりはるかに使いやすくなったと思います。ただしMac OS Xでは正しく動作しない可能性が高いのでご了承ください。

Classic Mac OS用 ascpt:

設定項目
起動画面の表示表示する表示しない
処理後に自動的に終了する
終了する終了しない
一般的なダイアログの省略省略する省略しない
ネットワーク上のAppleScriptによる遠隔制御受け入れる受け入れない
電子メールによる遠隔制御のエラーの報告利用する利用しない
CGIが返すページのデザインHTMLひな形の変更HTML Conv Objの設定変更
ログファイルの名称ファイル名の変更ログを保存しない

Mac OS X用 applescript:

(まだ提供していません)


AppleScript-HTMLの作成法

AppleScript-HTMLの作成には,アプリケーション AS Compilerおよび付属するネットワークインストーラによってインストールされる以下のライブラリが必要です。
AppleScript-HTMLの作成の流れは以下のようになります。

スクリプト編集プログラムでスクリプトを作成

スクリプト全体をクリップボードにコピー

AS Compilerを起動

クリップボードを処理

HTML書類のリンクにクリップボードの中身をペースト

あなたの希望するスクリプトをスクリプト編集プログラムで記述し,念のために構文確認(コンパイル)も行っておきましょう(AS Compilerも構文確認を行いますが,スクリプト編集プログラムの方がデバッグをしやすいと思います)。
出来上がったスクリプトをクリップボードにコピーします。AS Compilerを起動し「クリップボード」ボタンを押します。クリップボードの中身がAppleScriptとしての構文確認の後に自動的にURLエンコードされるので,エンコードされたスクリプトがクリップボードに自動的にコピーされるのを待ちます。
エンコード済みのAppleScriptはプロトコルを指定する文字列も記入済みなので,そのまま<A HREF="">タグの中にリンクとして記述しておきます。
また,ブラウザ上でリンクのタグの「リンクの場所をコピー」してからAS Compilerを起動すると,スクリプト編集プログラム上で編集可能なスクリプトに戻すことができます。
applescript:プロトコルの場合には実行するアプリケーションもあらかじめ指定します。

セキュリティについて

Webページに埋め込まれたAppleScriptをクライアント側で実行できると言うことは、場合によっては大きなセキュリティホールになり得ます。すなわち、悪意のあるスクリプトがwebページに埋め込まれた場合に、それが実行されてしまう可能性があるということです。HTMLに埋め込まれたAppleScriptを実行することは、直接アプリケーションを実行するのと同じくらいのセキュリティの危険性があると考える必要があります。必要ないスクリプトをむやみに実行しないようにしましょう。
AS Runnerの場合、次のようなダイアログが出て実行前に確認するようになっています。



Copyright(C) SUZUKI Kazufumi, All rights reserved.