![]() |
||||||||||
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||||||||||
![]() |
||||||||||
ここでは(株)タクト様向けに開発した仕入台帳システムについて、開発に至る過程からシステム導入後までを解説したいと思います。なお、公開については(株)タクト様より許可を頂いております。 ![]() (株)タクト様は幅広く事業を手がけており、その一つに電子機器等の製造も行っています。 当然のごとく各商社から機械部品の仕入れをしており、会社規模が小さい頃は台帳に年期別、仕入先別に区分けして記帳していましたが、規模が大きくなるに従い、記帳の負担が増していきました。 また、電子機器設計者は部品表を作る際、仕入台帳を調べて過去に同じ部品を仕入れたときの価格等(どの商社がより安価なのか、どの商社が短納期なのか)を手作業で探し出していたため時間と労力は大きなものになっていました。 その当時、社内で暫定的にソフトを作ってデータベース化し、しばらくはそれを使ってしのいでいましたが、時間を掛けずに作ったため単純なことしかできず、また社員が増え接続PCが増えると繋がらなくなるなどの問題も出てきました。 そこで、今まで使ってたシステムの資産に当たるデータ部分はそのまま流用して、新しくシステムを構築してほしいということから開発がスタートしました。 ポイントは主に次の7つでした。
![]() 前システムでは RDBMS に Borland の InterBase を使っていましたので、今回もそれを使いつつ、新しく定義したDB形式に合わせるためにデータ変換しました。これで今までの資産は使えるようになりました。 次に、許可した人だけが使えるようにするために、ユーザ認証サーバを作って誰からのアクセスかを管理するようにしました。ただ単純に認証するだけでなく、ユーザ(社員)ごとの権限も管理するようにしました。 例えば、「Aさんは入力も検索もすべてできるけど、Bさんは検索だけしかできない」というように機能ごとに、許可、禁止を設定できます。 ■ ユーザ認証ダイアグラム![]() 接続の制限について、InterBase をはじめ、有償の RDBMS の多くは、接続できる端末には制限があり、別途 「接続ライセンス」を購入すれば接続許容数を増やしたり無制限にしたりできます。 InterBase は「クライアントライセンス」という単位で販売しており、通常 InterBase サーバを購入すると1クライアントライセンスが付属しています。 1クライアントライセンスは、その表現からして1つの端末しか接続できないような感じを受けますが、実際は違い、1クライアントライセンスは同時に4つの接続までできます。(InterBase 5.x の場合です。詳しくは Borland のサイトをご参照下さい。) ■ DB接続ダイアグラム![]() タクト様ではこの状態であったため、4台のPCからしか同時に利用できませんでしたので、「クライアントライセンス」をいくつか追加購入してもらいました。 ただ、このようにしても「PCが増えたら、またライセンスを追加購入する」の繰り返しになってしまうのでアプリケーション側である程度対処するようにしました。 その方法として、アプリケーションを起動したら終了するまでDBに接続しっぱなしするのではなく、検索や登録する直前に、DBに接続して、使い終わったら切断(接続解除)するようすれば利用できる端末数を増やすことができます。 これだけでもいいのですが、検索等するたびにDB接続~切断させると、連続検索したい場合、待ち時間が少し長くなるので、更にパフォーマンスを高めるために、使い終わったらDBから即切断するのではなく、ある時間接続を保持しておいて、次に検索したいときはそれを使うようにしました。 (このことを「コネクションプーリング」と言います。) 今回はマルチスレッドで同時検索できるようにするため、その分同時接続する必要もあるので、保持しておく接続の数の上限や有効時間などをユーザごとに設定できるように独自実装しています。 ■ DB接続フロー![]() 検索処理ですが、「品名」「型式」「単価」をはじめ、すべての項目を検索できるようにしました。あいまい検索は InterBase の機能としてはないので、UDF として実装してあいまい検索できるようにしました。 仕入データの打ち込みにおいて、社外でもをしたいということで、データベースに接続しない状態でも一時的にローカルファイルに保存(仮登録)できるようにしています。 打ち込んだデータはFD、MOなどに入れて社内の端末から実登録するか、ノートPCなら社内LANに繋いでそのまま実登録もします。 MS-Excel との連携もサポートし、検索結果の任意の範囲部分をコピー&ペースト、またはドラッグ&ドロップで Excel の表に貼り付けられるようにしました。 また、(OLE)オートメーションを使って Excel に読み込み、Excel で印刷できるようにもしています。 総体的にはアプリケーションすべてで同一のユーザインターフェースになるよう共通化を図り、操作性も重視して作りました。 ![]() 開発したシステムの一部をスクリーンショットを交えながら説明しています。画面は実データを使っているところが多々あり、機密性があるところはマスクしています。(画面をクリックすると拡大表示します。) ![]() タクト様から、Excel 上で検索実行したいとの考えもあります。より使い勝手の良さを重点に追求して行きたいと思います。 運用環境・開発ツール
![]() |
||||||||||
![]() |
||||||||||
|