OSC 2013 .Enterprise

115
ThinReports.org / 株式会社マツケイ 日高克也 @hidakatsuya

description

OSC 2013 .Enterprise のセミナー発表資料です。

Transcript of OSC 2013 .Enterprise

Page 1: OSC 2013 .Enterprise

ThinReports.org / 株式会社マツケイ 日高克也 @hidakatsuya

Page 2: OSC 2013 .Enterprise

日高 克也 ThinReports.org 株式会社マツケイ OSSビジネス推進室

Ruby/PHP/JavaScript/CSS3/HTML5/Google Closure Tools …

@hidakatsuya

Page 3: OSC 2013 .Enterprise
Page 4: OSC 2013 .Enterprise

しまねけん

しまねけん(こっちは鳥取県)

Page 5: OSC 2013 .Enterprise
Page 6: OSC 2013 .Enterprise
Page 7: OSC 2013 .Enterprise
Page 8: OSC 2013 .Enterprise

Rubyによる Rubyのための 帳票ソリューション

Page 9: OSC 2013 .Enterprise

PDF Generator

GUI Designer

二つのツール

Page 10: OSC 2013 .Enterprise

GUI Designer

Page 11: OSC 2013 .Enterprise

ThinReports Editor

Page 12: OSC 2013 .Enterprise

•帳票レイアウトを編集 •Win/Mac/Linux 版 •日本語/英語 版 •GPLv3

Page 13: OSC 2013 .Enterprise

ThinReports Generator

Page 14: OSC 2013 .Enterprise

•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

Page 15: OSC 2013 .Enterprise
Page 16: OSC 2013 .Enterprise
Page 17: OSC 2013 .Enterprise
Page 18: OSC 2013 .Enterprise
Page 19: OSC 2013 .Enterprise
Page 20: OSC 2013 .Enterprise
Page 21: OSC 2013 .Enterprise

Hello World

Page 22: OSC 2013 .Enterprise

Step1 レイアウトを作成

Page 23: OSC 2013 .Enterprise

Step2 コードを書く

Page 24: OSC 2013 .Enterprise

Step3 実行する

% ruby hello_world.rb⏎

Page 25: OSC 2013 .Enterprise

完成

Page 26: OSC 2013 .Enterprise

できること (主な機能)

Page 27: OSC 2013 .Enterprise

一覧表

Page 28: OSC 2013 .Enterprise

一覧表

ヘッダー部のレイアウトを定義。一覧表の全ページに表示される

詳細行のレイアウトを定義。この行を繰り返して一覧を作成

ページフッター部のレイアウトを定義。一覧表の各ページの最後尾に表示される

フッター部のレイアウトを定義。一覧表全体の最終行に表示される

Page 29: OSC 2013 .Enterprise

例)商品一覧

Page 30: OSC 2013 .Enterprise

画像を埋め込む

Page 31: OSC 2013 .Enterprise

動的に画像を埋め込む

Page 32: OSC 2013 .Enterprise

外字を表示

外字もPDFに埋め込まれるため、クライアントに外字ファイルをインストールする必要なし

Page 33: OSC 2013 .Enterprise

バーコード・グラフ• これらの機能はない • バーコードやグラフを生成する Ruby ライブラリと画像の埋め込み機能を使って実現

• バーコード: barby など • グラフ: gruff など

Page 34: OSC 2013 .Enterprise

セキュリティ設定

Page 35: OSC 2013 .Enterprise

セキュリティ設定

Page 36: OSC 2013 .Enterprise

プログラムから操作する

•レイアウトに定義された全ての図形はRubyから操作できる

•但し、操作したい図形に対して、事前にIDを付与する必要がある

Page 37: OSC 2013 .Enterprise

プログラムから操作する

テキストの色

表示/非表示

テキストの整列

Page 38: OSC 2013 .Enterprise

プログラムから操作するフォントスタイル

Page 39: OSC 2013 .Enterprise

