Extensions best practices ja

From Apache OpenOffice Wiki
Jump to: navigation, search

現在の OpenOffice.org GUI 拡張機能の書き方

Extension Infrastructure Enhancement Project は次の OOo のアップデート段階ごとに拡張機能に関して欠けている機能の導入を目指しています。各々のタスクは Sun's OpenOffice.org Development Team にとって高い優先順位にあります。いずれにせよ、多くの重要な機能が現在はまったく抜け落ちていますが、多くのものは大抵巧みな手法で既に実装できます。現在でも多くの場合 'clean' な拡張機能を実装できるはずです。

So, what are your choices today?

プログラミング言語と環境

  1. 一般的に、UNO 言語バインディングを持つプログラミング言語のうちから自由に選べます。
  2. 環境に依存しない実行可能ファイルを生成する (Java のような) プログラミング環境をお勧めします。これはサポートするべき環境ごとに再コンパイル、パッケージ化、テストなどを行うことなく最も多くのユーザーに拡張機能のバイナリを利用できるようにします。
  3. Java を使用したいのであれば、容易に OOo の拡張機能を開発できるようにデザインされたNetbeans OpenOffice.org API Plugin を試してみてください。

互換性

  1. OO.o SDK を拡張機能の開発とビルドに使用してください。これは互換性を保つために保障されていない型を使用しないようにします。
  2. unpublished UNO 型の使用は避けてください。

GUI デザインと実装

  1. VCL を絶対に利用しないでください。VCL API はわずかな OOo の更新でさえ互換性が保障されていないためです。その代わりに UNO AWT を利用してください。NO AWT で欠落や破損があっても目を瞑らないでください。バグをファイルして迅速に実装または修正されるように強く主張してください。UNO AWT の改良は高い優先度を持ちます。
  2. OOo のダイアログエディタは現在でもダイアログのデザインに使用できます。拡張機能パッケージに XML のダイアログ定義ファイルを含めるることができます。拡張機能マネージャは XML ダイアログ定義ファイルを既に配置できます。XML ダイアログ定義ファイルから UNO AWT ダイアログを作成する UNO サービスがあります。イベントバインディングには現在二つの方法があります。
    1. OOo 2.0.4 以降: ダイアログをデザインするのにダイアログエディタを使用します。UNO による言語サポートを使用してイベントロジックを実装してください。UNO イベントをコントロールに割り当てます。XML ダイアログとイベントのロジックを拡張機能に入れます。(Feature Specification)
    2. ダイアログをデザインするのにダイアログエディタを使用してください。イベントをコントロールに割り当てずにおきます。実行時に、UNO AWT ダイアログを作成後、コントロールに必要なイベントリスナーを配置してください。
    3. ダイアログをデザインするのにダイアログエディタを使用してください。ダイアログコントロールのイベントハンドラを実装するための BASIC のコードを書いてください。これらのハンドラは非常に小さいものかもしれません。もっとも簡単なアプローチとしてハンドラが UNO イベントを処理するオブジェクトをただ呼び出します。ダイアログと UNO オブジェクトをつなぐコードを含むBASIC ライブラリは拡張機能に容易に入れられます。OOo の拡張機能マネージャは BASIC ライブラリの配置を既にサポートしています。
    4. ダイアログをデザインするのにダイアログエディタを使用してください。ダイアログコントロールのためのイベントハンドラを実装するマクロを OOo スクリプトフレームワーク (Java、Beanshell など) によってサポートされている言語で書いてください。ダイアログエディタはスクリプトフレームワークマクロのイベントのをバインドする昨日を既にサポートしています。マクロを含むコードを容易にパッケージに入れられます。OOo の拡張機能マネージャは既にスクリプトフレームワークマクロの配置をサポートしています。

GUI のローカリゼーション

  1. OOo 2.2 以降: OOo のダイアログエディタは多言語ダイアログの作成と編集をサポートしています。Feature Specification)
  2. 実行時に正しいロケール依存の文字列を取得するためにそれぞれの UNO AWT コントロールに文字列を設定してください。
  3. 最近、OOo の ResMgr クラスによりアクセス可能な任意のリソース文字列へのアクセスを可能にする UNO サービス com.sun.star.resource.OfficeResourceLoader が導入されました。このサービスは単に既存の OOo のリソース文字列を使用したいときに役立ちます。
  4. UNO 構成サービスのローカリゼーション機能を使用するのがよいアプローチです。UNO 構成サービスはロケールに依存した文字列の定義を可能にします。構成サービスは構成サービスの初期化時のロケールセットに従って構成のアイテムの文字列値を返します。

拡張機能の機能

