ホーム‎ > ‎


AppleScriptObjC Release Notes 



AppleScriptObjC is a new framework in OS X v10.6 that allows Cocoa applications to be written in AppleScript. Using AppleScriptObjC, your AppleScript code can work with any Cocoa framework, and can function as a first-class citizen in the Cocoa world. 
AppleScriptObjCは、CocoaアプリケーションがAppleScriptで書かれるのを可能にする、OS X v10.6での新しいフレームワークです。 AppleScriptObjCを使って、あなたのAppleScriptコードは、どんなココア・フレームワークとでも働くことができて、Cocoa世界で第一級の市民として機能することができます。

This note covers the syntactical details of using AppleScriptObjC and accessing Cocoa functionality from AppleScript. To write a complete application, you will need to learn Cocoa itself, and should start with the Cocoa Fundamentals Guide
この注は、AppleScriptObjCを使って、AppleScriptからココア機能性にアクセスする統語上の詳細を扱います。 完全なアプリケーションを書くためには、あなたはココアを学ぶ必要があって、ココア基盤案内(2013.9.18 退役文書)から始めなければなりません。

AppleScriptObjC obsoletes AppleScript Studio, which is deprecated as of OS X v10.6. Developers using AppleScript Studio should migrate to AppleScriptObjC, and should start new projects using AppleScriptObjC exclusively. AppleScript Studio development is still supported, but functions for creating new projects have been removed, and the AppleScript Studio palette in Interface Builder has been hidden. To re-enable it, use this command in Terminal, and then re-launch Interface Builder: 
AppleScriptObjCは、OS X v10.6より非推奨にされるAppleScriptスタジオを時代遅れにします。 AppleScriptスタジオを使っている開発者は、AppleScriptObjCに移行すべきです、そしてAppleScriptObjCを使っている新しいプロジェクトだけを始めなければなりません。 AppleScriptスタジオ開発はまだ支持されます、しかし、新しいプロジェクトをつくるための機能は削除されました、そして、インターフェースビルダーの中のAppleScriptスタジオ・パレットは隠されました。 それを再度利用可能にするには、この命令を「ターミナル」で使って、それから「インターフェースビルダー」を再度開始します:

defaults write com.apple.InterfaceBuilder3 IBEnableAppleScriptStudioSupport -bool YES

Objective-C/AppleScript Quick Translation Guide 

AppleScriptObjC lets AppleScript objects serve as Objective-C objects in the Cocoa runtime, so development using AppleScriptObjC follows Objective-C and Cocoa patterns. This table is a quick reference to the AppleScript equivalents for various Objective-C features, shown as a definition of an ersatz class with the Objective-C version on the left and the AppleScript version on the right. 
AppleScriptObjCは、AppleScriptオブジェクトをココア実行時のObjective-Cオブジェクトとして役に立たせますので、AppleScriptObjCを使用する開発は、Objective-Cとココア・パターンにならいます。 この表は、いろいろなObjective-C特徴に対するAppleScript等価物のすばやい参照です、左にObjective-C版での代用のクラスの定義と右にそのAppleScript版を示します。



@interface MyClass : NSObject {

script MyClass

   property parent: class "NSObject"


   int myProperty;

   IBOutlet NSTextField *myField;


IBOutlet @property (retain) NSButton *myButton;

   property myProperty: 0

   property myField: missing value