プログラムから操作する塗りと枠線のスタイル

Page 40: OSC 2013 .Enterprise

簡易書式設定•基本書式“¥{value}” → “¥1000”

•数値書式カンマ区切り/小数点

•日付時刻書式“%Y/%m/%d” → “2012/08/07”

•字詰め書式方向: 左, 文字: ”0”, 桁: 6 → “000123”

Page 41: OSC 2013 .Enterprise

仕様書の自動生成

Page 42: OSC 2013 .Enterprise

仕様書の自動生成

Page 43: OSC 2013 .Enterprise

Rails 2.x,3.x,4.x

Page 44: OSC 2013 .Enterprise

thinreports-rails

Page 45: OSC 2013 .Enterprise

thinreports-rails•thinreports の Rails 向け DSL を提供

✴ 要するに Rails で簡単に使えるようにしてくれる

•Rails で thinreports を使う場合は必須 •日本ユニシス株式会社 篠田さん作 •もちろん、オープンソース •The MIT License

Page 46: OSC 2013 .Enterprise

詳しくは

Page 47: OSC 2013 .Enterprise

できないこと (イマイチなこと)

Page 48: OSC 2013 .Enterprise

利用できるフォント•Helvetica •Times New Roman •Courier New • IPAフォント(明朝/ゴシック)

次期メジャーバージョンで対応

Page 49: OSC 2013 .Enterprise

一覧表が未熟•定義可能なセクションが不十分

✴ ヘッダー・明細・フッター・ページフッターのみ ✴ 分類毎の小計行などが簡単に実現できない ✴ 1頁目のみ表示したいヘッダーが実現できない

•行の高さを可変にできない •行の背景色を設定できない •全体的な操作性がイマイチ

次期メジャーバージョンで対応

Page 50: OSC 2013 .Enterprise

UTF-8のみ•ソースコードの文字コードのこと

✴ 過去に SJIS での実績はあるが、お勧めしない

•データの文字コードは対応可能 ✴ 埋め込む前に UTF-8 へ変換すれば OK

•UTF-8 以外の対応予定は無し

Page 51: OSC 2013 .Enterprise

ページ番号機能がない•普通のページ番号なら現時点でも可能 •一覧表のページ番号は工夫が必要

✴ (1/2)→(2/2)→(1/3)→(2/3)… のようなケース

近日リリース予定の 0.7.7 で対応

Page 52: OSC 2013 .Enterprise

バーコードの問題•現時点でも、ライブラリでバーコード画像を作って埋め込むことで実現は可能だが…

•遅い、メモリリーク ✴ 一旦画像データを作って埋め込むので効率が悪い

•カスタマーバーコード未対応 ✴ 対応しているライブラリはほぼ皆無

ネイティブ対応(次期メジャーリリース)

Page 53: OSC 2013 .Enterprise

環境構築

Page 54: OSC 2013 .Enterprise

開発環境本番環境

Ruby / RubyGems

Generator

EditorLayout File (.tlf)

Page 55: OSC 2013 .Enterprise

Editor のインストール

Page 56: OSC 2013 .Enterprise

Windows

•公式サイトよりインストーラをダウンロード

•インストーラの指示に従えばOK

Page 57: OSC 2013 .Enterprise

Generator のインストール

Page 58: OSC 2013 .Enterprise

% bundle install⏎

Page 59: OSC 2013 .Enterprise

もしくは、

% gem install thinreports⏎

Page 60: OSC 2013 .Enterprise

これだけ!

Page 61: OSC 2013 .Enterprise
Page 62: OSC 2013 .Enterprise

で、実際どうなの?

Page 63: OSC 2013 .Enterprise

事例と利用状況

Page 64: OSC 2013 .Enterprise

ダウンロード状況

Generator 13,700

Editor 6,000

2011.10 - 2013.12

Page 65: OSC 2013 .Enterprise

