こんにちは!これはなうデータ研究所の2本目のストーリーです。弊社はとても小さなルールエンジンベンダーですが、独自方式のルールエンジン製品を25年以上維持し続けています。今回はこの歴史あるルールエンジン NaU DSP をご紹介したいと思います。
ルールエンジンとは
ルールエンジンは、業務知識をルールベースとして蓄積することで、高度な意思決定の自動化を実現するシステムです。人が持つ知識をルールとしてシステムに組み込むことで、知識の運用と活用をサポートします。ルールエンジンの歴史は古く、理論的には1940年代に成立しており、社会に広く適用されたのは1980年代の第2次AIブームからとなります。
現在ルールエンジンは一般的にプロダクションシステムとして実現されています。例えば最も有名なルールエンジンとして Drools が存在しますが、これは典型的なプロダクションシステムです。プロダクションシステムはルールを非常に効率的に実現する方法が広く知られている一方、動作の制御が難しい点があります。
また、ルールエンジンは BRE(Business Rule Engine) や BRMS(Business Rule Management System)と呼ばれることもあります。一般的にBRMSは、ルールエンジンの進化系として、知識記述にデシジョンテーブルを採用しています。デシジョンテーブルによるルールの表現はプロダクションシステムの制御の困難さを大きく改善しました。一方、デシジョンテーブルは複雑になるとメンテナンス性に問題が発生することが知られています。
NaU DSP とは
NaU DSP は、プロダクションシステムではなく、属性文法型ルールエンジンです。九州工業大学の Prolog 研究を背景として、Prolog を改変した独自方式によってルールを実行します。これにより、効率性と制御の容易性を両立させており、プロダクションシステムによるルールエンジンでは実現が困難な多様な判断と柔軟な知識表現を可能にしています。
判断
- 前進判断
- 後進判断
- 提案型判断
前進判断は通常のプロダクションシステムでも実現されている一般的な判断(よくある if ... then ... else...)です。入力情報から結論を導きます。
後進判断は成立することを仮定した場合に不足している条件を求める判断です。
提案型判断は条件にマッチする候補を必要なだけ列挙する判断です。
NaU DSP ではこうした判断を Prolog 由来の仮定生成とバックトラックにより実現しています。プロダクションシステムはシンプルである点で優れていますが、NaU DSP ではこうした複雑な判断を可能にします。
知識表現
NaU DSP では知識を PUBLIB という形式で表現し管理します。PUBLIBは例えば法規や規格、製品カタログのような知識を記述するためにデザインされた知識記述方式です。特徴は、①関係性に着目した整理手法、②クラスによる柔軟な情報分類、ですが、デシジョンテーブルと比較した場合には下記が利点として挙げられます。
- 変更に対する影響の局所化
- 柔軟な検索
- ルールとデータの両方の記述が可能
こうした強みを活かすことで、NaU DSP では複雑な知識であってもメンテナンス性を保ったまま記述することが出来ます。
なにに使われているの?どこで使われているの?
NaU DSP ではこうした利点を下記に活用しています。
- 高度な意思決定の自動化
- 複雑なチェックの自動化
- 料金計算
- ナビゲーション
- 最適化/スケジューリング
- マッチング
具体的には、下記のような事例があります。
- 顧客管理システムにおける契約検証
- RPA連携による諸判断の自動化
- 健康診断支援システム
- 入居審査システム
- 半導体設計支援ツール
- インセンティブ計算
- 観光スポット提案システム
- 勤務シフトシステム
- 工事計画自動化
- 売上・オーソリ突合システム
実際に NaU DSP が活躍しているのは例えば下記のような場所になります。
- 大手企業の情報処理システム
- 工場
- ドコモショップ、auショップ
- 駅、空港、ビルの空調制御
業務知識が存在する領域には業務を問わず適用を行っています。このため、上に挙げた他にも多種多様な導入事例を有しています。
開発者から見て面白い?
開発者目線での NaU DSP のルールベース開発とは、書きやすくて読みやすくてデバッグのできる Prolog です(ただし unification はありません)。従って Prolog 好きには間違いなくオススメできます!また、下記が好きな人はとても楽しんでいただけると思います。
- 関数型言語が好きな人: pure lisp なみに純粋な関数型です(本当に副作用が一切書けません!)
- 再帰が好きな人 : 再帰をとにかくたくさん書きます!
- 最適化問題が好きな人: Prolog由来の生成検証によって最適化問題を柔軟に解決します
- 知識記述が好きな人 : PUBLIBにより多様な知識を自然に記述できます
以上で NaU DSP のご紹介とさせていただきます。こうした独自のルールエンジンが今なお使い続けられているのは奇跡のようですが、これも元々のコンセプトが非常に先進的で正しかったことを表していると思います。弊社ではルールエンジンを用いたソリューションで社会の非効率を解消していきたいと思っております。弊社の活動にご興味に持たれた方は、是非ご応募下さい。