OpenOffice.org マクロの練度

OOo のマクロを見たり書いたことのある人も増えてきたのではないかと思う。
そこで、OOo でマクロを書く人の熟練度レベル分けをしてみる。適当なので注意。

対象は OOo Basic。ちなみにマクロ向けでコンポーネントの実装関連は除外。主にドキュメントをマクロで操作することが対象。

10 段階:

  1. Basic IDE を利用。HelloWorld が書ける。
    • ランタイム関数の一覧がヘルプに記載されていることを認識する。
    • ドキュメントをネット上で検索してみる。いいドキュメントが見つからず手間取り、フォーラムなどで質問する。
    • マクロの記録で作成したマクロを利用する。同時に記録されない項目について不満を持つ。記録したマクロでは色々なことができないことを知る。
  2. ドキュメントオブジェクトを利用してテキスト、プロパティを変更する。
    • Calc のセルをイテレーションで処理する。遅いことを認識する。
    • (実際はあまり役に立たないが) 便利そうに見える Tools ライブラリがあることを知る。
    • Basic ダイアログを利用し始める。Standard ライブラリにあるダイアログを利用しようとして「ロードされていない」というエラーに悩む。
  3. Calc のセル範囲からデータを取得/設定するときに配列を介して行う。
    • コントローラのロックなどを学ぶ。
    • ページ設定などを変更しようとすると実はスタイルから変更しないといけないことを知る。
    • フォーラムなどでオブジェクト Inspector などを使えと言われる。
  4. IDL リファレンスをよく見る。
    • オブジェクト Inspector などのツールを利用できる。
    • リスナーをリスナー的な使いかたで使いこなせる。
  5. マクロを配布してほかの人にも利用して欲しいと始める。拡張機能ファイルの作成方法を学ぶ。
    • ThisComponent が場合に応じて返すドキュメントオブジェクトが変わることについて理解している。
    • マクロから他のファイルを開いてそのファイルのマクロを実行する、開くときにオプションとしてマクロの実行レベルを指定しないと実行できないことを知る。
    • メニュー、ツールバーの変更をマクロでやりたくなる。
    • コンフィグレーションを読み書きしたくなる (が、つまづいてフォーラムなどで質問する)。
  6. ドキュメントの API 上での構造をまぁまぁ知っている。
    • リスナーをインターフェースの代わりに使える。
      フォーラムで分かる質問に答えまくる。
    • Dev Guide を読むようになる。
    • 適宜 dispatch を組み合わせてマクロを書ける。
    • 特定のオブジェクトをコンテナ内の項目と比較して見つけるマクロを書ける。(例えば、チャートなど図形描写に埋め込まれたコンポーネントインスタンスからそのコンポーネントが埋め込まれている図形描写オブジェクトを見つけるマクロを書ける。)
    • ドキュメントで利用できるコンポーネントのサービス名一覧やサービスマネージャから利用できるコンポーネントの一覧を調べて利用できる。
    • 既存のコンフィグを変更する設定ファイルを作成して拡張機能パッケージで配布できる。
  7. 配列操作用関数、その他の関数など自分で利用する関数などが大方揃う。
    • Basic のバグを回避してコードを書ける。
    • API でのドキュメントの構造を熟知している。
    • コンポーネントを実装しないとできないこととマクロの限界を知っている。
    • ドキュメントが見つからないことについてドキュメントを投稿したりする。
    • マクロの設定を保存するために自分用のコンフィグを定義する。
  8. 使いかたの分からない、もしくは動作がよくわからないコンポーネントについてソースコードを見て調べる。
    • フォーラムの質問が同じことばかりで飽き飽きしだす。
    • 必要のないときに IDL リファレンスやサービス名の一覧を眺める。気になったサービスを試してみる。
    • フォーラムの大抵の質問について見ればやり方が思い浮かぶ。
    • 一つのサービス名に登録されているコンポーネントから特定のものを探し出して利用する。
  9. 言語系が貧弱でランタイム関数にバグの多い Basic に嫌気が射してマクロを別の言語 (JavaPythonJavaScript、BeanShell) で書き始める。
  10. 好きな言語でマクロを書きたくなってその言語用のスクリプトプロバイダを実装する/したくなる。

練度というかこの順に学べばかなりマクロを書けるようになると思う。普通の人はレベル 6 まで到達後、レベル 7 になれるように精進する。レベル 8 以上になったら注意。