このページの本文へ

販売業務処理アプリケーション「WebMart」にみるLinuxとJavaによる開発

1999年10月01日 11時48分更新

文● 加賀誠人

  • この記事をはてなブックマークに追加
  • 本文印刷

 9月29日、30日に開催されたLinuxWorld Expo/Tokyo'99において、 30日の14:50から行なわれたテクノロジートラック(T-4)では、 「LinuxとJavaによるアプリケーション開発」と題し、(株)ユナイテッ ドシステムエンジニアの小林明氏が講演。同社のSOHO向けB to C販売 業務処理アプリケーション「WebMart」の開発の中で得られた経験を 元に、Linux上での、Javaによる開発についての現状が解説された。

小林明氏ユナイテッドシステムエンジニアの小林明氏

WebMartとは

 WebMartは、インターネット側(店舗)でWebアプリケーションにより カタログ表示や注文機能を提供するほか、ショップサイド(バックヤー ド)での、受注管理、在庫管理、出荷管理、売上管理、荷札の印刷な どの業務処理をJavaによるアプリケーションで実装したものだ。
 製品構成には大きく分けて、「WebMart for Developer」と 「WebMart e-commerce solution」の2つがある。
 前者には、PCにOSとともにプリインストールされたパッケージとして、1999 年2月22日より提供されている「WebMart for Developer powered by FreeBSD」 と4月1日より提供されている「WebMart for Developer powered by Linux」が あり、さらに5月1日より、ソフトウェアパッケージとして「WebMart for Developer powered by 日本語 RedHat Linux」と「WebMart for Deveoper powered by 日本語 TurboLinux Pro」が提供されている。WebMart for Developerは、Webアプリケーションの実装にPHP/FIを利用し、データベース管 理システムとしてフリーのPostgreSQLを採用している。すべてのソースコード が含まれ、価格は120万円(ソフトウェアパッケージ)。これを元に開発を行 ないバイナリで再販する場合、9万6000円のライセンス料が必要。
 後者の「WebMart e-commerce solution」は、バイナリでのみの販売となる もので、Webアプリケーション部分をJava Servletで実装し、PostgreSQLに加 えOracleにも対応したものだ。また、Webmart for Developerでは、顧客が直 接プログラムを変更する必要のある帳票印刷のカスタマイズもパラメータの変 更により設定が可能となるなど強化されている。価格は個別の契約による。
 WebMartは、展示会場において販売などを手掛けるサードウェアなどのブー スにおいて展示されており、熱心に説明を聞く来場者も多く、まだまだ少ない Linuxベースの業務アプリケーションの実装として注目を集めていた。WebMart for Developerはソース付きで販売されているため、開発しているユナイテッ ドシステムエンジニアのほうでも、顧客がどのように利用しているかは把握 しきれていないが、一部の顧客からのカスタマイズのオーダーでは、B to B販 売業務への対応などを求められることもあるという。

展示会場でのWebMart
展示会場でのWebMartのデモ

 さて、講演では、まず、カーネルや周辺のソースコードが公開されているLinuxは、商用OS上でのライセンスによる制約やソース非公開といった開発におけるデメリットから開放され、既成概念を越える新たなソフトウェアの出現が期待されること。また、それを支える、PCサーバメーカやディストリビュータなどのサポート体制が充実しつつあることなどから、業務ソフトウェアなどの開発において、すでにLinuxが新たな選択肢となっているとした。

開発言語の選択

 つづいて、X Window System上のGUIアプリケーション開発や、Web アプリケーション開発における、開発言語選択や実行環境などの選択 肢がいくつか紹介された。

 その中で、GUIアプリケーション開発言語の候補として、C/C++もしくはTcl、 Perl、Rubyなどのスクリプト言語とGUIツールキットの組合せと、 Javaを挙げ、どの選択肢もある程度の移植性を持つものの、Javaの移 植性の高さは、現状の実行速度の問題やVMのコンパチビリティの問題 があるものの、評価できるとした。
 また、Webアプリケーション開発においては、サーバサイドでは、 CGI(C/C++、Perl)、PHP、Java(Java Servlet、JSP=Java Server Pages)などを選択肢として挙げた。さらに、スケーラビリティを確保 するため、Webアプリケーションサーバの導入で得られるDBコネクショ ンプールやロードバランシング(負荷分散)などや、Javaにおける RMI(Remote Method Invocation)やCORBAといった分散処理の環境があ るメリットを紹介した。
 同じく、Webアプリケーション開発において、クライアントサイド (Webブラウザ)上で利用されるJavaScriptやJava Appletに関しては、 いずれもクライアントの動作環境に依存するという問題があり、イン トラネットなどのユーザー環境を限定しやすい場面での利用が現実的 だとした。WebMartの開発においても、JavaScriptは、ショッピング サイトの顧客が利用するブラウザ上で実行されることになるため、多 くのブラウザで利用可能な一部のオブジェクト/メソッド/プロパティ に使用を限定するとともに、JavaScriptがなくても全体の処理そのも のに影響がない場面に利用を限定したという。
 また、WebMartの開発において「Internet Explorer (IE) 3.xや Netscape Navigator 2.xはサポート外」としたことに触れ、その理由 として、IE3.xではFORMの入力フィールドの種類によって、送信され る漢字コードが違い、一般的な入力フィールドでは、FORMを含むHTML の漢字コードと同一のものとなるものの、HIDDENやボタンでは Shift_JIS固定となってしまうという問題や、SSLの認証の動作が異な るなど、現実の開発で問題となる実際的なノウハウも語られた。

