OSC 2013 .Enterprise
-
Upload
katsuya-hidaka -
Category
Technology
-
view
1.475 -
download
12
description
Transcript of OSC 2013 .Enterprise
ThinReports.org / 株式会社マツケイ 日高克也 @hidakatsuya
日高 克也 ThinReports.org 株式会社マツケイ OSSビジネス推進室
Ruby/PHP/JavaScript/CSS3/HTML5/Google Closure Tools …
@hidakatsuya
しまねけん
しまねけん(こっちは鳥取県)
Rubyによる Rubyのための 帳票ソリューション
PDF Generator
GUI Designer
二つのツール
GUI Designer
ThinReports Editor
•帳票レイアウトを編集 •Win/Mac/Linux 版 •日本語/英語 版 •GPLv3
ThinReports Generator
•Editor で作成したレイアウトを操作して PDF を生成
•CRuby 1.8.7/1.9.x/2.0.0 •JRuby 1.6.x/1.7.x (1.8 mode) •Pure Ruby! •The MIT License
Hello World
Step1 レイアウトを作成
Step2 コードを書く
Step3 実行する
% ruby hello_world.rb⏎
完成
できること (主な機能)
一覧表
一覧表
ヘッダー部のレイアウトを定義。一覧表の全ページに表示される
詳細行のレイアウトを定義。この行を繰り返して一覧を作成
ページフッター部のレイアウトを定義。一覧表の各ページの最後尾に表示される
フッター部のレイアウトを定義。一覧表全体の最終行に表示される
例)商品一覧
画像を埋め込む
動的に画像を埋め込む
外字を表示
外字もPDFに埋め込まれるため、クライアントに外字ファイルをインストールする必要なし
バーコード・グラフ• これらの機能はない • バーコードやグラフを生成する Ruby ライブラリと画像の埋め込み機能を使って実現
• バーコード: barby など • グラフ: gruff など
セキュリティ設定
セキュリティ設定
プログラムから操作する
•レイアウトに定義された全ての図形はRubyから操作できる
•但し、操作したい図形に対して、事前にIDを付与する必要がある
プログラムから操作する
テキストの色
表示/非表示
テキストの整列
プログラムから操作するフォントスタイル
プログラムから操作する塗りと枠線のスタイル
簡易書式設定•基本書式“¥{value}” → “¥1000”
•数値書式カンマ区切り/小数点
•日付時刻書式“%Y/%m/%d” → “2012/08/07”
•字詰め書式方向: 左, 文字: ”0”, 桁: 6 → “000123”
仕様書の自動生成
仕様書の自動生成
Rails 2.x,3.x,4.x
thinreports-rails
thinreports-rails•thinreports の Rails 向け DSL を提供
✴ 要するに Rails で簡単に使えるようにしてくれる
•Rails で thinreports を使う場合は必須 •日本ユニシス株式会社 篠田さん作 •もちろん、オープンソース •The MIT License
詳しくは
できないこと (イマイチなこと)
利用できるフォント•Helvetica •Times New Roman •Courier New • IPAフォント(明朝/ゴシック)
次期メジャーバージョンで対応
一覧表が未熟•定義可能なセクションが不十分
✴ ヘッダー・明細・フッター・ページフッターのみ ✴ 分類毎の小計行などが簡単に実現できない ✴ 1頁目のみ表示したいヘッダーが実現できない
•行の高さを可変にできない •行の背景色を設定できない •全体的な操作性がイマイチ
次期メジャーバージョンで対応
UTF-8のみ•ソースコードの文字コードのこと
✴ 過去に SJIS での実績はあるが、お勧めしない
•データの文字コードは対応可能 ✴ 埋め込む前に UTF-8 へ変換すれば OK
•UTF-8 以外の対応予定は無し
ページ番号機能がない•普通のページ番号なら現時点でも可能 •一覧表のページ番号は工夫が必要
✴ (1/2)→(2/2)→(1/3)→(2/3)… のようなケース
近日リリース予定の 0.7.7 で対応
バーコードの問題•現時点でも、ライブラリでバーコード画像を作って埋め込むことで実現は可能だが…
•遅い、メモリリーク ✴ 一旦画像データを作って埋め込むので効率が悪い
•カスタマーバーコード未対応 ✴ 対応しているライブラリはほぼ皆無
ネイティブ対応(次期メジャーリリース)
環境構築
開発環境本番環境
Ruby / RubyGems
Generator
EditorLayout File (.tlf)
Editor のインストール
Windows
•公式サイトよりインストーラをダウンロード
•インストーラの指示に従えばOK
Generator のインストール
% bundle install⏎
もしくは、
% gem install thinreports⏎
これだけ!
で、実際どうなの?
事例と利用状況
ダウンロード状況
Generator 13,700
Editor 6,000
2011.10 - 2013.12
弊社の主な実績ユーザ 業種 帳票の種類 システム数自治体 30 5自治体 13 1自治体 19 2自治体 14 1民間企業 通信会社 20 2民間企業 1 1民間企業 5 1民間 2 1
少し詳しく説明します。
大量印刷の事例
•某民間企業 •最大2万ページの宛名とタックシール印刷
•Rails + ThinReports
並列処理•非同期処理 Ruby ライブラリの Resque を使用 •出力対象データを 5 千件単位に分割し、4 スレッドで並列処理
•処理中の待機画面では、進行状況をポーリングにて取得。終了ステータスで、生成した PDF のダウンロードページを表示する
•2万ページの出力も 15分程度 •処理中はある程度メモリを消費するが、スレッド終了と同時に解放されるため大きな問題にはなっていない
その他
パフォーマンス
計測サンプル• 右図のような見積書を 2,500ページ出力する Ruby スクリプトを実行
• Ruby 2.0.0-p247ThinReports 0.7.6
• Mac OSX 10.9Core i7 2.3GHz RAM 8G, SSD
結果実行時間 140秒
時間/ページ 0.056秒/ページ
最大メモリ消費量 約400MB
PDFのサイズ 23.2MB
誕生秘話(余談)
Rubyによる帳票開発のちょっと昔
※ 以降の内容は5年程前の当時のお話です。
JasperReports
JasperReports
•Rubyで帳票といえばコレ •専用デザイナ iReport も •多機能 •しかも、OSS!!
しかし、•Java 製 •環境構築がちょっと面倒 •安定運用のために Java の知識必須 •海外製。基本全部英語 •情報少ない(Ruby から使う場合)
有償ツール•とにかくお高い
✴ 300万のシステム開発に100万の帳票ツールとか無理
•お高い割に API がアレだったり... •選択肢が少ない
こんな状況なので
業務システム開発にRubyを採用しづらい!
作ろう
IT新技術研究開発• しまね産業振興財団 • 平成21年、22年採択 • 半額助成
0.6 Preview 1, 2, 3 →
2011.10 正式版 0.7 リリース
“English version of the Editor?”
2012.7 0.7.5 released!
今後
0.7.7 のリリース
リリース内容•(Feature) ページ番号ツール •(Patch) Editor 全体の操作性を改善
✴ ユーザから寄せられた問題点を中心に対応
•(Bug) 10件のバグ2014年1月リリース予定(目標年内)
1.0.0 のリリース•カスタムフォント機能
✴ ビルトインフォント以外のフォントが利用可能へ
•カスタムセクション機能 ✴ 一覧表の明細行の定義を複数定義可能へ
•ヘッダー/ページヘッダー構成 ✴ 一覧表の最初のページだけ表示されるヘッダーセクションと、全ページに表示されるヘッダーが定義可能に
•0.7.7 以前との互換性は維持する方向(予定)
Chrome Apps 化•Chrome Apps 版 Editor
✴ Chrome が必須へ ✴ Chrome Web Store からインストール、アップデート ✴ 動作速度の劇的な向上(現在の Qt/Webkit ベースは絶望的な遅さ) ✴ さらなるクロスプラットフォーム対応 ✴ 内部構造がシンプルになり、開発・メンテが容易に
•次期メジャーリリースまでは、これまでのデスクトップ版もリリース。以降は Chrome Apps 版のみ提供
•0.7.7 の Chrome Apps 版 Editor を年度内にベータリリース
Enterprise
技術サポートサービス
概要•マツケイが提供する ThinReports のサポートサービス
•ThinReports の開発者が直接対応 •サポート内容
✴ オンラインリファレンスの閲覧 ✴ QA サポート
サポートセンター
オンラインリファレンス
•全文検索 •印刷(ブラウザ印刷に最適化)
✴ 全ページの一括印刷はできない
•リクエストの送信 ✴ 追加して欲しい内容や間違いの指摘、補足の追加をリクエストできる
✴ ただし、対応するかどうか、対応スケジュールはサポートチームの判断となる
QAサポート
•質問・回答の閲覧など、全てのやり取りはサポートセンター上で行う ✴ 回答があった場合など、イベント毎にメール通知される
•インシデント制
プランと料金プラン 価格/年(税別) オンライン
リファレンス
QAサポート
インシデント 初回応答時間 追加インシデント
デベロッパー 30,000 円 ○
スタンダード 78,000 円 ○ 6 3 営業日 12,000 円
講習会の開催や現地サポートなど、上記サポートでは不十分な場合でも、ご要望に合わせて対応いたします。お気軽にお問い合わせ下さい。
お申し込みの流れ
www.matsukei.co.jp
thinreports.matsukei.co.jp/apply
お申し込みフォームに必要事項を記入し送信していただくと、3営業日以内にお申し込みに必要な書類一式を発送します。
REPOTEN-APIれ ぽ て ん
http://repoten-api.net
特徴•PHP や Python など、言語やツールに関係なく簡単に利用できる
•ThinReports ベース ✴ 専用デザイナは「ThinReports Editor」のこと
•無料(制限あり)
見積書自動印刷
REPOTEN の API にフォームを送
信するだけ
共通帳票基盤
ご清聴ありがとうございました
http://www.thinreports.org
ThinReports.org 技術サポートサービス
http://www.matsukei.co.jp/service/thinreports-support/
@thinreports_org @ThinReports.org @thinreports