<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>El mundo que soñé</title>
	<atom:link href="http://blog.iluminado.jp/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.iluminado.jp</link>
	<description>ビジネスルールとそれにまつわるソフトウェア技術の雑記帳</description>
	<lastBuildDate>Sun, 20 May 2012 14:18:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ビジネスルール管理システムとエキスパートシステム(1)</title>
		<link>http://blog.iluminado.jp/2012/05/20/%e3%83%93%e3%82%b8%e3%83%8d%e3%82%b9%e3%83%ab%e3%83%bc%e3%83%ab%e7%ae%a1%e7%90%86%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%a8%e3%82%a8%e3%82%ad%e3%82%b9%e3%83%91%e3%83%bc%e3%83%88%e3%82%b7%e3%82%b9/</link>
		<comments>http://blog.iluminado.jp/2012/05/20/%e3%83%93%e3%82%b8%e3%83%8d%e3%82%b9%e3%83%ab%e3%83%bc%e3%83%ab%e7%ae%a1%e7%90%86%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%a8%e3%82%a8%e3%82%ad%e3%82%b9%e3%83%91%e3%83%bc%e3%83%88%e3%82%b7%e3%82%b9/#comments</comments>
		<pubDate>Sun, 20 May 2012 14:18:54 +0000</pubDate>
		<dc:creator>Y.Tsushima</dc:creator>
				<category><![CDATA[BRMS一般]]></category>
		<category><![CDATA[むかしばなし]]></category>
		<category><![CDATA[エキスパートシステム]]></category>

		<guid isPermaLink="false">http://blog.iluminado.jp/?p=254</guid>
		<description><![CDATA[最近、日経BP社 ITproのメールマガジンで「最新ITの“古さ”を知らない危険」という記事を読みました。
まとめてしまえば
最新のIT関連キーワードXXは、つきつめてみると昔流行ったキーワードYYの話である
という発言 [...]]]></description>
			<content:encoded><![CDATA[<p>最近、<a title="日経BP社 ITPro" href="http://itpro.nikkeibp.co.jp/" target="_blank">日経BP社 ITpro</a>のメールマガジンで「最新ITの“古さ”を知らない危険」という記事を読みました。</p>
<p>まとめてしまえば</p>
<p>最新のIT関連キーワードXXは、つきつめてみると昔流行ったキーワードYYの話である</p>
<p>という発言を情報システム部長などのベテランからよく聞くということ。<br />
そしてそれは、</p>
<p>ある意味正しいが、ある意味正しくない</p>
<p>ということ。これは、</p>
<p>確かに最近のIT関連技術のキーワードは、昔の技術キーワードの蒸し返しであることが多く、ベテランの言うことはそういった面で正しいと言えるが、一方で昔のブーム以降のさまざまな(周辺を含めた)技術の進歩を取り込んで、単純な蒸し返しに終わらない再挑戦、再々挑戦となっているという面で正しくない</p>
<p>というわけ。要するに</p>
<p>最近流行の技術は過去に存在した技術の蒸し返しであることも多いが、単純な蒸し返しであるというわけではない。したがって徒に否定してしまうのは正しくないが、一方で最近の技術を過去の経験と照らし合わせもせず無批判に取り入れるのは、過去と同じ失敗をしてしまう可能性があるのでそれもよくない。</p>
<p>ということのようです。</p>
<p>さて、上に挙げた記事では、実例として、</p>
<p>XXが「スマート&#8230;」なら　YYが「ユビキタス」「ブロードバンド」「ニューメディア」<br />
XXが「クラウド」なら　YYは「ASP」「VAN」あるいは「仮想化」</p>
<p>が挙げられていましたが、今回の本題の話に入ると、さしずめ</p>
<p>XXが「ビジネスルール管理システム(BRMS)」なら　YYは「エキスパートシステム」</p>
<p>といったところになるでしょう(ちなみにここで言っているBRMSとは<a title="日経コンピュータの記事" href="http://blog.iluminado.jp/2012/03/29/%E6%97%A5%E7%B5%8C%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E3%80%8C%E8%B6%85%E9%AB%98%E9%80%9F%E9%96%8B%E7%99%BA%E3%80%8D%E7%89%B9%E9%9B%86/" target="_blank">例の記事</a>のビジネスルール特化型のBRMSのことなので念のため、XXがオールインワン型のBRMSというのであれば、YYは自動生成???)。</p>
<p>したがって上の記事の主張に沿うならば、BRMSとエキスパートシステムとの対比と、過去の総括をやっておく必要がでてきます。実際、BRMSのことを上司に話したら、「昔のエキスパートシステムやルールベースの言語とどう違うの？」という質問をされた&#8230;という話も最近ちらほら耳にしていますし、</p>
<p>また、私が購読している海の向こう(というか言葉の壁の向こう)のブログでまさにこの対比がホットな話題となっていたりもします。</p>
<p><a title="Follow-Up on ‘Harvesting Business Rules’: Business Rules vs. Expert Systems" href="http://www.ronross.info/blog/2012/05/09/follow-up-on-harvesting-business-rules-business-rules-vs-expert-systems/" target="_blank">Follow-Up on ‘Harvesting Business Rules’: Business Rules vs. Expert Systems</a><br />
<a title="Response to: Business Rules vs. Expert Systems: Same or Different?" href="http://www.ronross.info/blog/2012/05/16/response-to-business-rules-vs-expert-systems-same-or-different/" target="_blank">Response to: Business Rules vs. Expert Systems: Same or Different?</a><br />
<a title="Additional Response to: Business Rules vs. Expert Systems – Same or Different?" href="http://www.ronross.info/blog/2012/05/18/additional-response-to-business-rules-vs-expert-systems-same-or-different/" target="_blank">Additional Response to: Business Rules vs. Expert Systems – Same or Different?</a></p>
<p>実は、かなり前に当ブログでも関連するようなことを話題にしており、</p>
<p><a title="エキスパートシステムの思ひ出１" href="http://blog.iluminado.jp/2009/09/13/%E3%82%A8%E3%82%AD%E3%82%B9%E3%83%91%E3%83%BC%E3%83%88%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E6%80%9D%E3%81%B2%E5%87%BA%EF%BC%91%E3%81%AA%E3%81%9C%E4%BB%8A%E3%81%BE%E3%81%9F%E3%83%AB%E3%83%BC/" target="_blank">エキスパートシステムの思ひ出１(なぜ今またルールベースに光があたっているのか)</a><br />
<a title="エキスパートシステムの思ひ出２(なぜ今またルールベースに光があたっているのか)" href="http://blog.iluminado.jp/2009/09/16/%E3%82%A8%E3%82%AD%E3%82%B9%E3%83%91%E3%83%BC%E3%83%88%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E6%80%9D%E3%81%B2%E5%87%BA%EF%BC%92%E3%81%AA%E3%81%9C%E4%BB%8A%E3%81%BE%E3%81%9F%E3%83%AB%E3%83%BC/" target="_blank">エキスパートシステムの思ひ出２(なぜ今またルールベースに光があたっているのか)</a></p>
<p>という記事があるのですが、読んでいてわかりにくい部分などもあるので、ここでは再度、ビジネスルール管理システムとエキスパートシステムとを対比しながらまとめておきましょう。</p>
<p>まず、今回のブームでのBRMSと過去のエキスパートシステムとの一番の大きな違いは</p>
<p>１．適用する対象の違い</p>
<p>と言えましょう。　(この項続く)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iluminado.jp/2012/05/20/%e3%83%93%e3%82%b8%e3%83%8d%e3%82%b9%e3%83%ab%e3%83%bc%e3%83%ab%e7%ae%a1%e7%90%86%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%a8%e3%82%a8%e3%82%ad%e3%82%b9%e3%83%91%e3%83%bc%e3%83%88%e3%82%b7%e3%82%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drools5.4.0.Final リリース</title>
		<link>http://blog.iluminado.jp/2012/05/20/drools5-4-0-final-%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/</link>
		<comments>http://blog.iluminado.jp/2012/05/20/drools5-4-0-final-%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/#comments</comments>
		<pubDate>Sun, 20 May 2012 00:36:38 +0000</pubDate>
		<dc:creator>Y.Tsushima</dc:creator>
				<category><![CDATA[BRMS一般]]></category>
		<category><![CDATA[Drools]]></category>

		<guid isPermaLink="false">http://blog.iluminado.jp/2012/05/20/drools5-4-0-final-%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/</guid>
		<description><![CDATA[今月の14日に、Drools5.4.0.Finalがリリースされました。
Droolsの開発は結構活発で、追いついていくのが大変。
久しぶりに新しい機能など、きちんと整理しておかなくてはと
思っている今日このごろ。
]]></description>
			<content:encoded><![CDATA[<p>今月の14日に、Drools5.4.0.Finalがリリースされました。</p>
<p>Droolsの開発は結構活発で、追いついていくのが大変。<br />
久しぶりに新しい機能など、きちんと整理しておかなくてはと<br />
思っている今日このごろ。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iluminado.jp/2012/05/20/drools5-4-0-final-%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>通信業界のBRMS</title>
		<link>http://blog.iluminado.jp/2012/04/17/%e9%80%9a%e4%bf%a1%e6%a5%ad%e7%95%8c%e3%81%aebrms/</link>
		<comments>http://blog.iluminado.jp/2012/04/17/%e9%80%9a%e4%bf%a1%e6%a5%ad%e7%95%8c%e3%81%aebrms/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 14:36:02 +0000</pubDate>
		<dc:creator>Y.Tsushima</dc:creator>
				<category><![CDATA[BRMS一般]]></category>
		<category><![CDATA[Drools]]></category>
		<category><![CDATA[Prolog]]></category>

		<guid isPermaLink="false">http://blog.iluminado.jp/?p=251</guid>
		<description><![CDATA[スマホ急増にもBRMSが効く
&#8230;実は、日本でも通信業界で(ルールエンジンを主体とした)BRMSはそれほど珍しいものではなかったり。
たとえば
日本テレコム、ILOG JRulesを採用 (2006年7月)
は [...]]]></description>
			<content:encoded><![CDATA[<p><a title="スマホ急増にもBRMSが効く" href="http://itpro.nikkeibp.co.jp/article/COLUMN/20120402/388706/" target="_blank">スマホ急増にもBRMSが効く</a></p>
<p>&#8230;実は、日本でも通信業界で(ルールエンジンを主体とした)BRMSはそれほど珍しいものではなかったり。</p>
<p>たとえば</p>
<p><a title="日本テレコム、ILOG JRulesを採用" href="http://www.iluminado.jp/news/newsuptodate/59-jtelecom-ilog-jrules.html" target="_blank">日本テレコム、ILOG JRulesを採用</a> (2006年7月)</p>
<p>は、料金計算にBRMSを用いていますし(ちなみにILOG JRulesは現在のIBMのBRMS)、</p>
<p><a title="Prologベースでのクラウドサービス運用監視" href="http://www.az-prolog.com/201010_jirei.pdf" target="_blank">Prologベースプロダクションシステムによるクラウドサービスの運用監視</a></p>
<p>などは通信の監視としてルールエンジンを用いています(Prologをルールエンジンとして使っています)。</p>
<p>なお料金計算にしても、ネットワークアプライアンスの監視にしても比較的ルールエンジンが適用しやすい分野です。たとえば</p>
<p><a title="CISCO ANA と Drools" href="http://www.cisco.com/en/US/docs/net_mgmt/active_network_abstraction/3.6_sp4/administrator/administration/guide/ruleseng.html" target="_blank">Cisco Active Network Abstraction Administrator Guide, 3.6.4 &#8211; Drools Rules Engine &#8230;</a></p>
<p>というのはご存知でしょうか。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iluminado.jp/2012/04/17/%e9%80%9a%e4%bf%a1%e6%a5%ad%e7%95%8c%e3%81%aebrms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>続々　日経コンピュータの「超高速開発」特集</title>
		<link>http://blog.iluminado.jp/2012/04/14/%e7%b6%9a%e3%80%85%e3%80%80%e6%97%a5%e7%b5%8c%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf%e3%81%ae%e3%80%8c%e8%b6%85%e9%ab%98%e9%80%9f%e9%96%8b%e7%99%ba%e3%80%8d%e7%89%b9%e9%9b%86/</link>
		<comments>http://blog.iluminado.jp/2012/04/14/%e7%b6%9a%e3%80%85%e3%80%80%e6%97%a5%e7%b5%8c%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf%e3%81%ae%e3%80%8c%e8%b6%85%e9%ab%98%e9%80%9f%e9%96%8b%e7%99%ba%e3%80%8d%e7%89%b9%e9%9b%86/#comments</comments>
		<pubDate>Sat, 14 Apr 2012 06:30:27 +0000</pubDate>
		<dc:creator>Y.Tsushima</dc:creator>
				<category><![CDATA[システム開発方法論]]></category>

		<guid isPermaLink="false">http://blog.iluminado.jp/?p=243</guid>
		<description><![CDATA[ひとつの記事で、ちょっと引っ張りすぎかとも思いますが、もう少し。
この記事で違和感を感じていたことがもうひとつあります。それは、
「超高速開発」が日本を救う
という見出し。システム開発が速く効率的に進められるに越したこと [...]]]></description>
			<content:encoded><![CDATA[<p>ひとつの記事で、ちょっと引っ張りすぎかとも思いますが、もう少し。</p>
<p>この記事で違和感を感じていたことがもうひとつあります。それは、</p>
<p>「超高速開発」が日本を救う</p>
<p>という見出し。システム開発が速く効率的に進められるに越したことはないのですが、それがそのまま日本を救う&#8230;？ もちろん見出し特有の誇張だとは思いますが、一方で裏を返せば、開発が速くできればそれでOKという意識が垣間見られて&#8230;ちょっと穿ち過ぎでしょうか。</p>
<p>***</p>
<p>一般的なユーザ企業で利用される(コンピュータ)システムの技術には大きく２つの方向があると私は思っています。</p>
<ul>
<li> システム開発ツールや開発方法論などシステムの開発効率をあげる方向。</li>
<li> システムをどのように使って現実の問題に対処するか、システムをどのように現実の問題に応用していくか、という方向</li>
</ul>
<p>私も学生時代を含めると30年近くこの分野に携わっていますが、私の見るに日本の企業向けシステム技術の方向が、ここのところ&#8230;というかJavaやUMLが出てきた10数年前から開発効率をあげること&#8230;開発方法論とか開発ツール、開発言語に偏重しているような気がしています。</p>
<p>もちろん開発効率をあげることは重要であり、未だに企業内の情報化が進んでいない企業などでは、最重要の課題であることもわかります。その上でやはり、世間一般で、「そもそもどんなシステムを作るのか」という議論が少ないように思うのです。</p>
<p>もっとも私自身、開発方法論こそが大事&#8230;と思っていたことがありました。そのころは企業内のコンピュータシステムは汎用機全盛の時代。システム全体での新人研修の言語はCOBOL。構造化プログラミングの話とか。学生時代に多少なりとも抽象データ型とかオブジェクト指向とかを齧ってきたものにとっては、&#8230;う～ん。という時代でした。</p>
<p>そんなときに最初に配属されたのが、人工知能やORを用いて生産計画(などなど)のシステムをつくるようなところ。それこそ「システムをどのように使って現実の問題に対処するか」の技術の部署でした。<br />
最適化手法や人工知能など、技術としてそれなりにはおもしろかったのですが、個人的にはシステム開発の方法論が(生意気にも)あまりにもナイーブだなと思って、オブジェクト指向の勉強(*1)をやっていました。</p>
<p>それが、UMLやJava、そしてデザインパターンなどが出てきて世の中の流れが一気に方法論に傾き始めたように思います(特に日本)。もちろんこれによりさまざまな洗練された開発手法がうまれてきたことは確かですし、それ自体は喜ばしいことではあるのですが、一方でそもそもコンピュータを使って何をやるかというところについては停滞気味になってしまっていったのではないでしょうか(特に日本)。そんな中、ここ10数年インターネットが普及するにつれ、従来の企業のシステムからは考えられないようなインターネット上のサービスがうまれてきています。検索エンジンしかり、SNSしかり、動画共有サイトしかり、ECしかり&#8230;これらはいずれも「システムをどのように現実の問題に応用していくか」という問いの上に生まれてきたものです。インターネットの世界では、まず「何をつくるか」があります。</p>
<p>翻って従来からの企業のアプリを考えたとき「何をつくるか」というのはだいたい決まっていて、それを「どう効率的に開発するか」ということが焦点になりがちです(特に日本)。</p>
<p>&#8230;そろそろ企業のアプリ開発でも、「何を作るか」ということにもうちょっと重心を移していって良いのではないでしょうか(特に日本)。</p>
<p>私が仕事で生産計画や人工知能をやっていたのは20年以上も前。そのときはコンピュータパワーの貧弱さがひとつのネックとなっていました。しかし現在、iPad2などは、そのころの一般的なスーパーコンピュータのひとつCray2/4と同等だとか。昔を知っている人ならわかると思いますが、あのCray(*2)が街中に、電車の中に、家の中にころがっているのです。</p>
<p>こんな時代に20年前と同じような発想でアプリを考えていてはもったいないでしょう。昔できなかった最適化の計算などは、普通に行けたり^^。最近流行りつつある「ビッグデータ」の分析などは、これからのひとつの方向を示しているのかもしれません。</p>
<p>(また、このコンピュータパワーの飛躍的な増大がなければ、(ビジネスルール特化型の)BRMSは存在し得なかったでしょう。)</p>
<p>***</p>
<p>実は(ビジネスルール特化型の)BRMSの世界では、以前からの謳い文句「ビジネスの変化に合わせてITも変更」というところから一歩進んだところ、たとえばデータ分析とBRMSとを組み合わせた意思決定の最適化という方向に重点がシフトしていきつつあります。つまり、開発・保守のスピードを問題にするのではなく、そのスピードを前提にしてそれらをどう活かしていくということが焦点になってきています(*3)。</p>
<p>***</p>
<p>というわけで、</p>
<p>「超高速開発」</p>
<p>するのはよいのですが、それだけで</p>
<p>日本が救われる</p>
<p>とは思えません(笑)。</p>
<p>今の時代、開発が「超高速」かどうかはともかく、定型的な開発などはできるだけ無駄を減らし、手間をかけずに、自動生成できるところはできるだけ自動生成ですませる。そして、システムを現実の問題の解決のためにいかに適用していくかというところ、システムに「付加価値」をどうつけていくかという部分により注力していかないことには「日本は救われない」のではないでしょうか。</p>
<p>「超高速開発」を前提として、その一歩先の話が議論されていくようでないと「日本を救う」と言えないのではないでしょうか。</p>
<p>***</p>
<p>最後の方はかなり調子が高くなってしまいましたが、<a title="前回の記事" href="http://blog.iluminado.jp/2012/04/11/%E7%B6%9A%E3%80%80%E6%97%A5%E7%B5%8C%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E3%80%8C%E8%B6%85%E9%AB%98%E9%80%9F%E9%96%8B%E7%99%BA%E3%80%8D%E7%89%B9%E9%9B%86/" target="_blank">前回の記事</a>で自動生成ツールについて使えるところではどんどん使っていけばよいと書いた真意はそこにあります。</p>
<p>過去20年間で、コンピュータパワーは飛躍的にアップし、またシステムを利用する要素技術も格段に進歩しました(たとえば機械学習などを含む統計的な数々の手法など)。一方でこれらを現実に適用していくことに関しては緒に就いたばかりで、これからの大きな発展が期待されています。</p>
<p>いままで仕事として、ユーザの業務にも、システム技術にも向き合ってきたはずのSEは、これからのシステムの応用技術を開拓し、新たなビジネスモデルを考えていくのに恰好な人材だと思っているのですがねえ。</p>
<p>***</p>
<p>*1 : ちなみに、そのころ読んだのは、<a href="http://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E5%85%A5%E9%96%80-SOFTWARE-SCIENCE-Programming-Paradigm/dp/4756100503/?_encoding=UTF8&amp;tag=aromailuminad-22&amp;linkCode=ur2&amp;qid=1334383674&amp;camp=247&amp;sr=8-1&amp;creative=1211" target="_blank">バートランドメイヤーの「オブジェクト指向入門」の第1版</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=aromailuminad-22&amp;l=ur2&amp;o=9" border="0" alt="" width="1" height="1" />。これはおもしろかったです。私のオブジェクト指向の知識のベースはこの本、類いまれなる名著だと思います。<br />
今は<a href="http://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E5%8E%9F%E5%89%87%E3%83%BB%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%97%E3%83%88-Architect%E2%80%99Archive-%E3%82%AF%E3%83%A9%E3%82%B7%E3%83%83%E3%82%AF%E3%83%A2%E3%83%80%E3%83%B3%E3%83%BB%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0/dp/4798111112/?_encoding=UTF8&amp;tag=aromailuminad-22&amp;linkCode=ur2&amp;qid=1334383674&amp;camp=247&amp;sr=8-3&amp;creative=1211" target="_blank">第2版</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=aromailuminad-22&amp;l=ur2&amp;o=9" border="0" alt="" width="1" height="1" />が出ていますが、2分冊になってそれぞれが辞書みたいに分厚いのでさすがに読む気になりません(^^;)・・・でも、たぶん読んだらとても勉強になると思います。その他には<a href="http://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E6%96%B9%E6%B3%95%E8%AB%96OMT%E2%80%95%E3%83%A2%E3%83%87%E3%83%AB%E5%8C%96%E3%81%A8%E8%A8%AD%E8%A8%88-%E3%82%B8%E3%82%A7%E3%83%BC%E3%83%A0%E3%82%BA-%E3%83%A9%E3%83%B3%E3%83%9C%E3%83%BC/dp/4810185273/?_encoding=UTF8&amp;tag=aromailuminad-22&amp;linkCode=ur2&amp;qid=1334383950&amp;camp=247&amp;sr=8-1&amp;creative=1211" target="_blank">OMT</a>や<a href="http://www.amazon.co.jp/Booch%E6%B3%95-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E5%88%86%E6%9E%90%E3%81%A8%E8%A8%AD%E8%A8%88-Professional-Computing-Series/dp/4795296545/?_encoding=UTF8&amp;tag=aromailuminad-22&amp;linkCode=ur2&amp;qid=1334384049&amp;camp=247&amp;sr=8-1&amp;creative=1211" target="_blank">Booch法</a>、<a href="http://www.amazon.co.jp/Object-Oriented-Analysis-Peter-Coad/dp/0136300138/?_encoding=UTF8&amp;tag=aromailuminad-22&amp;linkCode=ur2&amp;qid=1334384181&amp;camp=247&amp;sr=8-13&amp;creative=1211" target="_blank">Coad&amp;Yourdon</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=aromailuminad-22&amp;l=ur2&amp;o=9" border="0" alt="" width="1" height="1" />の本などを濫読していました。</p>
<p>*2 : そのころはスーパーコンピュータといえばCray、Crayといえばスーパーコンピュータという時代でした。もちろんNECや富士通など日本勢も健闘してはいましたが、デザイン面でのCrayのインパクトにはかないませんでした。</p>
<p>*3 : この辺は、BRMSの記述はあまりありませんが、ちょっと古い<a href="http://www.amazon.co.jp/%E5%88%86%E6%9E%90%E5%8A%9B%E3%82%92%E6%AD%A6%E5%99%A8%E3%81%A8%E3%81%99%E3%82%8B%E4%BC%81%E6%A5%AD-%E5%BC%B7%E3%81%95%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B%E6%96%B0%E3%81%97%E3%81%84%E6%88%A6%E7%95%A5%E3%81%AE%E7%A7%91%E5%AD%A6-%E3%83%88%E3%83%BC%E3%83%9E%E3%82%B9%E3%83%BBH%E3%83%BB%E3%83%80%E3%83%99%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88/dp/4822246841/?_encoding=UTF8&amp;tag=aromailuminad-22&amp;linkCode=ur2&amp;qid=1334384415&amp;camp=247&amp;sr=8-1&amp;creative=1211" target="_blank">ダヴェンポートの本</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=aromailuminad-22&amp;l=ur2&amp;o=9" border="0" alt="" width="1" height="1" />。さらに最近の本としては、<a href="http://www.amazon.co.jp/Decision-Management-Systems-Practical-Predictive/dp/0132884380/?_encoding=UTF8&amp;tag=aromailuminad-22&amp;linkCode=ur2&amp;qid=1334384512&amp;camp=247&amp;sr=8-6&amp;creative=1211" target="_blank">James TaylorのDecision Management Systems</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=aromailuminad-22&amp;l=ur2&amp;o=9" border="0" alt="" width="1" height="1" />とかが参考になるかと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iluminado.jp/2012/04/14/%e7%b6%9a%e3%80%85%e3%80%80%e6%97%a5%e7%b5%8c%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf%e3%81%ae%e3%80%8c%e8%b6%85%e9%ab%98%e9%80%9f%e9%96%8b%e7%99%ba%e3%80%8d%e7%89%b9%e9%9b%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>続　日経コンピュータの「超高速開発」特集</title>
		<link>http://blog.iluminado.jp/2012/04/11/%e7%b6%9a%e3%80%80%e6%97%a5%e7%b5%8c%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf%e3%81%ae%e3%80%8c%e8%b6%85%e9%ab%98%e9%80%9f%e9%96%8b%e7%99%ba%e3%80%8d%e7%89%b9%e9%9b%86/</link>
		<comments>http://blog.iluminado.jp/2012/04/11/%e7%b6%9a%e3%80%80%e6%97%a5%e7%b5%8c%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf%e3%81%ae%e3%80%8c%e8%b6%85%e9%ab%98%e9%80%9f%e9%96%8b%e7%99%ba%e3%80%8d%e7%89%b9%e9%9b%86/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 14:32:13 +0000</pubDate>
		<dc:creator>Y.Tsushima</dc:creator>
				<category><![CDATA[システム開発方法論]]></category>

		<guid isPermaLink="false">http://blog.iluminado.jp/?p=237</guid>
		<description><![CDATA[表題の日経記事の「オール・イン・ワン型」自動生成ツール(ＢＲＭＳに分類するのは私としては違和感を禁じ得ないので、あえて自動生成ツールとしておきます)について、前回も書きましたが、私自身は、使えるところであれば積極的に使っ [...]]]></description>
			<content:encoded><![CDATA[<p>表題の日経記事の「オール・イン・ワン型」自動生成ツール(ＢＲＭＳに分類するのは私としては違和感を禁じ得ないので、あえて自動生成ツールとしておきます)について、前回も書きましたが、私自身は、使えるところであれば積極的に使っていってよいと思っています。ネットを見てみると、否定的か肯定的か極端な意見がわりに多かったですが、現実的に見れば、それほど毛嫌いする理由もないですし、一方で盲信するほど革命的という話でもないでしょう。</p>
<div id=":z3">最近はシステムの技術も進歩して、こういった自動生成のツールに限らず、フレームワーク(商用、OSSを問わず)などでもそこそこよくできているものなら、ちょっとしたアプリのスケルトンくらい簡単にできてしまいます。</p>
<p>なので、今現在開発の現場にいる方にとっては、これらツールを、分野をある程度限定して、多少の開発ノウハウを加え、洗練させていけば、そこそこのアプリが自動生成できるだろうことは想像つくのではないでしょうか(もちろんそういった自動生成ツールを作るのは簡単ではないとは思います)。またそもそも自動生成するアプリが使えないようなら、ERPや業務用のパッケージはおそらくもっと使えないはず。実際にERPや業務用パッケージが製品として成り立っている以上、自動生成するアプリは少なくともそこそこは使えるでしょう。アプリ的に言えば、あとはそれをそのまま使っていくかどうかの問題だけだと思います。</p>
<p>自動生成ツールが使えないという話は自動生成したアプリそのものが使えないというよりもむしろ、</p>
</div>
<div>
<ul>
<li>既存の他システムとのインタフェースをとりづらい。</li>
<li> ソースコードを生成するツールの場合、生成したコードを手で微調整するだけの柔軟性はあるが、一方で、あらためてツールを使ってアプリを再構築といったときに手で修正したソースコードの扱いが非常に難しい</li>
</ul>
<p>といったところでしょうか。逆にこの辺の弱点がうまくクリアできれば(もしくは我慢ができれば)手間をかけずに自動生成できるツールを採用しない手はないのではと思います。</p>
<p>そもそも今ある大部分の業務アプリというのは、事務の台帳をDB化したもの。ロジックそのものに複雑なところがあるわけではありません。そういったアプリに対しては必要以上に人手をかけて開発を行うよりも、<br />
使えるところは自動生成ツールやパッケージを積極的に使ってうまく開発していくのが得策だと最近特に思っています。(続く&#8230;)</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.iluminado.jp/2012/04/11/%e7%b6%9a%e3%80%80%e6%97%a5%e7%b5%8c%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf%e3%81%ae%e3%80%8c%e8%b6%85%e9%ab%98%e9%80%9f%e9%96%8b%e7%99%ba%e3%80%8d%e7%89%b9%e9%9b%86/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ビジネスルール管理システム (BRMS) の動向　US　2011-2012</title>
		<link>http://blog.iluminado.jp/2012/04/06/%e3%83%93%e3%82%b8%e3%83%8d%e3%82%b9%e3%83%ab%e3%83%bc%e3%83%ab%e7%ae%a1%e7%90%86%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0brms%e3%81%ae%e5%8b%95%e5%90%91%e3%80%80us%e3%80%802011-2012/</link>
		<comments>http://blog.iluminado.jp/2012/04/06/%e3%83%93%e3%82%b8%e3%83%8d%e3%82%b9%e3%83%ab%e3%83%bc%e3%83%ab%e7%ae%a1%e7%90%86%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0brms%e3%81%ae%e5%8b%95%e5%90%91%e3%80%80us%e3%80%802011-2012/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 16:14:20 +0000</pubDate>
		<dc:creator>Y.Tsushima</dc:creator>
				<category><![CDATA[BPM、SOA]]></category>
		<category><![CDATA[BRMS一般]]></category>

		<guid isPermaLink="false">http://blog.iluminado.jp/?p=226</guid>
		<description><![CDATA[以前、このブログでBRMSの市場について取り上げた記事を書きましたが、最近USでのBRMSの動向について、ブログやレポートを見る機会があったので、個人的な視点含めごく簡単にまとめてみました。(ちなみに、ここで言っているB [...]]]></description>
			<content:encoded><![CDATA[<p>以前、このブログで<a title="近年のビジネスルール管理システム" href="http://blog.iluminado.jp/2008/12/04/%E8%BF%91%E5%B9%B4%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E3%83%AB%E3%83%BC%E3%83%AB%E7%AE%A1%E7%90%86%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%EF%BC%88brms%EF%BC%89%E5%B8%82%E5%A0%B4/" target="_blank">BRMSの市場について取り上げた記事</a>を書きましたが、最近USでのBRMSの動向について、ブログやレポートを見る機会があったので、個人的な視点含めごく簡単にまとめてみました。(ちなみに、ここで言っているBRMSとは、<a title="日経コンピュータの例の記事" href="http://blog.iluminado.jp/2012/03/29/%E6%97%A5%E7%B5%8C%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E3%80%8C%E8%B6%85%E9%AB%98%E9%80%9F%E9%96%8B%E7%99%BA%E3%80%8D%E7%89%B9%E9%9B%86/" target="_blank">日経コンピュータの例の記事</a>で言う「ビジネスルール特化型」のことなので念のため。「オールインワン型」はここでは含まれていません)</p>
<p>USのBRMS市場は2008年から2010年にかけて年2ケタ成長を続けており、すべての開発ツールの市場の中でも成長率の非常に高い市場のひとつとなっています。その規模は昨年で軽く6億ドルを超える程度になっていると推計されています。</p>
<p>また、ここ数年合併・統合が多くみられるのもこの市場の特徴です。ビジネスポリシーやルールの急速な変化に合わせて、システムも変更して行こうとすると、BRMSのようにビジネスルールのライフサイクル全般にわたって統合的に管理するツールが必要になってくるのでしょう。大手のベンダは、そのようなBRMSの潜在力に着目し、有望なBRMSベンダを取り込んでいく傾向にあります。Ilogを買収したIBM、HaleyはOracleに、YasuがSAP、InnovationsがBoschに、そして最近ではCorticonがProgressに買収されています。</p>
<p>さて最近のBRMSベンダの状況ですが、ある程度の地歩を保ちながら大企業向けなどで比較的元気のあるのは、以下のベンダー。</p>
<ul>
<li><a title="IBM Ilog JRules" href="http://www-06.ibm.com/software/jp/websphere/ilog/business-rule-management/jrules-family/jrules/" target="_blank">IBM(旧Ilog JRules)</a><br />
言わずと知れたBRMSの巨人。BRMSは、比較的細かい制御が可能な開発者寄りの製品と、細かい制御よりもむしろ簡単に扱えることに重点を置いたビジネスユーザ寄りの製品とがあります。この分類でいえば、IBMのBRMSは、古くからあるだけに、もともとは開発者寄りの製品ではありますが、ビジネスユーザ向けの機能も充実させてきており、幅広い範囲に受け入れられるようになってきています。ただ、IBMはこのところBRMSとしての機能よりもBPMやCEPとの統合に力を入れている様子です。</li>
<li><a title="JBoss Enterprise BRMS" href="http://www.redhat.com/products/jbossenterprisemiddleware/business-rules/" target="_blank">Red Hat JBoss　(JBoss Drools)</a><br />
もとはオープンソースのJBoss BRMSは、私は勝手に貧者のJRules(!)と呼んでおり、ここ数年特に、基本機能がかなり充実してきました。ただどちらかというと開発者向けの機能の方が優先で開発され、後からデシジョンテーブルやDSLなどのユーザ向け機能が後から追いつくという感があります。</li>
<li><a title="InRule" href="http://www.inrule.com/" target="_blank">InRule Technology (InRule)</a><br />
.Net向けのツールの最右翼。.Netには、IBM Ilog、Corticon、FICOなど対応しているツールは多いですが、その大部分はJavaをメインのターゲットにしているツールであり、.NetはJavaツールの.Net対応版として提供されています。その中でメインターゲットとして.Netを対象としているInRuleは、BRMSとして貴重な存在です。</li>
<li><a title="Visual Rules" href="http://www.visual-rules.com/business-rules-management-software-rules-engine.html" target="_blank">Bosch Software Innovations (Visual Rules)</a><br />
BRMSの欧州の雄(Ilog JRules も元々はフランス生まれですが&#8230;)。グラフィカルなルール表現が特徴のVisual Rules。欧州では大きく伸びているようです。</li>
<li><a title="Corticon" href="http://www.progress.com/en/corticon/index.html" target="_blank">Progress (Progress Corticon)</a><br />
Ilogなどに比べれば新進といえますが、最近の伸びは目を見張るものがあります。もとはユーザ(医者)が中心になってベースを設計しているので、ビジネスユーザ寄りの機能が充実した製品です。Corticonは、上記InRuleやBoschなどとともに顧客を非常に増やしています。</li>
</ul>
<p>その他BRMSの有名どころでは、</p>
<ul>
<li><a title="FICO　BlazeAdvisor" href="http://www.ficoasia.com/japan/webcampaign/blaze/index.html" target="_blank">FICO (BlazeAdvisor)</a><br />
最近はBRMSプラットフォームというよりも、ハイエンドのデシジョンマネジメントの「ソリューション」を提供することに力を入れているのではないかという見方が・・・。</li>
</ul>
<p>またOracleも自前のBRMSを持っています。</p>
<ul>
<li>Oracle<br />
Oracleは、実は2つのルールエンジンを持っていて、ひとつは買収したHaley系の<a title="Oracle Policy Automation" href="https://blogs.oracle.com/Oraclejapanpr/entry/oracle_policy_automationwo" target="_blank">Oracle Policy Automation</a>、もう一つは Jess がベースとなっている <a title="Oracle Business rules" href="http://www.oracle.com/jp/products/middleware/application-server/rules-150483-ja.html" target="_blank">Oracle Business Rules</a> です。このうちOracle Business Rules はOracle SOA Suiteのコンポーネントとしてのみ提供されているようです。</li>
</ul>
<p>そして、新進気鋭と言える注目ベンダとしては</p>
<ul>
<li><a title="OpenRules" href="http://openrules.com/" target="_blank">OpenRules</a><br />
Excelなどの表形式でルールを記述するオープンソースのBRMS。ビジネスユーザ寄りの製品として機能が充実してきているようです。</li>
<li><a title="Sparkling logic" href="http://my.sparklinglogic.com/" target="_blank">SparklingLogic</a><br />
ベテランのルール専門家がその経験を生かして開発したツール。ビジネスユーザ寄りの機能が充実しており、またReteで有名なForgy博士も顧問として名を連ね、新たなアルゴリズム Rete NT　を採用しています。</li>
</ul>
<p>ほかに、BPMなどの他の機能とともに提供されたりする(<a title="SAP rules composer" href="http://help.sap.com/saphelp_nwce711/helpdata/en/77/33f32bb92349f6a91c0ee78ef9e702/content.htm" target="_blank">SAP</a>,　<a title="Pega" href="http://www.pega.com/jp/products" target="_blank">Pega</a>など)ことも多く、BRMSのベンダは、ここにあげた以上にたくさんあるので、下記のリンクなどを参考にしてみてください。</p>
<p>ブログ</p>
<p><a title="JT on EDM" href="http://jtonedm.com/" target="_blank">JT on EDM</a></p>
<p><a title="Business Policy and Rule Vendor Round Up" href="http://blogs.gartner.com/jim_sinur/2012/03/12/business-policy-and-rule-vendor-round-up/" target="_blank">Business Policy and Rule Vendor Round Up</a></p>
<p>レポート</p>
<p><a title="Gartner Vendors in the Business Rule Market 2012" href="http://www.gartner.com/id=1926217" target="_blank">Gartner, Vendors in the Business Rule Market, 2012</a></p>
<p><a title="Forrester Market Overview" href="http://www.forrester.com/Market+Overview+Business+Rules+Platforms+2011/fulltext/-/E-RES58570" target="_blank">Forrester, Market Overview: Business Rules Platforms 2011</a></p>
<p><a title="The　Business　Value　of　Business　Rule　Management　Systems" href="ftp://ftp.software.ibm.com/software/websphere/dm/pdf/The_Business_Value_of_Business_Rule_Management_Systems.pdf" target="_blank">The Business Value of Business Rules Management Systems<br />
Sponsored by: IBM</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iluminado.jp/2012/04/06/%e3%83%93%e3%82%b8%e3%83%8d%e3%82%b9%e3%83%ab%e3%83%bc%e3%83%ab%e7%ae%a1%e7%90%86%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0brms%e3%81%ae%e5%8b%95%e5%90%91%e3%80%80us%e3%80%802011-2012/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>日経コンピュータの「超高速開発」特集</title>
		<link>http://blog.iluminado.jp/2012/03/29/%e6%97%a5%e7%b5%8c%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf%e3%81%ae%e3%80%8c%e8%b6%85%e9%ab%98%e9%80%9f%e9%96%8b%e7%99%ba%e3%80%8d%e7%89%b9%e9%9b%86/</link>
		<comments>http://blog.iluminado.jp/2012/03/29/%e6%97%a5%e7%b5%8c%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf%e3%81%ae%e3%80%8c%e8%b6%85%e9%ab%98%e9%80%9f%e9%96%8b%e7%99%ba%e3%80%8d%e7%89%b9%e9%9b%86/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 14:27:03 +0000</pubDate>
		<dc:creator>Y.Tsushima</dc:creator>
				<category><![CDATA[BRMS一般]]></category>

		<guid isPermaLink="false">http://blog.iluminado.jp/2012/03/29/%e6%97%a5%e7%b5%8c%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf%e3%81%ae%e3%80%8c%e8%b6%85%e9%ab%98%e9%80%9f%e9%96%8b%e7%99%ba%e3%80%8d%e7%89%b9%e9%9b%86/</guid>
		<description><![CDATA[いつのまにか次の号が出てしまっていますが、日経コンピュータの3/15号はBRMS(ビジネスルール管理システム)の特集・・・というか、見出し通りの「超高速開発」の特集でした。
というのも、いわゆる自動生成系の、ここで言う「 [...]]]></description>
			<content:encoded><![CDATA[<p>いつのまにか次の号が出てしまっていますが、日経コンピュータの3/15号はBRMS(ビジネスルール管理システム)の特集・・・というか、見出し通りの「超高速開発」の特集でした。</p>
<div id=":46">というのも、いわゆる自動生成系の、ここで言う「オールインワン型」というのは、最近一般的に言われるBRMSとはちょっと違うのではないかと・・・。</p>
<p>最近言われているBRMSは、Javaなどのソースコードを生成して、コンパイル・実行するわけではなくて表形式やDSL(ドメイン記述言語)、あるいはルールベース用の言語で書かれたビジネスルールをそのまま実行するのが基本です。また、BRMSで管理するものは本来のビジネスロジックやビジネス上のデータモデルのみであり、画面や物理データベースなどのシステム上のロジックは原則含まれません。</p>
<p>上記のようなBRMSの特徴のおかげで「BRMSを用いるとユーザ自身が本来のビジネスロジックに集中して追加・修正・テスト・実行ができます」という謳い文句が出てくるわけで、この部分を端折って通常のBRMSと自動生成系のツールとを一緒にしてしまうのには、ちょっと違和感を感じてしまいます。</p>
<p>確かに自動生成系のツールは、業務ロジックをルール形式で書いたりするので広義のBRMSであると言えなくもないですが、その重点の置きどころは画面やデータベース、ロジックを含めたシステム全体の開発をできるだけ手間をかけずに極力自動で生成してくるところにあるかと思うので、最近言われているBRMSと自動生成系のツールとでは、最初のコンセプトからして違うのでは。</p>
<p>周囲の話やブログなどを見聞きしているとその辺に若干の誤解がありそうなので念のため記事をまとめてみました。</p>
<p>ちょっと補足しておくと、私は自動生成系のツールに否定的なのではなくて、むしろシステム開発のつまらない部分はどんどん自動生成していったら派です。GeneXusなど非常におもしろそうですよね。プログラムを自動生成する際には、裏でシステム開発の知識を表現したPrologのプログラムが動いているとのこと。南米発というところも気に入っています。</p>
<p>個人的には、これらのツールは、自動生成系のツールでシステムの枠を作って、一般的にいうBRMSでビジネスロジックを作って載せるというような補完的な関係のような気がするのですがいかがでしょうか。</p></div>
<div></div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.iluminado.jp/2012/03/29/%e6%97%a5%e7%b5%8c%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf%e3%81%ae%e3%80%8c%e8%b6%85%e9%ab%98%e9%80%9f%e9%96%8b%e7%99%ba%e3%80%8d%e7%89%b9%e9%9b%86/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reteアルゴリズム(3)</title>
		<link>http://blog.iluminado.jp/2012/03/29/rete%e3%82%a2%e3%83%ab%e3%82%b4%e3%83%aa%e3%82%ba%e3%83%a03/</link>
		<comments>http://blog.iluminado.jp/2012/03/29/rete%e3%82%a2%e3%83%ab%e3%82%b4%e3%83%aa%e3%82%ba%e3%83%a03/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 15:17:25 +0000</pubDate>
		<dc:creator>Y.Tsushima</dc:creator>
				<category><![CDATA[BRMS一般]]></category>
		<category><![CDATA[CLIPS/JESS]]></category>
		<category><![CDATA[Drools]]></category>

		<guid isPermaLink="false">http://blog.iluminado.jp/?p=216</guid>
		<description><![CDATA[(前回の続き)
ちなみに前回のケースは、条件部分に書かれている
契約(　$id_no : 証券番号,　基本保険金額 &#62; 30000000)
は、制約条件が「基本保険金額 &#62; 30000000」の一つですが、こ [...]]]></description>
			<content:encoded><![CDATA[<p>(前回の続き)</p>
<p>ちなみに前回のケースは、条件部分に書かれている</p>
<p>契約(　$id_no : 証券番号,　基本保険金額 &gt; 30000000)</p>
<p>は、制約条件が「基本保険金額 &gt; 30000000」の一つですが、これにたとえば「○○特約付加==true」などという条件が加わると、ネットワーク上は、「基本保険金額 &gt; 30000000」のαノードの次に、「○○特約付加==true」のαノードが直列に付け加わります。</p>
<p>さて次にβノードを用いた実例を見てみましょう。αノードは一つのファクトに対する制約条件でしたが、βノードは複数のファクトにまたがる制約条件を表すノードとなります。このノードは2つの入力(Left Input, Right Input)があり、左の入力はファクトの組、右の入力は、ファクトとなります。またこのそれぞれの入力は、部分的にマッチしたファクトの組やファクトの待機場所となるメモリを持ちます。</p>
<p>ここでは典型的なβノードであるJoinノードを例にとって見てみましょう。</p>
<p>先ほどのルールに加えて、もう一つルールを加えてみます。</p>
<table style="height: 144px;" border="1" width="417">
<tbody>
<tr>
<td>package com.sample</p>
<p>declare 契約<br />
証券番号 : String;<br />
基本保険金額 : int;<br />
end</p>
<p>declare 顧客<br />
顧客番号 : String;<br />
保険契約 : java.util.ArrayList;<br />
end</p>
<p>rule &#8220;基本保険金額1&#8243;<br />
when<br />
契約(<br />
id_no : 証券番号,<br />
基本保険金額 &gt; 30000000<br />
)<br />
then<br />
System.out.println(&#8220;証券番号 &#8221; + id_no + &#8221; の基本保険金額が3000万円を超えています。&#8221;);<br />
end</p>
<p>rule &#8220;基本保険金額2&#8243;<br />
when<br />
$c : 契約(<br />
id_no : 証券番号,<br />
基本保険金額 &gt; 30000000<br />
)<br />
顧客(<br />
customer_no : 顧客番号,<br />
保険契約 contains $c<br />
)<br />
then<br />
System.out.println(&#8220;顧客番号 &#8221; + customer_no + &#8221; の契約の中に基本保険金額が3000万円を超えている契約があります。&#8221;);<br />
end</td>
</tr>
</tbody>
</table>
<p>新たに加えた、基本保険金額2のルールは、顧客タイプのファクトに対する条件を加えています。顧客が持っている保険契約(リスト)に基本保険金額が3000万を超えるものがあればメッセージを出力するというものです。</p>
<p>このルールファイルは以下の形のReteネットワークとなります。</p>
<p><img src="../wp-content/uploads/2012/03/ReteTree2.PNG" alt="Reteネットワーク2" /><br />
まず、同じ条件の部分は、２つのルールでグラフのノードが共有されていることに注意ください。さらに新たな種類のノード(黄緑のノード)が表れています。これがβノードの一種であるJoin ノードになります。</p>
<ul>
<li>Joinノード<br />
LeftInputAdapterノードから入ってくるファクトの組(Left Input)と、Right Input<br />
からのファクトとを合わせて判断し、条件が満たされれば入力から新たなファクトの<br />
組をつくり、次に渡す。</li>
</ul>
<p>では、上記のネットワークにファクトをinsertしてみましょう。以下のファクトを次々に加えていきます。</p>
<p>f-1．契約(証券番号=’10001′, 基本保険金額=40000000)<br />
f-2．契約(証券番号=’10005′, 基本保険金額=20000000)<br />
f-3．顧客(顧客番号=’10005′, 保険契約={f-1,f-2})</p>
<p>まずf-1をinsertします。契約→αノード(基本保険金額&gt;3000万)を通過してLeftInputAdapterノードに入ります。ここでファクトの組(f-1)が生成され、2つの方向に伝播していきます。一方はTerminalノードに行き、ルール&#8221;基本保険金額1&#8243;と合わさって、実行候補のリストに付け加えられます。もう一方は、黄緑のJoinノードの左入力となります(上の図ではJoinノードの右になっていますが^^;)。</p>
<p>さて、Joinノードの左(上図では右)入力に(f-1)が入ってきました。Joinノードは片方の入力に値が入ってきたので、もう片方の入力のメモリを見に行きます。しかしまだメモリは空なので(f-1)はそのまま左入力のメモリに保存されます。</p>
<p>次にf-2をinsertしましょう。契約→αノード(基本保険金額&gt;3000万)と行きますが、この時点でこのαノードを通過できません。</p>
<p>最後にf-3をinsertしましょう。顧客のファクトなので、顧客に進み、次のJoinノードの入力になります。Joinノードでは、片方の入力としてf-3が入ってきたので、f-3を右入力のメモリに保持すると同時に、左入力のメモリを見に行きます。左入力のメモリには(f-1)が入っていたので、f-3と、(f-1)を使って条件判断をします。f-3には、f-1の保険契約が含まれているので、条件が満たされ新たなファクトの組((f-1),f-3)を生成して次に渡します。最後にこのファクトの組はルール&#8221;基本保険金額2&#8243;と合わさって、実行候補のリストに加えられます。</p>
<p>以上、このようにしてファクトがinsertされていきます。ファクトが削除(retract)されるときは対象のファクトを入口から流して逆に削除していき、ファクトの更新の場合はretract&amp;insertの動きになります。</p>
<p>以上がReteアルゴリズムの概略です。わかりにくい部分も多々あったかと思いますが、雰囲気はおおよそつかめていただけたのではないかと。</p>
<p>ルールベースのアプリケーションのパフォーマンス見積もりなどでは、簡単なのでついついルール数で概算見積もりをしてしまいます。しかし本来は、パフォーマンスとルール数自身とは直接の関係はありません。パフォーマンスに影響するのは、むしろルールの条件部分のバリエーションの数であるということがおわかりいただけたのではないかと思います。</p>
<p>あと、最近のルールエンジンの使い方から考えると、Reteアルゴリズムは少々オーバースペックなので、使い方に制限があるかわりに、より軽い Sequential アルゴリズムもよく使われますが、それはまたの機会に。</p>
<p>(参考文献)<br />
Michal Bali,  <a href="http://www.amazon.co.jp/Drools-Jboss-Rules-Developers-Guide/dp/1847195644/?_encoding=UTF8&amp;tag=aromailuminad-22&amp;linkCode=ur2&amp;qid=1332947434&amp;camp=247&amp;sr=8-4&amp;creative=1211" target="_blank">Drools JBoss Rules 5.0 Developer&#8217;s Guide</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=aromailuminad-22&amp;l=ur2&amp;o=9" border="0" alt="" width="1" height="1" /> PACKT publishing.<br />
Jérôme Boyer, Hafedh Mili, <a href="http://www.amazon.co.jp/Agile-Business-Rule-Development-Architecture/dp/3642190405/?_encoding=UTF8&amp;tag=aromailuminad-22&amp;linkCode=ur2&amp;qid=1332947595&amp;camp=247&amp;sr=8-1&amp;creative=1211" target="_blank">Agile Business Rule Development Process, Architecure, and JRules Examples</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=aromailuminad-22&amp;l=ur2&amp;o=9" border="0" alt="" width="1" height="1" /> Springer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iluminado.jp/2012/03/29/rete%e3%82%a2%e3%83%ab%e3%82%b4%e3%83%aa%e3%82%ba%e3%83%a03/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reteアルゴリズム(2)</title>
		<link>http://blog.iluminado.jp/2012/03/19/rete%e3%82%a2%e3%83%ab%e3%82%b4%e3%83%aa%e3%82%ba%e3%83%a02/</link>
		<comments>http://blog.iluminado.jp/2012/03/19/rete%e3%82%a2%e3%83%ab%e3%82%b4%e3%83%aa%e3%82%ba%e3%83%a02/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 16:36:33 +0000</pubDate>
		<dc:creator>Y.Tsushima</dc:creator>
				<category><![CDATA[BRMS一般]]></category>
		<category><![CDATA[CLIPS/JESS]]></category>
		<category><![CDATA[Drools]]></category>

		<guid isPermaLink="false">http://blog.iluminado.jp/?p=198</guid>
		<description><![CDATA[(前回の続き)
さて、Reteアルゴリズムは最初にルールをコンパイルしてネットワークの形に表現します。
(なお、ここではDroolsで用いられているReteOOというオリジナルReteの派生形を説明に用いますが、本質的な [...]]]></description>
			<content:encoded><![CDATA[<p>(前回の続き)</p>
<p>さて、Reteアルゴリズムは最初にルールをコンパイルしてネットワークの形に表現します。</p>
<p>(なお、ここではDroolsで用いられているReteOOというオリジナルReteの派生形を説明に用いますが、本質的な部分での違いはありません)。</p>
<p>たとえば<a title="実際的なルールのReteTree" href="http://www.iluminado.jp/drools/drools-50-mainmenu-76/88-drools5-for-beginners-3d.html" target="_blank">本家サイトの方で例示しているルール(DroolsTest3.drl)</a>をReteのネットワークにコンパイルすると、</p>
<p><img src="/wp-content/uploads/2012/03/ReteTree0.png" alt="Reteネットワーク0" /></p>
<p>となり、入口(○)が一つ、出口(●)がルール数だけある有向グラフができます。</p>
<p>(ちなみにDroolsのEclipseプラグインでルールファイル(.drlファイル)を表示するとReteTreeタグで上のようなReteネットワークを見ることができます)</p>
<p>Reteアルゴリズムは、ファクト(データ)を追加/変更/削除するたびにReteネットワークの入口から投入/チェックしていくのですが、まずはこのグラフについて最初に説明しましょう。ただ上記のルールそのままですと説明が複雑になるかと思いますので、最初にルール一つのケースから説明をします。</p>
<p>さて、以下のルールがあったとします。</p>
<table style="height: 144px;" border="1" width="417">
<tbody>
<tr>
<td>rule &#8220;基本保険金額1&#8243;<br />
when<br />
契約(　$id_no : 証券番号,<br />
基本保険金額 &gt; 30000000<br />
)<br />
then<br />
System.out.println(&#8220;証券番号 &#8221; + $id_no + &#8221; の基本保険金額が3000万円を超えています。&#8221;);<br />
end</p>
<p><em> </em><em> </em></td>
</tr>
</tbody>
</table>
<p>このルールは以下の形のReteネットワークとなり、</p>
<p><img src="/wp-content/uploads/2012/03/ReteTree1.PNG" alt="Reteネットワーク1" /><br />
それぞれのノードは</p>
<ul>
<li>Reteノード<br />
ファクトを追加する際の入り口となるノード</li>
<li>EntryPointノード<br />
CEP(Drools Fusion)で複数のエントリーポイントを持つことができるが、今回はデフォルトのエントリーポイントのみを使用。</li>
<li>ObjectTypeノード<br />
ファクトのオブジェクトタイプを識別して、フィルタとして働くノード。上記のルールでは「契約」タイプのオブジェクトを通す。</li>
<li>αノード<br />
条件部での制約をチェックしてフィルタとして働くノード。条件部のひとつのオブジェクトに対する制約条件ひとつがひとつのノードになる。上記の例では、「基本保険金額&gt;30000000」がこれにあたる。</li>
<li>LeftInputAdapterノード<br />
βノード(後述)へのエントリーポイントとなるノード。ここまで関門をくぐり抜けてきたファクトからファクトの組(tuple)を生成する。</li>
<li>Terminalノード<br />
if-thenルールのthen部分にあたるノード。ここまで到達したファクト(の組)がthen部分と合わさって実行候補のリストに登録される(<a title="Reteアルゴリズム1" href="http://blog.iluminado.jp/2012/03/07/rete%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A01/" target="_blank">前回の記事</a>の１．で言う「マッチしたルールとデータのカップルを列挙」したリストに登録されるということ)</li>
</ul>
<p>と呼ばれます。</p>
<p>以上がReteのネットワークの説明ですが、単にルールをネットワーク化しただけではルールの実行サイクルを効率化することには寄与しません。そこで着目するのが、前回書いたように</p>
<p>「ワーキングメモリの中身が変わらなければ、マッチするファクトとルールの組も変わらない。」<br />
「1回のルール実行では、ワーキングメモリの中身はほとんど変わらない。」</p>
<p>という点です。ワーキングメモリにファクトが追加されたり、ワーキングメモリのファクトを変更/削除したりした都度、今作成したReteネットワークの入り口から投入し、ルールの条件にマッチするかしないかを判定します。ここで重要なことは、ファクトとルール条件との判定はルールの実行サイクルの判定のフェーズで行われるのではなく、すでにファクトをワーキングメモリに挿入したり、変更/削除したりするときに同時に判定されるということなのです。</p>
<p>では、上で作成したReteネットワークにファクトを挿入してみましょう。以下の3つのファクトがワーキングメモリにinsertされるとします。</p>
<p>f-1．契約(証券番号=&#8217;10001&#8242;, 基本保険金額=40000000)<br />
f-2．契約(証券番号=&#8217;10005&#8242;, 基本保険金額=20000000)<br />
f-3．顧客(顧客番号=&#8217;10005&#8242;)</p>
<p>この例では、ファクトf-1のみが、ルール基本保険金額1にマッチしますから、基本保険金額1(f-1)といったルールとファクトの組が、ルール実行候補のリストに追加されるはずです。</p>
<p>ではまず、ファクトf-1がinsertされたとしましょう。f-1は、Reteノード、EntryPointノードを通過し、Objectノードに入ります。このObjectノードはObjectの種類が契約であるというフィルタとなっていますがf-1は条件を満たすので、そのまま通過します。次のαノードは、基本保険金額 &gt; 30000000という判定条件ですが、f-1はこれもまた満たすので通過します。次のLeftInputAdapterノードは、次に向かう準備としてf-1をファクトの組(tuple)に変換して、最後のTerminalノードに渡します。TerminalノードではLeftInputAdapterノードでできたファクトの組とルールとを組にして(基本保険金額1(f-1))、ルール実行候補リストに追加します。</p>
<p>次にf-2をinsertしてみましょう。f-2は、f-1と同様に、Reteノード、EntryPointノード、Objectノードは通過しますが、αノードは基本保険金額 &gt; 30000000という判定条件を満たさないのでこれ以上は進めません。</p>
<p>最後にf-3をinsertしてみると、Reteノード、EntryPointノードは通過しますが、Objectノードは条件を満たさないのでこれ以上は進みません。</p>
<p>以上の状況を図にすると、<br />
<img src="/wp-content/uploads/2012/03/ReteTree1-1.PNG" alt="Reteネットワーク1-1" /><br />
となります。</p>
<p>(つづく)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iluminado.jp/2012/03/19/rete%e3%82%a2%e3%83%ab%e3%82%b4%e3%83%aa%e3%82%ba%e3%83%a02/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reteアルゴリズム(1)</title>
		<link>http://blog.iluminado.jp/2012/03/07/rete%e3%82%a2%e3%83%ab%e3%82%b4%e3%83%aa%e3%82%ba%e3%83%a01/</link>
		<comments>http://blog.iluminado.jp/2012/03/07/rete%e3%82%a2%e3%83%ab%e3%82%b4%e3%83%aa%e3%82%ba%e3%83%a01/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 13:38:34 +0000</pubDate>
		<dc:creator>Y.Tsushima</dc:creator>
				<category><![CDATA[BRMS一般]]></category>
		<category><![CDATA[CLIPS/JESS]]></category>
		<category><![CDATA[Drools]]></category>

		<guid isPermaLink="false">http://blog.iluminado.jp/?p=196</guid>
		<description><![CDATA[今日はルールエンジンの代表的なアルゴリズムReteアルゴリズムを。
ルールエンジンのアルゴリズムにも書いたように、ルールエンジンは、
１．ワーキングメモリ(短期記憶)に入ったデータ(ファクト)の集合に対して、たくさんある [...]]]></description>
			<content:encoded><![CDATA[<p>今日はルールエンジンの代表的なアルゴリズムReteアルゴリズムを。<a title="ルールエンジンのアルゴリズム" href="http://blog.iluminado.jp/2012/01/21/%E3%83%AB%E3%83%BC%E3%83%AB%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%81%AE%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0/" target="_blank"><br />
ルールエンジンのアルゴリズム</a>にも書いたように、ルールエンジンは、</p>
<p>１．ワーキングメモリ(短期記憶)に入ったデータ(ファクト)の集合に対して、たくさんあるルールの条件部分をひとつひとつファクトとマッチングさせて、マッチしたルールとデータのカップルを列挙しておく。<br />
２．カップルの中からひとつを選んで実行する。<br />
３．実行によってワーキングメモリ(短期記憶)のファクトが書き換えられる場合もあるので、再度１．のカップリングを行う。<br />
４．１～３を繰り返してマッチするルールがなくなったところで実行が終了する。</p>
<div>といったサイクルをもって実行が進んでいきます。</div>
<div>さてこのサイクルの １．に注目してみましょう。ここでは論理上常にルールとファクトの組を全部マッチングさせるはずです。これを真っ正直に行っていたら誰が考えても驚くほどの時間がかかってしまうのは明らかでしょう。</div>
<div>というわけで、このあと一生をReteアルゴリズムに捧げる(?)こととなる <a title="チャールズ・フォーギー" href="http://ja.wikipedia.org/wiki/%E3%83%81%E3%83%A3%E3%83%BC%E3%83%AB%E3%82%BA%E3%83%BB%E3%83%95%E3%82%A9%E3%83%BC%E3%82%AE%E3%83%BC" target="_blank">Charles Forgy</a>は考えました。「確かに論理上は、ルールとファクトの組を全部マッチングさせようとするはずだが、ルールはサイクルあたりひとつしか実行されないのでワーキングメモリの内容の変更分もたかだか一つのルールで変更された分しか変わらないはず」<br />
・・・<br />
「ということは、最初にまとめてルールとファクトのマッチングをチェック・結果を保持しておき後は各サイクルでのワーキングメモリの差分のみをチェック・更新していけば十分なのではないだろうか」</div>
<div>
<p>そして彼は、このアイデアを1979年にReteアルゴリズムとしてまとめました。<br />
(続く)</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.iluminado.jp/2012/03/07/rete%e3%82%a2%e3%83%ab%e3%82%b4%e3%83%aa%e3%82%ba%e3%83%a01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

