特許第6581710号(P6581710)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特許6581710オブジェクト指向スクリプトツールをサポートするシステムおよび方法
<>
  • 特許6581710-オブジェクト指向スクリプトツールをサポートするシステムおよび方法 図000002
  • 特許6581710-オブジェクト指向スクリプトツールをサポートするシステムおよび方法 図000003
  • 特許6581710-オブジェクト指向スクリプトツールをサポートするシステムおよび方法 図000004
  • 特許6581710-オブジェクト指向スクリプトツールをサポートするシステムおよび方法 図000005
  • 特許6581710-オブジェクト指向スクリプトツールをサポートするシステムおよび方法 図000006
  • 特許6581710-オブジェクト指向スクリプトツールをサポートするシステムおよび方法 図000007
  • 特許6581710-オブジェクト指向スクリプトツールをサポートするシステムおよび方法 図000008
  • 特許6581710-オブジェクト指向スクリプトツールをサポートするシステムおよび方法 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6581710
(24)【登録日】2019年9月6日
(45)【発行日】2019年9月25日
(54)【発明の名称】オブジェクト指向スクリプトツールをサポートするシステムおよび方法
(51)【国際特許分類】
   G06F 9/455 20060101AFI20190912BHJP
【FI】
   G06F9/455 100
【請求項の数】13
【全頁数】11
(21)【出願番号】特願2018-211178(P2018-211178)
(22)【出願日】2018年11月9日
(62)【分割の表示】特願2016-220476(P2016-220476)の分割
【原出願日】2011年6月27日
(65)【公開番号】特開2019-40626(P2019-40626A)
(43)【公開日】2019年3月14日
【審査請求日】2018年12月7日
(31)【優先権主張番号】12/860,667
(32)【優先日】2010年8月20日
(33)【優先権主張国】US
(31)【優先権主張番号】201010236014.5
(32)【優先日】2010年7月20日
(33)【優先権主張国】CN
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】リー,ハイジュン
(72)【発明者】
【氏名】シュ,シン
(72)【発明者】
【氏名】スン,ペン
(72)【発明者】
【氏名】エゴロフ,ウラジーミル
(72)【発明者】
【氏名】ドゥ,ホンウェイ
【審査官】 塚田 肇
(56)【参考文献】
【文献】 特開2009−211190(JP,A)
【文献】 特開2007−234022(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
XMLファイルを用いてオブジェクト指向スクリプトツールをサポートするコンピュータ実装方法であって、
前記XMLファイル中の第1タグを用いてスクリプト言語でソフトウェアクラスを定義するステップを含み、前記ソフトウェアクラスは少なくとも1つのメソッドを有し、
前記XMLファイル中の第2タグを用いて前記少なくとも1つのメソッドを定義するステップと、
タイプ定義テーブルを用いてインスタンスメソッド呼出しのための構文を定義するステップと、
前記タイプ定義テーブルのためのキーとして前記第2タグを用いて、前記XMLファイル中の前記第2タグをインスタンスメソッド呼出しのための前記構文に関連付けるステップと、
前記XMLファイル中の前記第2タグにおける前記少なくとも1つのメソッドを呼出すステップを含む、方法。
【請求項2】
前記スクリプト言語はAntである、請求項1に記載の方法。
【請求項3】
XMLパーサを用いて前記XMLファイルをパースするステップをさらに含む、請求項1または2に記載の方法。
【請求項4】
前記XMLファイル中のタグを用いて、ソフトウェアオブジェクトが前記ソフトウェアクラスのインスタンスであるか否かをチェックするステップをさらに含む、請求項1からのいずれか1項に記載の方法。
【請求項5】
クラスの拡張および継承と、メソッドオーバーライドと、インスタンスの多態性と、特別の“this”および“super”インスタンスとの少なくとも1つをサポートするステップをさらに含む、請求項1からのいずれか1項に記載の方法。
【請求項6】
前記XMLファイルのタグ中の、インスタンスメソッド呼出し構文をサポートするステップをさらに含み、前記構文は“[class reference].[method name]”のフォーマットになっている、請求項1からのいずれか1項に記載の方法。
【請求項7】
前記方法はさらに、
1つまたは複数の汎用アプリケーション構築スクリプトを前記ソフトウェアクラスにカプセル化するステップと、
別のソフトウェアクラスにおける1つまたは複数の特定のアプリケーション構築スクリプトを実行するステップとを含み、前記別のソフトウェアクラスは、前記ソフトウェアクラスから拡張または継承される、請求項1からのいずれか1項に記載の方法。
【請求項8】
前記方法はさらに、
1つまたは複数の汎用ドメイン管理スクリプトを前記ソフトウェアクラスにカプセル化するステップと、
別のソフトウェアクラスにおける1つまたは複数のドメイン管理スクリプトを用いて特定のドメインを起動させるステップとを含み、前記別のソフトウェアクラスは、前記ソフトウェアクラスから拡張または継承される、請求項1からのいずれか1項に記載の方法。
【請求項9】
前記ソフトウェアクラスは、別のソフトクラスのインスタンスを引数として受入れることができるユーティリティクラスである、請求項1からのいずれか1項に記載の方法。
【請求項10】
前記オブジェクト指向スクリプトツールを用いてデータベースにリンクするステップをさらに含む、請求項1からのいずれか1項に記載の方法。
【請求項11】
オブジェクト指向スクリプトツールを用いてアプリケーションを異なるサーバに配布させるステップをさらに含む、請求項1から10のいずれか1項に記載の方法。
【請求項12】
請求項1〜11のいずれかに記載の方法をコンピュータに実行させる、プログラム。
【請求項13】
請求項12に記載のプログラムを格納したメモリと、
前記プログラムを実行するプロセッサとを備える、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
著作権表示
この特許文書の開示の一部には、著作権保護の対象となるものが含まれている。著作権者は、特許商標庁の特許ファイルまたは記録に掲載された特許文書または特許開示の複製に対しては異議を唱えないが、他のすべての著作権を留保する。
【0002】
発明の分野
本発明は、概ねソフトウェア開発およびドメイン管理用のスクリプトツールに関し、特にXMLに基づくスクリプトツールに関する。
【背景技術】
【0003】
背景
スクリプトツールは、高レベルのスクリプト言語を用いて実装されたソフトウェアツールである。通常、スクリプトツールのスクリプトは、実行時の実行環境でプログラムされた特定のタスクを実行することにより解釈され得る。
【0004】
このようなスクリプトツールの一例は、Ant(“Another Neat Tool”)である。Antというソフトウェアツールは、最初にはソフトウェア構築プロセスを自動化するために開発された。Antは、JAVA(登録商標)プログラミング言語を用いて実装される。Antは、JAVAプラットフォームにおいてJAVAプロジェクトを構築するために使用することができる。典型的なAntスクリプトファイルは、XMLファイル形式になっている。
【発明の概要】
【課題を解決するための手段】
【0005】
概要
一実施形態によれば、オブジェクト指向スクリプトツールはXMLファイルを用いてソフトウェア開発およびドメイン管理を行う。XMLファイルは、少なくともオブジェクト指向スクリプト言語でスクリプトクラスを定義する第1タグを有する。スクリプトクラスはXMLファイル中の第2タグに定義された少なくとも1つのメソッドを有する。汎用ソフトウェア開発およびドメイン管理スクリプトは、汎用スクリプトクラスにカプセル化され、これを特定のソフトウェア開発およびドメイン管理タスク用の個別スクリプトクラスに拡張することができる。
【図面の簡単な説明】
【0006】
図1】オブジェクト指向Antスクリプトツール環境を示す例示的な図である。
図2】一実施形態に係るオブジェクト指向Antスクリプト言語の構文とJAVAプログラミング言語の構文との間のマッピング関係の例を示す図である。
図3】一実施形態に係るソフトウェアアプリケーションを構築するためのオブジェクト指向Antのクラス階層の例を示す図である。
図4】一実施形態に係るアプリケーションを構築するためのオブジェクト指向Antスクリプトクラスの使用例を示す図である。
図5】一実施形態に係るアプリケーションサーバドメインを管理するためのクラス階層の例を示す図である。
図6】一実施形態に係るアプリケーションサーバドメインを管理するためのオブジェクト指向Antスクリプトクラスの使用例を示す図である。
図7】一実施形態に係るオブジェクト指向Antユーティリティクラスの使用見本を示す図である。
図8】一実施形態に係る分散環境においてソフトウェアアプリケーションを検証する例示的なステップを示す図である。
【発明を実施するための形態】
【0007】
詳細な説明
添付図面の図により、本発明を限定ではなく例示として説明する。添付図面の図において、同一の参照符号は同等の要素を示す。また、この開示において、「一実施形態」、「1つの実施形態」または「いくつかの実施形態」は、同一の実施形態に限られず、少なくとも1つの実施形態を意味することに注意すべきである。
【0008】
以下、オブジェクト指向プログラミング言語プラットフォームの例としてJAVAプラットフォームを用いて、本発明の一実施形態を説明する。他の種類のオブジェクト指向プログラミング言語プラットフォームを制限なく使用できることは、当業者には明らかであろう。
【0009】
一実施形態によれば、AntのようなXMLに基づくスクリプトツールは、オブジェクト指向機能を含むように拡張することができる。1つの実施形態において、オブジェクト指向スクリプトツールは、XMLに基づくスクリプトツールの拡張として実装することができる。たとえば、オブジェクト指向Antスクリプトツールまたはオブジェクト指向Antを、JAVAプログラミング言語を用いてAntの拡張として実装してもよい。1つの実施形態において、オブジェクト指向Antスクリプトツールを実装するJAVAコードは、Antスクリプトツール用の拡張タスクを格納するAntスクリプト環境により指定されたライブラリディレクトリにコンパイルされて配布することができる。
【0010】
図1は、オブジェクト指向Antスクリプトツール環境を示す例示的な図である。
図1に示すように、Antスクリプト環境は、XMLパーサ101を使用して、XMLファイル102に含まれ、異なるタグ110、112および120を有するスクリプトをパースすることができる。XMLファイル102中の各タグ110、112または120は、一種類のスクリプトタスクまたはターゲット111、113または121に関連付けられている。
【0011】
一実施形態によれば、オブジェクト指向Antのようなオブジェクト指向スクリプトツールは、オブジェクト指向スクリプト構文を含む追加のタグ122および124を利用してオブジェクト指向機能をサポートすることができる。図1に示すように、タグ122を、オブジェクト指向Antスクリプト環境においてクラス定義タスク123をサポートするために使用することができ、別のタグ124をオブジェクト指向Antスクリプト環境において関数呼出しタスク125をサポートするために使用することができる。
【0012】
一実施形態によれば、オブジェクト指向スクリプト構文は、異なるタイプのオブジェクト指向スクリプトの使用をサポートする。これらの異なるタイプのオブジェクト指向スクリプトは、タイプ定義テーブルに格納することができる。このタイプ定義テーブルは、タグ名をハッシュテーブルのキーとしてハッシュテーブルを使用して実装することができる。また、オブジェクト指向Antスクリプトツールの各タスクインスタンスは、インスタンスプールに格納することができる。インスタンスプールは、各インスタンスのIDまたは参照番号をキーとしてハッシュテーブルに実装することができる。
【0013】
別の一実施形態において、このようなタイプ定義メカニズムを低い優先順位で解釈して、ソフトウェア開発者が他の目的のために同一タグを他の用途に用いる際の名前衝突を防ぐことができる。別の例において、名前衝突を防ぐため、独特のタグを定義してオブジェ
クト指向Antスクリプト環境を開始することもできる。
【0014】
一実施形態によれば、オブジェクト指向スクリプトツールは、オブジェクト指向プログラミング言語により与えられた同様の機能を有することができる。さらに、オブジェクト指向プログラミング言語に精通するソフトウェア開発者は、オブジェクト指向スクリプト言語を簡単に理解することができる。たとえば、Antスクリプト言語に基づいたオブジェクト指向Antは、JAVAと同様の機能を有することができる。よって、熟練したJAVA開発者は、オブジェクト指向Antスクリプトツールの使い方をすぐに習得することができる。
【0015】
図2は、オブジェクト指向Antスクリプト言語の構文とJAVAプログラミング言語の構文との間のマッピング関係の例を示している。
【0016】
1つの実施形態によれば、JAVAクラスを定義することができるJAVAプログラミング言語と同じく、オブジェクト指向スクリプトツールはクラスタグを用いてスクリプトのクラスを定義することができる。たとえば、図2の1行目に示すように、オブジェクト指向Antスクリプト言語で定義された“Hello”サンプルクラスを、JAVAプログラミング言語のHelloクラスにマップすることができる。
【0017】
1つの実施形態によれば、オブジェクト指向スクリプトツールのクラスタグは、スクリプトクラスの挙動をカプセル化する任意のスクリプトを含むことができる。1つの実施形態において、クラスタグに2つの属性を付与することができる。1つの属性は、根本クラス(underlying class)の名前を定義する名前属性である。もう1つの属性は、基底クラス(base class)のクラス名を定義する基底属性である。基底属性のデフォルト値は“Object”であって、根本クラスがルートクラス(root class)から直接拡張されたクラスであることを示す。
【0018】
一実施形態によれば、JAVAクラスにおいてメソッドを定義するのと同様に、オブジェクト指向スクリプトツールは、メソッドタグを使用してクラスのメソッドを定義することができる。1つの実施形態において、メソッドタグは名前属性を有してもよい。たとえば、図2の3行目に示すように、メソッドの名前属性には値“sayHi”が与えられている。また、メソッドタグは、メソッドタグの本文に1つまたは複数の属性タグを定義することができる。このような属性タグは、メソッドが呼出されるときにメソッドに使用される1つまたは複数のパラメータを定義する。図2の4行目に示す例において、メソッド“sayHi”は、メッセージの内容を指定するパラメータをもっている。
【0019】
一実施形態によれば、オブジェクト指向スクリプトツールはクラスに参照値を割当てることができる。たとえば、図2の7行目において、JAVAで新たなクラスを作成するのと同様に、タグを使用してクラスの初期化をすることができる。図2の1行目のタグを用いて作成した“Hello”クラスのインスタンスには、インスタンスを一義的に識別するために、参照値“h”が割当てられている。
【0020】
一実施形態によれば、オブジェクト指向スクリプトツールによって、ユーザはクラス呼出しタグを使用してスクリプトクラスにおけるメソッドを“[class reference].[method name]”の形式で呼出すことができるようになる。たとえば、図2の9行目に示すように、図2の3〜5行目に定義された“sayHi”メソッドは、JAVAにおいてクラス呼出し構文を再構築する“h.sayHi”構文を使用して呼出すことができる。図2の4行目におけるメッセージ属性の定義に応じて、“sayHi”メソッドにメッセージの内容を含むパラメータを与える。
【0021】
一実施形態によれば、オブジェクト指向スクリプトツールは、メッセージの内容を書出すことができるエコータグを提供する。たとえば、図2の11行目に示すように、エコータグはJAVAの“System.out”と同様に動作することができる。
【0022】
一実施形態によれば、オブジェクト指向スクリプトツールは、あるオブジェクト指向Antオブジェクトが特定のAntクラスタイプであるか否かをチェックするのに使用できる<instance of>タグを与える。1つの実施形態において、<instance of>タグは、AntオブジェクトIDを表す“id”属性およびこれから検証されるAntクラスの名前を表す“classname”属性を提供している。
【0023】
一実施形態によれば、オブジェクト指向プログラミング言語と同様に、オブジェクト指向スクリプトツールは、他の便利な機能を提供することができる。これらの便利な機能は、JAVAが提供しているような、メソッドオーバーライド、特別な“this”および“super”インスタンスを含む。また、JAVAと同様に、オブジェクト指向Antは、クラスの拡張および継承、インスタンスメソッドの呼出し構文のリフレクションフレーバー(reflection flavor)、およびインスタンスプロパティを取得する構文をサポートすることができる。
【0024】
一実施形態によれば、オブジェクト指向スクリプトツールを用いてソフトウェアアプリケーションを構築することができる。汎用アプリケーション構築スクリプトはクラスにカプセル化することができる。その後、ソフトウェア開発者は、いくつかの好みの特別な機能に組み込むために、独自のバージョンの汎用アプリケーション構築スクリプトを作成することができる。
【0025】
図3は、ソフトウェアアプリケーションを構築するためのクラス階層の例を示している。図3に示すように、App.class.xml301は、汎用アプリケーション構築スクリプトをカプセル化する基底クラスである。MyAppBase.class.xml302は、基底クラスApp.class.xml301を継承するクラスである。ソフトウェア開発者は、App.class.xml301に既に存在している実装の詳細を書換えたり、コピーして貼付けたりする必要がない。ソフトウェア開発者は新しいメソッドを追加またはMyAppBase.class.xml302に既存のメソッドをオーバーライドするだけでよい。
【0026】
さらに、ソフトウェア開発者は、MyAppBase.class.xml302に基づいて、異なるプロジェクト用に異なるオブジェクト指向AntスクリプトクラスMyApp1.class.xml303およびMyApp2.class.xml304を作成することができる。異なるオブジェクト指向AntスクリプトクラスMyApp1.class.xml303およびMyApp2.class.xml304は、プロジェクトのディレクトリおよび有用なライブラリへのリンクのようなプロジェクトを無事にコンパイルし、構築するために必要なすべての情報を含んでいる。
【0027】
図4は、アプリケーションを構築するためのオブジェクト指向Antスクリプトクラスの使用例を示している。図4に示すように、2つの個別のオブジェクト指向AntスクリプトクラスMyApp1およびMyApp2を使用して2つの個別のアプリケーションApp1およびApp2を構築することができる。
【0028】
一実施形態によれば、オブジェクト指向スクリプトツールを使用して異なるネットワークまたはアプリケーションサーバドメインを管理することもできる。
【0029】
図5は、アプリケーションサーバドメインを管理するためのクラス階層の例を示してい
る。図5に示すように、汎用ドメイン関連のスクリプトは、クラスDomain.class.xml501にカプセル化することができる。ネットワーク管理者は、別のクラスMyDomainBase.class.xml502に独自のバージョンの汎用ドメイン関連のスクリプトを指定することができる。MyDomainBase.class.xml502は、ネットワーク管理者に合うようにカスタマイズした機能を含んでいる。ここでは、MyDomainBase.class.xml502は、基底クラスDomain.class.xml501を継承するクラスである。このとき、ネットワーク管理者は、汎用ドメイン管理スクリプトに既に存在している実装の詳細を書換えたり、コピーして貼り付けたりする必要がない。ソフトウェア開発者は新しいメソッドを追加または既存のメソッドをオーバーライドするだけでよい。
【0030】
さらに、ネットワーク管理者は、MyDomainBase.class.xml502に基づいて、特定のドメインのために個別のオブジェクト指向AntスクリプトクラスMyDomainl.class.xml503を作成することができる。ここでは、オブジェクト指向Antスクリプトクラスは、特定のドメインを無事に準備し、起動するために必要なすべての情報を含んでいる。
【0031】
図6は、アプリケーションサーバドメインを管理するためのオブジェクト指向Antスクリプトクラスの使用例を示している。図6に示すように、アプリケーションサーバドメインMyDomain1は、オブジェクト指向Antスクリプトクラスを使用して準備および起動することができる。
【0032】
一実施形態によれば、オブジェクト指向スクリプトツールを使用して他のタイプのスクリプトクラスのオブジェクトを引数として受け入れることができるユーティリティスクリプトクラスを作ることができる。
【0033】
図7は、オブジェクト指向Antユーティリティクラスの使用例を示している。図7に示すように、ユーティリティAntクラス、すなわち“MyApp1Util”クラスは、参照記号またはid“app1util”を有している。“MyApp1Util”クラスには、その参照記号またはid“app1”によって“MyApp1”クラスのすべてのインスタンスプロパティを取得することができるプロセスメソッドを有している。以降の操作は、得られた“MyApp1”クラスのインスタンスプロパティに基づいて行うことができる。このような操作は、配布定義ファイルの管理などを含むがこれらに限定されない。
【0034】
一実施形態によれば、オブジェクト指向スクリプトツールは、分散環境においてソフトウェアアプリケーションを検証するために、たとえばアプリケーションサーバのドメイン設立およびデータベースへのリンクなどに使用することができる。
【0035】
図8は、分散環境においてソフトウェアアプリケーションを検証する例示的なステップを示している。図8に示すように、ソフトウェアアプリケーションのテストスクリプトは、最初にアプリケーションをコンパイルするステップ801と、異なる目的のために異なるアプリケーションのテストケースを開発およびコンパイルするステップ802とを含むことができる。次に、ターゲットドメインを準備するステップ803および起動させるステップ804を行い、ステップ805でドメイン内においてサーバ上にアプリケーションを配布する。ステップ806でテストケースの実行が完了した後、ステップ807でドメインをシャットダウンして、ステップ808でクリーンアップを行うことができる。
【0036】
ソフトウェアの検証が複雑であるため、異なるテストケースを開発する必要がある。よって、各テストシナリオに膨大な量のスクリプトファイルが存在する可能性がある。以前
、1つのテストケースから別のテストケースへのスクリプトファイルの移行は、多くの似たようなテストスクリプトを使用し、コピーおよびペースト手法を通じて行った。テストスクリプトはサイズが非常に大きくなることがありかつ詳細に関わるので、このコピーおよびペースト手法は効率的ではない。多くの場合、ソフトウェア開発者は、ミスを避けるために、古いテストスクリプトを再利用するよりはむしろテストスクリプトを書換える。オブジェクト指向Antを使用することにより、ソフトウェア開発者は、膨大な量のコードをコピーおよびペーストせずに、1つのテストケースから別のテストケースに簡単に拡張することができる。
【0037】
一実施形態によれば、Antにオブジェクト指向構文を導入することにより、はるかに簡単に既存のスクリプトを再利用することができる。たとえば、Antマクロ“A”内部で別のマクロ“B”を呼出すことができる。一例を挙げると、ソフトウェア開発者は単に“B”の挙動を変更し、“A”を再利用することを望む。コピーおよびペースト手法を使用する場合、ソフトウェア開発者は、2つの新しいマクロ“A1”および“B1”を作成する必要があり、ソフトウェア開発者は、“A”の内容を“A1”にコピーし、“B”の呼出しを“B1”の呼出しに変更する必要がある。しかしながら、オブジェクト指向Antを用いれば、ソフトウェア開発者は単に、新たなクラス“B1”を用いて基底クラス“B”を拡張することにより、新しい実装を用いて“B”の中の1つまたは複数のメソッドをオーバーライドすることができる。
【0038】
本発明は、従来の汎用目的または本開示の教示に従ってプログラムされた専用のデジタルコンピュータまたはマイクロプロセッサを用いて便利に実装することができる。ソフトウェア分野の当業者には明らかなように、適切なソフトウェアコーディングは、本開示の教示に基づいて熟練したプログラマによって容易に作成されることができる。
【0039】
いくつかの実施形態において、本発明は、本発明のプロセスのいずれかを実行するようにコンピュータをプログラムするのに使用できる指令をその上/中に格納する記憶媒体(1つまたは複数)であるコンピュータプログラム製品を含む。記憶媒体は、フロッピー(登録商標)ディスク、光学ディスク、DVD、CD−ROM、マイクロドライブおよび光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気または光カード、ナノシステム(分子メモリICを含む)、または指令および/またはデータを格納するのに適した任意のタイプの媒体またはデバイスに限定しないがこれらを含むことができる。
【0040】
本発明に関する以上の説明は、例示および説明を目的とするものである。網羅的またはこの発明を開示された厳密な形式に限定することを意図していない。当業者には多くの修正および変更が明らかになるであろう。与えられたコード例は、例示を目的とするものである。本明細書に記載の技術は、別のコード言語を用いて、異なるコードで適用できるということは明らかであろう。
【0041】
本発明の原理およびその実用性を最もよく説明するために、実施形態が選択され、述べられた。よって、当業者は、予測される特定の用途に適するさまざまな実施形態およびさまざまな変形例を有する本発明を理解することができる。本発明の範囲は以下の特許請求の範囲およびそれの均等物によって定義されるものとする。
図1
図2
図3
図4
図5
図6
図7
図8