SlideShare a Scribd company logo
Introduction to Drools
2015-03-07(土) 第十回 #渋谷java
田邊 義真(たなべ よしまさ)
@emaggame
http://morec.at
2015-03-07(土) 第十回 #渋谷java 2
目次
●
BRMS とは
●
Drools とは
●
Drools デモ
●
所感
●
参考
2015-03-07(土) 第十回 #渋谷java 3
BRMS とは
●
Business Rule Management System
●
ビジネスは時々刻々変化する
●
ソースコード中のビジネスロジックをルールとして外に追い出
すことで、保守しやすくする。BRMS はそのためのランタイム
– ビジネス要求の変化に対応しやすくなる
– ビジネスロジックを俯瞰しやすくなる
– DSL を用いることで、通常のプログラミングモデルよりもロジックを
(場合によっては)容易に表現できるようになる
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
2015-03-07(土) 第十回 #渋谷java 5
Drools デモ
●
デモのソースコードは以下にあります
– http://bit.ly/drools-intro
●
いずれも Drools のサンプルから抜き出しました
2015-03-07(土) 第十回 #渋谷java 6
Drools デモ(自動車保険)
●
被保険者の属性(年齢・居住地のリスク・過去の保険請求
回数・保険種別)から保険料を算出する
●
ルールはスプレッドシートを用い、デシジョンテーブルとして
表現する
年齢 居住地 請求回数 保険種別
18 - 24 リスク低 0 車両保険
25 - 30 リスク高 1 代理店
25 - 35 リスク低 0 車両保険
保険料
15,000
20,000
10,000
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)
2015-03-07(土) 第十回 #渋谷java 8
所感
●
値の変更や条件の組合せが頻繁に変わるようなルール
において、デシジョンテーブルは直感的に表現できてよい
– 自分でスプレッドシート(グリッド)のような UI を提供しても、条
件判定の実装部分が煩雑になりそう
●
DRL はそれなりに覚えることの多い DSL であるもの
の、CEP なども合わせて使いこなせれば 手続き型プログ
ラミングだと煩雑になるケースが表現しやすくなる(イベ
ント間の関係をオンライン処理しようとする場合など)。
2015-03-07(土) 第十回 #渋谷java 9
参考1(公式)
●
Drools 公式サイト
– http://drools.org/
●
ドキュメント
– http://drools.org/learn/documentation.html
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

More Related Content

Similar to Introduction to Drools

スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則
スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則
スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則
株式会社スカイアーチネットワークス
 
【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~
【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~
【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~
Shuji Yamada
 
Office 365 ネットワーク接続の原則
Office 365 ネットワーク接続の原則Office 365 ネットワーク接続の原則
Office 365 ネットワーク接続の原則
Takashi Ushigami
 
経営情報フォーラム2009発表資料
経営情報フォーラム2009発表資料経営情報フォーラム2009発表資料
経営情報フォーラム2009発表資料
Keiichi Hashimoto
 
経営情報フォーラム2009
経営情報フォーラム2009経営情報フォーラム2009
経営情報フォーラム2009
guest5ad17cf
 
データ構造とPdcaに沿った操作を学ぶ
データ構造とPdcaに沿った操作を学ぶデータ構造とPdcaに沿った操作を学ぶ
データ構造とPdcaに沿った操作を学ぶ
e-sales-support
 
20150531 phpcon kansai
20150531 phpcon kansai20150531 phpcon kansai
20150531 phpcon kansaikumamidori
 
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」
Terui Masashi
 
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
Fumiyasu Sumiya
 
JAWS-UG三都物語_企業でのAWS導入のエントリーポイント
JAWS-UG三都物語_企業でのAWS導入のエントリーポイントJAWS-UG三都物語_企業でのAWS導入のエントリーポイント
JAWS-UG三都物語_企業でのAWS導入のエントリーポイントToshiyuki Konparu
 
TFSUG 20151126
TFSUG 20151126TFSUG 20151126
TFSUG 20151126
Shinichi Nishihata
 
DevLove Kansai AWS
DevLove Kansai AWSDevLove Kansai AWS
DevLove Kansai AWS
Takuro Sasaki
 
Dep005 azure ネットワーク設計
Dep005 azure ネットワーク設計Dep005 azure ネットワーク設計
Dep005 azure ネットワーク設計
Tech Summit 2016
 
