Open Source Reporting Solution                                 株式会社マツケイ                                    日高 克也          ...
Rubyによる Rubyのための帳票ソリューション
提供株式会社マツケイ  (島根県)
しまねけん?
なぜ Rubyの帳票ツール?
満足できるものが   無くて困っていた✗ 日本語未対応...✗ GUIデザイナがない✗ さすがに高い✗ さすがに遅い✗ 使いにくい...
なら、作ればいいPure Ruby!オープンソース業務システムでも使える
特徴
ThinReports Editor
ThinReports Editor๏ 専用デザイナ๏ マルチプラットフォーム対応๏ GNU GPLv3๏ 多くのOSS、標準技術で実現 Webkit/Qt/HTML5/CSS3/SVG/JavaScript/Closure Tools etc..
ThinReports Generator
ThinReports Generator ๏ Editorで作成したレイアウトから   帳票を生成するライブラリ (PDF) ๏ Pure Ruby ๏ マルチプラットフォーム対応 ๏ The MIT License
こうやって使います。
1. 帳票レイアウトを     作る
2. スクリプトを              書いて実行# coding: utf-8require thinreportsreport = ThinReports::Report.new :layout => question.tlfrepo...
3. PDFのできあがり
できること
一覧表の自動生成詳細行が領域を溢れた場合は、自動的に改頁される。現時点では「ヘッダー/フッター/ページフッター/詳細行」を持つ一覧表を作成できる。
外字の表示Windowsの外字エディタで作成した外字ファイル(EUDC.TTE)をThinReportsに指定することで、外字データを含むPDFを正しく表示することが可能。
グラフやバーコードの表示イメージブロック機能(動的画像の埋込み機能)とグラフやバーコード画像を生成するライブラリを組み合わせることで、柔軟に対応できる。
パスワード/操作制限
仕様書の自動生成Editor から HTML/CSV 形式で仕様書を生成することが可能。これによって「デザインとコードの分離」をサポート。
Railsでも# Gemfilegem thinreports# app/controller/test_controller.rbclass TestController < ApplicationController  def render...
その他๏ 画像の埋め込み(静的・動的)๏ 動的なスタイル操作など
できないことイマイチなこと
フォントは4種類のみ๏ Helvetica (Sans-serif)๏ Courier New (Monospace)๏ Times New Roman (Serif)๏ IPAフォント (明朝/ゴシック)
一覧表の機能がまだまだ๏ 小計行を簡単には実現できない 現在は、詳細行/ページフッター/フッターのみ๏ 高さが可変な行は実現できない かなり難しいかもしれない...๏ Editor 上の操作性がイマイチ
今後
0.7.5リリース๏ 2012.2 2012.4予定๏ Editorの国際化๏ カスタムフォント機能๏ 操作性の改善
thinreports-rails๏ 2012.2 2012.3予定๏ Rails3用拡張ライブラリ๏ Rails3で、より簡単に ThinReportsを使える
ご案内
www.thinreports.org   ThinReports に興味のある方は、まずはこちらへ
githubThinReports の全てのソースコードは、github で公開
osc.matsukei.net ロードマップやタスク、進捗状況の閲覧に加えて、      ドキュメントやフォーラムも
tw: @thinreports_org fb: ThinReports.org
お知らせ
有償サポート始めました๏ メールによるQAが基本๏ メニューはありません๏ 公式サイトよりお問い合 せ下さい
ありがとうございました
Upcoming SlideShare
Loading in...5
×

Fukuoka Ruby Award 2012

3,689

Published on

第4回フクオカRuby大賞で「大賞」を受賞しました。その授賞式で発表した資料です。

