2017年3月18日土曜日

1: UNO拡張機能(LibreOffice拡張機能またはApache OpenOffice拡張機能)を開発する方法を学ぶ

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

Main body START

UNO拡張機能とは何か?

-Hypothesizer

UNO拡張機能を開発する方法をこれから学ぶ。

-Rebutter

はあ?ちょっと唐突ではないか?UNO拡張機能とは何だ?

-Hypothesizer

UNO拡張機能とは、 LibreOfficeやApache OpenOfficeにインストールできる拡張機能のことだ。

-Rebutter

拡張機能とは何だ?

-Hypothesizer

拡張機能というのは、要は、アドオンのことだ。

-Rebutter

ああ、アドオンなら知っている。. . . 「UNO」はどういう意味なのか?

-Hypothesizer

UNOは、LibreOfficeやApache OpenOfficeで使われているテクノロジーの名前で、Universal Network Objectsの略だ。

-Rebutter

UNOはLibreOfficeとその拡張機能との間のインターフェースの規約だということか?

-Hypothesizer

LibreOfficeとその拡張機能との間のインターフェースの規約なだけではなくて、LibreOffice自体がUNOで作られている。つまり、LibreOfficeのプログラムプロセスでは、多くのUNOオブジェクトが生きていて、互いにやりとりが行なわれている。UNOとは、UNOオブジェクトとはどんなものか、UNOオブジェクトをどのように操作できるか、その他関連する諸々の仕様の総体だ。

-Rebutter

. . . UNOオブジェクトとはつまり何なのか?

-Hypothesizer

オブジェクト指向の用語で言うと、UNOオブジェクトは一種のクラスインスタンスだ。

-Rebutter

ああ、分かった。では、UNO拡張機能もUNOで構築されて、UNOに基づいてLibreOfficeのプログラムプロセスと相互作用するわけだな?

-Hypothesizer

そう、UNO拡張機能は、他の拡張機能ともやりとりするかもしれない。

なぜ、我々はUNO拡張機能を開発するのか?

-Rebutter

なるほど。. . . それで、なぜ、我々が、それを開発する方法を学ばなければならないのか?

-Hypothesizer

さしあたっての目的としては、ブログの記事を書いたり管理したりするのにLibreOfficeを使っているが、それをもっと便利にしたいということがある。例えば、ブログのシリーズや記事の情報をCalcスプレッドシートで管理しているが、そのスプレッドシートからシリーズの目次を作りたい。それに、記事の間にリンクを張りたい。前の記事へ、次の記事へのリンクのことだ。手作業でやってもとても大変というわけではないが、そんな機械的なことを手作業で毎回やるのは、賢くない気がする。

-Rebutter

ははあ . . .

-Hypothesizer

その一部はマクロでできるかもしれないが、マクロの機能は限られているし、正直に言って、シンタックスエラーをチェックしてくれないスクリプト言語というものは、自分は好きになれない。コンパイラーがチェックできるものを、プログラムを動かして我々がチェックしないといけない。

-Rebutter

その点は、 . . . 好き好きだが。

-Hypothesizer

もっと重要な目的としては、我々の第一目標は、物事を正当な正確さで理解し、物事を厳密かつ明示的に記述できるようになることだが、これらを真空で考えるのではなく、そのスキルを試す実験場が必要だということだ。実験場で実験をして、実験の結果を第一目標の探求に利用する。

-Rebutter

うーん、それでは、UNO拡張機能を開発する方法を、正当な正確さで理解し、理解した事を厳密かつ明示的に記述しようとするわけだ . . .

-Hypothesizer

そう。

-Rebutter

まあ、トピックが、我々の理解が正確かどうかを比較的容易に評価できるものであり、厳密かつ明示的な記述を必要とするものでもあるというメリットはある。. . . いいだろう。

-Hypothesizer

それに、スプレッドシートプログラムというのは、とても便利なツールであって、その機能を自由に拡張できれば、いろいろなことをその上でできる。情報を管理・分析できるし、クライアントユーザーインターフェースとしても使える。計算、グラフ作成、スペルチェックなどの機能が組み込まれているから、そうした機能を一から作りこむ必要がない。

Main body END

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