20240522 Findy Event ビジネスの構造をアーキテクチャに落とし込みソフトウェアに可変性を注入する.pdf
20240522 Findy Event ビジネスの構造をアーキテクチャに落とし込みソフトウェアに可変性を注入する.pdf20240522 Findy Event ビジネスの構造をアーキテクチャに落とし込みソフトウェアに可変性を注入する.pdf
20240522 Findy Event ビジネスの構造をアーキテクチャに落とし込みソフトウェアに可変性を注入する.pdf
株式会社MonotaRO Tech Team
 
Azure Blueprints - 企業で期待される背景と特徴、活用方法
Azure Blueprints - 企業で期待される背景と特徴、活用方法Azure Blueprints - 企業で期待される背景と特徴、活用方法
Azure Blueprints - 企業で期待される背景と特徴、活用方法
Toru Makabe
 
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
Go Kawakami
 
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
Insight Technology, Inc.
 
Ms retail update ra 20191030
Ms retail update ra 20191030Ms retail update ra 20191030
Ms retail update ra 20191030
Microsoft Azure Japan
 
DBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームDBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォーム
Insight Technology, Inc.
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
真治 米田
 

Similar to Introduction to Drools (20)

スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則
スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則
スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則
 
【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~
【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~
【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~
 
Office 365 ネットワーク接続の原則
Office 365 ネットワーク接続の原則Office 365 ネットワーク接続の原則
Office 365 ネットワーク接続の原則
 
経営情報フォーラム2009発表資料
経営情報フォーラム2009発表資料経営情報フォーラム2009発表資料
経営情報フォーラム2009発表資料
 
経営情報フォーラム2009
経営情報フォーラム2009経営情報フォーラム2009
経営情報フォーラム2009
 
データ構造とPdcaに沿った操作を学ぶ
データ構造とPdcaに沿った操作を学ぶデータ構造とPdcaに沿った操作を学ぶ
データ構造とPdcaに沿った操作を学ぶ
 
20150531 phpcon kansai
20150531 phpcon kansai20150531 phpcon kansai
20150531 phpcon kansai
 
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」
 
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
 
JAWS-UG三都物語_企業でのAWS導入のエントリーポイント
JAWS-UG三都物語_企業でのAWS導入のエントリーポイントJAWS-UG三都物語_企業でのAWS導入のエントリーポイント
JAWS-UG三都物語_企業でのAWS導入のエントリーポイント
 
TFSUG 20151126
TFSUG 20151126TFSUG 20151126
TFSUG 20151126
 
DevLove Kansai AWS
DevLove Kansai AWSDevLove Kansai AWS
DevLove Kansai AWS
 
Dep005 azure ネットワーク設計
Dep005 azure ネットワーク設計Dep005 azure ネットワーク設計
Dep005 azure ネットワーク設計
 
20240522 Findy Event ビジネスの構造をアーキテクチャに落とし込みソフトウェアに可変性を注入する.pdf
20240522 Findy Event ビジネスの構造をアーキテクチャに落とし込みソフトウェアに可変性を注入する.pdf20240522 Findy Event ビジネスの構造をアーキテクチャに落とし込みソフトウェアに可変性を注入する.pdf
20240522 Findy Event ビジネスの構造をアーキテクチャに落とし込みソフトウェアに可変性を注入する.pdf
 
Azure Blueprints - 企業で期待される背景と特徴、活用方法
Azure Blueprints - 企業で期待される背景と特徴、活用方法Azure Blueprints - 企業で期待される背景と特徴、活用方法
Azure Blueprints - 企業で期待される背景と特徴、活用方法
 
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
 
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
 
Ms retail update ra 20191030
Ms retail update ra 20191030Ms retail update ra 20191030
Ms retail update ra 20191030
 
DBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームDBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォーム
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
 

More from Yoshimasa Tanabe

Introduction to Apache ActiveMQ Artemis
Introduction to Apache ActiveMQ ArtemisIntroduction to Apache ActiveMQ Artemis
Introduction to Apache ActiveMQ Artemis
Yoshimasa Tanabe
 
WildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE AppsWildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE Apps
Yoshimasa Tanabe
 
WildFly Swarm In Progress
WildFly Swarm In ProgressWildFly Swarm In Progress
WildFly Swarm In Progress
Yoshimasa Tanabe
 
