マクロを書く言語を選ぶ
マクロを書ける言語は Scripting Framework に ScriptProvider が用意されているものです。デフォルトで用意されているものから選択するのが一般的ですが拡張機能として公開されているものから選択することもできます。
各言語での実装には一長一短があります。マクロを書く以外に UNO コンポーネントを実装することも視野に入れて選択するのもいいかもしれません。
言語 | マクロ | 言語機能 | UNO コンポーネント |
インタフェース クエリ† |
Pseud プロパティ |
ランタイム‡ |
---|---|---|---|---|---|---|
Basic | ○ | × | × | ○ | ○ | 組込み |
Java | ○ | ○ | ○ | × | × | JRE 1.4- |
BeanShell | ○ | ○ | × | × | × | BeanShell 2.0b1.1 |
JavaScript | ○ | ○ | × | × | × | Rhino 1.5 release 5 2004 03 25 |
Python | ○ | ○ | ○ | ○ | ○ | CPython 2.6.1 |
† ○: 不要、×: 必要
‡ OpenOffice.org 3.1.1 現在
OOo Basic は言語としての機能がよくありません。文字列、配列の操作、hash などの点から利用はお勧めではありません。しかし、試しにコードを書いてみるときや他の人のコードを読む時に必要になることもあります。マクロでは文字列を扱うことが多くなりがちですが正規表現なども利用できないため非常に不利です。
Java ではインターフェースのクエリが必要で時に煩雑になることもあります。コンパイルしないと試しに実行できないこともマクロを書くときの不利な点です。UNO コンポーネントを作成するような場合に向いています。
JavaScript および BeanShell のランタイムは古くなってきています。また利用している人も少ないようです。対応するバージョンの JavaScript ではファイルのインポートができず大きなマクロになると大変です。
Python のバインディングは OOo 2.0 系よりも前に登場して現在では安定しています。また、インターフェースのクエリが不要かつ pseud プロパティが利用できるため比較的楽にマクロを書くことができます。UNO コンポーネントを実装することもできます。
どの点を重視して言語を選択するかは人それぞれです。ここでは主に Python でコードを書くことにします。