図1●コスト削減のポイント
図2●システム構成
倉庫にある商品を管理し,自動発注するシステム。伝票の印刷には,PDFを生成するためのオープンソースのJavaライブラリiTextを使用している。Web/APサーバーはJBoss 3.0.5,Tomcat 4.1.18,JDK 1.4.1_01を使用。OSはRed Hat Linux 6.1J
 「普通に開発すれば,開発費はどう考えても500万以上はかかっただろう。工夫を積み重ねることで,90万円におさえることができた」――オイシックス 技術開発チーム システム開発マネジャー 山下寛人氏は胸を張る。

 有機野菜などの食品をインターネットを介して販売しているオイシックスは,2003年2月,在庫仕入れ管理システム「Oisystem-ZS」を開発した。

 400種類を超える取り扱い商品は野菜など生鮮食品が多い。商品を賞味期限ごとに管理しながら,入荷予定,出荷予定と突き合わせ,適正在庫を下回っていれば発注すべき量を計算しなければならない。複雑な処理が必要であり,要求を満たせるパッケージは見つからなかった。画面数も約80におよぶ。帳票も8種類ある。

 このシステムを,オイシックスではたった90万円で開発した(図1[拡大表示])。「すべてオープンソース・ソフトウエアで開発した」(山下氏)ため,ライセンス料はほぼゼロ。Webアプリケーション・サーバーには,EJBに対応していながら無償のオープンソース・ソフトウエアJBossを採用。サーバーも既存のマシンを使用したため,ハードウエア費用もゼロ。

 費用のほとんどは人件費だが,これも格安である。開発に参加したのは3人で,開発期間は実質3カ月。オイシックスの山下氏に加え,アルバイトとして山田亮輔氏と松永竜也氏がプログラミングを担当した。フレームワークを整備するとともに,教育を徹底することで,経験の少ない学生アルバイトを戦力として活用できた。

手作業の発注を自動化

 オイシックスは,2000年6月に設立されたベンチャー企業である。有機野菜や果物,乳製品,調味料などをWebサイトを通じ販売している。設立時20品目だった取り扱い製品は,業務の拡大につれて増加し,現在は400種類を超える。

 「Oisystem-ZS」を開発する以前は,在庫仕入れ管理および発注はExcelで行っていた。しかし,Excelではマスター・データ,発注と在庫,入荷予定などを連携して計算することが難しい,同時に1人しか使えないなどの問題があった。異なる拠点にはデータをメールで転送しなければならない,発注は1件1件手作業で行わなければならないこともあり作業効率が上がらない。業務の拡大につれて,データ量も増大しており,Excelでの扱いが困難になる時期も遠くなさそうだった。

 これらの問題を解決する解が,Webアプリケーションの構築だった。ECサイトのマスター・データとも連動させる。また,発注を自動化できる商品は必要在庫を計算し,一括発注できるようにする(次ページの図2[拡大表示])。

すべて無償ソフトで

 オイシックスが現在使用しているECサイトは,2000年10月に稼働を開始したものだ。このときは,WebLogic Serverを搭載したLinuxサーバー上に構築している。

 今回WebLogicを採用しなかったのは,コストを削減したかったからだ。WebLogic Serverは,最も安価なExpress版でも1CPUあたり98万円のライセンス料が必要だ。Enterprise JavaBeans(EJB)が使用できるAdvance版であれば198万円である。

 無償のJava APサーバーはいくつかあるが,今回はJBossを選んだ。JBossはオープンソースのEJB稼働環境である。オープンソースのJavaサーブレット・コンテナであるTomcatが組み込まれている。「活発に機能拡張が行われており,試用してみて実用になると感じた」(山下氏)。

EJB CMPで生産性向上

 EJBにこだわったのは,「EJBのうちEntity BeanのCMP(Container Managed Persistence)機能を使用したかった」(山下氏)からだ。CMPは,DBアクセスをAPサーバーが自動的に実行してくれる機能である。ほとんどSQL文を書くことなく,DBアクセス処理を実現できる。生産性や柔軟性を向上させることができると考えた。

 実は,オイシックスのECサイトではEJBを使用していない。「2000年当時のEJB 1.1は,パフォーマンス面での問題があった」(山下氏)ためだ。

 しかし,EJBが2.0になり,「ローカル・インタフェース」などパフォーマンスの低下を緩和する機能を備えるようになった。実際に,ローカル・インタフェースを使用したことで,性能面の問題はまったくなかった。

 生産性の面でも「DBアクセス処理をオブジェクト化できたため,同じようなコードを何度も書かずにすんだ。また,デバッグの際も修正点が少なく済んだ」(山下氏)。


次回に続く