コードを記述することなしにデータを表やグラフとして出力できる帳票ツール「Elixir Report」

 さまざまなデータをドキュメント化するに当たって、面倒なのがデータを表やグラフといった形に整形する作業だ。特に印刷に向けたPDFなどを作成する場合、そのジェネレータ側で図や表のレイアウトなどを細かく制御する必要がある。そこで活用したいのが、図表のレイアウトや出力機能を持つツールだ。これらは帳票ツールなどとも呼ばれており、既存のシステムと組み合わせることで容易にデータのドキュメント化を実現できる。今回はドキュメントのデザインから出力までをカバーするツール「Elixir Report」を紹介する。

ドキュメントのデザインおよび生成機能を持つ「Elixir Report」

 「データベース内に格納されているデータをどう表示するか」というのは、多くのアプリケーションにおける課題の1つだ。近年ではWebブラウザをデータ出力先として使用するアプリケーションも多く、それを支援するフレームワークやライブラリを活用すれば、比較的容易にグラフィカルなデータ出力が可能となる。いっぽうで、紙での出力を行いたい場合はやや面倒だ。たとえばHTMLは生成が容易であるものの印刷についてほとんど考慮されておらず、ページングを考慮したレイアウトやデザインには向いていない。印刷に適した汎用ファイルフォーマットとしてはPDFがあるが、PDFは複雑なフォーマットであり、PDF出力機能を独自に実装するのは大きな手間がかかる。

 こうしたPDF出力機能が必要となった場合に検討したいのが、専用のドキュメント生成ツールだ。特に表やグラフ形式の出力を行うツールは「帳票ツール」と呼ばれており、今回紹介する「Elixir Report」も、このような帳票ツールの1つだ。

 Elixir ReportはJavaで実装されている帳票ツールで、ドキュメントをデザインする「レポートデザイナ」と、デザインしたドキュメントをPDFなどの形式で出力するレポートサーバーから構成されている(図1)。

図1 Elixir Reportの概要
図1 Elixir Reportの概要

 これらを利用することで、アプリケーションにPDFやPowerPointなどさまざまな形式のドキュメント出力機能を実装できる。また、レポートサーバーではHTTPベースのAPIも用意されており、Java以外の言語で実装されているアプリケーションからもその機能を利用可能だ。

データソースの管理やデザインを行う「レポートデザイナ」

 Elixir Reportでは出力するドキュメントを「レポート」と呼ぶ。このレポートの作成を行うツールがレポートデザイナだ(図2)。

図2 Elixir Reportのレポートデザイナ
図2 Elixir Reportのレポートデザイナ

 レポートデザイナは開発者のPC上で動作するスタンドアロンなデスクトップアプリケーションだ。レポートの視覚的なデザインを行うだけでなく、データベースや各種ファイルなどのデータソースを管理したり、レポート内の表やグラフといった要素とデータソースを関連付ける作業もここで行う。そのほか、データベースへの接続管理やデータの暗号化といった設定などもレポートデザイナで行うことになる。

 レポートデザイナでの作業はすべてGUIで行え、基本的な作業についてはコードを一切記述することなく行える。また、指示に従って操作を行うだけで基本的なレイアウトやデータソース設定を行えるウィザード機能も用意されている。

実際のレポート出力を行う「レポートサーバー」

 レポートサーバーは、レポートデザイナで作成したレポートを実際に生成するためのサーバーアプリケーションだ。レポートサーバーは通常は単体のサーバー、もしくはレポート生成機能を必要とするアプリケーションが稼動するサーバー上などで実行させることになる。

 レポートサーバーは独自のレポートサーバーAPIを備えており、アプリケーションはこのAPIを利用してレポートを生成できる。レポートサーバーAPIはJavaライブラリとして提供されているほか、HTTP(REST)でのアクセスも可能だ。また、定期的にレポートの出力や各種処理を実行するスケジューラ機能も用意されている。

 レポートサーバーではWebブラウザを使って各種設定や管理作業を行えるWebインターフェイスが用意されており、サーバーの設定・管理作業のほとんどはGUIで行える(図3)。

