#
3. MacPython OSA モジュール

Python は オープンスクリプティングアーキテクチャ(Open Scripting Architecure、OSA、一般的には AppleScript と呼ばれる)のかなり完全な実装 を行っていて、Python プログラムからスクリプト可能なアプリケーションを 操作したり、Python へのインターフェースを備えたものにすることができます。

AppleScript と OSA の様々なコンポーネントの記述のために、また、アーキ テクチャおよび用語についての理解を得るために、アップルの文書を読む必 要があります。"Applescript Language Guide" は概念のモデルおよび用語、Standard Suiteについ て説明した文書です。"Open Scripting Architecture" 文書は、ア プリケーションプログラマの視点から OSA を使用する方法について説明 しています。これらの文書はAppleヘルプビューワのDeveloper Documentation 中のCore Technologiesセクションにあります。

アプリケーションをスクリプトで操作する例として、次の 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 ライブラリは、Standard Suite を実装したパッケー ジに加えて、いくつかの一般的なアプリケーションへのインターフェースを実 装したパッケージが含まれています。

アプリケーションに AppleEvent を送るためには、アプリケーションの用語 (Script Editorが「辞書」と呼ぶもの)に接続する Python パッケー ジを最初に作成しなければなりません。これは、PythonIDE の内部 から、あるいは、コマンドラインからのスタンドアロンのプログラムとして gensuitemodule.py モジュールを実行することにより行うことができ ます。

gensuitemodule.py モジュールで生成される出力は多くのモジュール を備えたパッケージのため、全ての Suite をプログラムの中で 1 つにまとめ て利用できるようにするために `__init__` モジュールが追加されて います。Python 継承グラフは AppleScript 継承グラフを理解するので、 Standard Suite をサポートしていて、余分な引数を備えた1つあるいは2つの 変数を拡張する事ができるようにプログラム辞書が書かれていた場合、出力さ れた Suite は、`StdSuites.Standard_Suite` からすべてをインポー トして再エクスポートし、さらに拡張機能をもったメソッドをオーバーライド するモジュール `Standard_Suite` を含みます。 `gensuitemodule` の出力は人間に判読可能で、Python docstrings中 にはオリジナルの AppleScript 辞書にあった文書を含んでいます。したがっ て、それを読むことは有用な情報源となります。

出力されたパッケージは、メソッドとして AppleScript 変数をすべて含み、 第1の引数としての直接オブジェクトを含み、キーワード引数としてのすべて のオプションの引数を含む、パッケージと同じ名前を備えた主要なクラスを実 装しています。また AppleScript クラスは Python クラス、そして類事物そ の他のもろもろの物として実装されています。

変数を実装する主要な Python クラスは、さらに AppleScriptクラス "application" で宣言されたプロパティおよび要素へのアクセスを許可します。 現在のリリースでオブジェクト指向的にやろうとするならば、例えば、より Python 的な `f.window(1).name.get()` の代りに `f.get(f.window(1).name)` を利用する必要があります。

AppleScript 識別子が Python 識別子と同じでない場合、名前は少数の規則に よって判別します。

- スペースは下線に置換されます。
- `_xx_` が16進法の文字値である場合、他の英数字でない文字は `xx` と置換されます。
- あらゆるPython 予約語には下線を追加します。

Python は、さらに Python でスクリプト対応アプリケーションを作成する事 をサポートしています。次のモジュールはMacPythonのAppleScriptサポートに 適切です。

`gensuitemodule` |  | OSA辞書からスタブパッケージを作成します。
`aetools` |  | Apple Eventを送るための基本的なサポート
`aepack` |  | Python変数とAppleEventデータコンテナ間の変換
`aetypes` |  | Apple Event オブジェクトモデルの Python 表現
`MiniAEFrame` |  | オープンスクリプティングアーキテクチャ(OSA)サーバ(``Apple Events'')のサポート。

さらに、`Finder`, `Terminal`, `Explorer`, `Netscape`, `CodeWarrior`, `SystemEvents` そして `StdSuites` のサポートモジュールは、あらかじめ生成されています。