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