見出し画像

ルール駆動開発 発明の話

私がルール駆動開発の発明に至った話をご紹介します。

あるお客様での開発経験

現行システムがメインフレームコンピュータで動作していました。データはOracle DBを使っており、外部からは参照だけならJDBCでアクセス可能とのこと。
このメインフレームで行っている処理はバッチ処理がなぜか多いのです。殆どがバッチ処理として作成されていましたが、中でも夜間バッチは大量のデータを利用するような処理が多かったと記憶しています。
お客様から相談を受けたのは、「契約件数の上昇に伴い夜間バッチの処理量が上昇している。その処理時間が規定の時間を遥かに超えており、このままだと翌日の業務開始ができない状態に陥りかねない。メインフレームを増設するには相当な出費となってしまう。どうにかしてバッチ処理を高速化できないか?」ということでした。

そこで私は、バッチ処理をメインフレーム外の分散環境にて処理を行い、処理結果はメインフレーム側にデータを戻す方法をご提案いたしました。一般的にメインフレームは処理速度が高速なため、シーケンシャル処理としています。性能を稼ぐにはスケールアップしかありません。多重度を上げてスケールアウト処理するような方法は取られていません。そこで、外部にIAプラットフォームでの分散環境を作成し、Queue、ルールエンジンを用いて処理の多重化による高速性を提案しました。

この時点ではルール駆動開発という考えもなく、ロジックをすべて移行する「現行踏襲」で全ての COBOLを読み解き、ロジックを作成しました。テストの段階にてお客様自身が「過去5年分のデータを流してみたら、ロジックってどのくらい使われているかわかるかな?」との問い合わせがありました。ルールエンジンを使って構成しており、そのルールエンジンの特性上、実行されたルールと実行されなかったルールの統計を取ることができました。その結果、なんと、過去5年間のデータを流してみたところ、実際に使われていたのは40%のルールのみで、残りの 60%は一度も実行されず、つまり、使われていなかった事が判明しました。

この会社では、ある事情で5年より前のデータは来ない事になっていました。もし例えば6年前のデータが来たとしても業務には何ら影響がないことを確認していました。
つまり、60%のロジック作成は無駄だったわけです。この無駄をなくすことができたら、もっと短期間・低コストで作り終えることができたはずです。なんとも勿体ない話です。この無駄をなくすことはできないであろうかと考えました。

別のお客様での開発経験

そんなことを考えていたとき、更に過去の経験を思い出しました。別のお客様なのですが、300万行にもなる COBOLのロジック (Table search) を、どうにかしてオープン環境で動かせないかと相談を受けたときの話です。仕様書を新たに起こすことは現実的にほぼ不可能。そこで、「基本はこうなっているはず」という仮説をたて、簡単にアプリケーションを作ってみました。そこにデータを流してみると、当然、期待値と合致するデータ、合致しないデータが出てきました。合致しないデータだけを集めてプリントアウトしてぼーっと眺めていると、なんとなく似たようなパターンがいくつかあることに気づきました。そのパターンをルールとしてロジックに投入し、またNGのみをプリントアウトして眺めてみる … というのを繰り返したところ、意外にも10回足らずの繰り返しで95%くらいの正答率になっていました。

つまり、仮説検証型で仮説、実装、テストを繰り返すことで、すでにあるデータを利用してロジックを洗い出します。テストでNGのところは、ロジックが間違っているか足りていないことを意味します。IT担当者に聞いてもわからないところは、業務側に聞きに行って仮説を立て実装・テストを行いました。最後の最後、誰に聞いてもわからないところは、ソースコードを追うことで足りないロジックを埋めていきました。そうすることで、300万ステップの解析などすることなく、ほぼ完成してしまったのです。

まとめ

この2つの経験より、つまり、使われない60%の無駄を削減しより効率よくものを作るには、ソースコードの分析から仕様書を作成して実装するのではなく、過去のデータを使ってロジックを類推し、業務ユーザにテスト結果の確認をもらいながらすすめるのが良いのではないか?と思いつきました。
COBOLのモダナイゼーションとして良いターゲットになりうると考え、最初はCOBOLからの移行方法として「COBOL2BRMS」という名前を付けていたのですが、COBOL以外からのモダナイゼーションにも使えるので名前が良くないということで、ルール駆動開発と名付けてもらいました。

これが、ルール駆動開発爆誕のお話です。

ルール駆動開発は単なるアイデアではなく、経験から生み出されたことがご理解いただけましたでしょうか。

リンク

ルール駆動開発をよりわかりやすくお伝えするために、漫画を作成しました。ぜひご覧ください。(下記画像をクリックするとレッドハット社のダウンロードサイトに飛びます。必要項目を入力いただくとダウンロードできます。

ルール駆動開発のまんがはこちらの画像をクリックしてください!

この記事が気に入ったらサポートをしてみませんか?