初めに
Eclipse のBusiness Intelligence and Reporting Tools (BIRT)プロジェクトは、一般的なEclipse IDEをベースとした、Java/J2EE環境で帳票の作成と配布に使用するオープンソースプロジェクトです。以下にあげる主要機能のダウンロードは、プロジェクトサイトから行うことができます。
- BIRTデザイナ - レポート作成に使用します
- Webビューア - レポートのデプロイに使用するJ2EEアプリケーションのサンプルや、既存のWebアプリケーションに簡単に統合するためのJSPのタグライブラリが含まれています
- BIRT Chartingパッケージ - 高機能で実用的なチャートの作成をサポートします
BIRTプロジェクトは2005年夏に最初のメジャーリリースをし、累計100万以上のダウンロードになりました。BIRTプロジェクトについてより詳細を知りたければ、http://www.eclipse.org/birt (サイト・英語)を参照してください。BIRTの紹介、チュートリアル、ダウンロード、BIRTを使用したサンプルなどがあります。
まず最初に、レポートのデザインを作成するのに利用するBIRTデザイナーの説明から始め、設計物のデプロイや完成したレポートの生成に利用するBIRTビューアの実例に関する説明で終わりたいと思います。
BIRT 2.2 のコラージュ
BIRTデザイナー
BIRTの中心は、レポートデザイナです。それは、デザイナーパースペクティブを利用し、レポートのデザインがドラッグ&ドロップで素早く作成できる、Eclipseプラグインのセットで構成されています。そのレポートはXMLフォーマットで作成/保存されます。
図1 - Eclipse BIRT デザイナー
このEclipseパースペクティブは、レポートを作成するための機能を提供する多くのEclipseビューで構成されています。それらのビューに関しては、以下で説明します。
レポートエディタ
レポートエディタは、レポートの作成やレポート要素の位置決めやフォーマット設定のための作業場として利用します。このビューの中には、Layout、Master Page、Script、XML Source、Previewのタブがあります。
- Layoutタブは、レポートの視覚的なレイアウトとして利用し、ドラッグ&ドロップの機能をサポートしています。
- Master Pageタブは、ヘッダ、フッタ、レポート全体の背景イメージの設定に利用します。例えば、このページに会社のヘッダーを配置するのによく利用します。
- Script タブは、JavaScriptエディタのアクセスが可能です。BIRTでは、JavaまたはJavaScriptで書かれたハンドラが利用可能なイベントモデルをサポートしています。これらのハンドラは、生成とレンダリングプロセスを通して呼ばれ、フォントの色、データの値といったレポートプロパティの変更や外部コードの呼び出しを可能とします。
- XML Sourceタブは、レポートデザインのXMLソースコードを表示します。このタブで、直接XMLを編集することは可能ですが、通常はLayout ビューを使うことが好ましいです。
- Preview タブは、作業中のレポートをHTMLに描画したものをレポート開発者が素早く見ることができます。さらに、ツールバーから他のフォーマットでのレポートのプレビューもできます。
図2 - BIRTプレビュー
データエクスプローラ
通常、レポートを作成する前にデータソースを準備する必要があります。この作業を支援するために、BIRTではデータエクスプローラービューが提供されています。
図3 - データエクスプローラービュー
このEclipseビューでは、デザイナーがレポートをデザインするためのデータソースとデータセットが追加できます。原則として、データソースは単に接続情報です。データセットは、実行したクエリーを通じて指定したカラムを返します。
BIRT では、JDBCドライバ、XML、フラットなファイル、スクリプトデータソースが使用できます。BIRT 2.2では、Webサービスのデータソースや、フラットファイルドライバに機能が追加され、CSV、TSV、SSV、PSVのファイル形式もサポートしています。
BIRT ではさらに、既存のデータセットの内部結合や外部結合が可能な、ジョイントデータセットと呼ばれる特殊なデータセットも提供しています。この機能は、異なるデータソースからデータセットを結合したいときに非常に便利です。さらに、BIRTのデータソースは、レポートの接続証明を共有できるようにするために、接続プロファイルのリンクまたはインポートの機能をサポートしています。
レポートパラメータとデータキューブを追加するときにも、データエクスプローラビューを使用します。レポートパラメータは、レポートを利用するエンドユーザーに公開されているもので、通常はユーザーがレポートをカスタマイズするために利用します。レポートパラメータの例として、クエリーを変更するためにデータセットパラメータを紐づけたり、BIRT のJavaScript拡張機能を利用して、レポート要素のスタイルや見栄えを変更したり、選択された出力フォーマットをベースとし内容をパーソナライズするためのスクリプトイベントで利用するといったことができます。
レポートパラメータは、静的、動的どちらでも可能です。静的なパラメータの場合は、ユーザーが事前定義された値から選択するか、テキストボックスなどに入力した所定の値を利用することができます。動的パラメータの場合は、既存のBIRTデータセットに紐づけられたデータをパラメータとすることができます。例えば、ユーザーがデータセットから取得した顧客リストから選んだ顧客を利用したりします。
加えて、BIRTは複数のリスト/コンボボックスで、選択した値に応じて次のリストの内容が変更する選択リストを表示するといった、カスケードパラメータもサポートしています。例えば、最初のリストボックスに表示した顧客が注文したものをリストボックスに表示するといったカスケードパラメータが可能です。
図4 - カスケードパラメータ
BIRT 2.2では、動的パラメータは、display textやパラメータの値に対して、Java Scriptの表記をサポートしています。この改良は、パラメータリストをより論理的な方法でユーザーに見せることができます。例えば、注文明細のレポートを開発しているときに、全ての注文に関する動的なパラメータリストを表示したいとします。その表記によって個々の注文に対する顧客名を追加することができます。図5は、動的パラメータリストの画面です。
図5 - ダイナミックパラメータの表記
データエクスプローラビューでも、データキューブの作成が可能です。これは、BIRT 2.2の新機能であり、新たなクロスタブレポートエレメントと一緒に結合して利用することができます。BIRTのデータキューブは多次元キューブであり、 1つ以上のBIRTデータセットをベースとして、新しいクロスタブキューブビルダーを利用して構築されます。より詳しい内容は、パレットビューの項目を参照してください。
図6 - クロスタブキューブビルダー
上記の特徴に加えて、現在BIRTでは、Java開発者がさらなるデータソースを作ることができるように、新たな2つのプロジェクトタイプを提供しています。これらのデータソースは、Eclipse Data Tools Platform (DTP)プロジェクトにより提供されているOpen Data Access (ODA)フレームワークをベースとしています。まず、ODAデザイナープラグインプロジェクトは、レポートデザイナーが対象となるドライバーを使用するときに呼ばれるGUIを構成する際に使用するものです。次に、ODAランタイムドライバープラグインプロジェクトは、ドライバーのランタイム部分を開発するときに使用するものです。通常、このプラグインは実行環境にデプロイされ、データソースの呼び出しや結果を返す役割を担います。
図7 - BIRTプロジェクト
パレット
BIRT パレットビューは、レポートアイテムをレポートキャンバスに加えるのに使用します。パレットビューは、データエクスプローラビューで集計されたデータを表示するためのレポートエレメントも含まれています。レポートを使用する際は、パレットビューで選んだものをレポートエディタにドラッグするだけです。 BIRTのレポートエレメント全てが、プロパティエディタビューで設定することが可能で、BIRT Report Object Model (ROM)によって記述されています。
図8 - パレットビュー
パレットでは、以下のレポートアイテムをサポートしています。
- ラベル要素は、静的なテキストを表示するのに使用します。通常のレポートエレメントと同じく、ローカライズのために外だしが可能で、ハイパーリンク、フォントサイズ、ハイライトといったものがサポートされています。
- テキストエレメントはラベルと似ていますが、さらに便利な点としてマルチライン表示や高度なHTMLフォーマットをサポートしています。既存のデータセット、パラメータ、JavaScriptの関数、BIRT特有のスクリプト関数からの値をBIRT Expression Builderを使用して整形したHTMLに挿入することができます。このエレメントは、タグを利用することでクライアント側で実行されるスクリプトを作成するために使用することもできます。
- ダイナミックテキストエレメントは、ほとんどの場合がCLOBデータ型の値を表示する目的で使用します。これらの値は、BIRT Expression Builderを使用し、追加データと結合することもできます。
- データエレメントは、データソースからの値を表示するために必要なエレメントです。Expression Builderを使用すると、データの値の変更や操作ができます。例えば、データセットにfirst nameとlast nameというカラムがある場合、expression builderを使用し、それらの値を下記の例のように結合して1つのデータ要素とすることができます。
dataSetRow["contactLastName"] + ", " + dataSetRow["contactFirstName"]
- イメージエレメントは、レポート出力に画像を含めるために利用します。BIRTでは、URL先のイメージ取得や、デザインの中へのイメージ、データソースからの動的イメージ(BLOB)、リソースフォルダ内のイメージファイルのはめ込みをサポートしています。
- グリッドエレメントは、他のレポートエレメントのコンテナとしての役割を果たし、論理的な形式のエレメント配置に利用します。グリッドエレメントは、表形式で設定します。例えば、レポートで商品の売上を表示し、表データの右にチャートグラフを表示したいなら、1行2列のグリッドエレメントを追加すればよいでしょう。
- リストエレメントは、他のエレメントに対するコンテナとしての働きも持ちます。リストエレメントは、リストに紐づいたデータセットを繰り返すという点で他のコンテナエレメントとは異なります。デフォルトのリストエレメントにはヘッダ、フッタ、明細部で構成されています。リストが与えられると、通常、ヘッダとフッタは一度表示され、明細部にはリストに紐づいたデータセットの各行が表示されます。明細部の中には、テキストエレメントや、グリッド・テーブルなどその他のコンテナエレメントを含めることができます。
- テーブルエレメントは、データセットを繰り返すコンテナエレメントという点でリストエレメントと似ていますが、表形式で表示される点で異なります。テーブルエレメントのレイアウトは、HTMLのtableと似ています。テーブルエレメントは、ヘッダ、フッタ、カラムとして明細部を持ちます。
- アグリゲーションエレメントはBIRT 2.2の新機能で、Aggregation Builderを使用しレポートを集約した結果を追加する機能を持ちます。Aggregation Builderは、SUM, MIN, MAX, and AVERAGEといった25以上のファンクションを提供します。
図9 - アグリゲーションエレメント
- チャートエレメントにより、レポートデザインにチャートを挿入することができます。チャートエレメントをレポートエディタ上に配置すると、Chart Builder Wizardが自動的に表示されます。このウィザードはチャートのデザインのために使用し、3つのデザインタブ(チャートタイプの選択、データの選択、チャートのフォーマット)を持ちます。BIRT 2.2では、13の主要なチャートタイプと、サブタイプとの多くの組み合わせが利用できます。Chart Builderでは、ドラッグ&ドロップ機能、チャートのプレビュー、データのフィルタリング、パラメータ設定を提供しています。チャートエレメントは、 PNG、JGP、BMP、SVG出力での表示が可能で、ドリル機能、ハイライト、切り替え表示、クライアント側のスクリプトなどを提供します。
図10 - チャートウィザード
- クロスタブエレメントもBIRT 2.2の新機能で、BIRTのデータキューブを持つデータを表示するために使用することができます。BIRTの前のバージョンでは、設計時点でテーブルエレメントの列数を決定する必要がありましたが、新たなクロスタブエレメントでは、行と列の数を動的に設定することができます。このエレメントは、表示データの階層的な集計、キューブデータの面の行と列へ配置、任意の箇所で表示されるデータの測定もサポートしています。
図11 - BIRTクロスタブエレメント
ライブラリエクスプローラ
ライブラリエクスプローラビューは、既存のレポートライブラリから現在のレポートへのドラッグ&ドロップが可能です。BIRTのライブラリは、他のレポートに利用可能な、効果的なレポートXMLの形になっています。これらのライブラリは、それらを利用するレポートから参照されます。つまり、ライブラリの変更がそれを使用しているレポート全てに対し自動的に反映されるということです。レポートライブラリを使用した良い例として、会社のロゴを保持するためにレポートライブラリを使用することです。会社のロゴが変わったらライブラリだけを更新すれば良く、それを参照しているレポートを変更する必要はありません。ライブラリは、設計時にはデザイナ、実行時にはWebビューアのweb.xmlによって設定可能なリソースフォルダを比較参照します。
図12 - ライブラリエクスプローラ
プロパティエディタ
プロパティエディタビューは、レポートに追加されたレポートエレメントのプロパティを設定するために使用されます。レポートエディタで選択されているレポートエレメントの内容が、プロパティエディタに表示されます。Properties の画面には、スタイル、幅、フォント情報といった共通設定があります。加えて、ほとんどのレポートエレメントにはコンテンツを動的に隠すことのできる visibilityのプロパティをサポートしています。Properties タブ以外には、Sorting、Groups、Map、Highlights、Filtersタブがあります。
これらの機能のほとんどが見ればすぐ分かるものなのですが、Mapタブではレポートエレメントに表示される値の動的な変更を(Januaryを使用して)設定するために、動的な条件設定が可能となっています。例えば、monthの値が「1」ならば、「January」と表示したいときなどに使用します。
Highlights タブでは、売上の少ないものは赤で表示するといった異なるスタイル形式を動的に適用するための条件を設定します。これらの機能のほとんどが、複数条件もしくはアイテムにキーを設定します。ある条件はフォントカラーを変え、別の条件はフォントサイズを変えるかもしれません。あるソートキーはアルファベット順に結果を表示し、別のソートキーは「Jones」をリストの最上位に置くといったことが可能です。
図13 - プロパティエディタ
さらにBIRT 2.2では、ハイライトを適用する際、レポート開発者は手動でスタイルのプロパティをセットする代わりに、スタイルを指定することができます。
図14 - スタイルのハイライト
アウトライン
アウトラインビューでは、レポートデザインの階層をグラフィカルに表示し、レポートエレメントとコンテナとの関係を示します。レポートエレメントをアウトラインビューの中で直接選択することができるので、複雑なレポートデザインの時には非常に便利です。さらにBIRT 2.2では、このビューからインポートや外部スタイルのリンク、イベントハンドラのスクリプトを実装したレポートエレメントを見るといったことが可能です。
図15 - アウトラインビュー
スタイルシートのインポートでは、スタイルの値をレポートのXMLにコピーします。外部スタイルシートを利用することで、BIRTのリソースフォルダに置いたスタイルシートとリンク付けることが可能です。
雑多なもの
BIRT 2.2では、新たに2つのサンプルが追加されています。1つがレポートの例で、もう1つがJavaのコードで作られたチャートの例です。Javaアプリケーションでチャートエンジンを使用する際の参考となります。
図16 - サンプルビュー
Eclipse BIRT Webビューア
レポートの開発が完了したら、BIRTのWebビューアを使用してデプロイすることができます。このビューアは、BIRT 2.2で改良されており、レポート内容の生成と描画にBIRTエンジンを使用しているAJAXベースのJ2EEアプリケーションです。
Webビューアの概要
Web ビューアでは、レポートの生成と表示に加えて、目次の表示、テーブルコンテンツの複数フォーマットでのエクスポート、クライアントとサーバーサイドでのプリント、レポートのページ決めといったインタラクティブな機能もサポートしています。これらの機能は、ビューアナビゲーションとツールバーを使用して実現可能です。ビューアを使用した例を下に示します。
図17 - Webビューアの例
ツールバー
ビューアツールバーには、目次の表示、レポートの再表示、データのエクスポート、レポートから他のフォーマットへのエクスポート、クライアントとサーバーサイドの印刷のアイコンがあります。目次はレポートデザインをベースとして自動的に生成されます。また、レポートのグループセクションを変更することでカスタマイズ可能です。例示しているビューアから目次にアクセスするには、 アイコンを選択します。
図18 - 目次の表示例
ツールバーでは、既存のレポートを再表示するためのアイコンも提供しています。これは、ユーザーがレポートを生成するために利用するパラメータセットを変更しようと思ったときに便利な機能です。この機能を利用するには アイコンを選択します。
図19 - カスケードパラメータを含むレポートパラメータダイアログの例
2.2では、新たにデータエクスポートダイアログが改善されています。このダイアログは、 アイコンを選択することで利用可能です。
図20 - データエクスポートダイアログ
利用可能な結果セットに対し、レポートのコントロールに紐づく全てのデータがドロップダウンリストで表示されます。これらの結果セットには、BIRTのデータセットではなくデータコンテナに紐づけられた列を含んでおり、通常、そのコンテナはデータセットから取得されます。利用可能な列は左のリストボックスに表示されており、ダイアログにはエクスポート対象となるカラムを選択するための機能があります。このデータエクスポートでのデリミタが改善され、タブ、セミコロン、コロン、縦線といった付加的なデリミタもサポートされました。さらに、ユーザー指定のエンコードを使用したデータエクスポートもサポートしています。
このビューアでは、追加フォーマットによるレポートのエクスポートもサポートしています。エキスポートダイアログを使用してエクスポートを行うには、 アイコンを選択してアクセスすることができます。
図21 - エクスポートレポートダイアログの例
このダイアログで、レポート利用者はWord、PowerPoint、PDF、PostScript、XLSフォーマットでのレポートのエクスポートが可能です。さらには、ユーザーはエクスポートの範囲として全ページか指定したページかを選択することができます。
BIRTでのクライアントサイドの印刷は、ユーザーが アイコンを選択すると、レポートがPDFフォーマットに変換されビューアに表示されます。ユーザーは標準的なPDF機能を使用し、レポートの印刷か保存を行うことができます。
図22 - クライアント側の印刷の例
2.2のビューアのサンプルには、サーバーサイドの印刷機能もあります。この機能は、web.xmlに以下の設定をすることで使用不可にすることができます。
<context-param>
<param-name>BIRT_VIEWER_PRINT_SERVERSIDE</param-name>
<param-value>OFF</param-value>
</context-param>
サーバーサイドの印刷は アイコンを選択することで利用することができます。
図23 - サーバーサイドの印刷ダイアログの例
このダイアログでは、レポートの印刷方法における様々な設定だけでなく、利用可能な複数のプリンターサーバーのリスト表示も可能です。
ビューアナビゲーションバー
複数ページのレポートを表示する際にビューアーナビゲーションバーを使用します。ページ数は、レポートエレメントとグループのpage-breakプロパティによって決められます。これらのプロパティは、ページ区切りの前後、もしくは出力されるHTMLにページ区切りを挿入する前に何行単位で処理するかをコンテナエレメントに指定し、そのページ区切り間隔を利用するといったシンプルなものです。サーブレットマッピングのフレームセットとしてビューアを使用する際は、ビューアのデフォルトビヘイビアを最初のページをロードするようにし、ナビゲーションバーコントロールを有効にします。ナビゲーションバーは、ページ番号を直接入力してロードするだけでなく、前ページや次ページへの制御も含まれています。
Webビューアデプロイメントウィザード
Web Tools Platform プロジェクト(WTP)の一部とすることで、BIRT 2.2ではWebプロジェクトを提供します。このプロジェクトタイプでは、選択したアプリケーションサーバーに対しビューアを自動的にデプロイします。加えて、新たなBIRTタグライブラリもデプロイされます。このプロジェクトタイプを利用するためには、新規プロジェクトを選択し、Business Intelligence and Reporting ToolsカテゴリのWeb Projectを選択します。
図24 - Webプロジェクト
Webビューアタグライブラリ
現在、Webビューアはビューアの振る舞いをカスタマイズするために使用することができるタグライブラリを含んでいます。このタグライブラリは、普通にビューアをデプロイするか、BIRTのWebデプロイメントプロジェクトウィザードを使用することで、デプロイが可能です。加えて、もしあるコンテキストにBIRTのデプロイをし、別のコンテキストにタグライブラリを含めたいのであれば、birt.tldファイルを WEB-INF\tlds ディレクトリにコピーし、Viewer libs ディレクトリから新たなcontext/web-inf/lib ディレクトリへcoreapi.jar、modelapi.jar、viewerservlets.jar、 com.ibm.icu_3.6.1v20070417.jarファイルをコピーすることで可能となります。加えて、以下の記述をweb.xmlに追加します。
<jsp-config>
<taglib>
<taglib-uri>/birt.tld</taglib-uri>
<taglib-location>/WEB-INF/tlds/birt.tld<
/taglib-location>
</taglib>
</jsp-config>
このアプローチを使用することで、レポートは新たなコンテキストではないBIRTビューアに関連づけられ、参照することができます。
ビューアのタグライブラリは、param、paramDef、parameterPage、report、viewer の5つのタグを持ちます。各々のタグには、ビューアの振る舞いを制御する複数のアトリビュートがあります。
図25 - BIRTタグライブラリ
まとめ
この記事では、BIRT 2.2の新機能についていくつか紹介しました。より詳しい内容を知りたければ、BIRTのWebサイトか、BIRT のニュースグループ(ユーザー登録が必要です)(サイト・英語)を参照してください。
原文はこちらです:http://www.infoq.com/articles/birt2-intro
(このArticleは2007年12月20日に原文が掲載されました)