![]() ![]() |
![]() |
|
TOP
|
|
みなさんこんにちは。最近DVDの買いすぎでお金のないCalcArkプラグイン担当のTです。 CD、MD、MO、CD-ROM、CD-R、CD-RWにDVD、そしてUFOと、光る円盤には昔から弱いんです。 さて、本コーナーでは今回から数回にわたって、CalcArkのプラグインについて解説していきます。 今回は初回ということで、CalcArkのプラグインの仕組みをざっと説明したあと、実際のプラグインの中身を少しだけ覗いてみます。 プラグインの詳細な実装方法は次回以降に譲ることにして、とりあえずプラグインについての概要をつかんでいただくのが今回の目的です。 それでは、早速プラグインの世界へ入っていくことにしましょう。 そもそも「プラグイン」とは何のことでしょうか。 プラグインとは、簡単な操作でアプリケーションに組み込んだり、取り外したりすることができる「追加機能」のことです。 Just Arksの各アプリケーションは、いずれもこのプラグイン機能をサポートしています。 プラグインの技術的な仕組みなどについては、一太郎Arkのプラグイン作成講座 第1回に解説してありますので、詳しくはそちらをご覧いただくとして、ここではポイントだけまとめておきます。 プラグインとは
プラグインモジュール
プラグインの設定
プラグインがどんなものか、ざっくりとまとめました。 CalcArkの製品には、12個のプラグインモジュールに計14種類のプラグインが標準搭載されていますが、必要に応じてさらに新しいプラグインを実装することが可能です。 次項では、プラグイン実装のためのファーストステップとして、CalcArkのプラグイン内部の仕組みについて解説します。 CalcArkのプラグイン機能は、基本的には一太郎Arkのプラグイン機能をベースに設計しています。 そのうえで、新しいプラグインをより簡単に実装するための様々な工夫を施しています。 したがって、すでに一太郎Arkでプラグインを自作したことがある方にも、CalcArkではじめてプラグインを実装する方にも、比較的容易に取り組んでいただけるはずです。 それでは、CalcArkの内部的な構造について見ていきましょう。 プラグインの内部構成 図2は、今回ArkSiteよりダウンロード提供しているプラグインや、次回以降に提供予定のプラグインのうち、3つのプラグイン(オートサムプラグイン、サンプルワークシート関数プラグイン、サンプルソート方法プラグイン)を元にした、CalcArkプラグインのクラス図です。 ![]() 【図2】CalcArkプラグインクラス図 インターフェイスや抽象クラスがたくさんあってかなり複雑そうですが、よく見てください。 下のほうにある水色の線より上のクラスは、すべてCalcArk本体に含まれており、線より下のクラスだけが各プラグインモジュールに含まれています。 このことは、プラグインに必要な処理のほとんどは本体のほうに吸収されており、各プラグインで実装するべき内容が少ないことを表しています。 では次に、各クラスの役割について見ていきましょう。 抽象クラス:ChocoPlugin このクラスは、すべてのCalcArkプラグインに共通する抽象クラスです。CalcArkプラグインは、このクラスの派生クラスとして実装する必要があります。 一太郎ArkのプラグインではArkPluginに相当するクラスで、ほぼ同等の内容をもっています。 (ArkPluginについては、一太郎Arkのプラグイン作成講座 第2回を参照ください。) 抽象クラス:BasicPlugin このクラスは、プラグインの基本的な挙動を担うための抽象クラスです。 ほとんどのプラグインにとって必要な処理を、個別に実装する必要がないよう吸収するために用意しました。 現状は、リソースの登録・抹消に関わる処理を担っています。 したがって、少なくともこのクラスの派生でプラグインを実装すれば、リソースに関する手続きを実装する手間が省けます。 (プラグインのリソースについては、一太郎Arkのプラグイン作成講座 第2回を参照ください。) プラグインインターフェイス CalcArkプラグインでは、プラグインの種類ごとにインターフェイスを用意しており、そのインターフェイスを実装することで同種のプラグインを作成できるようになっています。 UIPlugin このインターフェイスは、実装するとプルダウンメニューの[ツール]以下にメニュー項目を追加することができます。 ArkSiteからダウンロードできる「オートサムプラグイン」はこのインターフェイスを実装しています。 一太郎Arkにも用意されており、内容もほぼ同等です。 FunctionPlugin このインターフェイスは、関数プラグインを実装するためのものです。 製品に搭載されている「組み込みワークシート関数プラグイン」や、ArkSiteからダウンロード提供する予定の「サンプルワークシート関数プラグイン」は、このインターフェイスを実装しています。 「サンプルワークシート関数プラグイン」の実装方法については、次回以降に詳しく説明する予定です。 SortMethod このインターフェイスは、ソート方法を実装するためのものです。 製品に搭載されている「日本語辞書順ソートプラグイン」や、ArkSiteからダウンロード提供する予定の「サンプルソート方法プラグイン」は、このインターフェイスを実装しています。 「サンプルソート方法プラグイン」の実装方法については、次回以降に詳しく説明する予定です。 なお、CalcArkにはこの3種類のほかにも様々なプラグインインターフェイスを用意しています。それらについては、また機会があればご紹介します。 各インターフェイス用の抽象クラス プラグインインターフェイスごとに、共通で必要な処理を吸収する抽象クラスも用意しています。 これらの抽象クラスを派生して実装することで、各プラグイン具象クラスの実装がより容易になります。 AbstractUIPlugin UIプラグイン用の抽象クラスです。 プラグインの使用開始・使用停止のタイミングに、UIプラグイン自身を登録・抹消する処理を実装しています。 AbstractOptionalFunctionPlugin 関数プラグイン用の抽象クラスです。 このクラスの派生で関数プラグインを実装すれば、図3のように、「プラグインのプロパティ」ダイアログに、このプラグインに実装した関数の一覧を表示することができます。 ![]() 【図3】組み込みワークシート関数プラグインのプロパティダイアログ AbstractSortMethodPlugin ソート方法プラグイン用の抽象クラスです。 プラグインの使用開始・使用停止のタイミングに、実装したソート方法を登録・抹消する処理を実装しています。 各プラグインの具象クラス AutoSumPlugin/SampleFunctionPlugin/SampleSortPlugin これらは、各プラグインモジュールに実装するプラグイン具象クラスです。 これがプラグインの本体になります。 まとめ
つづいては、実際のプラグインモジュールの中身を少しだけ覗いてみることにしましょう。 この項では、今回ArkSiteよりダウンロード提供を開始したオートサムプラグインを例に、プラグインの実装をさわりだけ見てみます。 オートサムプラグインとは 集計関連の関数を自動入力する便利なプラグインです。文字通り、表計算ソフトでお馴染みの「オートサム」機能相当の役割をします。 プルダウンメニューの[ツール]に[オートサム]が追加され、カスケードで5つのメニュー[合計/平均/最大値/最小値/データの個数]が出ます。 各メニューを選択すると、カレントセルを基準に集計対象範囲を自動的に判定して、関数を入力してくれます。 それでは、プラグイン本体のソースファイルであるAutoSumPlugin.javaを見てみましょう。 (注。抜粋しているソースの行番号は、必ずしもダウンロードされたソースファイルの行番号と一致しているわけではありません。)
このプラグインはCalcArk本体にメニューを追加するプラグインなので、UIプラグインとして実装しています。 8行目にあるように、UIプラグイン用の抽象クラスAbstractUIPluginの派生クラスとし、必要なメソッドをオーバライドするかたちで実装しています。 まず注目したいのは、ChocoPluginに定義されている、プラグインの基本動作(初期化、使用開始、使用停止、破棄)に関するメソッドについては何も記述していない点です。これらはすべて、スーパークラスの実装を利用しているためです。 29行目getActionsと34行目getMenuItemはインターフェイスUIPluginのメソッドで、このプラグインに固有の処理を実装しています。 このプラグインは、それなりに複雑な動作をするプラグインですが、プラグイン本体クラスの記述量は意外に少ないと思われたかもしれません。 繰り返しになりますが、抽象クラスを利用することで、必要最低限の記述だけで実装しているためです。 ここではこのプラグインについてのこれ以上詳しい説明は省きます。メニューを追加するUIプラグインの詳細については一太郎Arkのプラグイン作成講座 第3回をご覧下さい。 以上、第1回では、CalcArkプラグインの概要について説明してきましたが、いかがでしたか。 次回以降は、具体的なプラグインの実装方法について詳しく見ていきます。 プラグインは応用次第で便利な機能を追加できるので、この連載記事を参考に、是非自作プラグインにチャレンジしてみてください。
|
|||||||||||||||||||||||||||||||||||
|
TOP
|
||
|
|
||