技術情報

技術・製品

-- 2015.10.05 GroupSession Version4.5.4 --

GroupSessionで使用している製品は下記の通りです。


カテゴリ 製品 バージョン
プログラム言語 Java 7 or 8
WEBアプリケーションフレームワーク Apache Struts 1.3.10
データベース H2 Database Engine 1.3.171 2013-03-17
ジョブスケジューラー Quartz 2.1.7
全文検索エンジン Apache Lucene 3.1.0
MS Excel,Word操作ライブラリ Jakarta POI 3.11

使用する製品の選定理由


プログラム言語 Javaの選定理由
  • クロスプラットフォームであること
  • 技術的なノウハウがあったこと
  • レスポンスのオーバーヘッドが少ないこと
  • 対応するDBの豊富さや、Java対応の高機能なAPサーバが多いため拡張性に優れている
  • 無償の高機能な開発環境があること
  • Version1もJavaで作成していたこと
  • その他

いろいろな理由がありますが、一番大かったのは「クロスプラットフォームであること」です。
OS環境に左右されず動作できることが製品としての強みになると考えた結果Javaの採用に至りました。

WEBアプリケーションフレームワーク Apache Strutsの選定理由
  • 枯れた技術となりつつあり安定した動作が見込まれたこと
  • 書籍やインターネット上に豊富な情報があること
  • Strutsを理解している技術者が多く、プラグイン開発を行う方の敷居が低くなることが見込まれたこと
  • 技術的なノウハウがあったこと

他の選択肢としてJSF等も検討しましたが、「枯れた技術となりつつある」「情報の豊富さ」といった面から採用を決定しました。

データベース H2 Database Engine
  • Javaで作成されていること
  • 無償であること
  • 高速に動作すること
  • 配布可能なこと

DBの決定までには長く時間がかかりました。

開発当初はPostgreSQLを使用していました。ここでユーザにとってインストール、設定に手間がかかりすぎることが問題となりました。
そのためApache Derbyへ移行し順調に開発を進めていましたが、データコンバートを作成した段階で動作の遅さが問題となりました。

80名で4年程使用したスケジュールデータを検索するのに10秒程度かかったため他のDBを検討することになりました。(プログラムの作り方にも問題があったかもしれません)

そこでまだ歴史の浅い製品ではありましたが、評判の良かったH2 Database Engineを試したところ高速、正確に動作することを確認でき採用に至りました。

ジョブスケジューラー Quartzの選定理由
  • Javaで作成されていること
  • 無償であること
  • 豊富な実績があること
  • 技術的なノウハウがあったこと

Version2を作成するにあたり自動で処理を行うためのジョブスケジューラーは不可欠でした。
「Javaで作成されていること」という条件があると他の選択肢はほぼ見つけることができませんでした。
調べてみると大きな導入実績があり、まずは使ってみようということになりました。
実際にQuartzを使ってみると安定して動作し、十分に要件を満たしてくれることがわかり採用に至りました。

全文検索エンジン Apache Luceneの選定理由
  • Javaで作成されていること
  • 無償であること
  • 豊富な実績があること

Version2,Version3のヘルプ機能の検索に使用するため日本語に対応し、
Javaで作成されている全文検索エンジンが必要でした。
自前で実装することも検討しましたが、試してみた時に簡単に導入できたのでそのまま採用にいたりました。

MS Excel,Word操作ライブラリ Jakarta POI
  • Javaで作成されていること
  • 無償であること
  • 技術的なノウハウがあったこと
  • 豊富な実績があること

タイムカードから勤務表を作成する機能を実装するにあたり無償のPDF作成ライブラリを探していました。

JavaからPDFの出力する機能は有償の製品が多く、無償で使用できる製品もありますがレイアウトの作成に 手間のかかるもの等が多く、現実的に使用できる製品を見つけることはできませんでした。


そこでPDFではなく、多くのユーザで使用できるExcelで出力することに切替えることにし、
技術的なノウハウもあったことからJakarta POIを採用するに至りました。

Excelでレイアウトを作成し、作成したレイアウトに値を設定するだけで良く、非常に効率的です。


Copyright 日本トータルシステム株式会社