Jump to content

Development/拡張機能の開発

From The Document Foundation Wiki
This page is a translated version of the page Development/Extension Development and the translation is 100% complete.

はじめに

拡張機能を使用すると、LibreOffice自体のソースコードを変更することなく、LibreOfficeの機能を拡張できます。LibreOfficeには3種類の拡張機能があります。

  • プログラミングの方法を知っていれば、UNO component API を使用して複数の言語を使用してLibreOffice拡張機能を開発できます。サポートされているプログラミング言語は、Basic、[/Python_Extensions_Development|Python]、JavaScript、Java、BeanShell、および C++ です。拡張機能のコードとデータは.oxtファイルとしてバンドルされ、LibreOffice拡張機能リポジトリで共有できます。
拡張機能は、システム管理者がデフォルト設定を変更するための推奨される方法です。設定の拡張機能を開発するためのガイドは、PDF または ODT 形式で利用できます。サンプルOXT configuration extension がガイドに付属しています。
  • アドインと呼ばれる、Calcにスプレッドシート関数を追加する特別なCalc拡張機能もあります。UNOコンポーネントとして、既存の機能の新しい実装や、Calc Add-In、Add-Ons、DataPilot、Chart Add-Inなどの特殊なコンポーネント、または言語コンポーネント(Spellchecker、Hyphenator、Thesaurusなど)を提供できます(Add-Ins documentationを参照)。
  • 追加のTemplates, Gallery and Autotextsの拡張機能をパックすることもできます。以下の「例」セクションの例を参照してください。

テンプレートについて

いくつかの例では、テンプレートは「templates」という名前のフォルダに配置されていますが、他のいくつかの例では、テンプレートは「template」という名前のフォルダに配置されています。ここで名前を混同しないでください。Paths.xcuファイルで使用した正しい名前を指定すれば、どちらも機能します。Paths.xcuファイルでは、<node oor:name="%origin%/template" oor:op="fuse"/> のような "%origin%" は、拡張機能がインストールされた後の場所を指していることに注意してください。次に例を示します。

file:///<path-to-your-libreoffice-installation-or-config>/user/uno_packages/cache/uno_packages/lu168780135zflp.tmp_/<extenion_filename>.oxt

そのため、<node oor:name="%origin%/template" oor:op="fuse"/> のような「template」は、圧縮されていない拡張のルートからの相対パスである必要があります。つまり、拡張構造を編成するときに実際のテンプレートを「my_templates」という名前のフォルダに配置する場合、Paths.xcuでは <node oor:name="%origin%/my_templates" oor:op="fuse"/> にする必要があります。

また、Paths.xcuファイルに示されている <node oor:name="Template" oor:op="fuse" oor:mandatory="true"> のような「テンプレート」は、このパス設定がunotools/source/config/pathoptions.cxx(アドイン、オートコレクト、定型句、辞書、ギャラリーなどとともに)で定義されている「テンプレート」カテゴリ用であることを示していることに注意してください。


リソース

主にOpenOffice's documentationを参照することができますが、LibreOfficeは急速に進歩しているため(以下のCompatibility notesを参照)、最新のdocumentationを使用する必要があります。これらはまだほとんど互換性があります。

拡張機能と .oxt ファイル形式の詳細については、the Developer's guideを参照してください。

現在のリソースは、LibreOffice help pages に統合されています。

開始する前に、install the SDK を実行する必要があります。

チュートリアルと例

まず、以下のチュートリアルまたは拡張機能の例のソースコードを参照してください。LibreOfficeのソースコードには、SDK examples のコレクションもあります。例を見つけるもう1つの方法は、既存の拡張機能の .oxt ファイルを解凍して内容を確認することです。

Basic

Java

  • Starter Extension 独自の拡張機能のベースとして使用されるスターター拡張機能
  • Sidebar Extension スターターエクステンションに似ていますが、独自のサイドバーデッキを作成するためのものです。
  • NOA-libre は、LibreOffice UNO API を囲むオブジェクト指向の軽量 Java ラッパーであり、多くのUNOインターフェースのより高いレベルの抽象化を提供する。
  • UNOHelper は、UNO APIを操作するためのヘルパー関数を提供しています。UNO APIから一般的に使用される関数をラップして、より簡単に使用できるようにしています。
  • LibreOffice Template System (LOTS) は、強化されたテンプレート、フォーム、および定型句機能を備えた大規模な Java 拡張機能です。


Eclipse プラグイン

TDFは、Java の LibreOffice 拡張機能/コンポーネントの開発を支援する Eclipse プラグイン LOEclipseを提供しています。 それは Eclipse Marketplace で見つけることができます。

Python

  • unodit は、PythonでLibreOffice用の独自の拡張機能を作成するのに役立つように、ダイアログを使用して退屈なタスクの一部を自動化します。
  • OOO Development Tools は、頻繁に使用される関数をラップして、より簡単に使用できるようにします。
  • LibreOffice Love Letter Writer

Python Extensions DevelopmentPython Macro Guide、およびDesigning & Developing Python Applications のページも参照してください。


C++

非コーディングの例

  • Andreas Mantke の GitHub
extensionbook リポジトリ には、色、テンプレート、オートテキスト、ギャラリーのセットを拡張機能にパッケージ化する方法を説明する非コーディング例のコレクションが含まれています。この解説書は PDF でも入手できます。
  • Kevin Suo の GitHub
lo_l10n_templates リポジトリは、テンプレートセットをLibreOffice拡張機能として作成し、ローカライズする方法の例です。


互換性に関する注意事項

LibreOffice 開発者は、パブリック(UNO)APIの変更に関しては保守的であるため、OpenOffice.org または Apache OpenOffice 用に作成されたほとんどの拡張機能は LibreOffice で動作します。変更が発生した場合は、ReleaseNotes (4.24.1 および 4.0 のAPI変更)に記載されています。

  • OpenOffice.org-minimal-version 依存関係は、拡張機能が指定された OpenOffice.org バージョンと、少なくとも指定された OpenOffice.org 参照バージョンに対応する LibreOffice バージョンで動作することを示しています。4.2.3 までのすべてのLibreOfficeバージョンは、OpenOffice.org参照バージョン 3.4に対応すると報告していますが、4.2.4 以降の LibreOffice バージョンは、OpenOffice.org 参照バージョン 4.1に対応すると報告しています。この依存関係を使用して、拡張機能は、指定された OpenOffice.org 参照バージョンにある機能のみを使用することを宣言します(その結果、OpenOffice.org 自体だけでなく、すべての製品で動作します)。
  • 拡張機能がLibreOfficeに固有の機能を使用する場合、LibreOffice 3.5以降では、名前空間http://libreoffice.org/extensions/description/2011で新しい依存関係 LibreOffice-minimal-version を指定できます。必須のvalue属性(名前空間なし)は、最小限サポートされているLibreOfficeバージョンを指定します。マイクロバージョン番号を含まず、3.5以上である必要があります。
    一般的に必要なname属性(名前空間http://openoffice.org/extensions/description/2006)は、“LibreOffice version”(version は指定されたバージョン値です)です。
    例は、core/tree/desktop/test/deployment/dependencies:loversion 35.oxt または loversion36.oxt にあります。
  • 拡張機能が LibreOffice 7.0 以降の特定のバージョンの LibreOffice を対象としている場合は、依存関係 LibreOffice-minimal-version に加えて、名前空間http://libreoffice.org/extensions/description/2011 を持つ新しい依存関係 LibreOffice-maximal-version を指定できます。これは非常にまれに必要になります。