2017年4月1日土曜日

7: 最初のUNO拡張機能(LibreOffice拡張機能またはApache OpenOffice拡張機能)をビルドする、パート1

<このシリーズの、前の記事 | このシリーズの目次 | このシリーズの、次の記事>

Main body START

これらのファイル群を使って、UNO拡張機能をビルドできる

-Hypothesizer

UNO拡張機能を開発するための環境をこれまでの一連の記事で作ったので、AntビルドファイルまたはGradleビルドスクリプトとUNO拡張機能のソースファイルを作って、UNO拡張機能をビルドできる。

-Rebutter

ふむ。

-Hypothesizer

実は、それらは、もう作ってあって、ここにある。

-Rebutter

テレビのクッキング番組みたいだな . . .

-Hypothesizer

このzipファイルを、ディレクトリ構造を維持して任意のディレクトリ(ここでは、Linux上は~/my-documents/development/java、Windows上はE:\Home\my-documents\development\javaとする)に解凍すると、以下のようなディレクトリおよびファイルに展開されるはずだ。

commonBuild.properties
commonBuild01.xml
commonBuild02.xml
commonBuild01.gradle
commonBuild02.gradle
/unoUtilitiesToDisclose
 build.xml
 build.gradle
 /source
  /java
   /thebiasplanet
    /unoutilities
     /serviceshandling
       GlobalUnoServicesProviderUtility.java
  /resource
   MANIFEST.MF.addition
/hiUnoExtensionsUnoExtension
 build.xml
 build.gradle
 /source
  /java
   /thebiasplanet
    /uno
     /hiunoextensionsunoextension
      HiUnoExtensionsImplementation.java
      HiUnoExtensionsUnoExtensionGlobalServicesProvider.java
  /resource
   MANIFEST.MF.addition
   manifest.xml
   thebiasplanet.hiunoextensionsunoextension.uno.components
  /unoIdl
   /thebiasplanet
    /uno
     /hiunoextensionsunoextension
      XHiUnoExtensions.idl
      HiUnoExtensions.idl

これらのファイルは何なのか?

-Rebutter

ふーむ、 . . . 何だ、これらは?

-Hypothesizer

うーん、どう説明するべきか。簡単に説明できるものと簡単には説明できないものがある。理解というものは互いに結びついているものなので、あることを十分に説明するためには、いくつかの基本概念をまず説明しなければならないが、これが長々しくなりかねない。UNOの基本概念をまだ説明していないので、一部のファイルは、それが何なのか説明が難しい。

-Rebutter

それはそうだろう。. . . 一部の用語はブラックボックスとして使用して説明するしかないのではないか。

-Hypothesizer

ブラックボックス?

-Rebutter

例えば、「XXXという概念がある。ここではこれを十分に説明できないが、 . . .」

-Hypothesizer

ははあ。

-Rebutter

いいか、その場を取り繕うために不正確なことを述べるのは避けたい。そうしたい誘惑はあるが、混乱の元になる。我々の説明は、避けられなければ、詳細でなくともよいが、不正確であってはならない、絶対に。

-Hypothesizer

ああ、聞いている人をとりあえず分かった気にさせる(が実際には理解が間違っている)ような不正確なことを言うべきではないということだね。

-Rebutter

そうだ。

-Hypothesizer

ここでの私の説明は十分ではないが、UNOの基本概念を学んだあとで、これらのファイルを詳しく説明しよう。

-Rebutter

よかろう。

プロジェクトに共通なファイル

-Hypothesizer

えーと、展開のルートディレクトリにある、'commonBuild.properties'、'commonBuild01.xml'、'commonBuild02.xml'は、共通のAntビルドファイルだ。「共通」というのは、すべてのプロジェクトで使われるという意味で言っている。

-Rebutter

複数のプロジェクトがあるということか?

-Hypothesizer

そう、zipファイルには2つのプロジェクトが含まれていて、共通ファイルは、将来のプロジェクトでも使うように意図されている。

-Rebutter

分かった。

-Hypothesizer

展開のルートディレクトリにある、'commonBuild01.gradle'と'commonBuild02.gradle'は、共通のGradleビルドスクリプトだ。「共通」の意味は先程と同じだ。

-Rebutter

分かった。

UNOユーティリティプロジェクト

-Hypothesizer

'unoUtilitiesToDisclose'ディレクトリには、UNOユーティリティJarファイルを作るUNOユーティリティプロジェクトが格納されている。UNOユーティリティJarファイルは、UNOを使用するプロジェクトから使われる。つまり、同じソースファイルを複数のプロジェクトに含むのは賢くないので、UNOを使用するプロジェクトで共通に使われるものは、1つの個別プロジェクトとして分離してある。

-Rebutter

分かった。

-Hypothesizer

プロジェクトディレクトリ内のファイル、'build.xml'は、このプロジェクト用のAntビルドファイルであり、共通Antビルドファイルを利用する。プロジェクトディレクトリ内のファイル、'build.gradle'は、このプロジェクト用のGradleビルドスクリプトであり、共通Gradleビルドスクリプトを利用する。

-Rebutter

ははあ。

-Hypothesizer

プロジェクトディレクトリ内の'source'ディレクトリは、全ての種類のソースファイルのルートディレクトリだ。ソースファイルには、Javaソースファイル、設定ファイルといったリソースファイル、UNO独自のソースファイルなどが含まれる。

-Rebutter

UNO独自のソースファイル?

-Hypothesizer

これについては後で説明しよう。というのも、このプロジェクトには、UNO独自のソースファイルがない。

-Rebutter

オーケー。

-Hypothesizer

'source'ディレクトリ内の'java'ディレクトリは、Javaのソースファイルのルートディレクトリだ。

'GlobalUnoServicesProviderUtility.java'は、UNOのユーティリティクラスだ。このクラスが何のためのものかは、後で触れることにしよう。

'source'ディレクトリ内の'resource'ディレクトリは、リソースファイルのルートディレクトリだ。

'MANIFEST.MF.addition'は、Jarのマニフェストファイルに追加する内容を含んだファイルだ。

-Rebutter

分かった。

Main body END

<このシリーズの、前の記事 | このシリーズの目次 | このシリーズの、次の記事>