   property myButton: missing value



@implementation MyClass


- (IBAction) myAction:(id) object {

   on myAction_(object)


   [object method];

   [object method:param];

   [object methodWithArg1:p1 arg2:p2];

      object's method()

      object's method_(param)

      object's methodWithArg1_arg2_(p1, p2)


   [object property];


      object's property()

      object's property




   end myAction_

end script

  • 1. An Objective-C class corresponds to an AppleScript script object. Inheritance in AppleScript uses the parent property. 
    Objective-Cクラスは、AppleScriptのscriptオブジェクトに相当します。 AppleScriptでの継承は、parent特性を使います。

  • 2. An instance variable or a @property in Objective-C corresponds to aproperty in AppleScript. AppleScript does not explicitly tag Interface Builder “outlet” properties; Interface Builder will use any property withmissing value as its initial value. 
    Objective-Cにおけるインスタンス変数または@propertyは、AppleScriptでのpropertyに相当します。。 AppleScriptは、明示的にインターフェースビルダーの“outlet”特性にタグを付けません; インターフェースビルダーは、その最初の値としてmissing valueをつかって、どんな特性でも働かせます。

  • 3. Objective-C divides class definitions into an @interface section, with all the properties, and an @implementation section, with all the method definitions. There is no such division in AppleScript; everything is contained in a script object. 
    Objective-Cはクラス定義を、全ての特性をもつ@interface区画と、全てのメソッド定義を持つ@implementation区画に分割します。 そのような分割がAppleScriptにはありません; すべてはscriptオブジェクトに含まれます。

  • 4. An Objective-C method definition corresponds to an AppleScript positional-parameter handler definition. AppleScript does not explicitly tag Interface Builder “action” methods; Interface Builder will use any method with the right signature: a method taking one parameter, and therefore with a name with a single trailing underscore (see below). 
    Objective-Cメソッド定義は、AppleScriptの位置パラメータ・ハンドラー定義と一致します。 AppleScriptは、明示的にインターフェースビルダーの“action”メソッドにタグを付けません; インターフェースビルダーは、右の表記でのどんなメソッドでも働かせます:メソッドは1つのパラメータをとっていて、したがって1つのアンダーラインが後に続く名前を持ちます(下記参照)。

  • 5. A method call in Objective-C corresponds to a positional-parameter handler call in AppleScript. The handler name is the Objective-C selector name with colons changed to underscores. The number of parameters should always match the number of underscores. 
    Objective-Cにおけるメソッド呼び出しは、AppleScriptでの位置パラメータ・ハンドラー呼び出しと一致します。 ハンドラー名は、コロンがアンダーラインに変えられたObjective-Cのセレクタ名です。 パラメータの数は、アンダーラインの数と常に合っていなければなりません。

    Note: AppleScript has three equivalent syntaxes for addressing object handlers and properties: x's yy of x, and tell x to y. Only the first is shown here, because it is the most compact and matches the Objective-C order the best, but any of them will work. For example, object's method() could equally well be written as tell object to method()
    注意:AppleScriptは、オブジェクト・ハンドラーおよび特性について言及するために3つの等価の構文:x's yy of x、そしてtell x to yを持ちます。 それが最もコンパクトであって、Objective-C秩序に一番合うので、最初のものだけここで示されます、しかしそれらの何でも働きます。 例えば、object's method()は、同様に問題なくtell object to method()のように書かれることができます。

  • 6. An Objective-C method with no parameters can be treated as either a message send or as a property access. Similarly in AppleScript, a method with no parameters can be treated as a handler call, with the parentheses, or as a property access, omitting them. 
    パラメータのないObjective-Cメソッドは、メッセージ送信または特性アクセスのどちらともみなされることができます。 同じようにAppleScriptでは、パラメータのないメソッドは、括弧をもつならハンドラー呼び出しとして、または括弧なしでは特性アクセスとして扱われることができます。


AppleScript distinguishes between application identifiers, which are terms defined by AppleScript or an application’s scripting interface, and user identifiers, which are terms defined by the script writer. In the AppleScript Editor preferences, these are referred to as “application keywords” and “variables and subroutine names”, respectively. Identifiers passed to AppleScriptObjC, in particular Cocoa method names, must be user identifiers. If an identifier would conflict with an existing application identifier (or even an AppleScript reserved word), you can force it to be considered a user identifier by escaping it with vertical bars. 
AppleScriptは、AppleScriptまたはアプリケーションのスクリプティング・インターフェースによって定義される用語であるアプリケーション識別子、および、スクリプトを書く人によって定義される用語であるユーザー識別子を見分けます。 「AppleScriptエディタ」環境設定で、それらは“アプリケーション予約語”および“変数およびサブルーチン名”としてそれぞれ言及されます。 AppleScriptObjCに渡される識別子は、とりわけCocoaメソッド名では、ユーザー識別子でなければなりません。 ある識別子が既存のアプリケーション識別子と(またはAppleScript予約語とさえ)衝突するならば、それを垂直バーでエスケープすることによって、あなたはユーザー識別子とみなされるようにそれを強制することができます。

For example, NSColor has a set method for setting the current drawing color, but set is also an AppleScript reserved word for assigning variables. Using set as a handler name without escaping it would be a syntax error, so the correct usage looks something like this: 
例えば、NSColorは現在の描画色を設定するsetメソッドを持ちます、しかしsetはまた、変数を割り当てるためのAppleScript予約語です。 それをエスケープすることなくハンドラー名としてsetを使うことは構文エラーなので、正しい用法はこのようなものになります:

tell myColor to |set|()

Similarly, NSWindow has a bounds property, but bounds is also an application-defined term, so to use it as the NSWindow, it must be escaped: 

get myWindow's |bounds|

When in doubt, add the vertical bars: if they are not necessary, then they are merely redundant and harmless. 
迷っているときは、垂直バーを加えてください: それらが必要でないならば、それらは単に冗長で無害なだけです。

Classes and Constants 

Classes are treated as by-name elements, and constants and enumerated values as properties, both of current application. Observe the use of NSViewNSColor, andNSCalibratedRGBColorSpace in this example: 
クラスは「名前による」要素とみなされて、定数と列挙値は、両方ともcurrent applicationの、特性と見なされます。 この例におけるNSViewNSColor、そしてNSCalibratedRGBColorSpaceの使用を観察してください:

script MyView
   property parent: class "NSView"
   on drawRect_(rect)
       set c to current application's class "NSColor"'s whiteColor()
       c's colorUsingColorSpaceName_(current application's NSCalibratedRGBColorSpace)
   end drawRect_
end script

In places where current application is the implicit container, such as in the parent property or at the top level of the script, it may be shortened to my, or in the case of class specifiers omitted entirely. (In the handler body, the implicit container is the script object’s parent, class "NSView", so the current application's must be explicit.) This allows a convenience technique to save typing: define properties at the top level of the script, and then refer to the properties in the handler, like this: 
current applicationが暗黙のコンテナである場所において、例えば親特性においてまたはスクリプトの最高位では、それがmyへと短くされる、あるいはクラス指示子の場合は完全に省略されることがあります。 (ハンドラーの本文においては、暗黙のコンテナはそのスクリプト・オブジェクトの親、class "NSView"であり、それでcurrent application'sは明示される必要があります。) これは、タイピングを節約する便利なテクニックです: スクリプトの最高位で特性を定義してください、それからハンドラーにおいてその特性を参照してください、このように:

property NSColor: class "NSColor"
property NSCalibratedRGBColorSpace: my NSCalibratedRGBColorSpace
script MyView
   property parent: class "NSView"
   on drawRect_(rect)
       set c to NSColor's whiteColor()
       c's colorUsingColorSpaceName_(NSCalibratedRGBColorSpace)
   end drawRect_
end script

Copyright © 2014 Apple Inc. All rights reserved. Terms of Use | Privacy Policy | Updated: 2009-05-27

f k,
2014/03/06 4:42