Published in: Technology, Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,689
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
25
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • &amp;#x305D;&amp;#x308C;&amp;#x3067;&amp;#x306F;&amp;#x3001;ThinReports&amp;#x306E;&amp;#x767A;&amp;#x8868;&amp;#x3092;&amp;#x59CB;&amp;#x3081;&amp;#x3055;&amp;#x3057;&amp;#x3066;&amp;#x9802;&amp;#x304D;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x5CF6;&amp;#x6839;&amp;#x770C;&amp;#x304B;&amp;#x3089;&amp;#x53C2;&amp;#x308A;&amp;#x307E;&amp;#x3057;&amp;#x305F;&amp;#x3001;&amp;#x682A;&amp;#x5F0F;&amp;#x4F1A;&amp;#x793E;&amp;#x30DE;&amp;#x30C4;&amp;#x30B1;&amp;#x30A4;&amp;#x306E;&amp;#x65E5;&amp;#x9AD8;&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x3088;&amp;#x308D;&amp;#x3057;&amp;#x304F;&amp;#x304A;&amp;#x9858;&amp;#x3044;&amp;#x81F4;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • ThinReports&amp;#x3068;&amp;#x306F;&amp;#x306A;&amp;#x3093;&amp;#x306A;&amp;#x306E;&amp;#x304B;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3068;&amp;#x3001;\n&amp;#x300C;Ruby&amp;#x306B;&amp;#x3088;&amp;#x308B;&amp;#x3001;Ruby&amp;#x306E;&amp;#x305F;&amp;#x3081;&amp;#x306E;&amp;#x5E33;&amp;#x7968;&amp;#x30BD;&amp;#x30EA;&amp;#x30E5;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x300D;\n&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • ThinReports&amp;#x3068;&amp;#x306F;&amp;#x306A;&amp;#x3093;&amp;#x306A;&amp;#x306E;&amp;#x304B;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3068;&amp;#x3001;\n&amp;#x300C;Ruby&amp;#x306B;&amp;#x3088;&amp;#x308B;&amp;#x3001;Ruby&amp;#x306E;&amp;#x305F;&amp;#x3081;&amp;#x306E;&amp;#x5E33;&amp;#x7968;&amp;#x30BD;&amp;#x30EA;&amp;#x30E5;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x300D;\n&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x3067;&amp;#x306F;&amp;#x3001;&amp;#xFF13;&amp;#x3064;&amp;#x306E;&amp;#x7279;&amp;#x5FB4;&amp;#x3092;&amp;#x3042;&amp;#x3052;&amp;#x3066;&amp;#x3001;&amp;#x3082;&amp;#x3046;&amp;#x5C11;&amp;#x3057;&amp;#x8A73;&amp;#x3057;&amp;#x304F;&amp;#x3054;&amp;#x8AAC;&amp;#x660E;&amp;#x3057;&amp;#x305F;&amp;#x3044;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x305D;&amp;#x3093;&amp;#x306A;ThinReports&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;\n&amp;#x306A;&amp;#x305C;Ruby&amp;#x306E;&amp;#x5E33;&amp;#x7968;&amp;#x30C4;&amp;#x30FC;&amp;#x30EB;&amp;#x306A;&amp;#x306E;&amp;#x304B;&amp;#xFF1F;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3068;&amp;#x3001;\n
  • &amp;#x3053;&amp;#x308C;&amp;#x306F;&amp;#x3001;\nGUI&amp;#x4E0A;&amp;#x3067;&amp;#x30EC;&amp;#x30A4;&amp;#x30A2;&amp;#x30A6;&amp;#x30C8;&amp;#x306E;&amp;#x4F5C;&amp;#x6210;&amp;#x3084;&amp;#x7DE8;&amp;#x96C6;&amp;#x304C;&amp;#x3067;&amp;#x304D;&amp;#x3001;\n&amp;#x5148;&amp;#x307B;&amp;#x3069;&amp;#x898B;&amp;#x3066;&amp;#x9802;&amp;#x3044;&amp;#x305F;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#xFF08;&amp;#x524D;&amp;#x30DA;&amp;#x30FC;&amp;#x30B8;&amp;#x3078;&amp;#xFF09;&amp;#x3001;Mac/Linux/Windows&amp;#x3067;&amp;#x52D5;&amp;#x4F5C;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • \n
  • &amp;#x307E;&amp;#x305A;&amp;#x3001;&amp;#x4E00;&amp;#x3064;&amp;#x76EE;&amp;#x306E;&amp;#x7279;&amp;#x5FB4;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x3001;\n&amp;#x5C02;&amp;#x7528;&amp;#x30C7;&amp;#x30B6;&amp;#x30A4;&amp;#x30CA;&amp;#x3068;&amp;#x5C02;&amp;#x7528;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x5E33;&amp;#x7968;&amp;#x30C4;&amp;#x30FC;&amp;#x30EB;&amp;#x3067;&amp;#x3059;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x5F53;&amp;#x7136;&amp;#x5E33;&amp;#x7968;&amp;#x30EC;&amp;#x30A4;&amp;#x30A2;&amp;#x30A6;&amp;#x30C8;&amp;#x3092;&amp;#x4F5C;&amp;#x6210;&amp;#x3059;&amp;#x308B;GUI&amp;#x30C4;&amp;#x30FC;&amp;#x30EB;&amp;#x304C;&amp;#x5FC5;&amp;#x8981;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n&amp;#x305D;&amp;#x308C;&amp;#x304C;&amp;#x3001;&amp;#x3053;&amp;#x306E;ThinReports Editor&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x3053;&amp;#x308C;&amp;#x306F;&amp;#x3001;\nGUI&amp;#x4E0A;&amp;#x3067;&amp;#x30EC;&amp;#x30A4;&amp;#x30A2;&amp;#x30A6;&amp;#x30C8;&amp;#x306E;&amp;#x4F5C;&amp;#x6210;&amp;#x3084;&amp;#x7DE8;&amp;#x96C6;&amp;#x304C;&amp;#x3067;&amp;#x304D;&amp;#x3001;\n&amp;#x5148;&amp;#x307B;&amp;#x3069;&amp;#x898B;&amp;#x3066;&amp;#x9802;&amp;#x3044;&amp;#x305F;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#xFF08;&amp;#x524D;&amp;#x30DA;&amp;#x30FC;&amp;#x30B8;&amp;#x3078;&amp;#xFF09;&amp;#x3001;Mac/Linux/Windows&amp;#x3067;&amp;#x52D5;&amp;#x4F5C;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x5BFE;&amp;#x3057;&amp;#x3066;&amp;#x3001;Ruby&amp;#x7528;&amp;#x306E;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x3068;&amp;#x3057;&amp;#x3066;\nThinReports Generator&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x3053;&amp;#x308C;&amp;#x306F;&amp;#x4F55;&amp;#x304B;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3068;&amp;#x3001;&amp;#x5148;&amp;#x307B;&amp;#x3069;&amp;#x306E;Editor&amp;#x3067;&amp;#x4F5C;&amp;#x6210;&amp;#x3057;&amp;#x305F;&amp;#x30EC;&amp;#x30A4;&amp;#x30A2;&amp;#x30A6;&amp;#x30C8;&amp;#x3092;&amp;#x8AAD;&amp;#x307F;&amp;#x8FBC;&amp;#x3093;&amp;#x3067;&amp;#x3001;\n&amp;#x6700;&amp;#x7D42;&amp;#x7684;&amp;#x306A;&amp;#x5E33;&amp;#x7968;&amp;#x3092;&amp;#x751F;&amp;#x6210;&amp;#x3059;&amp;#x308B;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n\n&amp;#x5927;&amp;#x304D;&amp;#x306A;&amp;#x7279;&amp;#x5FB4;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x306F;&amp;#x3001;Pure-Ruby&amp;#x304C;&amp;#x3042;&amp;#x3052;&amp;#x3089;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x3064;&amp;#x307E;&amp;#x308A;&amp;#x3001;&amp;#x5168;&amp;#x3066;Ruby&amp;#x3067;&amp;#x4F5C;&amp;#x3089;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x305F;&amp;#x3081;&amp;#x3001;Ruby&amp;#x304C;&amp;#x52D5;&amp;#x4F5C;&amp;#x3059;&amp;#x308C;&amp;#x3070;&amp;#x540C;&amp;#x69D8;&amp;#x306B;&amp;#x52D5;&amp;#x304F;&amp;#x3001;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3053;&amp;#x3068;&amp;#x306B;&amp;#x306A;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x305D;&amp;#x308C;&amp;#x3067;&amp;#x306F;&amp;#x3001;&amp;#x7C21;&amp;#x5358;&amp;#x306A;&amp;#x4F7F;&amp;#x3044;&amp;#x65B9;&amp;#x3092;&amp;#x3054;&amp;#x7D39;&amp;#x4ECB;&amp;#x3057;&amp;#x305F;&amp;#x3044;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x307E;&amp;#x305A;&amp;#x306F;&amp;#x3001;&amp;#x5E33;&amp;#x7968;&amp;#x30EC;&amp;#x30A4;&amp;#x30A2;&amp;#x30A6;&amp;#x30C8;&amp;#x3092;&amp;#x4F5C;&amp;#x6210;&amp;#x3059;&amp;#x308B;&amp;#x5FC5;&amp;#x8981;&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x3053;&amp;#x306E;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x3001;Editor&amp;#x3092;&amp;#x8D77;&amp;#x52D5;&amp;#x3057;&amp;#x300C;Q. &amp;#x56FD;&amp;#x7523;&amp;#x306E;&amp;#x30D7;&amp;#x30ED;&amp;#x30B0;&amp;#x30E9;&amp;#x30DF;&amp;#x30F3;&amp;#x30B0;&amp;#x8A00;&amp;#x8A9E;&amp;#x3068;&amp;#x8A00;&amp;#x3048;&amp;#x3070;&amp;#xFF1F;A.&amp;#x300D;&amp;#x3068;&amp;#x3044;&amp;#x3046;\n&amp;#x30C6;&amp;#x30AD;&amp;#x30B9;&amp;#x30C8;&amp;#x3092;&amp;#x8CBC;&amp;#x4ED8;&amp;#x3051;&amp;#x3001;&amp;#x56DE;&amp;#x7B54;&amp;#x306E;&amp;#x90E8;&amp;#x5206;&amp;#x306B;&amp;#x306F;&amp;#x3001;answer&amp;#x3068;&amp;#x3044;&amp;#x3046;ID&amp;#x3082;&amp;#x3064;&amp;#x30C6;&amp;#x30AD;&amp;#x30B9;&amp;#x30C8;&amp;#x30D6;&amp;#x30ED;&amp;#x30C3;&amp;#x30AF;&amp;#x3092;&amp;#x8CBC;&amp;#x4ED8;&amp;#x3051;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x30AA;&amp;#x30EC;&amp;#x30F3;&amp;#x30B8;&amp;#x3063;&amp;#x307D;&amp;#x3044;&amp;#x90E8;&amp;#x5206;&amp;#x3067;&amp;#x3059;&amp;#x306D;&amp;#x3002;&amp;#x305D;&amp;#x3057;&amp;#x3066;&amp;#x3001;&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x4FDD;&amp;#x5B58;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x305D;&amp;#x306E;&amp;#x4E0A;&amp;#x3067;&amp;#x3001;\nThinReports Generator&amp;#x3092;&amp;#x4F7F;&amp;#x3063;&amp;#x3066;&amp;#x3001;&amp;#x51FA;&amp;#x529B;&amp;#x30D7;&amp;#x30ED;&amp;#x30B0;&amp;#x30E9;&amp;#x30E0;&amp;#x3092;&amp;#x4F5C;&amp;#x6210;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x8A73;&amp;#x3057;&amp;#x304F;&amp;#x306F;&amp;#x3054;&amp;#x8AAC;&amp;#x660E;&amp;#x3057;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x304C;&amp;#x3001;\n\n1. ThinReports&amp;#x3092;&amp;#x8AAD;&amp;#x307F;&amp;#x8FBC;&amp;#x307F;&amp;#x3001;\n2. &amp;#x5148;&amp;#x307B;&amp;#x3069;&amp;#x4F5C;&amp;#x6210;&amp;#x3057;&amp;#x305F;&amp;#x30EC;&amp;#x30A4;&amp;#x30A2;&amp;#x30A6;&amp;#x30C8;&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x3092;&amp;#x4F7F;&amp;#x3063;&amp;#x3066;&amp;#x3001;&amp;#x65B0;&amp;#x3057;&amp;#x3044;&amp;#x30EC;&amp;#x30DD;&amp;#x30FC;&amp;#x30C8;&amp;#x3092;&amp;#x4F5C;&amp;#x6210;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n3. &amp;#x305D;&amp;#x3057;&amp;#x3066;&amp;#x3001;&amp;#x65B0;&amp;#x3057;&amp;#x3044;&amp;#x30DA;&amp;#x30FC;&amp;#x30B8;&amp;#x3092;&amp;#x4F5C;&amp;#x6210;&amp;#x3057;&amp;#x3001;\n4. &amp;#x30DA;&amp;#x30FC;&amp;#x30B8;&amp;#x5185;&amp;#x306E;answer&amp;#x3068;&amp;#x3044;&amp;#x3046;ID&amp;#x3092;&amp;#x6301;&amp;#x3064;&amp;#x90E8;&amp;#x5206;&amp;#x306B; &amp;#x201C;Ruby&amp;#x201D; &amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x6587;&amp;#x5B57;&amp;#x5217;&amp;#x3092;&amp;#x57CB;&amp;#x3081;&amp;#x8FBC;&amp;#x307F;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n5. &amp;#x6700;&amp;#x5F8C;&amp;#x306B;&amp;#x3001;question.pdf &amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x3092;&amp;#x4F5C;&amp;#x6210;&amp;#x3059;&amp;#x308B;&amp;#x3001;\n\n&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x6D41;&amp;#x308C;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n&amp;#x3053;&amp;#x308C;&amp;#x3092;&amp;#x5B9F;&amp;#x884C;&amp;#x3059;&amp;#x308B;&amp;#x3068;&amp;#x3001;\n
  • &amp;#x3053;&amp;#x306E;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x3001;\nanswer&amp;#x306E;&amp;#x90E8;&amp;#x5206;&amp;#x306B;Ruby&amp;#x304C;&amp;#x57CB;&amp;#x3081;&amp;#x8FBC;&amp;#x307E;&amp;#x308C;&amp;#x305F;PDF&amp;#x304C;&amp;#x751F;&amp;#x6210;&amp;#x3055;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n\n&amp;#x4EE5;&amp;#x4E0A;&amp;#x304C;&amp;#x3001;ThinReports&amp;#x306E;&amp;#x57FA;&amp;#x672C;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x4E8C;&amp;#x3064;&amp;#x76EE;&amp;#x306E;&amp;#x7279;&amp;#x5FB4;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x3001;\nThinReports&amp;#x306F;&amp;#x3001;&amp;#x696D;&amp;#x52D9;&amp;#x30B7;&amp;#x30B9;&amp;#x30C6;&amp;#x30E0;&amp;#x5411;&amp;#x3051;&amp;#x306B;&amp;#x958B;&amp;#x767A;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x696D;&amp;#x52D9;&amp;#x30B7;&amp;#x30B9;&amp;#x30C6;&amp;#x30E0;&amp;#x3067;&amp;#x3088;&amp;#x304F;&amp;#x3042;&amp;#x308B;&amp;#x4E00;&amp;#x89A7;&amp;#x8868;&amp;#x3092;&amp;#x4F5C;&amp;#x6210;&amp;#x3059;&amp;#x308B;&amp;#x6A5F;&amp;#x80FD;&amp;#x304C;&amp;#x3042;&amp;#x3063;&amp;#x305F;&amp;#x308A;&amp;#x3001;\n
  • &amp;#x5916;&amp;#x5B57;&amp;#x3092;&amp;#x30B5;&amp;#x30DD;&amp;#x30FC;&amp;#x30C8;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x305F;&amp;#x308A;&amp;#x3001;\n
  • Ruby&amp;#x306E;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x3068;&amp;#x306E;&amp;#x7D44;&amp;#x307F;&amp;#x5408;&amp;#x308F;&amp;#x305B;&amp;#x306B;&amp;#x3088;&amp;#x3063;&amp;#x3066;&amp;#x3001;\n&amp;#x30D0;&amp;#x30FC;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x52D5;&amp;#x7684;&amp;#x306B;&amp;#x8868;&amp;#x793A;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3082;&amp;#x53EF;&amp;#x80FD;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • Ruby&amp;#x306E;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x3068;&amp;#x306E;&amp;#x7D44;&amp;#x307F;&amp;#x5408;&amp;#x308F;&amp;#x305B;&amp;#x306B;&amp;#x3088;&amp;#x3063;&amp;#x3066;&amp;#x3001;\n&amp;#x30D0;&amp;#x30FC;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x52D5;&amp;#x7684;&amp;#x306B;&amp;#x8868;&amp;#x793A;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3082;&amp;#x53EF;&amp;#x80FD;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • Ruby&amp;#x306E;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x3068;&amp;#x306E;&amp;#x7D44;&amp;#x307F;&amp;#x5408;&amp;#x308F;&amp;#x305B;&amp;#x306B;&amp;#x3088;&amp;#x3063;&amp;#x3066;&amp;#x3001;\n&amp;#x30D0;&amp;#x30FC;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x52D5;&amp;#x7684;&amp;#x306B;&amp;#x8868;&amp;#x793A;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3082;&amp;#x53EF;&amp;#x80FD;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • Ruby&amp;#x306E;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x3068;&amp;#x306E;&amp;#x7D44;&amp;#x307F;&amp;#x5408;&amp;#x308F;&amp;#x305B;&amp;#x306B;&amp;#x3088;&amp;#x3063;&amp;#x3066;&amp;#x3001;\n&amp;#x30D0;&amp;#x30FC;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x52D5;&amp;#x7684;&amp;#x306B;&amp;#x8868;&amp;#x793A;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3082;&amp;#x53EF;&amp;#x80FD;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • Ruby&amp;#x306E;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x3068;&amp;#x306E;&amp;#x7D44;&amp;#x307F;&amp;#x5408;&amp;#x308F;&amp;#x305B;&amp;#x306B;&amp;#x3088;&amp;#x3063;&amp;#x3066;&amp;#x3001;\n&amp;#x30D0;&amp;#x30FC;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x52D5;&amp;#x7684;&amp;#x306B;&amp;#x8868;&amp;#x793A;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3082;&amp;#x53EF;&amp;#x80FD;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x4E8C;&amp;#x3064;&amp;#x76EE;&amp;#x306E;&amp;#x7279;&amp;#x5FB4;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x3001;\nThinReports&amp;#x306F;&amp;#x3001;&amp;#x696D;&amp;#x52D9;&amp;#x30B7;&amp;#x30B9;&amp;#x30C6;&amp;#x30E0;&amp;#x5411;&amp;#x3051;&amp;#x306B;&amp;#x958B;&amp;#x767A;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • Ruby&amp;#x306E;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x3068;&amp;#x306E;&amp;#x7D44;&amp;#x307F;&amp;#x5408;&amp;#x308F;&amp;#x305B;&amp;#x306B;&amp;#x3088;&amp;#x3063;&amp;#x3066;&amp;#x3001;\n&amp;#x30D0;&amp;#x30FC;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x52D5;&amp;#x7684;&amp;#x306B;&amp;#x8868;&amp;#x793A;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3082;&amp;#x53EF;&amp;#x80FD;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • Ruby&amp;#x306E;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x3068;&amp;#x306E;&amp;#x7D44;&amp;#x307F;&amp;#x5408;&amp;#x308F;&amp;#x305B;&amp;#x306B;&amp;#x3088;&amp;#x3063;&amp;#x3066;&amp;#x3001;\n&amp;#x30D0;&amp;#x30FC;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x52D5;&amp;#x7684;&amp;#x306B;&amp;#x8868;&amp;#x793A;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3082;&amp;#x53EF;&amp;#x80FD;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x3067;&amp;#x306F;&amp;#x3001;ThinReports&amp;#x306E;&amp;#x4ECA;&amp;#x5F8C;&amp;#x306B;&amp;#x3064;&amp;#x3044;&amp;#x3066;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;\n
  • &amp;#x7D9A;&amp;#x3044;&amp;#x3066;&amp;#x3001;&amp;#x6B21;&amp;#x306E;&amp;#x30D0;&amp;#x30FC;&amp;#x30B8;&amp;#x30E7;&amp;#x30F3;&amp;#x3067;&amp;#x3042;&amp;#x308B;0.7.5&amp;#x3092;&amp;#x540C;&amp;#x3058;&amp;#x304F;2&amp;#x6708;&amp;#x306B;&amp;#x30EA;&amp;#x30EA;&amp;#x30FC;&amp;#x30B9;&amp;#x3059;&amp;#x308B;&amp;#x4E88;&amp;#x5B9A;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n&amp;#x3053;&amp;#x306E;&amp;#x30D0;&amp;#x30FC;&amp;#x30B8;&amp;#x30E7;&amp;#x30F3;&amp;#x3067;&amp;#x306F;&amp;#x3001;Editor&amp;#x306E;&amp;#x56FD;&amp;#x969B;&amp;#x5316;&amp;#x3084;&amp;#x30AB;&amp;#x30B9;&amp;#x30BF;&amp;#x30E0;&amp;#x30D5;&amp;#x30A9;&amp;#x30F3;&amp;#x30C8;&amp;#x306E;&amp;#x5BFE;&amp;#x5FDC;&amp;#x3092;&amp;#x884C;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n\n&amp;#x30AB;&amp;#x30B9;&amp;#x30BF;&amp;#x30E0;&amp;#x30D5;&amp;#x30A9;&amp;#x30F3;&amp;#x30C8;&amp;#x306B;&amp;#x3064;&amp;#x3044;&amp;#x3066;&amp;#x306F;&amp;#x3001;&amp;#x73FE;&amp;#x5728;&amp;#x306E;ThinReports&amp;#x3067;&amp;#x306F;&amp;#x3001;&amp;#x9650;&amp;#x3089;&amp;#x308C;&amp;#x305F;&amp;#x30D5;&amp;#x30A9;&amp;#x30F3;&amp;#x30C8;&amp;#x3057;&amp;#x304B;&amp;#x4F7F;&amp;#x7528;&amp;#x3067;&amp;#x304D;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x304C;&amp;#x3001;\n&amp;#x3053;&amp;#x308C;&amp;#x3092;&amp;#x4EFB;&amp;#x610F;&amp;#x306E;&amp;#x30D5;&amp;#x30A9;&amp;#x30F3;&amp;#x30C8;&amp;#x304C;&amp;#x5229;&amp;#x7528;&amp;#x3067;&amp;#x304D;&amp;#x308B;&amp;#x3088;&amp;#x3046;&amp;#x306A;&amp;#x6A5F;&amp;#x80FD;&amp;#x3068;&amp;#x306A;&amp;#x308B;&amp;#x4E88;&amp;#x5B9A;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x307E;&amp;#x305F;&amp;#x3001;Rails&amp;#x3067;ThinReports&amp;#x3092;&amp;#x3001;&amp;#x3088;&amp;#x308A;&amp;#x7C21;&amp;#x5358;&amp;#x306B;&amp;#x3001;&amp;#x30B7;&amp;#x30FC;&amp;#x30E0;&amp;#x30EC;&amp;#x30B9;&amp;#x306B;&amp;#x4F7F;&amp;#x3046;&amp;#x305F;&amp;#x3081;&amp;#x306E;&amp;#x62E1;&amp;#x5F35;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x3082;&amp;#x30EA;&amp;#x30EA;&amp;#x30FC;&amp;#x30B9;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x3067;&amp;#x306F;&amp;#x3001;ThinReports&amp;#x306E;&amp;#x4ECA;&amp;#x5F8C;&amp;#x306B;&amp;#x3064;&amp;#x3044;&amp;#x3066;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;\n
  • &amp;#x307E;&amp;#x305A;&amp;#x3001;&amp;#x30BD;&amp;#x30FC;&amp;#x30B9;&amp;#x306F;&amp;#x5168;&amp;#x3066;github&amp;#x3067;&amp;#x516C;&amp;#x958B;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x307E;&amp;#x305A;&amp;#x3001;&amp;#x30BD;&amp;#x30FC;&amp;#x30B9;&amp;#x306F;&amp;#x5168;&amp;#x3066;github&amp;#x3067;&amp;#x516C;&amp;#x958B;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x307E;&amp;#x305F;&amp;#x3001;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x81EA;&amp;#x4F53;&amp;#x3082;&amp;#x3001;&amp;#x5F0A;&amp;#x793E;&amp;#x304C;&amp;#x72EC;&amp;#x81EA;&amp;#x306B;&amp;#x904B;&amp;#x55B6;&amp;#x3059;&amp;#x308B;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&amp;#x4E0A;&amp;#x3067;&amp;#x5168;&amp;#x3066;&amp;#x516C;&amp;#x958B;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n\n&amp;#x3061;&amp;#x306A;&amp;#x307F;&amp;#x306B;&amp;#x3001;&amp;#x3053;&amp;#x306E; Matsukei Open Source Center &amp;#x306F;&amp;#x3001;&amp;#x5F0A;&amp;#x793E;&amp;#x304C;&amp;#x5F0A;&amp;#x793E;&amp;#x306E;&amp;#x8CC7;&amp;#x7523;&amp;#x3092;&amp;#x7A4D;&amp;#x6975;&amp;#x7684;&amp;#x306B;&amp;#x30AA;&amp;#x30FC;&amp;#x30D7;&amp;#x30F3;&amp;#x30BD;&amp;#x30FC;&amp;#x30B9;&amp;#x3068;&amp;#x3057;&amp;#x3066;\n&amp;#x516C;&amp;#x958B;&amp;#x3059;&amp;#x308B;&amp;#x5834;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x3001;&amp;#x5F0A;&amp;#x793E;&amp;#x72EC;&amp;#x81EA;&amp;#x306B;&amp;#x904B;&amp;#x55B6;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x30DD;&amp;#x30FC;&amp;#x30BF;&amp;#x30EB;&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x305D;&amp;#x3057;&amp;#x3066;&amp;#x3001;&amp;#x516C;&amp;#x5F0F;&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&amp;#x3092;&amp;#x59CB;&amp;#x3081;&amp;#x3001;Twitter&amp;#x3001;Facebook&amp;#x3067;&amp;#x968F;&amp;#x6642;&amp;#x3001;&amp;#x60C5;&amp;#x5831;&amp;#x767A;&amp;#x4FE1;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • &amp;#x3067;&amp;#x306F;&amp;#x3001;ThinReports&amp;#x306E;&amp;#x4ECA;&amp;#x5F8C;&amp;#x306B;&amp;#x3064;&amp;#x3044;&amp;#x3066;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;\n
  • &amp;#x696D;&amp;#x52D9;&amp;#x30B7;&amp;#x30B9;&amp;#x30C6;&amp;#x30E0;&amp;#x5411;&amp;#x3051;&amp;#x3067;&amp;#x3059;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x307E;&amp;#x305A;&amp;#x306F;&amp;#x6709;&amp;#x511F;&amp;#x30B5;&amp;#x30DD;&amp;#x30FC;&amp;#x30C8;&amp;#x3092;&amp;#x63D0;&amp;#x4F9B;&amp;#x3057;&amp;#x305F;&amp;#x3044;&amp;#x3068;&amp;#x601D;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x73FE;&amp;#x6642;&amp;#x70B9;&amp;#x3067;&amp;#x306F;&amp;#x3001;&amp;#x6765;&amp;#x6708;2&amp;#x6708;&amp;#x306B;&amp;#x63D0;&amp;#x4F9B;&amp;#x958B;&amp;#x667A;&amp;#x4E88;&amp;#x5B9A;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • \n
  • Transcript of "Fukuoka Ruby Award 2012"

    1. 1. Open Source Reporting Solution 株式会社マツケイ 日高 克也 Katsuya Hidaka Twitter: @hidakatsuya github: hidakatsuya Email: hidakatsuya@gmail.com
    2. 2. Rubyによる Rubyのための帳票ソリューション
    3. 3. 提供株式会社マツケイ (島根県)
    4. 4. しまねけん?
    5. 5. なぜ Rubyの帳票ツール?
    6. 6. 満足できるものが 無くて困っていた✗ 日本語未対応...✗ GUIデザイナがない✗ さすがに高い✗ さすがに遅い✗ 使いにくい...
    7. 7. なら、作ればいいPure Ruby!オープンソース業務システムでも使える
    8. 8. 特徴
    9. 9. ThinReports Editor
    10. 10. ThinReports Editor๏ 専用デザイナ๏ マルチプラットフォーム対応๏ GNU GPLv3๏ 多くのOSS、標準技術で実現 Webkit/Qt/HTML5/CSS3/SVG/JavaScript/Closure Tools etc..
    11. 11. ThinReports Generator
    12. 12. ThinReports Generator ๏ Editorで作成したレイアウトから 帳票を生成するライブラリ (PDF) ๏ Pure Ruby ๏ マルチプラットフォーム対応 ๏ The MIT License
    13. 13. こうやって使います。
    14. 14. 1. 帳票レイアウトを 作る
    15. 15. 2. スクリプトを 書いて実行# coding: utf-8require thinreportsreport = ThinReports::Report.new :layout => question.tlfreport.start_new_page do item(:answer).value(Ruby!!!)endreport.generate_file(question.pdf)% ruby question.rb
    16. 16. 3. PDFのできあがり
    17. 17. できること
    18. 18. 一覧表の自動生成詳細行が領域を溢れた場合は、自動的に改頁される。現時点では「ヘッダー/フッター/ページフッター/詳細行」を持つ一覧表を作成できる。
    19. 19. 外字の表示Windowsの外字エディタで作成した外字ファイル(EUDC.TTE)をThinReportsに指定することで、外字データを含むPDFを正しく表示することが可能。
    20. 20. グラフやバーコードの表示イメージブロック機能(動的画像の埋込み機能)とグラフやバーコード画像を生成するライブラリを組み合わせることで、柔軟に対応できる。
    21. 21. パスワード/操作制限
    22. 22. 仕様書の自動生成Editor から HTML/CSV 形式で仕様書を生成することが可能。これによって「デザインとコードの分離」をサポート。
    23. 23. Railsでも# Gemfilegem thinreports# app/controller/test_controller.rbclass TestController < ApplicationController def render_reports report = ThinReports::Report.new :layout => /path/to/layout.tlf report.start_new_page do # do something end send_data report.generate, :filename => foo.pdf, :type => application/pdf, :disposition => attachment endend
    24. 24. その他๏ 画像の埋め込み(静的・動的)๏ 動的なスタイル操作など
    25. 25. できないことイマイチなこと
    26. 26. フォントは4種類のみ๏ Helvetica (Sans-serif)๏ Courier New (Monospace)๏ Times New Roman (Serif)๏ IPAフォント (明朝/ゴシック)
    27. 27. 一覧表の機能がまだまだ๏ 小計行を簡単には実現できない 現在は、詳細行/ページフッター/フッターのみ๏ 高さが可変な行は実現できない かなり難しいかもしれない...๏ Editor 上の操作性がイマイチ
    28. 28. 今後
    29. 29. 0.7.5リリース๏ 2012.2 2012.4予定๏ Editorの国際化๏ カスタムフォント機能๏ 操作性の改善
    30. 30. thinreports-rails๏ 2012.2 2012.3予定๏ Rails3用拡張ライブラリ๏ Rails3で、より簡単に ThinReportsを使える
    31. 31. ご案内
    32. 32. www.thinreports.org ThinReports に興味のある方は、まずはこちらへ
    33. 33. githubThinReports の全てのソースコードは、github で公開
    34. 34. osc.matsukei.net ロードマップやタスク、進捗状況の閲覧に加えて、 ドキュメントやフォーラムも
    35. 35. tw: @thinreports_org fb: ThinReports.org
    36. 36. お知らせ
    37. 37. 有償サポート始めました๏ メールによるQAが基本๏ メニューはありません๏ 公式サイトよりお問い合 せ下さい
    38. 38. ありがとうございました
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×