10
Introduction to Drools 2015-03-07(土) 第十回 #渋谷java 田邊 義真(たなべ よしまさ) @emaggame http://morec.at

Introduction to Drools

Embed Size (px)

Citation preview

Page 1: Introduction to Drools

Introduction to Drools

2015-03-07(土) 第十回 #渋谷java

田邊 義真(たなべ よしまさ)

@emaggame

http://morec.at

Page 2: Introduction to Drools

2015-03-07(土) 第十回 #渋谷java 2

目次● BRMS とは● Drools とは● Drools デモ● 所感● 参考

Page 3: Introduction to Drools

2015-03-07(土) 第十回 #渋谷java 3

BRMS とは● Business Rule Management System● ビジネスは時々刻々変化する● ソースコード中のビジネスロジックをルールとして外に追い出

すことで、保守しやすくする。BRMS はそのためのランタイム– ビジネス要求の変化に対応しやすくなる– ビジネスロジックを俯瞰しやすくなる– DSL を用いることで、通常のプログラミングモデルよりもロジックを

(場合によっては)容易に表現できるようになる

Page 4: Introduction to Drools

2015-03-07(土) 第十回 #渋谷java 4

Drools とは● Red Hat が提供する OSS の BRMS 実装

– ルール管理 UI や CEP、 BPM 連携など機能が豊富● 公式サイト

– http://drools.org/● リポジトリ

– https://github.com/droolsjbpm/drools/● 2015-03-07 現在、最新の安定版は 6.2.0.Final

Page 5: Introduction to Drools

2015-03-07(土) 第十回 #渋谷java 5

Drools デモ● デモのソースコードは以下にあります

– http://bit.ly/drools-intro● いずれも Drools のサンプルから抜き出しました

Page 6: Introduction to Drools

2015-03-07(土) 第十回 #渋谷java 6

Drools デモ(自動車保険)● 被保険者の属性(年齢・居住地のリスク・過去の保険請求

回数・保険種別)から保険料を算出する● ルールはスプレッドシートを用い、デシジョンテーブルとして

表現する年齢 居住地 請求回数 保険種別

18 - 24 リスク低 0 車両保険

25 - 30 リスク高 1 代理店

25 - 35 リスク低 0 車両保険

保険料

15,000

20,000

10,000

Page 7: Introduction to Drools

2015-03-07(土) 第十回 #渋谷java 7

Drools デモ(Twitter CBR)● Twitter のサンプルストリームから特定条件に合致するツイートを

抽出する● ルールの表現として Drools ネイティブである DRL(Drools Rule

Language)と Complex Event Processing(CEP) を利用する● CEP は複数のイベント(データの追加、変更など)間に対して時間

の概念を付加することで、イベント間の関係から有意なデータを導くために利用する。– CEP 自体は BRMS に限らずリアルタイム処理でよく使われる用語(e.g.

Apache Spark)

Page 8: Introduction to Drools

2015-03-07(土) 第十回 #渋谷java 8

所感● 値の変更や条件の組合せが頻繁に変わるようなルール

において、デシジョンテーブルは直感的に表現できてよい– 自分でスプレッドシート(グリッド)のような UI を提供しても、条

件判定の実装部分が煩雑になりそう● DRL はそれなりに覚えることの多い DSL であるもの

の、CEP なども合わせて使いこなせれば 手続き型プログラミングだと煩雑になるケースが表現しやすくなる(イベント間の関係をオンライン処理しようとする場合など)。

Page 9: Introduction to Drools

2015-03-07(土) 第十回 #渋谷java 9

参考1(公式)● Drools 公式サイト

– http://drools.org/● ドキュメント

– http://drools.org/learn/documentation.html

Page 10: Introduction to Drools

2015-03-07(土) 第十回 #渋谷java 10

参考2(ブログ記事など)● ビジネスルールの館

● http://www.iluminado.jp/● tokobayashiの日記

– http://d.hatena.ne.jp/tokobayashi/– Twitter4JとDroolsでなんかリアルタイムな感じのもの

● その1 http://d.hatena.ne.jp/tokobayashi/20111109#p1● その2 http://d.hatena.ne.jp/tokobayashi/20111110#p1● その3 http://d.hatena.ne.jp/tokobayashi/20111113#p1