LinuxにおけるJavaの現状

 WebMartの開発での利用を通じて、JDK1.1.7のレベルで、日本語環 境/安定性ともに十分実用的という感触を得ているという。一方、 WebMartの開発での今回の採用は見送ったJDK1.2pre-v2では、プレリ リースということもあり、ネイティブスレッドの不安定やSwingでの 例外の発生など、まだまだ使用にたえないが、日本語入力のインライ ン入力(on the spot)などの魅力的な機能があり、今後に期待したい とした。
 また、Javaでの開発で問題とされる実行速度に関しても、たしかに ネイティブコードに比べれば遅いが、JIT(Just-in-time Compiler)や HotSpotの進化、ハードウェアの高速化に期待したいと述べた。

Java ServletによるWebアプリケーション開発

 ひき続いて、Webアプリケーションで問題となるセッション管理や ユーザー管理の手法について触れ、CookiesやURLにパラメータを付与 する方法などを紹介。
 また、一度インスタンスが生成されたクラスは、いつでもServlet Engine上で実行可能状態となるため、毎回のプロセス生成となるCGI に比べパフォーマンスの高いことを挙げた。Servlet自体は、通常マ ルチスレッドで実行されるため、マルチスレッドを考慮したコーディ ングが必要だが、一時的にシングルスレッドモデルで実行するように 変えるのも容易であるため、マルチスレッドでの問題かどうかを確認 しやすいといった、開発上のノウハウも紹介された。
 さらに、高速化の手法として、RMIによるデータキャッシュを挙げ た。WebMartではデータベース管理システムとして、PostgreSQLない しOracleが選択できるが、PostgreSQLでの特定の問い合わせでの動作 の遅さや、WebMartの仕様上、複数のページに渡って結果を表示する 処理や、複数のテーブルに渡るような非常に複雑な問い合わせが多い など、当初は十分なパフォーマンスが出なかったという。そこで、そ うしたボトルネックとなる問い合わせ部分をRMIによりメモリにキャッ シュしたところ、RMI導入前の8倍のパフォーマンスが出たという。また、 WebMart for Developerで利用されているPHP/FIでの実装の場合と比 べた場合でも3倍の処理速度となった。
 また、WebMartでServlet Engineとして利用しているApache JServ の持つロードバランシング機能により2台のApache JServに分散した 場合、大きくパフォーマンスが向上したという。

 Javaでデータベース管理システムへの接続に利用されるJDBCについ て触れ、SQLはパススルーで実行されるため、複数のデータベース管 理システムに対応するために必要なノウハウも簡単に紹介された。

 また、WebMartでショップのバックヤードで使う管理ツールは、Web アプリーケーションではなく、Javaアプリケーションとして書かれて おり、そこで利用されている、Swingに触れ、表現力の高いGUIが可能 であることや、Swingが採用しているModel/View/Controller=MVCアー キテクチャの概要を解説した。

業務アプリケーションで必須の帳票などの印刷

 業務アプリケーションの開発において、必須となる印刷処理につい ても触れ、JDK1.1では、用紙サイズの指定などができないなどの問題 があるとした。印刷の流れとして、Linux上のJavaでの印刷ではCore APIがPostScriptを生成し、lprにより印刷されるため、PostScript対 応のプリンタを利用するのが基本となる。Windowsではプリンタドラ イバが使用され、多くのプリンタに対応できるが、Linuxで非 PostScriptプリンタへ出力するには、Ghostscriptをフィルタとし て設定する必要があることを紹介した。
 一方、JDK1.2では、用紙サイズや用紙方向、部数、印刷範囲の指定 などが可能になることを、サンプルコードとともに示した。
 さらに、WebMartで、納品書や宅配便の伝票などにインパクトプリ ンタで出力する部分の実装に関しては、Javaにはプリンタを直接制御 するエスケープシーケンスをそのまま出力する機能がないため、ドラ イバクラスを開発し、それによってエスケープシーケンスを含むデー タを一旦ファイルを生成しlpdに渡し、直接印刷するようにしたこと が紹介された。

帳票への印刷
インパクトプリンタにより、宅配便の伝票などへの印刷も可能

このように、Linux上のJava開発は、サーバ環境、クライアント環 境ともに十分実用レベルとなりつつあるとし、「さあ、Linuxを活用 しましょう」という言葉で、講演は締めくくられた。

カテゴリートップへ