AppleScript 2.0リリースノート(Mac OS X version 10.5)

(※翻訳者注意)この文書は、Apple Inc. の「AppleScript Release Notes for Mac OS X version 10.5」を市川せうぞー(英検4級)が個人的に日本語翻訳(意訳)したものです。わたしと同じように英文が苦手な人のために訳しました。ですから間違っている可能性があります。正しい詳細については、原文を参照してください。また、翻訳間違いなどに気づかれた方はお知らせください。

 

このリリースノートは、Mac OS X 10.5に付属するAppleScript 2.0の新機能と、解消された不具合についての文書です。より古いバージョンに関しては以下を参照してください。AppleScript Release Notes (Mac OS X 10.4 and earlier).

AppleScript 2.0では、AppleScript 1.1〜1.10.7で書かれたスクリプトが動作します。もし最新の機能を使わなければ、古いスクリプタブルアプリケーションや、AppleScript 1.5以上のスクリプティング追加機能との互換もあります。

Contents:

ユニコードサポート
アプリケーションオブジェクト
スクリプタブルネットワーク参照
スクリプト対応度とVoiceOver
コマンドラインサポート
その他の拡張
バグフィックス
ディベロッパーノート


ユニコードサポート

AppleScript 2.0は、ユニコードベースです。ユーザーはあらゆる種類のテキスト(または文字種)を入力するかもしれませんが、AppleScript 2.0はユーザーの言語設定に関わらずこうした文字列をユニコードテキストとして保持します。たとえば、以下のコードではそれぞれ異なった言語の文字を混在させ、正しい結果を返します。

set jp to "日本語"
set ru to "Русский"
jp & " and " & ru -- "日本語 and Русский"を結果として返します

ユニコードテキストと非ユニコードテキストの区別はありません。「class of "ほげほげ"」が返すのはテキストクラスひとつだけです。テキストクラスはユニコードテキストクラスと機能的に同等であり、どんな文字種も含められます。さらに2つの新機能:

旧バージョンでのテキストアイテムデリミタ(text item delimiters)のマッチングは、「considering」も「ignoring」も共に尊重されます。«constant conszkhk»などの拡張属性はサポートしません。

全ユニコード化では「read」「write」コマンドとテキストエンコーディングの変更を余儀なくされました。以前はユーザーのプライマリエンコーディングとUTF-16(あるいは引数パラメータにしたがって)を使用して書き込みされていました。テキストクラスがひとつとなった現在、エンコードを決定するために以下のパラメータを使用できます。「no as(無指定)」「as text」「as string」はユーザーのプライマリエンコーディングを使用します。「as Unicode text」はUTF-16を使用します。AppleScript 2.0とそれ以前のバージョンでスクリプトを動かしたい場合は、必ず「as text」または「as as Unicode text」パラメータを指定してください。 [4421553]

互換性

AppleScript 2.0以前との互換性のために、「string」と「Unicode text」はまだ定義されていますが、テキストクラスにとっては同義語となっています。たとえば以下の3つのコードは同じ効果をもたらします。

someObject as text
someObject as string
someObject as Unicode text

さらに、「text」「string」「Unicode text」は比較において等価です。たとえば「class of "foo"」は「text」を返しますが、「class of "foo" is string」は「true」を返します。アプリケーション的にこの3つの書き方はまだ存在しますが、AppleScript自身は関知しません。

AppleScript 2.0は世界中の文字を正しく表現するのと同様、スクリプト中のテキストもまた厳密に保持します。AppleScript構文で使用される「≠」や「¬」などの非ASCII文字は「AppleScript Language Guide for AppleScript 1.3.7」の通りにタイプしなければなりません。アジアの国々の言語との互換性のため、「«」「»」は「《」「》」と同義語として許容されています(※訳者注:日本語環境で「《〜〜》」とタイプすると、コンパイル時に「«〜〜»」に自動変換されます)。

すべてのテキストがユニコードテキストである現在、スクリプトは常にユニコードテキストとして振る舞います。特定のwordエレメントではロケールに依存した振る舞いを見せるかもしれません。AppleScript 2.0とそれ以前の環境で同様の結果を得るためには、必ず「words of someText as Unicode text」としてください。

テキストアイテムデリミタ(text item delimiters)の「considering」「ignoring」属性を尊重したために「case-insensitive」(大文字小文字を無視する)がデフォルトになっています。AppleScript 2.0とそれ以前の環境で同様の結果を得るためには、これらの属性を自明的に付加してください。

AppleScript 2.0のスクリプトはすべてのテキストをユニコードテキストとして格納するため、どんなテキスト定数もユニコードテキストのクラスの使用とみなします。こうしたスクリプトを編集する場合は、いずれのバージョン上でもAppleScript 1.3に戻ります。アラビア語やタイ語などのユニコード文字のみを含むスクリプトは動作するでしょうが、AppleScript 2.0のスクリプトエディタでは正しく編集できないでしょう。この時、ユニコードにしか存在しない文字は失われます。

新しく追加されたidプロパティを使えるのはAppleScript 2.0のみです。

アプリケーションオブジェクト(Application Objects)

AppleScriptのアプリケーションオブジェクトは、いくつかの新機能を使いやすくするために再デザインされています。新しい機能ではありませんが、より直感的な使い勝手を提供します。

さらにこれらへの対応を簡便にするために、アプリケーションの振る舞いが変わります。

互換性