依存性

  1. OO.o 2.0.4 以降: パッケージの依存性を定義できます。(Feature Specification) 拡張機能は動作に必要な最小の OOo のバージョンを指定出来ます。形式的には依存性は名称が名前空間名 "http://openoffice.org/extensions/description/2006" で構成される空の XML 要素でローカルパートは "OpenOffice.org-minimal-version" です。二つの属性を持っているべきです。すなわち、依存性ごとに必要な "name" 属性およびその値が OOo 2.1 から始まる (この場合値は "2.1" です) OOo のバージョンを示す文字列である接頭辞が付かない "value" をもつ属性です。依存性は現在の OOo のバージョンの値が指定の値より大きいときまたは等しいときのみ了承します (要素ごとに順に比較されます)。拡張機能が OOo の 2.0.3 またはそれ以前を必要とするように定義できません。しかしながら、拡張機能を OOo 2.0.4 またはそれ以降のみにインストール可能にするのであれば OXT 拡張機能パッケージフォーマットを使用してください。OXT ファイルは OOo 2.0.4 より前のバージョンではインストールできません。
  2. OOo 2.0.4 では、パッケージの実行時における依存性チェックができません。

バージョン

  1. OO.o 2.1 以降: 拡張機能のバージョン情報を指定できます。(Feature Specification)
  2. OOo 2.1 以前ではパッケージのバージョン情報を指定できません。しかし、これはコンポーネントの最初のアップデートの提供を必要とするまで大きな問題ではありません。明確なバージョン情報がないパッケージは "バージョン 1" とみなされます。しかし、最初のオフィシャルパッケージアップデートのリリースが必要になるまでにパッケージのバージョン管理を使用可能にしなければいけません。

ライセンス

  1. OO.o 2.0.4 以降: 拡張機能パッケージにライセンステキストを含むことができます。テキストは拡張機能のインストール時に表示されます。ユーザーがライセンスを拒絶した場合インストールが中断されます。(Feature Specification)
  2. OOo 2.0.4 以前ではライセンス機能は利用できません。

製品登録

今のところこの機能は提供されていません。

デジタル署名

今のところこの機能は利用できません。

拡張機能の優先順位のための一般的なインターフェース

今のところこの機能は利用できません。

ヘルプ

  1. OO.o 2.4 以降, 拡張機能は拡張機能自身のヘルプファイル (XHP ファイル) を含んで配布できます。これらのヘルプファイルは OOo のヘルプシステム (OOo のヘルプビューア、ツールチップなど) に統合されたかのように振舞います。ユーザーインターフェースのコントロール類 (ダイアログ、ダイアログコントロールなど) はヘルプページと関連付けることができます。(Feature Specification).
  2. HTML ファイル (もしくは Writer がサポートしているほかのフォーマット) を拡張機能パッケージに入れることもできます。ユーザーが拡張機能のヘルプを要求したとき (たとえばあなたがデザインしたヘルプボタンを押したとき)、ヘルプファイルを Writer に読み込めるでしょう。格好のいい方法ではありません。注: 現在、拡張機能パッケージがインストールされているルートディレクトリを見つけるのは大変不便です。この方法は http://api.openoffice.org/docs/DevelopersGuide/Components/Components.xhtml#1_9_1_UNO_Package_Installation_Using_unopkg の Package Bundle Structure => Arbitrary Files セクションに説明があります。(この問題の処理するためにパッケージのインストールされたルートディレクトリを直接取得できる API のデザインと実装予定しています。)
  3. より原始的なアプローチとしては拡張機能のヘルプテキストを簡単なメッセージダイアログに表示する方法があります。

パッケージファイルフォーマット

OO.o 2.0.4 以降 新しいパッケージフォーマット OXT (OO.o eXTension) が使用可能です。OXT ファイルは UNO パッケージと基本的に同じ構造をしています。それらパッケージファイルは拡張機能を構成するパーツを含む ZIP ファイルです。OXT パッケージは OOo 2.0.4 より前のバージョンではインストールできません。

オンラインアップデート

  1. OO.o 2.2 以降, 拡張機能のオンラインアップデートは拡張機能マネージャによりサポートされています。(Feature Specification)
  2. OO.o 2.3 以降, 拡張機能マネージャダイアログはリンクコントロールを持ちます。そのコントロールではウェブブラウザで オフィシャルな OpenOffice.org 拡張機能ウェブサイトを開きます。(Feature Specification). 拡張機能開発者はこのレポジトリに自分の拡張機能を登録でき製品の知名度を最大限に引き上げることができます。

拡張機能のメタデータ

  1. OOo 2.4 以降, 拡張機能はdisplay name (表示用名称) を利用できます。この名称はローカライズできます。バージョン 2.4 以前では oxt ファイルの名前が表示されていました。たとえば、インストールされた拡張機能の一覧中でです。

追加情報

GUI のローカリゼーションでは OOo 2.3 のバグにより言語の切り替えが正しく動作しません。


依存性、バージョン、ライセンス、オンラインアップデートに関する情報は Developers Guide Extensionsにまとめられています。

Personal tools