図3 レポートサーバーのWebインターフェイス
図3 レポートサーバーのWebインターフェイス

Elixir Reportで利用できるデータソース

 Elixir Reportではドキュメント生成に使用するデータを「データソース」と呼び、さまざまなものをデータソースとして利用できる(表1)。

表1 Elixir Reportでサポートされているデータソース
データソース名対象とするデータなど
JDBCJDBC(Javaで広く使われているデータベースアクセスインターフェイス)に対応するデータベース内のデータ
ExcelMicrosoft Excel(XLSおよびXSLX形式)ファイル内のデータ
テキストCSVやTSVといったテキストベースのファイル内のデータ
XMLXMLファイル内のデータ
コンポジットデータソースデータソースを組み合わせたり、集計や加工を行って使用する
オブジェクトデータソースJavaオブジェクト内のデータ
表形式レポートデザイナ内で作成された表形式のデータ
ランダム指定されたフォーマットに従ってランダムなデータを生成して使用する
キャッシュ指定されたデータソースをキャッシュして使用する
プロパティレポートデザイナ内で作成された表形式のデータ。コンポジットデータソースと組み合わせて使用する
リファレンス別のデータソースを参照する

 たとえばデータソースとしてJDBCを使用することで、MySQLなどのデータベース内に格納されているデータから直接レポートを生成できる。MySQLだけでなく、JDBCが提供されているデータベースであればどのようなデータベースでも利用が可能だ。また、テキストファイルやExcel形式のファイル、XMLファイルなどに格納されているデータもデータソースとして利用できる。この場合、リモートにあるファイルにHTTPやFTPでアクセスすることも可能だ。

 任意のJavaオブジェクトをデータソースとして利用したり、レポートデザイナ内で表形式のデータを入力してデータソースとして利用することもできる。さらに、コンポジットデータソース機能を利用することで、これら複数のデータソースを組み合わせたり、データのソートや連結などの加工を行った上でデータソースとして利用できる。

Elixir Reportで出力できるレポート形式と出力要素

 Elixir ReportではPDFだけでなく、独自の形式である「GLINT」やExcel(.xls)、CSV、HTML、PowerPoint(.ppt)、XML、各種画像、SVGといった形式での出力にも対応している。プリンタが利用できる環境であれば、直接レポートをプリントすることもできる(表2)。

表2 Elixir Reportで出力できるレポート形式
形式説明
PDF汎用的なPDF形式
GLINTElixir Report独自のベクタ画像形式
XLSMicrosoft Excelで使われているファイル形式
CSVデータのみをカンマ区切り/タブ区切りテキストで出力する
HTML表などをHTML形式で出力する
PPTMicrosoft PowerPointで使われているファイル形式
XMLデータのみをXML形式で出力する
イメージレポートをJPEG/PNG/BMP/WBMP形式で出力する
SVGSVG形式ファイルとそれを表示するHTMLファイルを出力する
印刷レポートを直接プリンタに出力する

 また、テキストや表だけでなく、画像を出力したり、データを元にグラフ(チャート)やバーコードを作成して描画することも可能だ。直線や図形といった装飾要素を追加することもできる。ただし、CSVやXML、HTML形式での出力の場合は画像やグラフ、バーコードといった要素は出力できない。

Elixir Reportの動作環境

 Elixir ReportはJavaで実装されており、多くの環境で利用できる。公式にサポートされているのは、Windows XP/Vista/7/8/8.1/10、Windows Server 2003/2008(R2含む)/2012(R2含む)、Solaris 9/10/11、AIX 5.3/6.1/7.1、Red Hat Enterprise Linux AS 4.0/5.x/6.xだ。WindowsおよびRed Hat Enterprise Linuxについてはx86およびx64の両アーキテクチャがサポートされる。

 なお、レポートデザイナとレポートサーバーは異なるOS環境上でも利用できる。たとえばWindows上でレポートデザイナを使用してデザインし、サーバーはLinuxを使う、ということももちろん可能である。