効率的な帳票開発の鍵はコンポーネント導入
Windowsを用いたシステム構築において、帳票印刷は細心の注意が必要なカテゴリの1つです。日本は独自の帳票文化を持っており、海外に比べ印刷物を重要なポイントとみなし、クオリティの高いものを求められます。そのため、標準で開発ツールに搭載されている帳票作成機能では、なかなか要件を満たすのが難しいというのが現状です。
対策として、グローバルスタンダードの名の下に日本独自の帳票文化を廃し、アメリカ的な印刷物にするというスタンスもあるとは思います。しかし、本当に有用な印刷物であるならば、日本的な帳票の採用を見送る必要はないと思うのです。
例えば、発注書、納品書、請求書などお客様とのデータ連携では、紙の帳票によるやりとりは除外する事はできないものですし、帳票そのものが納品物であり、お客様へのプレゼンだとも捉える事ができるでしょう。また、紙の帳票と同じくらい凝ったデザインのPDFファイルを出力したい場合もあると思います。電子化がすすんでいる今だからこそ、必要な帳票(紙、PDF)については十分に凝ったものにしたいという要望もあります。
開発ツールの標準機能では必要とされる帳票が効率的に作成できないのであれば、帳票を効率的に作成できるサードパーティ製のコンポーネントを導入すればよいのです。グレープシティのPowerToolsシリーズは、開発ツールの標準機能には存在しない、あるいは効率的に作成できない部分を肩代わりするコンポーネントを多数提供しています。もちろん帳票を効率的に作成できるコンポーネントも存在します。
ActiveReportsの特徴
グレープシティの「ActiveReports for .NET」は、Windowsアプリケーション(Windowsフォーム)、Webアプリケーション(Webフォーム)、XML Webサービスで、印刷帳票やPDF帳票などを効率的に作成するためのランタイムライセンスフリー(購入は開発環境分のみ)な.NETコンポーネントです。
ActiveReportsは高度な帳票ニーズにも対応できる製品です。これは、海外のコンポーネントでありながら日本語版開発はグレープシティで行っていたという事が大きく影響しています。しかも、2008年10月には製品所有権そのものもグレープシティに移り、機能や品質だけではなくまさに名実ともに日本産コンポーネントといってよいでしょう。
まずは、このActiveReportsのよさを知ってもらうために、簡単に利用方法を見ていきたいと思います。
ActiveReportsの簡単な使い方
では、ActiveReportsの使い勝手の良さを理解するために、簡単に帳票アプリケーションの作成手順を追ってみましょう。
(1)プロジェクトへの追加
ActiveReportsの帳票定義体の編集はVisual Studioで行います。帳票定義体を編集するために、まずはプロジェクトに新しい項目として「ActiveReports 3.0ファイル」を追加します。
(2)ActiveReportsコントロールの配置
「ActiveReports 3.0ファイル」の追加でプロジェクトに加わるファイルは、Windowsフォームと同じようにVisual Basicならば拡張子「.vb」のファイルとして生成されます。中身は「DataDynamics.ActiveReports.ActiveReport3
」を継承したクラスファイルです。そのため、拡張子こそ「.vb」ですが、IDEで開けばWindowsフォームデザイナではなく「ActiveReportsデザイナ」が表示されます。
また、[ツールボックス]ウィンドウには「ActiveReportsコントロール」が表示されます。ActiveReportsの帳票定義はこのコントロールをデザイナに配置して行います。
コントロール | 用途 |
---|---|
Label | 固定テキストを印刷します。 |
TextBox | バウンドまたはアンバウンドのフォーマット済みテキストの値を印刷します。 |
CheckBox | ブール値のON/OFFを印刷します。 |
RichTextBox | リッチテキストフォーマット(RTF)テキストを印刷します。 |
Shape | 長方形、角丸四角形または楕円形を印刷します。 |
Picture | 画像を印刷します。 |
Line | 線を印刷します。 |
PageBreak | 改ページ位置を指定します。 |
BarCode | バーコードを印刷します。 |
SubReport | 現在のレポートの一部としてリンクされたレポートオブジェクトを印刷します。 |
OleObject | OLEオブジェクトを印刷します。 |
ChartControl | グラフを描画します。 |
ReportInfo | FormatStringプロパティで指定した情報を表示します。主に現在ページや現在日付を印字するのに使用します。 |
(3)Viewerの用意
ActiveReportsの定義体だけでは画面へのプレビュー表示は行えないため、別フォームとして「Viewer」を用意しなければなりません。今回は、DataDynamics.ActiveReports.Viewer.Viewer
コントロールをツールボックスに追加し、それをWindowsフォームにドラッグ&ドロップします。
(4)帳票定義をViewerに表示するコードの記述
帳票定義体を定義したNewActiveReport1
クラスをnewしてrpt
という名前のオブジェクト変数に入れます。帳票定義体オブジェクトのDocument
プロパティをViewerのDocument
プロパティに設定します。
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Using rpt As New NewActiveReport1 Me.Viewer1.Document = rpt.Document rpt.Run() End Using End Sub
帳票定義体オブジェクトのRun
メソッドを実行します。
このように、わずかな作業で帳票アプリケーションを作成することができます。
ActiveReportsのエディションについて
開発ツールに簡単に高度な帳票作成機能を追加できるActiveReportsですが、実は「ActiveReports for .NET Professional Edition」(標準価格294,000円)と「ActiveReports for .NET Standard Edition」(標準価格126,000円)という、2つのエディションが存在しています。
Professional Editionにのみ存在する機能
これら2つのエディションは基本的には同じ機能を有していますが、Professional Editionだけで使える機能もあります。
- デザイナ生成
- PDFへの外字出力
- フォントを埋め込まないPDFファイルの出力
- PDFへの太字出力
- 1つのコントロールの中に複数の言語フォントの使用した帳票のPDF出力
- WebViewerコントロールの提供
- HTTPハンドラ
「Standard Edition + 上記7つの機能 = Professional Edition」というのが基本構成となります。
どちらのエディションを選択するべきか
どちらもランタイムライセンスフリーなので開発環境分だけライセンスを購入すればいいのですが、一体どちらのエディションを選択すれば良いのでしょう?
とりあえずフル機能が揃ったProfessional Editionを選択するのも良いですが、本当に開発に必要な機能がどれかを判断し、予算に合わせた選択を行うことは重要です。例えば、次のような要望がある場合は、Professional Editionを選択することをお勧めします。
- 帳票のデザインを実行環境で変更できるランタイムデザイナ(無償配布可能)が必要
- 紙資源節約のために多彩な表現を行ったPDFファイルを生成したい
- WebViewerコントロールによりWebフォームの一部として帳票を表示したい
- rpxファイルの追加だけでWebアプリに気軽に帳票データを追加したい
私の場合、過去に次のような要件の開発で、Professional Editionを採用しました。
- Windowsアプリケーションで、デザイナをお客様に開放し、軽微な修正はお客様自身に行って頂く形態の提案が採用されたのでProfessional Editionを採用
- Webアプリアプリケーションで「フォントを埋め込まないPDFファイルの出力」を行いたかったのでProfessional Editionを採用
このように、Professional Editionは帳票開発をサポートする非常に強力な機能を備えています。しかし、最悪なのは『Professional Editionを提案したら価格面の問題でActiveReportsの使用を見送ったが、後から聞いてみたらStandard Editionの価格であれば導入できた』というような状況でしょう。私も実際に似たような状況を経験した事があります。
後述するように両方のエディションの共通機能、つまりはStandard Editionの機能ですらもActiveReportsは魅力的な機能が揃っています。Professional Editionのみに搭載されている機能をあきらめたとしても、帳票が必要なシステム開発であれば導入をお勧めしたいコンポーネントです。
Professional Editionの特徴をお客様視点で評価
受託開発の現場では、お客様視点で考える事が重要です。そこでProfessional Edition特有の4つの機能について、開発サイドではなくお客様サイドの視点で評価してみましょう。
(1)ランタイムデザイナ
ランタイムデザイナにより、実行環境で帳票のデザインを変える事ができます。つまり、ちょっとした文面変更やデザイン変更は開発会社に発注せず、自分たちで変更するといった作業分担が可能になるわけです。少々の変更であれば仕様変更の費用をかけずに素早く対応可能です。そのような視点で考えると、Professional Editionとの価格差により生じる費用差は、すぐに回収可能なように思えます。
この機能を有効活用することで、「帳票定義については、データベース項目の印字増加を除き、印字位置の変更や固定文章の変更などは弊社でデザイン変更できるものとする」と開発委託の条件に加えることもできます。
(2)多彩なPDF出力
PDF出力における機能のエディション間の違いは、太字や複数フォントのサポートなどです。外字をサポートする必要があるかどうかが、判断のポイントとなるでしょう。
例えば、Webアプリケーションであっても、外字をサポートして正しい漢字で氏名が出力したい場合もあります。このような場合、ActiveReportsのProfessional Editionの外字機能を活用することで、テキストデータとしてブラウザに表示する事が困難でも、PDF上には正しい漢字で出力することも可能です。もし、お客様がWebだからと諦めていた機能だったとしたら、それを実現できるのはかなり魅力的だと思います。
(3)WebViewerコントロールによりWebフォームの一部に帳票表示
WebViewerコントロールを使えばWebフォームの一部にActiveReportsで作成した帳票を表示することが可能です。また、帳票表示手段もHTMLを駆使したビューワ、ActiveXによるビューワ、PDF、HTML表(RawHTML)から選ぶ事ができます。
HTMLビューワ
ViewerTypeプロパティにDataDynamics.ActiveReports.Web.ViewerType.HtmlViewer
を指定すると、WebViewerコントロールはHTMLおよびJavaScriptにレンダリングされてブラウザに送られます。これを「HTMLビューワ」と呼びます。
HTMLビューワでは帳票のページ移動と検索機能はありますが、縮小拡大表示や印刷機能は実装されていません。推奨環境はIE6またはIE7となっていますが、FireFox 3.0やIE8でも問題なく動作しているようです(※注1)。
推奨環境以外の場合、帳票の定義によっては問題が発生する可能性もあります。トライアル版などで必ず事前に確認してから、開発に着手してください。
ActiveXビューワ
ViewerTypeプロパティにDataDynamics.ActiveReports.Web.ViewerType.ActiveXViewer
を指定するとWebViewerコントロールはActiveXビューワコントロールとしてブラウザに送られます。これを「ActiveXビューワ」と呼びます(※注2)。
ActiveXビューワは帳票のページ移動、縮小拡大表示、印刷などを行うビューワです。IEなどActiveXコントロールをサポートしたブラウザ(例えばFirefoxでは使用できません)に限定されますが、ActiveXコントロール自体は自動的にブラウザにダウンロードされ、Windowsアプリケーションライクな帳票表示が実現できます。
ActiveXビューワ自体はStandard Editionにも付属しています。
Adobe Readerビューワ
ViewerTypeプロパティにDataDynamics.ActiveReports.Web.ViewerType.AcrobatReader
を指定すると、WebViewerコントロールはPDFドキュメントにレンダリングされてブラウザに送られます。これを「Adobe Readerビューワ」と呼びます。
Adobe ReaderビューワはAdobe Readerの機能そのものを使ってページ移動、拡大縮小表示、印刷などを実現しています。事前にブラウザに対応したAdobe Readerをインストールする必要はありますが、ブラウザがIEに限定されないなど実用性としてはActiveXビューワよりも高いと言えるでしょう。
RawHTMLモード
RawHTMLモードはページ移動ボタンなど操作に必要な部分を排除してより多くのブラウザに対応するモードです。改ページすらないので使う局面は限られてくるでしょう。しかし、1ページにすべてのデータが表示されるため、例えばブラウザのファイル保存などでhtmlファイルとして保存して別プログラムで解析等を行うケースや、ブラウザの印字機能で印刷したい場合などには、便利な形式です。
(4)httpハンドラでrpxファイルから指定した形式にエクスポート
httpハンドラは、rpxファイルを<a>
タグのhref
要素に指定するだけで、HTML形式やPDF形式での表示を可能にする機能です。利用する際は、「web.config」に定義をします。
この機能を活用すれば、DBの値設定などの処理を記述したrpxファイルをWebサーバに配置するだけ、というような形態のシステムも実現可能になります。
まとめ
今回はActiveReports for .NETのProfessional EditionとStandard Editionの違いに注目してみました。いかがだったでしょうか。Standard Editionでも十分に使えると思った方もいらっしゃるでしょうし、Professional Editionも思った以上に強力だと思った方もいらっしゃるでしょう。
ActiveReportsを導入することでシステムにどのような機能を追加できるのか、そしてProfessional Editionを選択した場合、さらに加味できる魅力はなにがあるか。まだ使用した事のない開発者は、まずはActiveReportsありきでシステム設計を検討し、具体的な魅力を見つけ出して頂ければと思います。