Introduction to WildFly Swarm #jjug
Introduction to WildFly Swarm #jjugIntroduction to WildFly Swarm #jjug
Introduction to WildFly Swarm #jjug
Yoshimasa Tanabe
 
Introduction to WildFly Swarm
Introduction to WildFly SwarmIntroduction to WildFly Swarm
Introduction to WildFly Swarm
Yoshimasa Tanabe
 
Keycloak で SSO #渋谷java
Keycloak で SSO #渋谷javaKeycloak で SSO #渋谷java
Keycloak で SSO #渋谷java
Yoshimasa Tanabe
 
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
Yoshimasa Tanabe
 
OpenShift のある生活
OpenShift のある生活OpenShift のある生活
OpenShift のある生活
Yoshimasa Tanabe
 

More from Yoshimasa Tanabe (8)

Introduction to Apache ActiveMQ Artemis
Introduction to Apache ActiveMQ ArtemisIntroduction to Apache ActiveMQ Artemis
Introduction to Apache ActiveMQ Artemis
 
WildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE AppsWildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE Apps
 
WildFly Swarm In Progress
WildFly Swarm In ProgressWildFly Swarm In Progress
WildFly Swarm In Progress
 
Introduction to WildFly Swarm #jjug
Introduction to WildFly Swarm #jjugIntroduction to WildFly Swarm #jjug
Introduction to WildFly Swarm #jjug
 
Introduction to WildFly Swarm
Introduction to WildFly SwarmIntroduction to WildFly Swarm
Introduction to WildFly Swarm
 
Keycloak で SSO #渋谷java
Keycloak で SSO #渋谷javaKeycloak で SSO #渋谷java
Keycloak で SSO #渋谷java
 
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
 
OpenShift のある生活
OpenShift のある生活OpenShift のある生活
OpenShift のある生活
 

Introduction to Drools

  • 1. Introduction to Drools 2015-03-07(土) 第十回 #渋谷java 田邊 義真(たなべ よしまさ) @emaggame http://morec.at
  • 2. 2015-03-07(土) 第十回 #渋谷java 2 目次 ● BRMS とは ● Drools とは ● Drools デモ ● 所感 ● 参考
  • 3. 2015-03-07(土) 第十回 #渋谷java 3 BRMS とは ● Business Rule Management System ● ビジネスは時々刻々変化する ● ソースコード中のビジネスロジックをルールとして外に追い出 すことで、保守しやすくする。BRMS はそのためのランタイム – ビジネス要求の変化に対応しやすくなる – ビジネスロジックを俯瞰しやすくなる – DSL を用いることで、通常のプログラミングモデルよりもロジックを (場合によっては)容易に表現できるようになる
  • 4. 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
  • 5. 2015-03-07(土) 第十回 #渋谷java 5 Drools デモ ● デモのソースコードは以下にあります – http://bit.ly/drools-intro ● いずれも Drools のサンプルから抜き出しました
  • 6. 2015-03-07(土) 第十回 #渋谷java 6 Drools デモ(自動車保険) ● 被保険者の属性(年齢・居住地のリスク・過去の保険請求 回数・保険種別)から保険料を算出する ● ルールはスプレッドシートを用い、デシジョンテーブルとして 表現する 年齢 居住地 請求回数 保険種別 18 - 24 リスク低 0 車両保険 25 - 30 リスク高 1 代理店 25 - 35 リスク低 0 車両保険 保険料 15,000 20,000 10,000
  • 7. 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)
  • 8. 2015-03-07(土) 第十回 #渋谷java 8 所感 ● 値の変更や条件の組合せが頻繁に変わるようなルール において、デシジョンテーブルは直感的に表現できてよい – 自分でスプレッドシート(グリッド)のような UI を提供しても、条 件判定の実装部分が煩雑になりそう ● DRL はそれなりに覚えることの多い DSL であるもの の、CEP なども合わせて使いこなせれば 手続き型プログ ラミングだと煩雑になるケースが表現しやすくなる(イベ ント間の関係をオンライン処理しようとする場合など)。
  • 9. 2015-03-07(土) 第十回 #渋谷java 9 参考1(公式) ● Drools 公式サイト – http://drools.org/ ● ドキュメント – http://drools.org/learn/documentation.html
  • 10. 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