スクリプトエディタ

スクリプトエディタは、macOS標準搭載の、AppleScriptなどのOSA  言語を記述、実行、保存、簡易デバッグするためのApple製GUIアプリケーションである。OSA言語はmacOSで動くコンピュータ上のGUIアプリケーションの自動化、機能の拡張や再構成のために用意されている機構。

スクリプトエディタは、Classic Mac OSから続いており、現行のmacOSに標準搭載されている。ただし、macOSのバージョンによって呼称が異なる。

Classic Mac OS：スクリプト編集プログラム
Mac OS X 10.1〜10.6：スクリプトエディタ
OS X 10.7〜10.9：AppleScriptエディタ
OS X 10.10〜：スクリプトエディタ

1. 所在
-----

OS X 10.6までは「アプリケーション」フォルダに入っていたが、OS X 10.7からは「ユーティリティ」フォルダに入っている。

2. ファイル保存形式
-----------

スクリプトエディタが保存可能なファイル形式は、プレーンテキスト形式 、コンパイルずみスクリプト 、スクリプトバンドル 、アプレット 。OS X 10.8でAuto Saveに対応したため、構文未確認状態のスクリプトでも保存できるようになった。

バンドル形式のスクリプト  を保存すると、バンドル内を直接操作するための編集ペインが表示できるようになり、バンドル内にスクリプトライブラリや各種Cocoa Frameworkの追加/削除/移動が可能になる。また、バンドルIDやバージョン番号などもバンドル形式時にのみ編集可能となる。

3. 記述OSA言語の切り替え
---------------

macOSのOSA機構は登場当初の1993年から、アプリケーション操作自動化のためのOSA言語に複数言語をインストールして切り替え運用するスタイルを許容するようになっており、現在ではAppleScriptにくわえてJavaScriptベースのJXA  が標準搭載されている。これらのOSA言語の切り替えはOSA言語ポップアップメニューで行う。

現行のAppleScriptおよびJXA間、あるいはかつて存在していた[1]、[2]なども実際にインストールして当時のスクリプトエディタ上で切り替えが可能なことを確認している。

ただし、OSA言語ポップアップで記述言語を切り替えたとしても、記述中のScriptの内容が他のOSA言語に自動で翻訳されることはない。

4. コード署名
--------

スクリプトエディタでは、スクリプトのアプリケーション書き出し時にコードサインを行うことができる。そのためにはmacOS開発者プログラムに登録して、証明書をダウンロードし、開発環境にインストールしておく必要がある。ただし、Xcode上でコードサインするのとは異なり、プロダクトごとに個別の証明書をダウンロードする必要はない。アプリケーション開発者ID  を指定すれば、コード署名が行える。

5. 制限事項
-------

Mac OS X 10.2まで、スクリプトエディタはCarbonベースで開発されており、編集可能なスクリプトに32Kバイトの上限が存在していた。Mac OS X 10.3ですべてCocoaベースで書き直されており、この32Kバイトの制限も撤廃された。OS X 10.7で64ビットアプリケーションに書き直され、32ビットOSAXとの互換性が失われた。

OSA言語モジュールのインストールや、OSA言語の命令語拡張のためのスクリプティング拡張書類 、Script Librariesなどの管理についてスクリプトエディタは一切関知していない。

スクリプトエディタ上でGUI Scirptingを用いてGUI部品を強制的に操作する記述を行おうとしても、デフォルト時にはスクリプトエディタ自体にその機能にアクセスする許可が出ていない。このため、システム環境設定の「セキュリティとプライバシー」＞「プライバシー」の「アクセシビリティ」項目でスクリプトエディタに「コンピュータの制御を許可」する必要がある。

6. 拡張方法
-------

6.1. スクリプト
----------

スクリプトエディタ自体がOSA言語からコントロール可能なアプリケーションであり、AppleScriptなどのOSA言語からコントロール可能である。外部スクリプトやOS標準装備のスクリプトメニューからスクリプトを呼び出して、スクリプトエディタ自身を操作できる。

6.2. スクリプトアシスタント
----------------

スクリプトエディタの編集エリア上でControlキーを押しながらクリック、あるいは複数ボタンが存在しているマウスなどで右クリックすると、コンテクストメニューが表示される。このコンテクストメニューには、特定ディレクトリ  以下のフォルダ階層構造がそのまま反映され、選択したスクリプトを実行できるようになっている。

スクリプトエディタ上で選択中のテキストに対して処理を行うスクリプトを呼び出せるほか、サードパーティーが提供している強化スクリプトにより、変数名の置換や各種オプションの記述が必要なコマンドの自動記述を行えるようになる。

6.3. プラグイン
----------

スクリプトエディタ自体にプラグインをインストールすることができるようになっている。過去にいくつかのプラグインが発表されたが、だいたいはのちにmacOSに標準装備されていった。目下、このプラグイン開発用の資料も公開されていないため、ほぼプラグインは存在していない。macOS 10.14のスクリプトエディタでは、環境設定ウィンドウから「プラグイン」のタブが削除された。