弊社の主な実績ユーザ 業種 帳票の種類 システム数自治体 30 5自治体 13 1自治体 19 2自治体 14 1民間企業 通信会社 20 2民間企業 1 1民間企業 5 1民間 2 1

少し詳しく説明します。

Page 66: OSC 2013 .Enterprise

大量印刷の事例

Page 67: OSC 2013 .Enterprise

•某民間企業 •最大2万ページの宛名とタックシール印刷

•Rails + ThinReports

Page 68: OSC 2013 .Enterprise

並列処理•非同期処理 Ruby ライブラリの Resque を使用 •出力対象データを 5 千件単位に分割し、4 スレッドで並列処理

•処理中の待機画面では、進行状況をポーリングにて取得。終了ステータスで、生成した PDF のダウンロードページを表示する

•2万ページの出力も 15分程度 •処理中はある程度メモリを消費するが、スレッド終了と同時に解放されるため大きな問題にはなっていない

Page 69: OSC 2013 .Enterprise

その他

Page 70: OSC 2013 .Enterprise
Page 71: OSC 2013 .Enterprise
Page 72: OSC 2013 .Enterprise
Page 73: OSC 2013 .Enterprise
Page 74: OSC 2013 .Enterprise
Page 75: OSC 2013 .Enterprise

パフォーマンス

Page 76: OSC 2013 .Enterprise

計測サンプル• 右図のような見積書を 2,500ページ出力する Ruby スクリプトを実行

• Ruby 2.0.0-p247ThinReports 0.7.6

• Mac OSX 10.9Core i7 2.3GHz RAM 8G, SSD

Page 77: OSC 2013 .Enterprise

結果実行時間 140秒

時間/ページ 0.056秒/ページ

最大メモリ消費量 約400MB

PDFのサイズ 23.2MB

Page 78: OSC 2013 .Enterprise

誕生秘話(余談)

Page 79: OSC 2013 .Enterprise

Rubyによる帳票開発のちょっと昔

※ 以降の内容は5年程前の当時のお話です。

Page 80: OSC 2013 .Enterprise

JasperReports

Page 81: OSC 2013 .Enterprise

JasperReports

•Rubyで帳票といえばコレ •専用デザイナ iReport も •多機能 •しかも、OSS!!

Page 82: OSC 2013 .Enterprise

しかし、•Java 製 •環境構築がちょっと面倒 •安定運用のために Java の知識必須 •海外製。基本全部英語 •情報少ない(Ruby から使う場合)

Page 83: OSC 2013 .Enterprise

有償ツール•とにかくお高い

✴ 300万のシステム開発に100万の帳票ツールとか無理

•お高い割に API がアレだったり... •選択肢が少ない

Page 84: OSC 2013 .Enterprise

こんな状況なので

Page 85: OSC 2013 .Enterprise

業務システム開発にRubyを採用しづらい!

Page 86: OSC 2013 .Enterprise

作ろう

Page 87: OSC 2013 .Enterprise

IT新技術研究開発• しまね産業振興財団 • 平成21年、22年採択 • 半額助成

Page 88: OSC 2013 .Enterprise

0.6 Preview 1, 2, 3 →

Page 89: OSC 2013 .Enterprise

2011.10 正式版 0.7 リリース

Page 90: OSC 2013 .Enterprise

“English version of the Editor?”

Page 91: OSC 2013 .Enterprise

2012.7 0.7.5 released!

Page 92: OSC 2013 .Enterprise

今後

Page 93: OSC 2013 .Enterprise

0.7.7 のリリース

Page 94: OSC 2013 .Enterprise
Page 95: OSC 2013 .Enterprise

リリース内容•(Feature) ページ番号ツール •(Patch) Editor 全体の操作性を改善

✴ ユーザから寄せられた問題点を中心に対応

•(Bug) 10件のバグ2014年1月リリース予定(目標年内)

Page 96: OSC 2013 .Enterprise

1.0.0 のリリース•カスタムフォント機能

✴ ビルトインフォント以外のフォントが利用可能へ

•カスタムセクション機能 ✴ 一覧表の明細行の定義を複数定義可能へ

•ヘッダー/ページヘッダー構成 ✴ 一覧表の最初のページだけ表示されるヘッダーセクションと、全ページに表示されるヘッダーが定義可能に

•0.7.7 以前との互換性は維持する方向(予定)

Page 97: OSC 2013 .Enterprise

Chrome Apps 化•Chrome Apps 版 Editor

✴ Chrome が必須へ ✴ Chrome Web Store からインストール、アップデート ✴ 動作速度の劇的な向上(現在の Qt/Webkit ベースは絶望的な遅さ) ✴ さらなるクロスプラットフォーム対応 ✴ 内部構造がシンプルになり、開発・メンテが容易に

•次期メジャーリリースまでは、これまでのデスクトップ版もリリース。以降は Chrome Apps 版のみ提供

•0.7.7 の Chrome Apps 版 Editor を年度内にベータリリース

Page 98: OSC 2013 .Enterprise

Enterprise

Page 99: OSC 2013 .Enterprise

技術サポートサービス

Page 100: OSC 2013 .Enterprise

概要•マツケイが提供する ThinReports のサポートサービス

•ThinReports の開発者が直接対応 •サポート内容

✴ オンラインリファレンスの閲覧 ✴ QA サポート

Page 101: OSC 2013 .Enterprise

サポートセンター

Page 102: OSC 2013 .Enterprise

オンラインリファレンス

Page 103: OSC 2013 .Enterprise
Page 104: OSC 2013 .Enterprise

•全文検索 •印刷(ブラウザ印刷に最適化)

✴ 全ページの一括印刷はできない

•リクエストの送信 ✴ 追加して欲しい内容や間違いの指摘、補足の追加をリクエストできる

✴ ただし、対応するかどうか、対応スケジュールはサポートチームの判断となる

Page 105: OSC 2013 .Enterprise

QAサポート

•質問・回答の閲覧など、全てのやり取りはサポートセンター上で行う ✴ 回答があった場合など、イベント毎にメール通知される

•インシデント制

Page 106: OSC 2013 .Enterprise

プランと料金プラン 価格/年(税別) オンライン

リファレンス

QAサポート

インシデント 初回応答時間 追加インシデント

デベロッパー 30,000 円 ○

スタンダード 78,000 円 ○ 6 3 営業日 12,000 円

講習会の開催や現地サポートなど、上記サポートでは不十分な場合でも、ご要望に合わせて対応いたします。お気軽にお問い合わせ下さい。

Page 107: OSC 2013 .Enterprise

お申し込みの流れ

Page 108: OSC 2013 .Enterprise

www.matsukei.co.jp

thinreports.matsukei.co.jp/apply

お申し込みフォームに必要事項を記入し送信していただくと、3営業日以内にお申し込みに必要な書類一式を発送します。

Page 109: OSC 2013 .Enterprise

REPOTEN-APIれ ぽ て ん

Page 110: OSC 2013 .Enterprise

http://repoten-api.net

Page 111: OSC 2013 .Enterprise
Page 112: OSC 2013 .Enterprise

特徴•PHP や Python など、言語やツールに関係なく簡単に利用できる

•ThinReports ベース ✴ 専用デザイナは「ThinReports Editor」のこと

•無料(制限あり)

Page 113: OSC 2013 .Enterprise

見積書自動印刷

REPOTEN の API にフォームを送

信するだけ

Page 114: OSC 2013 .Enterprise

共通帳票基盤

Page 115: OSC 2013 .Enterprise

ご清聴ありがとうございました

http://www.thinreports.org

ThinReports.org 技術サポートサービス

http://www.matsukei.co.jp/service/thinreports-support/

@thinreports_org @ThinReports.org @thinreports