【事件の表示】
　平成　４年特許願第　９０３１４号「シミュレーションプログラム生成方式」拒絶査定に対する審判事件〔平成　５年１０月１５日出願公開、特開平　５−２６５７３０、請求項の数（１）〕について、次のとおり審決する。
【結　論】
　原査定を取り消す。
　本願の発明は、特許すべきものとする。
【理　由】
１．手続の経緯、本件発明
　本願は、平成４年３月１６日の出願であって、その特許請求の範囲の請求項１に係る発明は、平成１０年８月６日付け手続補正書により補正された明細書及び図面の記載からみて、その特許請求の範囲の請求項１に記載された次のとおりのものと認める。
「システム内を移動するトランザクションのフローをシミュレーションモデルとしてシミュレーション言語で記述したファイルを読み込みシミュレーションを行うシミュレーションプログラムを生成するシミュレーションプログラム生成方式において、
シミュレーション言語で記述されたモデルを該モデル内における同一の構造の部分を抜き出してまとめた種類であるクラスの記述毎に入力し、クラスの記述についての情報を含む構文解析木データを作成するモデル読み込み手段と、
このモデル読み込み手段により作成された構文解析木データから、前記シミュレーション言語で記述されたモデルの１つのクラスの記述に対して１つのリンクすることのできるクラスのシミュレーションプログラムを、クラスの属しているシミュレーションモデルの一部分である単位としてのオブジェクトにメッセージを渡す手続きを実行するときに現在のメソッド実行情報をメソッド実行情報スタックにプッシュしメッセージに対応する新しいメソッド実行情報を現在のメソッド実行情報におきメソッドが終わったときにメソッド実行情報スタックにプッシュしたメソッド実行情報を現在のメソッド実行情報に戻して実行を続けるように生成することを繰り返すことにより、シミュレーションプログラムを生成するシミュレーションプログラム生成手段と
を有することを特徴とするシミュレーションプログラム生成方式。」
　
２．原査定の理由
　これに対して、原査定の拒絶の理由は、「この出願の発明は、その出願前日本国内又は外国において頒布された下記の刊行物に記載された発明に基いて、その出願前にその発明の属する技術の分野における通常の知識を有する者が容易に発明をすることができたものであるから、特許法第２９条第２項の規定により特許を受けることができない。
　　　記　引用文献一覧
引用例１．「情報処理学会第４４回(平成４年前期)全国大会講演論文集」(1992-2-24)P.5-15〜5-16
引用例２．「情報処理学会第４３回(平成３年後期)全国大会講演論文集」(1991-9-24)P.5-141〜5-142
　上記引用例１、２にはオブジェクト指向のシミュレーションモデル化言語で記述した言語を用いてシミュレーションプログラムを生成することが記載されている。ここで、引用例１、２記載のものにおいてはオブジェクト指向のモデル化言語で記述されたシミュレーションプログラムが最終的にＣ言語レベルのプログラムに変換され実行されるものであり、オブジェクト指向のモデル化言語でのメソッド呼び出しは最終的にＣ言語の関数呼び出しとして実行されることは当業者ならば上記引用例１、２の記載から当然理解できるものである。
　ここで、関数呼び出し時に行う処理である「関数呼び出しを行う時には現在の実行情報をスタックにプッシュし、関数呼び出しが終了したら実行情報を復元する」という処理は、請求項の「あるメソッドの処理を呼び出すときには現在のメソッド実行情報をスタックにプッシュし、メソッドの処理が終わったときにはプッシュしたメソッド実行情報を元に戻す」という構成と実質的に差異はない。」というものであり、
　拒絶査定では、出願人の引用例１の頒布日が特定できないという意見に対して、備考として「引用例１を掲載している該論文集の裏面に発行日平成４年２月２２日である旨が記入されている…。」と指摘している。
　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　
３．当審の判断　　　　　　　　　　　　　　　　　　　　　　　　　
（１）各引用例の記載について
ア．引用例１には、以下の事項が記載されている。
（ア）「２　「ハイパシムシム」の特徴
　グラフィックユーザインタフェースをもつシミュレーション言語システム｛ハイパシステム｝は，ひとかたまりの「もの」（トランザクション）がシステム内を移動するモデルを扱う離散型のシミュレーションを行うものであり，以下の特徴を持っている．
・ オブジェクト指向のクラス、インスタンス、クラス階層、継承の考え方を取り入れている（「取り入れていている」は誤記と認める。）ので，プログラムの再利用や保守が行なえる．
・ シミュレーションモデルの定義は独自のグラフィックユーザインタフェースを用いて行うため、モデルの定義、編集操作、モデルの構成の認識、トランザクションの流れの認識等が容易に行える．
・ アニメーション画面を用いることによって，シミュレーション実行時のトランザクションの動きをとらえることができる．
・ 「ハイパシムシム」のデバッグ機能によって，シミュレーション情報の出力や，シミュレーションの制御を行なうことができる．」（第５−１５頁左欄第１０行乃至第２４行から抽出）
（イ）「「ハイパシムシム」は図１に示される三つの階層画面を用いてシミュレーションモデルを定義する．以下に「ハイパシムシム」のシミュレーションモデルの定義の手順を説明する．
　まずはじめに，クラス階層画面を用いてシミュレーションモデルのクラスを階層状に定義する．これによってオブジェクト指向のクラス階層と性質継承の関係を分かり易く表現する．
　次に各クラスについて，クラス名とクラスの持つ内部的な変数を定義し，メソッド定義画面によってメソッド定義を行なう．
　メソッド定義画面ではメソッドの名前，一時的変数，メソッドの手続きを定義する．この画面上には編集操作が容易に行えるアイコンが容易されている．」（第５−１５頁左欄第２７行乃至第３６行から抽出）
（ウ）「４．１　モデル全体におけるアニメーション画面
　図２のデバッグ画面にはクラスによって生成されたオブジェクトとオブジェクト間のメッセージのやり取りを示す矢印とトランザクションとがアニメーション表示される．これによってシミュレーションのモデル全体の動きをとらえることができる。」（第５−１５頁右欄第８行乃至第１２行から抽出）
（エ）「４．３　ソースプログラムにおけるアニメーション画面
　図３のソースプログラムにおけるアニメーションはメソッド定義画面に，現在シミュレーションが実行しているプログラムの行を反転表示するアニメーションである。これによってソースレベルのシミュレーションの動きをとらえることができる．これはモデル全体のアニメーションと同時に表示することができる．」（第５−１６頁左欄第行乃至第行から抽出）
（オ）「５　ハイパシムシムの内部構成
　「ハイパシムシム」の内部構成は図５に示され，処理は矢印に従って実行される．
　グラフィック画面によって定義されたシミュレーションモデルを，ハイパシムシムコンパイラによってｃ言語プログラムを生成し，生成されたｃ言語プログラムをｃコンパイラによってロードモジュールを生成する．
　生成されたロードモジュールを実行することによってシミュレーションを制御し，アニメーションを表示する。」（第５−１６頁右欄第５行乃至第１２行から抽出）
　
　上記（ア）の事項を参照すると、引用例１記載の「ハイパシムシム」のシステムは、トランザクションがシステム内を移動するモデルを扱う離散型のシミュレーションを行うグラフィックユーザインタフェースをもつシミュレーション言語システムであり、
　オブジェクト指向のクラス、インスタンス、クラス階層、継承の考え方を取り入れていて、プログラムの再利用や保守が行うことができ、シミュレーションモデルの定義は独自のグラフィックユーザインタフェースを用いて行うため、モデルの定義、編集操作、モデルの構成の認識、トランザクションの流れの認識等が容易に行え、アニメーション画面を用いることによって，シミュレーション実行時のトランザクションの動きをとらえることができるものである。
　また、上記（イ）の事項及び図１を参照すると、引用例１記載の「ハイパシムシム」は、シミュレーションモデルの定義を独自のグラフィックユーザインタフェースを用いて行う際に、クラス階層画面、クラス定義画面、メソッド定義画面を用いて、クラスの階層状の定義と、各クラスの定義とメソッド定義を行い、クラス階層画面ではクラスの階層状の木構造の関係を定義し、クラス定義画面では各クラスの定義を行い、メソッド定義画面ではメソッドの定義を行うことが記載されていると認められる。
　そして、上記（ウ）の事項を参照すると、クラスが階層状に木構造で表示された、図２のデバッグ画面では、クラスによって生成されたオブジェクトとオブジェクト間のメッセージのやり取りを示す矢印とトランザクションがアニメーション表示され、これによってシミュレーションの全体の動きをとらえることができるものである。
　更に、上記（エ）の事項を参照すると、上記（ウ）のアニメーション表示と同時に、メソッド定義画面上で、現在シミュレーションが実行しているプログラムの行を反転表示することにより、ソースレベルのシミュレーションの動きをとらえることができるものである。
　また、上記（オ）の事項を参照すると、グラフィック画面によって定義されたシミュレーションを、ハイパシムシムコンパイラによりｃ言語プログラムを生成し、生成されたｃ言語プログラムをｃコンパイラによってロードモジュールを生成すること、及び、生成されたロードモジュールを実行することによりシミュレーションを制御し、アニメーションを表示することが記載されている。
　
　以上を勘案すると、引用例１には、
　トランザクションがシステム内を移動するモデルを扱う離散型のシミュレーションを行うグラフィックユーザインタフェースをもつシミュレーション言語システムであって、
　独自のグラフィックユーザインタフェースを用いて、クラス階層画面でクラスの階層状の木構造の関係を定義し、クラス定義画面で各クラスの定義を行い、メソッド定義画面でメソッドの定義を行ったシミュレーションモデルに対して、
　ハイパシムシムコンパイラによりｃ言語プログラムを生成し、生成されたｃ言語プログラムをｃコンパイラによってロードモジュールを生成し、
　生成されたロードモジュールを実行することにより、
　デバッグ画面において、クラスが階層状に木構造で表示され、クラス階層画面で定義された関連するクラスによって生成されたオブジェクトとオブジェクトとの間のメッセージのやり取りを示す矢印とトランザクションとをアニメーション表示し、また、これと同時に、メソッド定義画面のソースプログラムを反転するアニメーション表示を行うシミュレーション言語システムの発明（以下、「引用例１記載の発明」という。）が記載されていると認められる。
　
イ．引用例２には、以下の事項が記載されている。
（ア）「「ハイパシムシム」の特徴を以下に述べる。
・ ハイパシムシムはひとかたまりの「もの」（トランザクション）がシステム内を移動するモデルを扱う離散型のシミュレーションを行う。よって、Ｃ言語やＦＯＲＴＲＡＮでモデル化を行うのと比較すると大変容易にモデルを表現することができる。
・ プログラムの再利用のしやすやや保守のしやすさを実現するため、オブジェクト指向のクラス、インスタンス、クラス階層、継承の考え方を取り入れている。
・ シミュレーションモデルの定義は独自のグラフィックユーザインタフェースを用いて行うため、モデルの定義、編集操作、モデルの構成の認識、トランザクションの流れの認識等が容易に行える。」（第５−１４１頁左欄第１２行乃至第２４行から抽出）
（イ）「３．１クラス階層画面
　シミュレーションモデルの定義は、まずはじめに図１の様にクラスを階層状に定義する。このように定義されたクラス間には、階層が下のクラスは上の階層の性質を継承するという、オブジェクト指向のクラス階層と継承に関係がある。このクラスの名前、詳細に関する定義は次の３．２（４．２は誤記と認める。）クラス定義画面で行う。」（第５−１４１頁右欄第３行乃至第９行から抽出）
（ウ）「３．２クラス定義画面
　クラスの詳細を、図２で示されるグラフィック画面を用いて行う。クラス名とこのクラスのオブジェクトが内部に持つ変数を各エディタに定義する。このクラス内のメソッドが［メソッド識別子］のエディタに表示されており、このメソッドの定義は次の３．３（４．３は誤記と認める。）メソッド定義画面で行う。」（第５−１４１頁右欄第１０行乃至第１５行から抽出）
（エ）「３．３メソッド定義画面
　メソッドの詳細を、図３で示されるグラフィック画面を用いて行う。メソッドの名前、メソッド内で有効な一時的変数、およびメソッドの手続きを定義する。メソッドの手続きの定義は、文字入力以外を画面右下部のアイコンをマウスで選択することにより行う。」（第５−１４２頁左欄第１行乃至第６行から抽出）
（オ）「４　ハイパシムシムの内部構成
　「ハイパシムシム」の内部構成は図４に示され、矢印にしたがって処理が実行される。　まずハイパシムシム生成部が、利用者がグラフィックユーザインタフェースにより定義したシミュレーションモデルハイパシムシムソースを生成する。
　つぎにハイパシムシムコンパイラが、生成されたハイパシムシムソースからＣソースの実行プログラムを生成する。
　このハイパシムシムコンパイラ内では、まずハイパシムシムソースファイルから構文解析部、Ｃソース生成部によりＣ言語ソースを作成する。次にこの生成したＣ言語ソースからＣ言語コンパイラ、Ｃライブラリよりシミュレーションロードモジュールを作成する。（第５−１４２頁右欄第１行乃至第１４行から抽出）
　
　上記（ア）の事項を参照すると、引用例２記載の「ハイパシムシム」のシステムは、トランザクションがシステム内を移動するモデルを扱う離散型のシミュレーションを行うグラフィックユーザインタフェースをもつシミュレーション言語システムであり、
　オブジェクト指向のクラス、インスタンス、クラス階層、継承の考え方を取り入れていて、プログラムの再利用や保守が行うことができ、シミュレーションモデルの定義は独自のグラフィックユーザインタフェースを用いて行うため、モデルの定義、編集操作、モデルの構成の認識、トランザクションの流れの認識等が容易に行えるものである。
　また、上記（イ）乃至（エ）の事項及び図１〜図３を参照すると、引用例２記載の「ハイパシムシム」は、シミュレーションモデルの定義を独自のグラフィックユーザインタフェースを用いて行う際に、クラス階層画面でクラスの階層状の木構造の関係を定義し、クラス定義画面で各クラスの定義を行い、メソッド定義画面でメソッドの定義を行うことが記載されていると認められる。
　そして、上記（オ）の事項を参照すると、ハイパシムシム生成部が、利用者がグラフィックユーザインタフェースにより定義したシミュレーションモデルハイパシムシムソースを生成し、次に、ハイパシムシムコンパイラが、生成されたハイパシムシムソースからＣソースの実行プログラムを生成し、このハイパシムシムコンパイラ内では、まずハイパシムシムソースファイルから構文解析部、Ｃソース生成部によりＣ言語ソースを作成する。次にこの生成したＣ言語ソースからＣ言語コンパイラ、Ｃライブラリよりシミュレーションロードモジュールを作成することが記載されている。
　
　以上を勘案すると、引用例２には、
　トランザクションがシステム内を移動するモデルを扱う離散型のシミュレーションを行うグラフィックユーザインタフェースをもつシミュレーション言語システムであって、
　利用者が、クラス階層画面でクラスの階層状の木構造の関係を定義し、クラス定義画面で各クラスの定義を行い、メソッド定義画面でメソッドの定義を行う、独自のグラフィックユーザインタフェースを用いて定義したシミュレーションモデルに対して、
　ハイパシムシム生成部が、シミュレーションモデルハイパシムシムソースを生成し、次に、ハイパシムシムコンパイラが、生成されたハイパシムシムソースファイルから構文解析部、Ｃソース生成部によりＣ言語ソースを作成し、次にこの生成したＣ言語ソースからＣ言語コンパイラ、Ｃライブラリよりシミュレーションロードモジュールを作成するシミュレーション言語システムの発明（以下、「引用例２記載の発明」という。）が記載されていると認められる。
　
（２）対比・判断
　そこで、請求項１に係る発明と引用例１記載の発明とを対比すると、
　
　引用例１記載の発明では、
　オブジェクト指向のクラス、インスタンス、クラス階層、継承の考え方を取り入れているものの、クラスの階層、クラス定義、メソッド定義は、独自のグラフィックユーザインタフェースを用いてユーザがデータを入力するものであり、また、このクラスの階層構造、メソッド定義の画面は、アニメーション表示がなされるために用いられるものであって、
　シミュレーションプログラムの作成に関しては、引用例１記載の発明では、定義されたシミュレーションモデルを、ハイパシムシムコンパイラによりｃ言語プログラムを生成し、生成されたｃ言語プログラムをｃコンパイラによってロードモジュールを生成することが記載されているのみである。
　
　一方、請求項１に係る発明は、シミュレーション言語で記述されたモデルからシミュレーションモデルを作成する際に、シミュレーション言語で記述されたモデルを該モデル内における同一の構造の部分を抜き出してまとめた種類であるクラスの記述毎に入力し、クラスの記述についての情報を含む構文解析木データを作成するモデル読み込み手段を備えているものであり、
　
　引用例１記載の発明は、請求項１に係る発明のモデル読み込み手段に対応する構成を備えていないと認められる。
　
　また、引用例１記載の発明では、ハイパシムシムコンパイラによって、Ｃ言語プログラムを生成し、生成されたＣ言語プログラムからＣコンパイラによって、ロードモジュールが生成されており、
　Ｃコンパイラによるロードモジュール作成時に、関数呼び出しを行う時に、現在の実行情報をスタックにプッシュし、関数呼び出しが終了したら実行情報を復元するという処理を行っている可能性があるが、この処理では、請求項１に係る発明のシミュレーションプログラム生成手段と類似した処理が行われているといっても、これは、Ｃ言語プログラムソースを扱うためのものであって、請求項１に係る発明の、シミュレーション言語で記述されたモデルの１つのクラスの記述に対して、１つのリンクするクラスのシミュレーションプログラムを生成するためのシミュレーションプログラム生成手段の手法とは相違していると認められる。
　
　また、一方、引用例２記載の発明では、ハイパシムシム生成部が、利用者がグラフィックユーザインタフェースにより定義したシミュレーションモデルハイパシムシムソースを生成し、次に、ハイパシムシムコンパイラが、生成されたハイパシムシムソースファイルから構文解析部、Ｃソース生成部によりＣ言語ソースを作成し、次にこの生成したＣ言語ソースからＣ言語コンパイラ、Ｃライブラリよりシミュレーションロードモジュールを作成する構成が採用されていて、ハイパシムシムコンパイラが構文解析部、Ｃソース生成部を備えていることが開示されている。
　
　しかしながら、引用例２記載の発明は、請求項１に係る発明の、シミュレーション言語で記述されたモデルを該モデル内における同一の構造の部分を抜き出してまとめた種類であるクラスの記述毎に入力するモデル読み込み手段に相当する手段を備えておらず、
　また、ハイパシムシムコンパイラのＣソース生成部が、請求項１に係る発明の、シミュレーション言語で記述されたモデルの１つのクラスの記述に対して１つのリンクするクラスのシミュレーションプログラムを生成するためのシミュレーションプログラム生成手段のメソッド実行情報のプッシュと戻しの手段と同等の手段を備えているとは認められず、異なる構成のものであると認められる。
　
　以上のように、引用例１又は引用例２記載の発明は、
　システム内を移動するトタンザクションのフローをシミュレーションモデルとしてシミュレーション言語で記述し、シミュレーションを行うシミュレーションプログラムを生成するシミュレーションプログラム生成方式であって、オブジェクト指向のクラス、インスタンス、クラス階層、継承の考え方を取り入れている点では、請求項１に係る発明と、一致しているものの、
　
　請求項１に係る発明の、
ア． シミュレーション言語で記述されたモデルを該モデル内における同一の構造の部分を抜き出してまとめた種類であるクラスの記述毎に入力し、クラスの記述についての情報を含む構文解析木データを作成するモデル読み込み手段、
　
イ． このモデル読み込み手段により作成された構文解析木データから、前記シミュレーション言語で記述されたモデルの１つのクラスの記述に対して１つのリンクすることのできるクラスのシミュレーションプログラムを生成するシミュレーションプログラム生成手段、
　
ウ． シミュレーション言語で記述されたモデルからシミュレーションプログラムを生成する手段において、クラスの属しているシミュレーションモデルの一部分である単位としてのオブジェクトにメッセージを渡す手続きを実行するときに現在のメソッド実行情報をメソッド実行情報スタックにプッシュしメッセージに対応する新しいメソッド実行情報を現在のメソッド実行情報におきメソッドが終わったときにメソッド実行情報スタックにプッシュしたメソッド実行情報を現在のメソッド実行情報に戻して実行を続けるように生成することを繰り返す手段、
　
の各手段は、いずれも、引用例１又は２記載の発明は備えておらず、また、請求項１又は２記載の発明の構成から示唆もされていないものである。
　
　そして、本願発明の目的は、従来のシミュレーション実行方式では、シミュレーションモデルの大きさに比例して、シミュレーション言語で記述されたモデルの記述量が増大し、シミュレーションモデルの部分的な変更でも全体にわたるチェックが必要であり、シミュレーション言語により記述されたモデルの再利用が困難であるといった問題点を解決するためのものであり、
　
　本願発明の解決手段としては、シミュレーション言語で記述されたモデルを該モデル内における同一の構造の部分を抜き出してまとめた種類であるクラスの記述毎に入力するモデル読み込み手段を設け、それに適合した対応するシミュレーションプログラム生成手段を設けるものであり、
　本願発明の効果としては、クラスを利用することによりモデルの記述量は必ずしもモデルの大きさには比例せず、局所的な変数が使用でき、部分的な変更がしやすく、更に、シミュレーションモデルを分割して扱え、シミュレーションモデルファイルを再利用しやすいといった明細書記載の効果を奏するものであると認められる。
　
　請求項１記載の発明は、引用例１又は２記載の発明が備えていない上記ア．〜ウ．の構成を備えており、上記の作用効果を奏するものと認められ、引用例記載の発明に基いて当業者が容易に発明することができたものとは言えないと認められる。
　
４．まとめ                     
　したがって、この出願の発明は、特許法第２９条第２項の規定により特許を受けることができないという原査定の判断は妥当ではない。
　また、他に本願を拒絶すべき理由を発見しない。
  よって、結論のとおり審決する。