Uses of the built-in application properties will fall back to sending an event to the application in older versions of AppleScript, but the application may not handle them the same, or handle them at all. (Most applications will handle name, version, and frontmost; id and running are uncommon.) The other new features above require AppleScript 2.0.
(※訳者注意:この文はうまく翻訳できませんでした。アプリケーションにイベントを送ったあとにバックグランドになるかどうかというような意味ではないかと推測します)
旧AppleScriptでは、アプリケーションにイベントを送ると自分自身はバックグランドになりますが、アプリケーションプロパティの用法はそれを関知しないかもしれません(多くのアプリケーションではハンドル名とバージョン、前面にあるかどうかが優先され、idで動作していることは稀です)。それ以外の新機能では、AppleScript2.0が必要です。

Network Preferences

ネットワークプレファレンス(network preferences)はSystem Eventsの新しいスイーツとして、より使いやすくなりました。スクリプトは、様々なネットワーク設定を点検したり、そのサービスに接続(または切断)したりできます。たとえば、以下のスクリプトは、現在の環境設定でPPPoEの場所を見つけて(PPPoEサービスが存在するなら)そこに接続します。

tell application "System Events"
    tell network preferences
        tell current location
            set aPPPoEService to a reference to (first service whose kind is 10)
            if exists aPPPoEService then
                connect aPPPoEService
            end if
        end tell
    end tell
end tell

スクリプト対応度とVoiceOver(自動読み上げ)

AppleScriptユーティリティとフォルダアクションセットアップはスクリプタブルです。そして、スクリプトエディタのスクリプト対応度は、Cocoa Scriptingの改良によって向上しています。 現在これら3つのアプリケーションは、VoiceOver(自動読み上げ)対応です。

コマンドラインサポート

AppleScript 2.0ではコメント(トークン)として「--」だけでなく「#」も使用できます。これはAppleScript(テキストフォーマット)で書かれたスクリプトの最初の行に、「#!/usr/bin/osascript」と記述することができ、Unixの実行指定を与えられることを意味します。osascriptの使い方については、ターミナル上から「man osascript」を実行してください。 [2468788]

コマンドラインツール「/usr/bin/osadecompile」はコンパイル済み(またはアプリケーション形式)のスクリプトをテキストに戻します [4501123]

"osascript(1)" と "osacompile(1)"のテキストエンコーディング は、UTF-16とプライマリエンコーディングに加え、UTF-8を正しく扱えます。スクリプトのエンコーディングがUTF-8でもUTF-16でもなければ、プライマリエンコーディングを使用します。

互換性

コンパイル済み(またはアプリケーション形式)のスクリプト中に「#」が使用されていても、旧AppleScript上で動作します。旧環境でこのスクリプトを編集すると「--」が代わりに使用されます(※訳者注:...とありますが、実際に旧環境で編集するとコメント行が失われることがありました)。テキスト形式のスクリプトに「#!/usr/bin/osascript」と書かれていても、旧AppleScript上では動作しません。「#」文字以降は構文エラーを起こすでしょう。

その他の拡張

スクリプトエディタ(Script Editor)

System Events

Image Events

バグフィックス

AppleScript

Standard Additions

スクリプトエディタ

System Events

その他

ディベロッパーノート

用語辞書 (sdefs)

AppleScript 2.0は、アプリケーションのsdef辞書を直接読むことができます。 これは、用語辞書を得るためだけにアプリケーションをラウンチする必要はないことを意味します。 [4569425]

sdef形式自体はいくつかの変更があります; 詳細に関してsdef(5)のmanページを参照してください。 特に、sdefsは現在、XIncludeの使用を推奨します。 sdefsを処理するアプリケーションはそれを扱えるようにするべきです。 10.4sdef形式はまだサポートされていますが、機会があれば変更するべきです。

APIの変更

いくつかのオープンスクリプティングアーキテクチャ(OSA)APIには、ユニコードスクリプトを取り扱うために多くの部分で書き直されました。新しいAPIはMac OS Xバージョン10.5以降で利用可能であり、代表的なものを除けば、古いAPIも利用可能です(新しい関数はサポートされません)。追加された詳細に関しては「Open Scripting Architecture Reference」を参照してください

old

new

OSAGetSource, OSADisplay

OSACopySourceString, OSACopyDisplayString

これらはCFAttributedStringRefとして出力されます。これはスタイルドユニコードテキストをハンドリングできることを意味しますが、2以前では不可能です。言語コンポーネントが直接OSACopySourceStringかOSACopyDisplayStringをサポートしないと、OSAGetSourceとOSADisplayをスルーします。

ASGetSourceStyles, ASSetSourceStyles

ASCopySourceAttributes, ASSetSourceAttributes

これらは、OSACopySourceStringOSACopyDisplayStringによって返されたCFAttributedStringRefに適用するのに属性のCFDictionariesのCFArrayを使用します。

OSAGetAppTerminology

OSACopyScriptingDefinition

OSACopyScriptingDefinitionはMac OS X10.4以降で利用可能です; OSAGetAppTerminologyは64ビット対応ではありません。

OSALoadFileOSADoScriptFileは、UTF-8としてテキストコード化されたテキストスクリプトを処理します。 [4490939]

しばらく「not implemented」としてマークされていた様々なOSADebugger APIを取り除きました。 [3918369]

スクリプティング機能追加(Scripting Additions)

スクリプティング機能追加(Scripting Additions)は、書きやすさとパフォーマンスの向上のために、新しいアーキテクチャで書かれました。 詳細については Native Scripting Additions を参照してください。 [4236732]

「scripting addition」のローダーは環境変数DYLD_FRAMEWORK_PATHによって指定されたディレクトリを捜すでしょう。実行ファイルを動作させる時、Xcodeはこの値をプロジェクトディレクトリにセットします。そして、最初に「scripting addition」をインストールしないで、直接Xcodeから実行とデバッグできます。 [5027805]


翻訳履歴

2007-11-17 とりあえず日本語にしただけ。