7. 各種機能
-------

7.1. 構文書式設定機能
-------------

OSA言語ごとに構文要素に応じた書式を設定できるようになっている。ユーザーは自分の好みの構文書式を定義することで、スクリプトをより読みやすくすることができる。とくにAppleScriptにおいては「return return」といった文字情報だけでは判別しにくい記述もできるため、構文要素ごとに色分けされていないと可読性が著しく低下する。

7.2. 短縮記述の展開機能
--------------

AppleScriptにおいては、tellブロックやifブロックを閉じる際に「end」とのみ書いておけば、「コンパイル」時にプログラム内容に合わせ、「end tell」や「end if」と自動認識して展開される。同様に、「tell app」と書いておくと、「tell application」と展開される。

7.3. 対応アプリケーションの用語辞書のブラウジング機能
-----------------------------

OSA言語によるコントロール可能な、いわゆるスクリプタブルなmacOSアプリケーションは、スクリプト用語辞書を内蔵している。この内容をブラウズする機能を持っている。対象のアプリケーションのアイコンをスクリプトエディタにドラッグ＆ドロップすると、その内容が表示され、アプリケーションがOSA言語に対して利用を許可しているオブジェクトやコマンド、プロパティの一覧を見ることができる。

7.4. 「実行」機能
-----------

スクリプトエディタは、エディタであり、実行環境でもある。スクリプトエディタ上で編集したスクリプトをその場で実行でき、結果も取得できる。macOS上のOSA言語は実行環境が多数あり、それぞれに微妙に実行条件が違っている。スクリプトエディタはmacOS上でもっともセキュリティ上の制限のゆるいOSA言語スクリプトの実行環境である。ただし、他の実行環境との制限のかかりかたの「差」があとで問題になることがままある。

7.5. 「フォアグラウンドで実行」機能
--------------------

Controlキーを押しながら「スクリプト」メニューをクリックすると、「実行」コマンドが「フォアグラウンドで実行」コマンドに表示変更される。本機能は、スクリプト内でCocoaの機能を呼び出したときに、NSWindowやWebViewなどのメインスレッドで呼び出す必要のあるクラスの操作に備えたもの。そのため「フォアグラウンド」ではなく、「メインスレッドで実行」と呼ぶのが正しい。これらのCocoaクラスを用いている場合に、普通の「実行」コマンドを操作しただけではエラーになったり、スクリプトエディタがクラッシュしたりする。

7.6. 「記録」機能
-----------

アプリケーションの操作を「記録」できる機能。ただし、OSA言語による操作に対応していて、そのうえで「記録」に対応しているアプリケーションの動作しか記録できない。対応アプリケーションも少なく、記録されている内容を読んでも理解しやすい内容ではないため、Appleからも非推奨の機能になっている。有名な対応アプリケーションには、Finderや[3]のBBEditがある。

7.7. 簡易デバッグ機能
-------------

スクリプトエディタには、アプリケーションからの返り値などを確認するために、簡易ログ表示機能が用意されている。アプリケーションからの応答内容などを確認するのが主な用途であるため、変数のリアルタイム監視やブレークポイントの設定などの機能は持たない。AppleScript内蔵のlogコマンドでこのログへの変数や定数の内容を表示でき、簡易的なデバッグ用途にはこちらが利用されている。

スクリプトエディタのデバッグ機能はあくまで簡易版であるため、本格的なデバッガーの機能についてはサードパーティーのアプリケーション「[4]」の導入を検討すべきである。

7.8. 「テンプレート」機能
---------------

特殊な記述を行う各種プラグインスクリプトを記述するためのテンプレートが数種類用意されている。「Aperture」のインポートアクション記述テンプレート、各種ドロップレット、「メール」アプリケーションのルール処理スクリプト、「メッセージ」アプリケーションのメッセージ受診時の応答処理スクリプト、そしてCocoa-AppleScriptアプレットのテンプレートである。所定のフォルダに格納されたスクリプトをオープンする機能であるため、ユーザーが自分のテンプレートを追加することも可能。

7.9. 「ウィンドウのデフォルトサイズ記憶」機能
-------------------------

新規書類を作成した際の、ウィンドウの大きさと位置を記憶する機能。最前面の書類ウィンドウの大きさと位置をデフォルトのものとして記録する。

7.10. スクリプトメニューのON/OFF機能
------------------------

メニューバー上から階層式のメニューを表示させ、指定フォルダ以下のスクリプトを実行できる「スクリプトメニュー」のON/OFFを行う機能が、スクリプトエディタに搭載されている。スクリプトエディタの「環境設定」＞「一般」にあるスクリプトメニューにチェックを入れることで利用できるようになる。

8. 脚注
-----