【コラム】

Yet Another 仕事のツール

94 Olutで販売在庫管理

    鶴田展之  [2006/01/17]

    最近は仕事にオープンソースを使うのも当たり前になりつつあるが、それでも、基幹系の業務システムまで構築した事例というのは、まだそんなに多くないのではないだろうか。しかし、既に10年程前からオープンソースに目を向け、積極的に活用に取り組んでいる企業もある。中でも代表的なのが、外食産業チェーンの「ニュートーキヨー」だ。

    同社はかつて、自社の受発注管理システム「Cerveza」のソースコードをオープンソースとして公開した。Linuxがようやく一般に認知されはじめた1999年のことだ。当時ソースコードを公開する選択をした理由はわからないが、現在もなお、ニュートーキヨーはオープンソースによるシステム構築を継続して推進している。今回紹介する「Olut」も、同社が開発し、ソースコードを公開している「販売管理」のシステムだ。ちなみに「Cerveza」はスペイン語、「Olut」はフィンランド語で、ともに「ビール」のことである。

    Olutは開発言語にPHP、データベースにPostgreSQLを採用しており、LAPP/WAPP環境さえ整っていれば、特に別のソフトウェアを追加導入する必要はない。スクリプト一式はOSCARアライアンスのページからダウンロードできる。ただ、詳しいインストールドキュメントが付属しないため、ある程度PostgreSQLやPHPに関する知識が無いと導入が難しいかもしれない。今回は、筆者がカンを頼りに行った基本的な導入手順を紹介しておきたい。なお、PHPのマルチバイト拡張の設定などは、「インストールメモ(OLUT_install_memo_01.pdf)」を参考にして、あらかじめクリアしておこう。

    まず、Olut用のデータベースユーザとデータベースを作成する。PostgreSQLの管理者(一般的にはpostgres)の権限で、以下のコマンドを実行しよう。

    $ createuser olut
    $ createdb -E EUC-JP -O olut olut

    データベースへのテーブル作成は、Olutの配布一式に含まれる「sql」ディレクトリ内の定義ファイルで行える。

    $ cd PATH_TO_OLUT/sql
    $ cat * | psql -e -U olut olut

    以上でデータベースの準備は完了。

    次はスクリプトファイルの配置だが、基本的には単純にOlutの配布一式をApacheの公開ディレクトリに置けば良い。ただ、PDF帳票の生成に使用される「FPDF」ライブラリに関しては、マルチバイト対応の「mbfpdf10b.zip 」を別途インストールしておく必要がある。インストール手順はmbfpdf付属のreadmeに詳しく解説されているので、そちらを参照して導入して欲しい。

    一通りファイルの配置が完了したら、設定ファイル「sys_define.inc」を編集する。デフォルトの状態では開発時のままの設定になっているようで、各リソースへのパスが、Windows上のEclipseワークスペースを参照するようになっている。これを環境に合わせて全て書き換えよう。

    define('OLUT_DIR', '/usr/local/apache2/htdocs/olut/');
    define('FPDF_FONTPATH','/usr/local/lib/php/fpdf153/font/');
    define('OLUT_IMAGE_PATH','/usr/local/apache2/htdocs/olut/image/');
    define('OLUT_SYSTEM_PROFILE','/usr/local/apache2/htdocs/olut/OlutProfile.xml');

    最後の「OLUT_SYSTEM_PROFILE」定数に定義されているのは、システム利用者の情報を保持する設定ファイルだ。このファイルにも、自社の社名、住所、電話番号等を記述しておく。

    <setting name="company_name" value="(株)例" />
    <setting name="company_address_1" value="〒111-1111 東京都○○区××町○-○-○" />
    <setting name="company_address_2" value="TEL: 03-xxxx-xxxx / FAX: 03-xxxx-xxxx" />

    なお、sys_define.inc以外にも、スクリプトにパスがべた書きされている箇所がいくつかある。grepで探してみたところ、ざっと以下のような記述が環境に依存していることがわかる。環境に合わせて修正しておこう。

    DeleteCommodity.php: $fn = 'c:\ntc\olut\doc\commodity_delete_list.txt';
    ImportAnualInventory.php: $fn = "c:\\ntc\\olut\\data\\cdnennyu\\$fn";
    ImportArrivals.php: $fn = "c:\\ntc\\olut\\data\\ntc_data\\$target\\cfidou.txt";
    ImportCommodity.php: $fn = 'c:\ntc\olut\master_data\bin\cfsyohin.txt';
    ImportInventory.php:// require_once('c:\wampp2\php\pear\DB.php'); // PEAR DB
    ImportInventory.php: $fn = "c:\\ntc\\olut\\data\\ntc_data\\$target\\cftana.txt";
    ImportShipments.php:// require_once('c:\wampp2\php\pear\DB.php'); // PEAR DB
    ImportShipments.php: $fn = "c:\\ntc\\olut\\data\\ntc_data\\$target\\cfnouhin.txt";
    ImportStore.php:// require_once('c:\wampp2\php\pear\DB.php'); // PEAR DB
    ImportStore.php: $fn = 'c:\ntc\olut\master_data\bin\cftempo.txt';
    ImportVendor.php:// require_once('c:\wampp2\php\pear\DB.php'); // PEAR DB
    ImportVendor.php: $fn = 'c:\ntc\olut\master_data\bin\cftori.txt';

    画面表示を担当するSmartyテンプレート中にも、以下のようにJavaScriptコードでパスが固定されている箇所がある。これも修正が必要だろう。

    templates/ShipmentDetailReportForm.tpl:
    onclick="javascript:window.open('/eclipse/olut/ShipmentDetailReport.php', '', 'toolbar=no,menubar=no,resizable=yes');">

    もともとがニュートーキヨー専用に設計されている分、コードの修正が多少多くなるのもやむを得ない。より汎用的なコードに改善していくのもオープンソースの醍醐味と考え、どんどん修正をフィードバックしよう。

    さて、以上でおおまかな設定はOKだろう。ブラウザからOlutの「OlutMainMenu.php」を開いてみよう。認証画面では、ユーザID/パスワード共に「olut」と入力すればログインできる。

    もちろん、販売管理のような基幹システムは、企業によって必要とされる要件が大きく異なることが多い。が、Olutは内部的にも非常にシンプルな作りになっている。小規模なカスタマイズなら、比較的簡単に行えるはずだ。

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン