Features
Introduction
ThinReports は Ruby はもちろん、 Ruby on Rails のような Ruby 製のフレームワークで利用可能な帳票機能と、 それを実現する上で必要なさまざまなツールを提供するオープンソースソフトウェアです。
Supported Format
ThinReports は、以下の帳票出力形式に対応しています。
電子文書のデファクトスタンダードと言っても過言でないほど、世界中に普及している文書フォーマットです。 ThinReports がビルトインしている IPA Font と Sans-Serif/Serif/Monospace の各指定欧文フォントを使用することにより、日本語を含めたテキストを正確に出力することができます。また、PDFのセキュリティ設定も可能です。
Tools
ThinReports は、GUI上で帳票レイアウトを作成・編集できる 専用レイアウトエディタ ThinReports Editor と Ruby プログラムからレイアウトを操作する 専用ライブラリ ThinReports Generator を提供します。
Mechanism
ThinReports による帳票機能は、以下のような仕組みで動作します ( Rails 等を使ったWebアプリケーションの場合)
- Editor で帳票レイアウトを作成し、アプリケーションが動作するサーバ上の任意の場所へ配置
- アプリケーションへ Generator を使った帳票出力プログラムを記述。 この時 Generator から作成したレイアウトを読み込み、DB等の動的データを埋め込んだり、 レイアウトのスタイルを編集するプログラムを記述。
- クライアントから帳票の要求があると、上記処理が実行され PDF 形式の帳票ファイルが返却される。 帳票ファイルを返却せず、サーバ上にファイルを生成することも可能。
Why use ThinReports?
Webアプリケーションにおける帳票開発は、多くの課題を抱えています。
ThinReports は、その中でも特に Ruby における帳票開発の課題を解決するために開発されました。
Ruby on Rails 等によるWebアプリケーションの帳票開発を考えた場合、以下のような問題が挙げられます。
そして ThinReports は、これらの問題を解決するソリューションです。
- No solution
- そもそも Ruby で利用でき、かつ業務システムへの適用にも耐えうる帳票ソリューションは非常に少ない状況です。 さらに Pure Ruby で考えると皆無と言わざるを得ません。これは、帳票を必要とするシーンへの Ruby 適用を妨げる一因になっています。 ThinReports は帳票出力形式のデファクトスタンダードとも言える PDF 出力に対応し、より一層 Ruby による帳票開発適用を促進します。
- Not simple
- Pure Ruby にこだわらなければ、Ruby で利用可能なソリューションはいくつかあります。 しかし、開発プロセスの中で利用するツールや技術は最小限であるべきです。そしてそれは、さまざまなアドバンテージを享受してくれることは言うまでもありません。
- Not free
- ここでいう「自由 - free -」とは「プログラマがプログラムを通して、自由に、そしてダイナミックに帳票レイアウトに対する変更を加えられること」を指しています。 帳票ソリューションの中には CSV や XML, JSON などで帳票データを作成し、それをスタティックなプログラムに渡し帳票生成を行うものがあります。 しかしこれは、データを渡した時点でダイナミックなプログラムのスコープを抜けてしまうことになり「ダイナミック」に相当する処理は、帳票レイアウト上で記述する他ありません。
- 当然、上記のような仕組みの方が優れているシーンも多くありますが、ThinReports Generator では、あくまでもダイナミックなプログラムによる ダイナミックな帳票生成インターフェースを提供します。そして、上記のような仕組みが必要な場合は、それを行うインターフェースをプログラマが自由に作るべきと考えています。
Reason why ThinReports
私たちが ThinReports の開発に至った経緯は「Why use ThinReports?」にある通りです。 ですが、このとこについて、もう少し詳しく説明したスライドがありますのでご紹介します(※ 閲覧するには、Adobe Flash Player が必要です)
なお、このスライドは、2010.09 に島根県松江市で開催された Ruby World Conference 2010 で発表したときのものです。 そのため、特に ThinReports に関しては、現在の状況と異なる内容が含まれていますので、予めご了承下さい。






