TECHBLOGスキルブログ

デスクトップツールとインメモリDB ~アプローチ編~

2015.07.30

こんにちは、久賀です。
以前は検証機のスローダウンについて解決アプローチを書きました。
今回も解決アプローチですが、デスクトップツール作成についてご紹介したいと思います。
また、実装など細かな技術にも触れたいので『アプローチ編』と『開発編』の2回に分けてお送りいたします。

【経緯】


とある業務で顧客単位にExcelにてデータ管理をしていました。
データが確定した段階で顧客に送付しています。
また顧客は特定のグループに属しており、グループ内に属する顧客データをいったん集約し、
グループ内で最適化した結果を再度顧客データとして振り分けて確定データとしています。

この処理をExcelの関数・数式を駆使して行っていましたが、
顧客数が増えるにつれ複雑度が増していきました。
また、手でメンテナンスするにも最適化対象のデータが一顧客あたり3000ほどある為、
人力ではほぼ不可能な状態に達していました。
先に記した通り、確定データは顧客に送付しますので当然期限があり、月初の5営業日内です。
作業期間、データ量、複雑度どれを取ってもExcelツールの限界を示していました。

【最適化ルールの把握】


顧客へのデータ提供ですので、最適化のルールに関しても全て約款や業務規約に記載されています。
これと現状のExcelツール(関数・数式)を元にルールを整理していきました。

【ユーザ要求】


  • Excelのデータを集計したい。
  • 全ての顧客に於いてファイルフォーマットは統一されている。
  • 最適化ルールはグループ毎に異なる。
  • 最適化した結果を元のファイルにフィードバックしたい。
  • 台所事情と工期を考慮してデスクトップツールで!(サーバが不要になるので)
  • でもツール実行中にほかの作業もしたい
  • 何故なら、月初の5営業日以内に完了させないといけない業務の一部だから。
  • あと、とにかく急いで!(Excelツールが限界に来ているので)
イメージが湧きにくいかと思いますのでここで少々補足しますと、
例えば各支店ごとにExcelでP/L(損益計算書)を管理していたとします。また支店は特定のエリアに属しています。
この同一エリア内のP/L全てを取り込んで集計し、営業利益率に応じてインセンティブ(報奨金など)を付与するようなものです。
※実際はもっと複雑な観点や振り分けルールがあります。

 

【アプローチ】


  • ExcelでデスクトップツールだとVBAだけど・・・
  • 実行中ほかの作業がしたいとなるとクリップボードを利用する処理はNG!
  • 自分Java屋だし、VBAより開発&処理パフォーマンスでるなぁ。
    ⇒以上により、Javaで開発にすることに。
  • 残る問題は一番の目的であるデータ集計
    集計処理が得意なのはJavaではなくSQL!
    ⇒デスクトップツールなのでインメモリDBを使おう!
    インメモリDBを調査した結果、H2Databaseが最適だと分かりました。

≪調査内容≫

導入コスト:1.5MB程度のjarファイル(Java屋でよかった!)
ベンチマーク:他のDBエンジンに比べて高速
http://www.h2database.com/html/performance.html

ということで、下記のような構成となりました。

【システム構成】


  • 言語:Java7
  • 画面:Swing
  • DB:H2Database
  • F/W:Seasar2 ※DB操作簡略化のため

続いて要件定義です。

【要件定義】


≪機能要件≫

と言っても、そんなにありません。

  • ひとつのフォルダに入力ファイルを格納するので、フォルダ選択ができること。
  • Excelの入力及び出力ができること。
  • 対象グループの選択ができること。
  • オペレーションが3ステップ以内であること。
    すなわち、

    1. フォルダ選択
    2. グループ選択
    3. 集計実行

≪非機能要件≫

  • 集計実行時間は10秒程度
  • 極力ロギングしない(処理性能重視の為)
  • システムリソースを過度に消費しない。具体的にはCPU50%以下、メモリ1G以下。
  • ツール内にデータを残さない

 

【導入結果】


すでに導入しておりますので先に結果だけ示しますと、首尾は上々でした。
ユーザからは感謝の声をいただいております。
元々人手ではできない量でしたので。
ツールを導入し、全てのグループを対象に実施しても数分で完了するので、
投資対効果や作業者の負荷低減に役に立った実感がありました。

【次回】


次回は開発編を予定しております。


              

OTHER CONTENTSその他のコンテンツ

UNITRUST会社を知る

  • 私たちについて

  • 企業情報

SERVICE事業内容

  • システム開発

CONTACT
お問い合わせ

あなたの「想い」に挑戦します。

どうぞお気軽にお問い合わせください。

受付時間:平日9:00〜18:00 日・祝日・弊社指定休業日は除く

お問い合わせ