2016年10月11日火曜日

Jasperで画像データ(Imageデータ)をDBから表示する方法

JapserReportでは、画像データ(Imageデータ)を出力することができるが、
DBに格納された画像データを出力する場合、少し工夫が必要のようだ。

ここでは、Postgresのbytea型に画像データが入っているとする。
そのデータをJasperReportで画像として出力する。

ここで、ポイントとなるのが、JasperReportからbytea列をSQLで取得したときに
果たして、どういう型で取得されるのかということである。

結論から言うと、実はbytea列がどの型で取得されるかが、DB接続に使用しているAPIによって、違うということだ。

そのため、ADempiereなどのアプリケーションからはうまく画像表示できるのに、
iReport上で実行してみると画像表示できないといったことが発生する。
これは、ADempiereのアプリから実行されるAPIとiReportから実行されるAPIで
bytea列型の扱い方法が違うから発生していると思われる。

これを解決するためには、byteaの列をBase64エンコードして、テキストデータとして扱うことがポイントである。

こうすることで、APIの仕様にかかわらず画像データをテキストデータとして扱うことが可能であり、iReport上からも、ADempiereなどのアプリケーションからも画像データを出力することが可能となる。



以下が設定方法である。

■SQLでバイナリデータ取得
☆byteaの列をBase64でエンコードして、テキストデータとして取り出す。
 
 以下のSMB_QRCode_DocNoは、bytea型でPostgresに定義されている。
 以下のSQLで、Base64でエンコードしてテキストデータとしている。

 SELECT encode(cf.SMB_QRCode_DocNo::bytea, 'base64') AS SMB_QRCode_DocNo
 FROM M_InOutConfirm cf
 ・・・・

 ※Edit Queryダイアログで、表示される該当バイナリ列(SMB_QRCode_DocNo)のDataTypeが「java.lang.String」であることを確認しておく。




■イメージオブジェクトの設定
 ①ImageExpressionプロパティに以下を設定。

new java.io.ByteArrayInputStream(javax.xml.bind.DatatypeConverter.parseBase64Binary((String)$F{smb_qrcode_docno}))

 ※DBから取得したBase64のテキストをByte配列にコンバートし、それを引数にInputStreamを作成している。




②Expressionクラス
  java.io.InputStreamを選択する。
  ※①の戻り値の型のため
 
③以下は念のため設定しておく
  UsingCacheプロパティ:チェックしておく。
  On Error Type:Blank







2016年10月9日日曜日

中小企業のITシステム導入 ~中小企業白書2016年度版より②

 前ページに引き続き、2016年度版の中小企業白書からいくつかピックアップして、中小企業のITシステム導入について考察したいと思います。
参考:2016年度版 中小企業白書 第2部 第2章 中小企業におけるITの利活用
http://www.chusho.meti.go.jp/pamflet/hakusyo/H28/h28/index.html



■中小企業がIT投資を行わない理由
 以下の統計では、現在IT投資を行っていない企業に対して、IT投資を行わない理由を調査しsています。

 この結果は、とても意外でした。
 IT投資を行っていない理由で最も多いのが「ITを導入できる人材がいない」ということのようです。
 中小企業は、IT投資を重要視しているが、ITを導入するための人材がいなくて、
その効果がわからないために投資に踏み切れていない企業が多いようです。
 コストの問題というより、むしろITに詳しい人材がいないということが理由のようです。
 



 この結果からいえることは、中小企業がITシステム導入をするために、中小企業とシステム導入・開発会社を橋渡しする人材が必要ということではないでしょうか。
 その人材を中小企業自らが内部に抱え込むのか、システム会社側にそういう人材が必要なのか、それともどちらにも属さない中立的な人材(ITコーディネータなど)がいいのかあると思いますが
 まずは、そういう人材が必要であることがこの統計からは明らかだと思います。
 
 少なからず、システム会社に属する我々がまずできることは、難しい横文字を使うのではなく、わかりやすくシステム導入について説明していくことが重要なことであるといえます。



■IT人材の活用
 第3節の統計データからは、IT人材の活用方法についての統計データがあります。
 ここでは、IT人材が不足しているという認識している企業が多く、
 また、必要とする人材像が不明といった回答も多くみられています。
 その中で、特筆すべきは、最後の統計データで、高収益企業は、外部人材を活用している割合が高いということかもしれません。
 

中小企業のITシステム導入 ~中小企業白書2016年度版より

 2016年度版の中小企業白書からいくつかピックアップして、中小企業のITシステム導入について考察したいと思います。
参考:2016年度版 中小企業白書 第2部 第2章 中小企業におけるITの利活用
http://www.chusho.meti.go.jp/pamflet/hakusyo/H28/h28/index.html


■ITシステム導入と業績の関係
まず、2016年度版の中小企業白書によると、
IT投資を行っている企業の方が、行っていない企業に比べて売上高、売上高経常利益率といった企業の業績が高い傾向が強いという結果がでています。

積極的な投資をおこなうから、業績がいいのか、業績がいいから積極的な投資をおこなうのか、鶏が先か卵が先か的なところもあるかもですが(これについては次の分析結果参照)、
結果として、やはりIT投資を積極的に行った企業のほうが業績がいいということのようです。





色の濃いほうが、IT導入ありの企業の棒グラフですべての業種において、IT導入なしの企業を上回っています。



■ITシステム導入後の業績推移

次のグラフでは、2010年以降にITシステムを導入した企業の業績がどうなったかを表しています。
ITシステム導入によって、業績が上がっていることがみてとれるようです。





■IT投資と従業者数の関係
 ここでは、IT投資によって、従業員数がどう変化したかが調査されています。
 この結果は、私としては意外な結果でした。
 ITシステム導入により、従業員は減ってコスト削減するものと思っておりましたが、
意外とそうでもないようです。

 理由は、業務効率化によって削減した人員を配置転換させるなどして、付加価値向上のための人材として活用することで、社内全体としては従業者数を変化させることなく、業績を向上させていることが推察されるようです。






■業務領域におけるIT活用
次の統計では、業務領域ごとにパッケージソフトによる導入かオーダーメイドによる導入かなどのITシステムの導入方法が調査されています。

予想通り、財務・会計、人事・給与といった会社ごとにばらつきが少ない分野では
パッケージソフトが使用されており、販売管理や購買管理、生産管理といった分野では比較的パッケージソフトの利用が少ないことがわかります。

ただ、オーダーメイドのシステムを中小企業が導入するとなると、開発費がかなり高くなることから、オーダーメイドによる導入ができる中小企業は多くないと考えられます。そのため、自社の業務にあったパッケージソフトを見つけ、それを導入して、導入費を下げたいと思う中小企業も多いと考えられます。

そういう意味ではパッケージソフトの機能充実や柔軟なカスタマイズが求められていると思いますが、近年では、機能の充実したパッケージソフトや各社にあった設定を柔軟におこなうことのできるパッケージソフトが出てきており、パッケージソフトの今後に期待がかかっているのではないでしょうか。

このサイトで紹介しているオープンソース ERPであるADempiereもそのひとつといえます。
ADempiereでは、豊富な機能、柔軟な設定により、企業によって違いのあるような多様な業務にも対応が可能なつくりとなっており、導入コストの大幅な削減が可能となっております。