38。 MacPythonOSAモジュール
この章では、Python用のOpen Scripting Architecture(OSA、一般にAppleScriptとも呼ばれます)の現在の実装について説明します。これにより、Pythonプログラムから、かなりpythonicなインターフェイスを使用してスクリプト可能なアプリケーションを制御できます。 このモジュールセットの開発は停止しました。
AppleScriptとOSAのさまざまなコンポーネントの説明、およびアーキテクチャと用語の理解については、Appleのドキュメントを読む必要があります。 「Applescript言語ガイド」では、概念モデルと用語について説明し、標準スイートについて説明しています。 「オープンスクリプトアーキテクチャ」ドキュメントでは、アプリケーションプログラマの観点からOSAを使用する方法について説明しています。 Apple Help Viewerでは、これらの書籍は開発者向けドキュメントのCoreTechnologiesセクションにあります。
アプリケーションのスクリプトの例として、次のAppleScriptは、最前面の Finder ウィンドウの名前を取得し、それを出力します。
tell application "Finder"
get name of window 1
end tell
Pythonでは、次のコードフラグメントが同じことを行います。
import Finder
f = Finder.Finder()
print f.get(f.window(1).name)
配布されると、Pythonライブラリには、標準スイートを実装するパッケージに加えて、少数の一般的なアプリケーションにインターフェイスするパッケージが含まれます。
AppleEventsをアプリケーションに送信するには、最初にアプリケーションの用語(スクリプトエディターが「辞書」と呼ぶもの)に接続するPythonパッケージを作成する必要があります。 これは、 PythonIDE 内から、またはgensuitemodule.py
モジュールをコマンドラインからスタンドアロンプログラムとして実行することで実行できます。
生成される出力は、プログラムで使用されるすべてのスイートに1つずつ、およびすべてを接着するための__init__
モジュールに加えて、多数のモジュールを含むパッケージです。 Python継承グラフはAppleScript継承グラフに従うため、プログラムの辞書でStandard Suiteのサポートが含まれていると指定されているが、1つまたは2つの動詞が追加の引数で拡張されている場合、出力スイートには、インポートするモジュールStandard_Suite
が含まれます。 StdSuites.Standard_Suite
からすべてを再エクスポートしますが、追加機能を持つメソッドをオーバーライドします。 gensuitemodule の出力はかなり読みやすく、Python docstringの元のAppleScript辞書にあったドキュメントが含まれているため、それを読むことはドキュメントの優れたソースです。
出力パッケージは、すべてのAppleScript動詞をメソッドとして含み、直接オブジェクトを最初の引数として、すべてのオプションのパラメーターをキーワード引数として含む、パッケージと同じ名前のメインクラスを実装します。 AppleScriptクラスは、比較や他のすべてのものと同様に、Pythonクラスとしても実装されています。
動詞を実装するメインのPythonクラスでは、AppleScriptクラス「application」で宣言されているプロパティと要素にアクセスすることもできます。 現在のリリースでは、オブジェクト指向に関する限り、上記の例では、よりPythonicなf.window(1).name.get()
の代わりにf.get(f.window(1).name)
を使用する必要があります。
AppleScript識別子がPython識別子でない場合、名前は少数のルールに従ってマングルされます。
- スペースはアンダースコアに置き換えられます
- その他の英数字以外の文字は
_xx_
に置き換えられます。ここで、xx
は16進文字の値です。 - Pythonの予約語には、アンダースコアが追加されます
Pythonは、Pythonでスクリプト可能なアプリケーションを作成することもサポートしていますが、次のモジュールはMacPythonAppleScriptのサポートに関連しています。
- 38.1.
gensuitemodule
—OSAスタブパッケージを生成します - 38.2.
aetools
—OSAクライアントのサポート - 38.3.
aepack
—Python変数とAppleEventデータコンテナ間の変換 - 38.4.
aetypes
—AppleEventオブジェクト - 38.5.
MiniAEFrame
—オープンスクリプトアーキテクチャサーバーのサポート
さらに、Finder
、Terminal
、Explorer
、Netscape
、CodeWarrior
、 [のサポートモジュールが事前に生成されています。 X116X]およびStdSuites
。