ルールエンジンとは
ルールエンジンの歴史
もともとはエキスパートシステムという、専門家の知識を使って専門家と同等の高度な判断を行う仕組みをどうすればよいか という観点から始まったものです。専門家の判断は、単なる知識の当てはめではなく、推論を伴うものです。知識の当てはめだけであれば、データベースに登録した知識を検索するだけでよいのですが、その検索結果をもって次の判断や可能性などを考えていきます。しかも、判断する材料はいつも同じ順序というわけでもなく、通常のプログラムで対応するのは結構大変なことです。
そこで推論エンジンと知識ベースという、2つのコンポーネントを組み合わせて推論を行うようにしました。これがルールエンジンの始まりと言われています。
ルールエンジンは人工知能を実現すると言われ、過去に何度かブームになっていますが、その波には乗り切れていません。上記の通り、データとデータ、データとルールをマッチングすることが必要で、そのためにはメモリ上にデータが乗っていないと難しいのです。1980年代に第2次AIブームが巻き起こりましたが、この時代は8bit - 16bitのCPU、メモリも640kByteなど、ハードウェア的に厳しいものがありました。2000年にMicrosoft Windowsの64bit版がデビューし、メモリの価格も下がったこともあり、現在はルールエンジンが再度、陽の目を浴びている状態です。
ルールエンジンのことを「ビジネスルールマネージメントシステム(Business Rule Management System, BRMSと略)」と言われていたりします。ルールエンジン自体は推論機構なのですが、推論できますと言っても一般の方には分かりづらいものがあります。また、企業向け基幹システムではほぼ同一の商品でも出荷先によって品番を変えるなど「同じようなロジック」が沢山あることで、「似たようなロジックを表形式に表現することで業務ユーザでもわかりやすくできる」というところから、業務ユーザでも見てわかるということで、「ビジネスルール」と表現しています。その「ビジネスルール」があちこち散らばっていると、それはそれで管理が必要ということで、「ビジネスルール」の「管理(もできる)システム」、すなわち、「ビジネスルール マネージメントシステム」と言われています。
ルールエンジンの種類
アルゴリズムの違い
データ(ファクトといいます)とルールをマッチングさせる機構の種類として、RETE、Leap、Treat等のアルゴリズムがあります。また、単純にシーケンシャルに行うだけのエンジンも存在します。どれも一長一短はあるのですが、ファクトをオブジェクトとして捉えオブジェクト比較ができる・再帰評価ができる、といった機能を持つRETE アルゴリズムベースのものだと技術的には高度な推論が可能です。再評価が出来ないアルゴリズムは単純にIf-Thenを高速で行うものだけなので高速性はありますが、JavaのNative Compileのような動かし方が一般的になるとアドバンテージは小さくなると思われます。
私はRETEベースのアルゴリズムで様々な課題解決をお手伝いしてきているので、このBlogではRETEベースのアルゴリズムについてお話していきたいと思っています。RETEアルゴリズム自体は1974年には既に確立している技術になります。
製品の違い
同じアルゴリズムを使っていても、実装が違うと細かい動きや実行速度は異なるものです。ルールを作成ツールも含め、ベンダー毎にそれぞれ特色がでてきます。ここではRETEアルゴリズムを使用しているコミュニティ・製品の名前とリンクを掲載しておきます。
Javaベースのルールエンジン。RETEの進化版であるPHREAK アルゴリズムを搭載。オープンソースであり、コミュニティとして開発されている。
IBM Decision Manager Open Edition
Droolsの製品版で、製品サポートが受けられる。2022年6月30日まではレッドハット社より販売していたが、2022年7月1日よりレッドハット社の株主であるIBM社より販売。
IBM Operational Decision Manager
旧ILOG社がIBMに買収されたことによるJRulesの後継製品。
Complex Event Processingを中心とした使い方として提供。
また、RETEアルゴリズムではないルールエンジンについても掲載しておきます。
韓国イノルールズ社のルールエンジン。
米国プログレス社のルールエンジン。
日本の株式会社なうデータ研究所のルールエンジン。
利用例
RETEアルゴリズムのルールエンジンは、前向き推論・後向き推論ができるものがあります。前向き推論とは、ある状態のファクトがあるルールにマッチして値が書き換わった時に、改めてルールを評価することで、初めはマッチしなかったルールをマッチさせ、次々と「推論」していくことです。「芋づる式」と言うとわかりやすいかと思います。
前向き推論としての利用例としては下記のようなものがあります。
また、後向き推論が可能なルールエンジンもあります。後向き推論とは、こうなって欲しいという結果になるような組み合わせを探すことです。例えば、配送業務があったとして、全体の距離を最小にしつつ、より多くのお客様を回るためのルートを探すなどです。
もちろん、データのチェック、相関関係のチェック、算術計算なども行えます。
最近はAI/ML(という言葉)が流行っています。ML(Machine Learning; 機械学習)とは、人間が気づかなかったようなある特定のパターンを見つける(学習する)ことを仕事としており、MLのアウトカムはルールに相当します。そのルールを使って、現実のデータ(上記でファクトと言っているのは現実のデータのことです!)を評価した時により良い答えを出すもの、それこそがAI(Artificial Intelligence; 人工知能)であり、ルールエンジンはその実行部分で重要なパーツなのです。
参考ページ
ルールエンジンやBRMSを紹介している素晴らしき方々のページを紹介しておきます。あわせて御覧ください。
QiitaにあるBRMSエヴァンジェリストErinaさんの記事
Droolsの技術的に詳しすぎる小林さんの記事
イルミナード津島さんの記事
InfoQにある白石さんの記事