Contenu connexe Similaire à Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力 (20) Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力7. 1. ThinReportsの紹介
2. ThinReportsを支える
OSS/技術の紹介
20. 2009/04
「原点」
PXDocとの出会い
SVGとの出会い
PXDocの弱点 = GUIデザイナが無い
22. 2010/07
「同助成事業に再び採択」
大量帳票印刷
業務システム特有の機能開発
23. 2010/10
「0.6 Preview1をリリース」
Editorにメモリリークのバグ
バグ、バグ、バグバグバグ...
24. 2011/01
「0.6 Preview2をリリース」
予定外のリリース
(4月に正式版リリースを予定)
大量印刷時のメモリ消費に問題
(Generator/PXDoc)
急遽PDF対応へシフト
25. 2011/07
「0.6 Preview3をリリース」
PDF推奨、PXDoc非推奨へ
アーキテクチャレベルから見直し
結果として、良い方向へ
26. 2011/10
「0.7 正式版をリリース」
PXDocの廃止
多くの新機能
33. 1. インストール
(Editor)
詳細は Installation Guide を参照
34. 1. インストール
(Generator)
$ gem install thinreports
36. 3. コードを書く
# coding: utf-8
require 'thinreports'
ThinReports::Report.generate_file('ruby-papa.pdf') do
use_layout 'ruby-papa.tlf'
start_new_page do
item(:answer).value('Matz!')
end
end
40. 複数レイアウトの混在
report = ThinReports::Report.create do
use_layout 'cover.tlf', :id => :cover
use_layout 'page.tlf', :default => true
start_new_page :layout => :covert
start_new_page do
item(:content).value(1)
end
start_new_page :layout => '/path/to/back_cover.tlf'
end
report.generate_file('multiple.pdf')
46. 外字の表示
ThinReports.configure do
# *.TTE => *.TTF
generator.pdf.eudc_fonts = '/path/to/eudc.ttf'
end
ThinReports::Report.generate_file('eudc.pdf') do
use_layout 'eudc.tlf'
start_new_page do
item(:eudc).value("日本で生まれ世界が育てた言語n" +
" uby")
end
end
"□" = 外字
61. 2. Generator is
Pure Ruby
必要なのは、Rubyとgem達だけ
実行環境がシンプル
構築、保守の負担減
汎用性向上(環境を選ばない)
75. Editorの中の中
ThinReportsEditor/
+ core/ (Core, UI)
| + assets/
| | + icons/
| | + application-compiled.css
| + application.html
| + application-compiled.js
+ ThinReportsEditor.exe (Platform)
:
ThinReportsEditor.exe は起動時に
application.html をロードしているだけ
82. Google製
JavaScript開発ツール
Closure Library
Closure Compiler
Closure Template
89. 採用した理由(2)
JavaScriptのコーディングスタイルが
「カチッと決まる」
goog.provide('thin.Version');
goog.require('goog.string');
/**
* @param {boolean=} opt_ignorePre
* @return {string}
*/
thin.Version.getVersion = function(opt_ignorePre) {
var res = [thin.Version.MAJOR, thin.Version.MINOR,
thin.Version.TINY];
// ...中略...
return res.join('.');
};
90. 採用した理由(3)
Compilerがスゴすぎる
/**
* @param {string} name
*/
function hello(name) {
alert('Hello, ' + name);
}
hello('New User');
コンパイル後
(ADVANCED_OPTIMIZATION)
alert('Hello, New User');
91. 採用した理由(3)
Compilerがスゴすぎる
application-compiled.js
コンパイル前 コンパイル後
合計サイズ 2,000KB 360KB
ファイル数 200 1
パフォーマンスも大幅に向上
96. 開発者2名
@hidakatsuya
@minoru_maeda
98. ご清聴ありがとうございました
公式サイト
http://www.thinreports.org/
公式facebook
http://www.facebook.com/ThinReports.org
公式Twitter
@thinreports_org
ThinReports Documenation
Installation Guide
Getting Started
Examples