まずは、前回の補足。
・エキスパートシステムの目指すところ目標が高すぎ、期待が大きすぎた。
→1980年代には、R1/XCONなどビジネス的にも成功したエキスパートシステムが作られることで、後に続くシステムは人間のエキスパートに匹敵するような高い性能を期待されることとなりました。しかし、多くの場合ある程度の結果までは出せるものの、期待ほどの性能まではなかなか到達できず、必要以上にチューニングすることで、前回述べたようにルールベースは複雑化(スパゲティ化?)していきました。
このようなときの最終的な落としどころとしては、たいがい人間のエキスパートが出す解に匹敵するような解を自動的に得るというところはあきらめ、システムでは目標解の7,8割程度の解を出し、あとは人間のエキスパートが修正して適切な解を求めるという「(人間の)エキスパート支援システム」というところに落ち着くのが普通でした。
ところで、前回の表題は「エキスパートシステムの思ひ出1(なぜ今またルールベースに光があたっているのか)」でしたが、どうも思い出話ばかりで、「なぜ今またルールベースに光があたっているのか」というところに関しては、あまり書いていないことに気がつきました。これはまさに後ろの方でちょっと書いている、ルールベースが、複雑な条件分岐を書きやすく変更しやすいプログラミングパラダイム(テクニック)であるという認識が広まってきたということに尽きるのではないかと思います。
では、なぜそれが今頃になってという疑問が湧くでしょう。ルールベースが上記の性質を持つということは、エキスパートシステム全盛の時代から考え方としては当然のことと認識はされていましたが・・・この辺が次にあげるエキスパートシステムブームが去っていった理由その2に関わってきます。ということで、その2
・ブーム時代のエキスパートシステムは、スタンドアローンで作られることが多い一方、判断に必要なデータは基幹のシステムの中にあり、それらの間の連携に手間がかかった。
→ブーム時代のエキスパートシステム構築ツールが稼動する環境は、多くの場合ワークステーション(DECとか、Sunとか、News!とか)や場合によっては Symbolics の Lisp マシンとか。一方で基幹のシステムはIBM、富士通、日立などの汎用機。それぞれ独自のネットワーク環境があってその間のデータの連携に手間がかかりました。一度フロッピー(→瀕死語)に落として渡したり、場合によっては再度手入力をしたり・・・現在のようにネットワークでデータを容易に受け渡しできるような環境と違い、データの受け渡しで工数がかかり、その割にはシステムそのもののパフォーマンスはあがらないし・・・ということでコスト・ベネフィットを考えるとあまり割に合わないという状態でした。
(ちなみにエキスパートシステムのことを書いているうちに思い出した話として・・・エキスパートシステムと言えば、ひとつの典型的なシステム類型に「故障診断システム」というのがあります。その昔ある会社で、パイロット的に機械の故障診断エキスパートシステムを作ったのですが・・・そもそもその機械は出来が良くほとんど故障しないのでシステムの出番がまったくなかったという話を聞いたことがあります。)
そしてそのころから十数年経っている今。現在のBRMSでは、たとえば基幹システムで普通に使われている「Java」と普通に連携できますし(Javaのオブジェクトがそのままファクトになる)、またルール部分をWebサービス化してサービスとして扱うこともできます。また、コンピュータのハード的に見てもメモリ容量が飛躍的に増え、その昔「メモリ食い虫」であったエキスパートシステムを十分な余裕をもって実行できるようになりました。(今は、ごく普通のアプリケーションが昔のエキスパートシステム並み、あるいはそれ以上のメモリを使うようになっていますし。)
こうなってくると、ルールベースの適用に対する敷居は十分に低くなってきます。エキスパートシステム全盛の時代には、ルールベースというと、それだけである程度のまとまったシステムを作ることを意味していましたが、今の時代のルールベースは、普通の基幹システムの中でルールで書きやすい部分をルールで書いて埋め込んだり、Webサービスとしてサービス化することが可能となっています。基幹システムの再構築プロジェクトで、レガシー化した基幹システムからルール部分を取り出して(ルールのマイニング)見える化し、同時に変更にも強いシステムとするということなど、一昔前には考えにくかったことが今はひとつの流行ともなっています。
実は、私が最初に仕事で扱ったのはDEC(今は最終的にHPに吸収されましたが)のワークステーションにのっていた「OPS5」でありまして、仕事として後から手続き的な言語を扱ったので、ときに複雑な条件分岐に出会うと「こんなものルールで書けばわかりやすいのに」と思ったこともありました。また、時間割の割付システムのプロトタイプを作成したときなど、VB3(!)でUIをつくり、ルールエンジンは「Clips」、でその間を連携するのにdllを作ったり(?だったと思う)やたらと面倒だったことを覚えています。
それに比べれば、今は天国、「私の夢見た世界」ですわ。(ちょっと大げさですが・・・)
コメント