Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai

729 views

Published on

第13回関西LibreOffice勉強会 (2016/09/24) で発表した資料に「ボツ稿」を加えたものです。(時間:50分)

申込サイト : http://connpass.com/event/40278/

Published in: Software
  • Be the first to comment

「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai

  1. 1. 第13回関西LibreOffice勉強会 むしゃくしゃしたので… OpenDocument で帳票テンプレート Ver 1.1
  2. 2. Part.1 アンタだれ?
  3. 3. 自己紹介 • 通称:みうみう,「なんで来たん?」氏 • Twitter:@kazuhito_m • Github:kazuhito-m • 老害度:39歳、独身、意識低い系 • 職業:プログラマ(SIer、ビジネスアプリ 属),自動家(オートメータ) – フリーランス,屋号「みうらさんとこ」 • 好きなもの:自動化,「継続的なんとか」 – CI/CDとか大好物,特にJenkins好き♪ – 「楽する」ためには「苦労は厭わない」 三浦 一仁(ミウラ カズヒト)
  4. 4. 自己紹介 • 通称:みうみう,「なんで来たん?」氏 • Twitter:@kazuhito_m • Github:kazuhito-m • 老害度:38歳、独身、意識低い系 • 職業:プログラマ(SIer、ビジネスアプリ 属),自動家(オートメータ) – フリーランス,屋号「みうらさんとこ」 • 好きなもの:自動化,「継続的なんとか」 – CI/CDとか大好物 – 「楽する」ためには「苦労は厭わない」 三浦 一仁(ミウラ カズヒト)(「M$の社員の気持ちでやれ!」 のような”不自由を強いられる生活” が人生で多かったので…) Openと名のつくやり方、 仕組み、プログラム などなどが好き
  5. 5. 突然ですが
  6. 6. みうらは 辟易と していた!
  7. 7. 今に始まったこっちゃないんですが… S○erで産湯を使った三浦一仁は、来る日も 来る日も「ほんまに要るかぁ?これ」という 機能・帳票を作り続け、ほとほと嫌気が指し ていた。「システム化に際する業務改善や見 直し」を全くした形跡もなく降りてくる要件 、「設計」という概念自体がスコーン!と抜 け落ちてる「これ…実現可能なのか?」と無 理難題な業務仕様、特に「帳票」については 「こんな簡単っしょw」と仕様もろくにない 状態で「罫線一つに針の穴を通す如くの緻密 さ」を強いてくる矛盾と理不尽をすずめの涙
  8. 8. わかってますとも、そういうことは… S○erで産湯を使った三浦一仁は、来る日も 来る日も「ほんまに要るかぁ?これ」という 機能・帳票を作り続け、ほとほと嫌気が指し ていた。「システム化に際する業務改善や見 直し」を全くした形跡もなく降りてくる要件 、「設計」という概念自体がスコーン!と抜 け落ちてる「これ…実現可能なのか?」と無 理難題な業務仕様、特に「帳票」については 「こんな簡単っしょw」と仕様もろくにない 状態で「罫線一つに針の穴を通す如くの緻密 さ」を強いてくる矛盾と理不尽をすずめの涙 (おっと失礼… これではただの 仕事のグチ ですねw
  9. 9. でも、これを ただのグチ にしないために…
  10. 10. 少しくらいは生産的に… S○erで産湯を使った三浦一仁は、来る日も 来る日も「ほんまに要るかぁ?これ」という 機能・帳票を作り続け、ほとほと嫌気が指し ていた。「システム化に際する業務改善や見 直し」を全くした形跡もなく降りてくる要件 、「設計」という概念自体がスコーン!と抜 け落ちてる「これ…実現可能なのか?」と無 理難題な業務仕様、特に「帳票」については 「こんな簡単っしょw」と仕様もろくにない 状態で「罫線一つに針の穴を通す如くの緻密 さ」を強いてくる矛盾と理不尽をすずめの涙 なんで そうなってるの か? を、中心に
  11. 11. 少しくらいは生産的に… S○erで産湯を使った三浦一仁は、来る日も 来る日も「ほんまに要るかぁ?これ」という 機能・帳票を作り続け、ほとほと嫌気が指し ていた。「システム化に際する業務改善や見 直し」を全くした形跡もなく降りてくる要件 、「設計」という概念自体がスコーン!と抜 け落ちてる「これ…実現可能なのか?」と無 理難題な業務仕様、特に「帳票」については 「こんな簡単っしょw」と仕様もろくにない 状態で「罫線一つに針の穴を通す如くの緻密 さ」を強いてくる矛盾と理不尽をすずめの涙 なんで そうなってるの か? を、中心に (ほり下げて 考えて行きたい
  12. 12. Part.2 みうらは システム開発にあって 「帳票」作成の 何に対して 嫌気が指して いるのか?
  13. 13. その① 未整理な要求 • 「硬いものとやわらかいもの」を 「ごちゃまぜに同時に」注文される感 1.「これは、データとして材料にするから、これこれこうい う形式のテキストファイルで出して」 2.「これは、出した後に修正加えるから、変更できるような 何かでだして」 3.「これは改竄するなんてもってのほか!なんか変更不能なも んにしといて」 4.「これは、プリンターに直接出して」 – 「あ、今言うたヤツは "どの帳票も全部の選択肢の可能性がある" から、切り替えれるようにしといて」 • 「できるかボケ!w」 – 理性的な言葉にすると「それ、お金と時間がかかるよ?」
  14. 14. その② 過剰な再現性要求 • 「針の穴を通すような再現性」が要求される – 印刷において「ピクセルパーフェクト」を所望 – プリンタ違いで 「ここ0.5mmほどずれてる、修正な!」 って言われても… • 表計算ソフトで作成・印刷したものと 「ちょっとでも違う」と「話が違う!」となる – 「自分達の世界は1ミリたりとも変えてはならぬ!」 という価値観の元「テキトーなExcelファイル」を 「デザインはウチがしたからな!」してくる • でそれを「ディスカウントの材料」にしてくる • 同じことを「大規模分業のS○irの要件定義ロール」もして くる
  15. 15. その③ 技術負債の片棒を担ぐ • 「システム化する場所」に 「未来の技術負債」の原因を押売りしてしまう – よく聞くのは 「Excel入れる」→「EUCちょっと進む」→「Excel マクロ便利!の片鱗見せちゃう」→「Excelマクロ 席巻」→「邪魔だが捨てられん」 – 同じことが「印刷ツール or 帳票ライブラリ」にも 言える
  16. 16. その④ 提案のテイで「これ買って」 • もうお客さんや現場に「提案のテイ」で 「コレ買ってください」を強いりたくない… – 「ベンダーロックインの沼」に沈めるような行為はも ういやだ • 「○xcel買ってください」「○ffice買ってください」 – 「高価なライブラリ使うテクニックしか持ってない」 のはシステム屋の都合 • 「このライブラリ買ってください」 • これは「自分たち(システム屋)」にとってもリスク
  17. 17. 一番 嫌気が指してる のは…
  18. 18. そもそも「良いこと」目指してない • S○erが 「ははー!すべては(強者であらせられる)お客 様の仰せのままにー!」 を死守しようとするから… – 合意ではなく「御用聞きビジネス」を自ら作ってし まってる – それに乗じて、ツール屋が 「そんな”御用聞きビジネス”対応ライブラリ」あ とか作っちゃうんだもんw • 「S○F」とか • 「あじゃぱーレポなんとか」とか ※これはOSSだが… • 「”ぶどうの街”社(仮名)」とか
  19. 19. これだけだと ただの ● 業界批判 ですが…
  20. 20. 元に立ち帰って • 言いたいのは –「やり方次第」で –「もっと楽」に –「もっとお安」く –双方いい感じの折衷 出来るんじゃないですかね? –例えば営業で、合意で、契約で… 「そんな話」がしたい そこで…
  21. 21. Part.3 OpenDocument (Spreadsheet) を使った 帳票テンプレート を考える
  22. 22. なにが始まるんです? • 前述の問題を解決 …いや、いくつかを”マシ”にするために – LibleOffice-Calcのファイルフォーマットである 「OpenDocument SpreadSheet(.ods)」を使ってみる • どう使うの? – 「帳票テンプレート」として活用を試みる
  23. 23. 帳票テンプレートって? • 業務アプリケーションでの「帳票出力」は… • 「(プリンタなど物理媒体への)印刷」か 「(PDFなどの帳票的な何か)ファイルに保存orダウンロード」で 実現している • 帳票ライブラリでは通常、 「デザインテンプレート(フォーマット)」と 「変数定義」で成り立ってる その「デザインテンプレート」部分に、.odsを使う アプリケーション(デスクトップ/Web) デザインされた 帳票テンプレート 値や変数 ライブラリ &ロジック データ送信 Download or ローカル保存 印刷可能な ファイル プリンタに 紙出力
  24. 24. 帳票テンプレートって? • 業務アプリケーションでの「帳票出力」は… • 「(プリンタなど物理媒体への)印刷」か 「(PDFなどの帳票的な何か)ファイルに保存orダウンロード」で 実現している • 帳票ライブラリでは通常、 「デザインテンプレート(フォーマット)」と 「変数定義」で成り立ってる • その「デザインテンプレート」部分に、.odsを使う アプリケーション(デスクトップ/Web) デザインされた 帳票テンプレート 値や変数 ライブラリ &ロジック データ送信 Download or ローカル保存 印刷可能な ファイル プリンタに 紙出力
  25. 25. で、どうするの? LibleOffice Calcで 「帳票の元と成る表形式」を作る プログラムの 「どっかに出力」部分を作る プログラムの「値うめ」とか 「繰り返し」部分とか作る • で、具体的にそんな仕組みをどう作るか… というような作業が必要…と思われる。
  26. 26. で、どうするの? LibleOffice Calcで 「帳票の元と成る表形式」を作る プログラムの 「どっかに出力」部分を作る プログラムの「値うめ」とか 「繰り返し」部分とか作る • で、具体的にそんな仕組みをどう作るか… というような作業が必要…と思われる。 プログラムの「値うめ」とか 「繰り返し」部分とか作る ここをつくるため、 ファイル形式や操作方法を 掘り下げていく
  27. 27. Part.4 OpenDocument Spreadsheet (.ods形式) のファイル構造を知る
  28. 28. なにが始まるんです? • 「Open Document Format(ODF)」のファイル形式 (Text,Spreadsheet,Presentation,Graphics等) は、統一して以下のようなファイル形式 – ファイルは「ZIP形式アーカイブ」 – その中には「XML中心のテキストファイル群」 詳しくはここ参照 – 日本語情報かつ概要を知るには一番わかり易いかと ODFファイル(.osd等、ZIP形式) ● content.xml - テキストコンテンツ ● meta.xml - メタ情報。 ● settings.xml - 設定情報 ● styles.xml - テキストのスタイル情報 ● meta-inf/manifest.xml - XMLファイルの構造
  29. 29. 百聞は一見にしかず • まずは、見てみましょう –ファイルを作って、中身見て… –デモ的な何か
  30. 30. 構造上、抑えて置くべきことは… • 帳票テンプレートとして使う場合に重要なのは – 値の部分を制御している“content.xml”ファイル – 位置情報はXMLのAttributeと 「繰り返し」のアプローチで表現されている
  31. 31. Part.5 OpenDocument Spreadsheet (.ods形式)を 帳票テンプレート としてプログラムで 操作する
  32. 32. プログラムで操作するには? • プログラムで操作するには? – 前述の通り「ZIP」と「XML」が扱えれば良いので… • 「ZIP」「XML」を扱えるライブラリがあれば、 言語は問わない – なんならXMLは「自力でテキスト操作」しても良い – 逆に「ODF編集用専門ライブラリ」はあまりない? • 調べは少し足りないが • 今回はJavaで操作してみる – 「JOpenDocument」という.odsを変更できるライブ ラリは存在するが…
  33. 33. 百聞は一見にしかず(数分ぶり二度目) • 実際に見てみましょう –出来たものがここにございます –デモ的な何か
  34. 34. Part.6 雑なまとめ (個人的感想)
  35. 35. まとめ • Openな「ドキュメント形式」と「プログラミン グ」を組み合わせることの利点 – 以下の実現を手助け出来そう • 低コストで自由な帳票作成 • デザイン作業とプログラミングの省力化 • 「再現性順守!」の緩和 • 今後やりたいこと – 今回作ったパーツをブラッシュアップして「再利用可 能」な扱いやすいものに • 「明細を連打するような改ページあり」帳票 – テストライブラリにOpenDocumentサポート • 「データを色々な(ファイル)形式で読み込ませる」ライブラ リ、DBUnitに対する「OpenDocument Spreadseet」サポート
  36. 36. 参照文献 • Wikipedia:OpenDocument – https://ja.wikipedia.org/wiki/OpenDocument • OpenDocument interoperability test workshop after story – http://www.slideshare.net/MakotoTakizawa1/od-f plugtest2 • JOpenDocumentのサンプル(めっちゃ役立つ – http://www.programcreek.com/java-api-examples/ index.php?api=org.jopendocument.dom.spreadshee t.Sheet •
  37. 37. ボツ稿 (実際の発表は 前のページまで)
  38. 38. そもそも「要るかぁ?」を考える • 「針の穴を通すような再現性」が必要な シチュエーションは何なのか – 自分が認識しているのは「たった3つ」です ①ドットインパクトプリンタでカーボン紙的に”打つ”系 ②OCRなどで「機械的に紙を読む」ために紙を出す系 ③法令遵守系の「この様式一ミリすら反したら認めない」系 • 上記すら本当は「交渉の余地」「許容点」あるはずやが… – じゃあ「上記」以外は? • 所詮「この程度のもんなんじゃねーの?w」と推測 – 発注側の「マウンティング」? – 業者側の「顔色うかがい」? – 帳票の「大多数」は「そう頑張らなくて良い」はず • 「ソレを作ることにより何を満たしたいか」を目的に

×