これまでの軌跡

  1. トップページ
  2.  >
  3. これまでの軌跡 一覧
  4.  >
  5. これまでの軌跡

S/38 のRPGⅢの自動倉庫用(ロボット)のデータ処理プログラムでコスト削減

このコラムを楽しみにされている読者の皆様へ。最近かなり内容の濃いソリューション事例が続きましたね。このままだと、とても付いていけそうにないとそろそろ危惧(もしくはうんざり)されている読者の方々のために、今回はかなり軽めの、数少ない?私の失敗談のエピソードをひとつご紹介したいと思います。


初体験...自動倉庫見学

1980年半ば、初めて自動倉庫というものを見ました。学校の見学などではなく、これから開発する物流センター自動倉庫用のデータ処理プログラム設計の下準備を兼ねてお客様の好意でセッティングしていただいたものです。所は、川崎の扇島。知る人ぞ知る、物流センターや石油タンク基地の立ち並ぶ川崎港の孤島です。当時完成したばかりの自動倉庫の一角に立った私は、その巨大さとSFでしか見たことのないような映像に驚かされました。ロボット制御室から見渡すことのできる倉庫内には、百メートルを超える奥行きで数10階に相当する高さのビルの様な建物の中に1~2メートル四方の無数のガラスのない窓のような棚が壁一面に並んでいます。その前を、巨大な1本のロボット・アームが縦横にスライドして商品を載せたパレットを正確に空き棚に装填していく様は、まさに圧巻でした。(図1)

自動倉庫01

このロボット・アームを空き棚に正確に移動させるためのデータを作成することが、当時私に課せられた指名使命でした。


お客様のニーズ

開発しなければならない多数のプログラムの中で、私の担当するプログラムの要件は以下の通り、非常に単純なものでした。(図2)

  1. ロボットのテスト期間を多く設けるため、可能な限り短期間で開発すること
  2. 入庫商品を効率良くパレット上に載せるための入庫パレット用データ作成
  3. 入庫パレットを空き棚に装填するための空き棚情報用データ作成
自動倉庫01 参考)パレット:フォークリフトで運ぶための差込口を有する荷役台

上記の2番目と3番目の要件は目的が異なるという理由から2つのプログラムに分割(モジュール化)することにしました。まず1番目のプログラムは、トラックからの入庫時に商品のバーコードを自動で読み取り、商品を効率よくパレットに積み上げるためのデータを作成します。パレットに商品を積み上げるロボットがこのデータを読みます。2番目のプログラムは、既に商品が積み上げられた各パレットのための空き棚を探してファイルに書き出します。この後、空き棚にパレットを入れるロボットがこの空き棚情報を読みます。2つのロボットが出てきますが、いずれのロボットも、入力データを読み取って、商品を指定された位置に移動するようにプログラムされている機械です。コンピューターは、各ロボットに渡すデータを処理(作成、管理)する役割になります。


S/38の RPGⅢ により、大幅な開発工数削減

次は、この処理データをどのコンピューターで作成するかという問題です。お客様はIBMのメインフレーム・ユーザーでしたが、今回はダウンサイジングの方向で開発コンピューターを模索されたということでした。当時、IBM の中小型機分野には IBM i (AS/400) はまだ誕生していません。S/34、S/36、S/38 といった IBM製中小型コンピューターが他者メーカーのオフコンと群雄割拠していた時代です。中でも S/38 はリレーショナル・データベース搭載マシンとして他のコンピューターにない革新的なアーキテクチャーを持ったコンピューターで群を抜いていました。言語は RPGⅢ です。一口でその特徴を表現するとすればその ROI の高さでしょう。正直私は、お客様の「可能な限り短期間で開発すること」というご要望を満足できるコンピューターはS/38を措いては他にないと確信しておりました。確たる理由は定かではありませんが、最終的に数あるオフコンの中からお客様はS/38を選択されました。

参考) ROI(Return On Investment):投資利益率、投資対効果。ROIとは、投資した資本 に対して得られる利益の割合。利益を投資額で割ったもの。
アプリケーション稼動直後の失敗談

約1ヶ月の開発期間を経て、どうにか当初の要件通り、RPGⅢでプログラムが完成しました。1本のプログラムのステップ数が1万ステップを越えたことも初めての経験でした。数週間のテスト期間を経て、とんとん拍子で本番稼動を迎えました。とここまでは、怖いほどに問題がなかったわけですが、まさに好事魔多しです。カットオーバー数日後、深夜に配送センターから「入庫データ作成プログラムが異常終了したみたいなので、至急対処されたし」との旨の緊急連絡が入りました。熟睡していた私は取る物も取りあえず、タクシーで扇島に駆けつけて、びっくりです。何と、何10台あるかわからないほどの超ロング・トラックが倉庫の周りをぐるぐる巻きに停車していて、全て入庫処理待ちだというのです。さすがに目の前が真っ暗になり、プログラムの完成度が如何に重要であるかを痛感した瞬間でした。原因は、レコード・ロック排他制御の不備です。空き棚情報ファイルを多重で定義したために、更新時の排他制御に漏れが発生してしまったという、基本的な私のプログラミング・ミスです。その後、端末に向かって、プログラム修正とデータ修復を行なったわけですが、この時、背中に浴びせられていた関係者の刺すような視線は今でも忘れることが出来ません。私の苦い思い出のひとつです。


カットオーバー数ヶ月後で、当初の目標達成

カットオーバー直後の致命的とも言えるプログラム・ミスがあったにも関わらず、関係者各位の奮励努力の結果、その後、出庫プログラム関係のアプリケーション開発・稼動も順調に軌道に乗って、数ヵ月後には数十億円のコスト削減が実現できたというお客様からの感謝のお言葉をいただきました。これもひとえに S/38のROIの高さのおかげだったように思います。

途中、かなり致命的なミスがあったにも拘らず、最後まで、見捨てないで見守り続けていただいたお客様の度量の大きさもさることながら、お客様の信頼を裏切らなかったという一点で、手前味噌ではありますが、このエピソードは成功事例のひとつにさせていただいております。


お客様からの要望を実現するため我々は様々な角度からソリューションをご提案させていただきます。
お一人で悩まずに我々に是非ご相談ください。