OSC 2013 .Enterprise

2,353 views

Published on

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

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,353
On SlideShare
0
From Embeds
0
Number of Embeds
350
Actions
Shares
0
Downloads
14
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

OSC 2013 .Enterprise

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

×