【事件の表示】
　特願２００６−２０１９７１「オブジェクト間の非同期メッセージ管理方式および非同期メッセージ管理方法」拒絶査定不服審判事件〔平成２０年　２月　７日出願公開、特開２００８−　２７３４４〕について、次のとおり審決する。
【結　論】
　本件審判の請求は、成り立たない。
【理　由】
１．手続の経緯 
　本願は、平成１８年７月２５日の出願であって、平成２１年５月２９日付けで拒絶の理由が通知され、同年８月３日付けで意見書が提出されるとともに手続補正がなされ、平成２２年３月１９日付けで拒絶査定がなされたのに対し、同年６月２日付けで拒絶査定不服審判の請求がなされるとともに手続補正がなされ、同年１２月２２日付けで審査官から前置報告がなされ、平成２３年３月２４日付けで当審により審尋がなされ、同年５月２６日付けで回答書が提出され、同年１１月１７日付けで、当審により平成２２年６月２日付けの手続補正が却下されるとともに拒絶の理由が通知され、平成２４年１月２３日付けで意見書が提出されるとともに手続補正がなされ、同年５月１５日付けで、当審により拒絶の理由が通知され、同年７月２３日付けで、意見書が提出されるとともに手続補正がなされたものである。
　
　
２．本願発明
　本願の請求項１に係る発明は、平成２４年１月２３日付けの手続補正書により補正された特許請求の範囲の請求項１に記載されたとおりの次のものと認める。（以下、「本願発明」という。）
　
「複数のオブジェクトが非同期メッセージによって連携した処理を行うシステムにおけるオブジェクト間の非同期メッセージを管理する非同期メッセージ管理方式であって、
　少なくとも他のオブジェクトから非同期メッセージにより自オブジェクトの処理を依頼されるオブジェクトは各々、自オブジェクトの処理を実行する部分である実行部の他に、
自オブジェクト宛の非同期メッセージを受信して処理する部分であるメッセージ制御部を含み、
　前記メッセージ制御部は、
　自オブジェクトを宛先とする非同期メッセージが格納されるキューと、
　自オブジェクトを宛先とする非同期メッセージを受信して、前記キューに登録する非同期メッセージ登録手段と、
　前記キューに非同期メッセージが登録されると、前記キューから非同期メッセージを逐次取り出して、取り出した非同期メッセージで要求された処理を自オブジェクトの実行部に実行させるシングルスレッド制約手段とを有し、
　前記シングルスレッド制約手段は、自オブジェクトの実行部においてオブジェクトの処理が実行されているときには前記キューから新たに非同期メッセージを取り出さず、自オブジェクトの実行部においてオブジェクトの処理が完了していることを条件に前記キューから新たに非同期メッセージを取り出すことで、前記実行部に非同期メッセージで要求された処理をシングルスレッドで実行させる
　ことを特徴とするオブジェクト間の非同期メッセージ管理方式。」
　
　
３．引用文献
　当審での拒絶の理由に引用された、本願出願日前に頒布された、樽澤広亨，外１名，“ミッション　クリティカル　システム開発講座　［第６回］Ｊ２ＥＥのメッセージング技術”，Ｊａｖａ　ＷＯＲＬＤ，（株）ＪＤＧジャパン，２００５年６月１日，第９巻，第６号，ｐｐ．１２１−１３２（以下，「引用文献１」という。）、特開２００１−１５４８６２号公報（以下、「引用文献２」という。）には、それぞれ図面とともに次の記載がある。
　
（引用文献１）
（ア）「「レイヤ間の密結合」と「作業単位の肥大化」の２つは、大規模基幹システムを構築するうえで必ず直面する問題である。それを解決する技術の１つが、今回のテーマである「メッセージング」だ。」（第１２３頁左欄第１０行〜第１３行）
　
（イ）「ＲＰＣに代表される同期／リクエスト−リプライ型のインタラクション・モデルでは、サービスの提供者、利用者をそれぞれサーバ、クライアントと呼ぶが、本稿では特に断りのない限り、ＪＭＳ仕様にならって、メッセージの送信側をプロデューサ、受信側をコンシューマと呼ぶことにする。」（第１２５頁左欄第９行〜第１４行）
　
（ウ）「一方向型のメッセージングとは、メッセージがプロデューサからコンシューマへと一方向に流れるインタラクションのことである。この場合、プロデューサは、ＭＯＭへの接続を開始して、メッセージを送信したら、ＭＯＭとの接続は切断してしまう。その後、プロデューサは、コンシューマの処理とは無関係に（非同期的に）ほかの処理を続けることになる。これは図２の利用例のように、ビジネス・ロジックの処理に時間を要するのにもかかわらず、エンドユーザー（クライアント）への迅速な応答が求められている場合に有効なインタラクションである。」（第１２５頁右欄第１４行〜第１２６頁左欄第７行）
　
（エ）「メッセージングを利用する場合にしばしば問題となるのは、以下の２つである。
●受信メッセージの処理順の保証
●ポイズン・メッセージへの対処
…（中略）…
受信メッセージの処理順の保証
　キューやトピックでは、デフォルトの場合、メッセージは先入れ先出し（ＦＩＦＯ）で取り出されてコンシューマに渡される。あるキューに対するコンシューマのインスタンス（スレッド）がただ１つであるなら、送信されたのと同じ順にメッセージが受信されコンシューマの処理が進められる。一方、１つのキューに対してコンシューマのインスタンス（スレッド）が複数ある場合、メッセージは送信されたのと同じ順で受信されるが、それぞれのメッセージが異なるスレッドで処理される可能性があるため、後続の処理の順番までは保証することができない。
…（中略）…複数のスレッドによるメッセージの受信は、メッセージの処理順を乱し、正常なアプリケーションの稼働を阻害する可能性がある。では、この問題を回避するにはどうすればよいのか。
　受信メッセージの処理順を保証する最もシンプルなソリューションは、コンシューマをシングルスレッドとして稼働させることである。ただし、メッセージの処理順は保証できるものの、パフォーマンスの劣化を招いてしまう。
　そこで、次に考えられるソリューションは、複数のキューとトピックを並行稼働させるというものだ。その際、それぞれのキューやトピックに対するコンシューマは、シングルスレッドとして稼働させるのである。」（第１３１頁左欄第９行〜第１３２頁左欄第９行）
　
ａ　上記（ア）の「今回のテーマである「メッセージング」だ」との記載、上記（イ）の「メッセージの送信側をプロデューサ、受信側をコンシューマと呼ぶことにする」との記載から、引用文献１には、メッセージング方式に関する技術が解説されているといえる。
　また、上記（ウ）の「プロデューサは、ＭＯＭへの接続を開始して、メッセージを送信したら、ＭＯＭとの接続は切断してしまう。その後、プロデューサは、コンシューマの処理とは無関係に（非同期的に）ほかの処理を続けることになる。」との記載から、コンシューマに送られるメッセージは非同期メッセージといえる。
　したがって、引用文献１には、
　プロデューサとコンシューマ間の非同期メッセージを送受信する非同期メッセージング方式、
が記載されているといえる。
　
ｂ　上記（エ）の「あるキューに対するコンシューマのインスタンス（スレッド）がただ１つであるなら、送信されたのと同じ順にメッセージが受信されコンシューマの処理が進められる」との記載から、コンシューマは、キューに対するスレッドを有し、スレッドが受信されたメッセージの処理を行うことが読み取れる。よって、引用文献１には、
　受信した非同期メッセージの処理を行うスレッド、
が記載されているといえる。
　
ｃ　上記ｂから、引用文献１に記載されたメッセージング方式は、メッセージを受信して処理を進めるようにコンシューマを制御するものであるから、
　受信した非同期メッセージを処理するように制御する手段、
を備えているといえる。
　
ｄ　上記ｃにおける、受信した非同期メッセージを処理するように制御する手段は、その制御を行うために、以下のｅ〜ｆの構成を有しているといえる。
　
ｅ　上記（エ）の「キューやトピックでは、デフォルトの場合、メッセージは先入れ先出し（ＦＩＦＯ）で取り出されてコンシューマに渡される」との記載から、引用文献１には、
　非同期メッセージが先入れ先出しされるキュー、
が記載されている。
　
ｆ　上記ｂ、ｅから、引用文献１に記載されたものは、受信された非同期メッセージをキューに先入れ先出しさせて、スレッドが非同期メッセージを処理するから、引用文献１記載のものは、キューに非同期メッセージを入れる（登録）手段とキューから非同期メッセージを取り出す手段、及び、取り出した非同期メッセージの処理を行うスレッドを備えるものである。
　したがって、引用文献１には、
　非同期メッセージを受信してキューに登録する手段と、
　キューに非同期メッセージが登録されると，キューから非同期メッセージを取り出して、取り出した非同期メッセージで要求された処理をスレッドに実行させる手段、
が記載されているといえる。
　
ｇ　上記（エ）の「受信メッセージの処理順を保証する最もシンプルなソリューションは、コンシューマをシングルスレッドとして稼働させることである」との記載から、コンシューマをシングルスレッドとして稼働させることにより、受信メッセージの処理順を保証するので、上記ａをふまえると、引用文献１には、
　コンシューマをシングルスレッドとして稼働させることにより、受信メッセージの処理順を保証するプロデューサとコンシューマ間のメッセージを送受信するメッセージング方式、
が記載されているといえる。 
　
　ａ〜ｇをふまえると、引用文献１には、次の発明（以下，「引用発明」という。）が示されているといえる。
　
　プロデューサとコンシューマ間の非同期メッセージを送受信する非同期メッセージング方式であって、
　受信した非同期メッセージの処理を行うスレッドと、
　受信した非同期メッセージを処理するように制御する手段を含み、
　受信した非同期メッセージを処理するように制御する手段は、
　非同期メッセージが先入れ先出しされるキューと、
　非同期メッセージを受信してキューに登録する手段と、
　キューに非同期メッセージが登録されると、キューから非同期メッセージを取り出して、取り出した非同期メッセージで要求された処理をスレッドに実行させる手段とを有し、
　コンシューマをシングルスレッドとして稼働させることにより、受信メッセージの処理順を保証するプロデューサとコンシューマ間のメッセージを送受信するメッセージング方式。
　
　
（引用文献２）
（オ）「【０００１】
【発明の属する技術分野】この発明は計算機システム及びネットワークシステム並びに記録媒体、更に詳しくは、プログラムの並行処理が可能なマルチプロセス／マルチスレッド環境において複数オブジェクト間のメッセージ通信を適切に行うのに適した計算機システム及びネットワークシステム並びに記録媒体に関するものである。
…（中略）…
【０００３】したがって、一のオブジェクトが他のオブジェクトのデータに関連して何らかの処理を行う場合には、当該一のオブジェクトの手続きが当該他のオブジェクトの手続きに対して処理を依頼することになる。具体的には、オブジェクト間でメッセージ通信が行われることで依頼処理等が実現される。ここで、オブジェクト指向の概念におけるメッセージ通信とは、オブジェクトは自律的に動作しており、必要に応じてメッセージを送信することである。」
　
（カ）「【００７３】図６はスレッドが起動されたオブジェクトの詳細構成例を示すブロック図である。
【００７４】オブジェクト２４のスレッド９４は、そのオブジェクトを自律的に動作させる場合に起動させるものである。このスレッド９４は、メッセージキュー３３に格納されたメッセージを順番に取り出し、そのメッセージ内に含まれるメッセージＩＤ（識別情報）とメッセージマップ３４とから対応するメゾット９５を特定し、そのメソッド９５を動作させるようになっている。」
　
（キ）図６には、オブジェクト２４がメッセージキュー３３を有し、オブジェクト２４のスレッド９４がメッセージキュー３３に格納されたメッセージに取り出す態様が記載されている。
　
ｈ　上記（オ）から、引用文献２には、複数オブジェクト間でメッセージ通信を行い、オブジェクト間でメッセージ通信が行われる事で依頼処理を行うことが記載されているといえる。
　
ｉ　上記（カ）、（キ）から、各オブジェクトがメッセージキューを有することが記載されているといえる。
　
ｊ　上記（カ）、（キ）には、「このスレッドは、メッセージキュー３３に格納されたメッセージを順番に取り出し、・・・そのメソッド９５を動作させるようになっている。」と記載されている。ことから、ここで、メッセージキューは自オブジェクトを宛先とするメッセージを格納するものであることから、引用文献２には、
オブジェクトのスレッドが自オブジェクトを宛先とするメッセージをメッセージキューから順番に取り出し処理を行うように制御する手段、
が記載されているといえる。
　
　したがって、引用文献２には、以下の技術（以下、「引用文献２記載の技術」という。）が、記載されているといえる。
　
　複数オブジェクト間でメッセージ通信を行い、オブジェクト間でメッセージ通信が行われる事で依頼処理を行うこと、
　及び、
　オブジェクト間のメッセージ通信において、各オブジェクトがメッセージキューを有し、オブジェクトのスレッドが自オブジェクトを宛先とするメッセージをメッセージキューから順番に取り出し処理を行うように制御する手段。
　
　
４．対比 
　本願発明と引用発明を対比する。
　
（ア）引用発明において、プロデューサとコンシューマは、上位概念では双方ともオブジェクトといえ、また、非同期メッセージを送受信するために管理しているといえる。よって、引用発明の「プロデューサとコンシューマ間の非同期メッセージを送受信する非同期メッセージング方式」と、本願発明の「複数のオブジェクトが非同期メッセージによって連携した処理を行うシステムにおけるオブジェクト間の非同期メッセージを管理する非同期メッセージ管理方式」とは、
　オブジェクト間の非同期メッセージを送受信する非同期メッセージ管理方式、
である点で共通する。
　
（イ）引用発明の「スレッド」は本願発明の「実行部」に相当する。また、引用発明には、スレッドと、受信した非同期メッセージを処理するように制御する手段は、特定のどのオブジェクトに含まれるのか特定されていないが、処理を実行する部分及び非同期メッセージを受信して処理する部分を備えているといえる。
　よって、引用発明の「受信した非同期メッセージの処理を行うスレッド」及び「受信した非同期メッセージを処理するように制御する手段」と、本願発明の「少なくとも他のオブジェクトから非同期メッセージにより自オブジェクトの処理を依頼されるオブジェクトは各々、自オブジェクトの処理を実行する部分である実行部の他に、自オブジェクト宛の非同期メッセージを受信して処理する部分であるメッセージ制御部を含」むものは、
　処理を実行する部分である実行部の他に、非同期メッセージを受信して処理する部分であるメッセージ制御部を含む、
ものである点で共通する。
　
（ウ）引用発明の「非同期メッセージが先入れ先出しされるキュー」は、非同期メッセージが自オブジェクトを宛先とされていることについて特定はないものの、本願発明の「自オブジェクトを宛先とする非同期メッセージが格納されるキュー」とは、
　非同期メッセージが格納されるキュー、
である点で共通する。
　
（エ）引用発明の「非同期メッセージを受信してキューに登録する手段」は、非同期メッセージが自オブジェクトを宛先とされていることについて特定はないものの、本願発明の「自オブジェクトを宛先とする非同期メッセージを受信して、前記キューに登録する非同期メッセージ登録手段」とは、 
　非同期メッセージを受信して、前記キューに登録する非同期メッセージ登録手段、
である点で共通する。
　
（オ）引用発明は、キューに登録された非同期メッセージを順番に（逐次）取り出して、取り出した非同期メッセージを、スレッドがシングルスレッドとして実行するものであり、このスレッドは、キューから取り出した非同期メッセージを１つの処理のみを順番に実行するものである。よって、引用発明は、処理が実行されている時にはキューから新たに非同期メッセージを取り出さず、スレッドにおいて処理が完了していることを条件にキューから新たに非同期メッセージを取り出すことで、スレッドに非同期メッセージで要求された処理をシングルスレッドで実行させる、シングルスレッド制約を実現する機能、すなわち、シングルスレッド制約手段を実質的に備えているといえる。
　したがって、引用発明の「キューに非同期メッセージが登録されると、キューから非同期メッセージを取り出して、取り出した非同期メッセージで要求された処理をスレッドに実行させる手段」及び「コンシューマをシングルスレッドとして稼働させることにより、受信メッセージの処理順を保証する」と、
　本願発明の「前記キューに非同期メッセージが登録されると、前記キューから非同期メッセージを逐次取り出して、取り出した非同期メッセージで要求された処理を自オブジェクトの実行部に実行させるシングルスレッド制約手段とを有し、前記シングルスレッド制約手段は、自オブジェクトの実行部においてオブジェクトの処理が実行されているときには前記キューから新たに非同期メッセージを取り出さず、自オブジェクトの実行部においてオブジェクトの処理が完了していることを条件に前記キューから新たに非同期メッセージを取り出すことで、前記実行部に非同期メッセージで要求された処理をシングルスレッドで実行させる」こととは、
　前記キューに非同期メッセージが登録されると、前記キューから非同期メッセージを逐次取り出して、取り出した非同期メッセージで要求された処理を実行部に実行させるシングルスレッド制約手段とを有し、
　前記シングルスレッド制約手段は，実行部において処理が実行されているときには前記キューから新たに非同期メッセージを取り出さず、実行部において処理が完了していることを条件に前記キューから新たに非同期メッセージを取り出すことで、前記実行部に非同期メッセージで要求された処理をシングルスレッドで実行させる、
ものである点で共通する。
　
（カ）上記（ウ）〜（オ）をふまえれば、引用発明の「受信した非同期メッセージを処理するように制御する手段」（本願発明の「メッセージ制御部」）は、受信した非同期メッセージの処理を実現するための構成要素として、「キュー」、「非同期メッセージ登録手段」及び「シングルスレッド制約手段」を有しているといえる。
　
　以上の対比によれば、本願発明と引用発明とは、次の点で一致し、また、次の点で相違する。
　
［一致点］
　オブジェクト間の非同期メッセージを送受信する非同期メッセージ管理方式であって、
　処理を実行する部分である実行部の他に、非同期メッセージを受信して処理する部分であるメッセージ制御部を含み、
　メッセージ制御手段は、
　非同期メッセージが格納されるキューと、
　非同期メッセージを受信して、前記キューに登録する非同期メッセージ登録手段と、
　前記キューに非同期メッセージが登録されると、前記キューから非同期メッセージを逐次取り出して、取り出した非同期メッセージで要求された処理を実行部に実行させるシングルスレッド制約手段とを有し、
　前記シングルスレッド制約手段は、実行部において処理が実行されているときには前記キューから新たに非同期メッセージを取り出さず、実行部において処理が完了していることを条件に前記キューから新たに非同期メッセージを取り出すことで、前記実行部に非同期メッセージで要求された処理をシングルスレッドで実行させる
　オブジェクト間の非同期メッセージ管理方式。
　
　
［相違点］
　本願発明が「複数のオブジェクトが非同期メッセージによって連携した処理を行うシステム」であって、「少なくとも他のオブジェクトから非同期メッセージにより自オブジェクトの処理を依頼される」ものであって、自オブジェクトを宛先にされた非同期メッセージを受信して自オブジェクトの実行部に実行させるものであり、複数のオブジェクトの各々が、「実行部」、「メッセージ制御部」を備えるものであるのに対し、引用発明は、これらの特定がない点（複数のオブジェクトの連携の有無が不明、かつ、「実行部」や「メッセージ制御部」などの要素がどのオブジェクトに属するのかが不明である点）。
　
　
５．判断
　複数オブジェクト間でメッセージ通信を行い、オブジェクト間でメッセージ通信が行われる事で依頼処理を行うこと（本願発明の「複数のオブジェクトがメッセージ通信によって連携したシステム」であって、「少なくとも他のオブジェクトから非同期メッセージにより自オブジェクトの処理を依頼される」ことに相当する。）、及び、各オブジェクトがメッセージキューを有し、オブジェクトが自オブジェクトを宛先とするメッセージを受信するたびに、スレッドが処理を行うように制御する手段（本願発明の複数のオブジェクトの各々が、スレッドである「実行部」と、「メッセージ制御部」を備えて、自オブジェクトを宛先にされたメッセージを受信して自オブジェクトの実行部に実行させることに相当する。）は、引用文献２に記載されている。
　そして、プロデューサとコンシューマ間（「オブジェクト間」）でメッセージを送受信して、メッセージを処理する引用発明に対して、同様にオブジェクト間でメッセージを送受信して実行依頼されたメッセージを処理する引用文献２記載の技術を適用し相違点の構成とすることは、当業者が容易に想到し得たことである。
　
　そして、本願発明の効果も当業者が引用発明及び引用文献２記載の技術から予測し得る程度のものであって格別のものではない。
　したがって、本願発明は、引用発明及び引用文献２記載の技術に基づいて、容易に発明ができたものである。
　
　
６．平成２４年７月２３日付け意見書について
　なお、出願人は、平成２４年７月２３日付けで提出された意見書において、
「引用文献１には、受信メッセージの処理順を保証する最もシンプルな解決方法が、「コンシューマをシングルスレッドとして稼働させるのである」との記載はありますが、それをどう実現させるかの具体的な記載はなく、単に、あるキューに対するコンシューマのインスタンス（スレッド）の生成を１つにすればよい程度の示唆にすぎないものと思料いたします。なお、この記載の後に「もう１つ、メッセージの受信と処理順の制御をアプリケーションとして作り込む手もある」と記載されていることから、本願発明のように、各オブジェクトのメッセージの取り出し処理においてその可否を判定する制御をアプリケーションとして作り込こんで実装することまでを示唆するものではない」旨の主張をしている。
　しかしながら、上記４．（オ）で検討したように、キューに登録された非同期メッセージを順番に（逐次）取り出して、取り出した非同期メッセージを、スレッドがシングルスレッドとして実行するよう制御することは、引用発明において、実質的に行われていることから、前記出願人の主張を採用することはできない。
　
　
７．むすび
　以上のとおり、本願の請求項１に係る発明は、特許法第２９条第２項の規定により、特許を受けることができない。したがって、本願は、他の請求項について検討するまでもなく、拒絶されるべきものである。
　よって、結論のとおり審決する。