JP5669433B2 - 部品結合装置及び部品結合方法 - Google Patents

部品結合装置及び部品結合方法 Download PDF

Info

Publication number
JP5669433B2
JP5669433B2 JP2010106665A JP2010106665A JP5669433B2 JP 5669433 B2 JP5669433 B2 JP 5669433B2 JP 2010106665 A JP2010106665 A JP 2010106665A JP 2010106665 A JP2010106665 A JP 2010106665A JP 5669433 B2 JP5669433 B2 JP 5669433B2
Authority
JP
Japan
Prior art keywords
component
interface
external service
service
combined
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010106665A
Other languages
English (en)
Other versions
JP2011237883A (ja
JP2011237883A5 (ja
Inventor
大井 浩一
浩一 大井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2010106665A priority Critical patent/JP5669433B2/ja
Priority to US13/086,803 priority patent/US9189223B2/en
Publication of JP2011237883A publication Critical patent/JP2011237883A/ja
Publication of JP2011237883A5 publication Critical patent/JP2011237883A5/ja
Application granted granted Critical
Publication of JP5669433B2 publication Critical patent/JP5669433B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications

Description

本発明は、ソフトウェア部品を結合してアプリケーションを構築する装置に関し、特に結合させるソフトウェア部品を置換又は変更する技術に関する。
従来、ソフトウェア部品(以下、単に部品と称す)又はコンポーネントを組み合わせてアプリケーションを構築する多様な技術が存在する。
Open SCA Collaborationが仕様策定したサービスコンポーネントアーキテクチャー仕様(Service Component Architecture)はそのような技術の一つである。部品(SCA用語ではコンポーネント)のインタフェースを、サービス、リファレンス、プロパティに単純化し、異言語部品や多様な通信プロトコルを組み合わせし易くしたところに特徴がある。その組み合わせ仕様の詳細は非特許文献1に記載されている。
SCA仕様では、部品の結合をXML言語で記述された定義ファイルを用いて行うように既定されている。ある部品が別の部品を利用する場合、それらの部品は定義ファイルが定める方法によって結合されるが、利用する側の部品は利用される側の部品の機能を直接呼び出すようなコードを書く必要はない。
従って、部品のインタフェースが一致していれば、アプリケーションの中で使用されている部品を別の部品に置き換える時にコードを書き直す必要はない。これはSCA技術を使うメリットである。
一方、SCA以外の従来の技術として、部品を結合してアプリケーションを構築させる際に部品の置換を行ったり結合させるべき部品間の整合性を検証したりする技術に、以下のようなものが挙げられる。
例えば、アプリケーション毎に、結合するモジュールの情報を管理・更新し、問題発生時や自動切替時に、モジュール情報から切替えるべきモジュールのバージョンを決定し、そのアプリケーションが結合するモジュールバージョンの切り替えを行う。例えば、特許文献1参照。
また、ソフトウェア内の各既開発プログラム部品間の組み合わせ情報および部品の属性情報に基づいて、開発済みのソフトウェアの構造を保持しつつ、当該ソフトウェアの一部をなす特定の既開発プログラム部品を新たな既開発プログラム部品に置換する。例えば、特許文献2参照。
また、コンポーネント呼び出しを監視するモニタにより抽出されたコンポーネント呼び出し情報に基づいて、コンポーネント呼び出しとその対象であるコンポーネントとの整合性を検証する。例えば、特許文献3参照。
特開2008−108155号公報 特開2002−366356号公報 特開2004−362000号公報
SCA Service Component Architecuture Assembly Model Specification Version 1.00, March 15 2007
部品の置き換えがし易いというSCAの特徴は好ましい。しかしながら、SCA仕様では、アプリケーションを構築する際に、定義ファイルの内容を決定しておかなければならない。定義ファイルはアプリケーションの一部だからである。つまり、部品の置き換えを行う場合は、定義ファイルを変更せねばならない。それはアプリケーションの構築し直しを意味する。アプリケーションの実行時ではなく、開発時に部品の置き換えが可能ということである。
部品の置き換えの柔軟性はできるだけ高めておくことが望ましい。たとえ部品のインタフェースが同一であったとしても、性能や使用リソース、スケーラビリティ、アベイラビリティなど、部品の特性としてはいくつも考えられ、実現したい特性に応じて多数の部品が提供されることはあり得る。このような状況では、部品を置き換えたいという要求が自然に発生すると考えられる。例えば、ユーザが多数の部品の中から所望の部品を選べたり、機器が備えるリソース条件から動作すべき部品が決定できたりする、そのような機能を提供することは望ましいだろう。
しかし、部品の置換を実現するのにアプリケーションの開発し直しが必要となるのでは柔軟性が高いとは言えない。多様な機器に搭載するアプリケーションの部品を機器毎に変更したい場合に、その度に開発のやり直しを行うのでは開発コストがかかり過ぎる。一方、部品の置換を行いたい別の状況が存在する。
今日、多くのネットワークサービスが提供されている。機器がネットワークサービスと連携することで従来できなかったサービスが実現されていることも多い。機器の付加価値向上のためにはネットワークサービスとの連携が欠かせない。
ここで、新たなネットワークサービスが提供される状況を考えてみる。新ネットワークサービスが作られ、提供される頻度は、機器上のソフトウェアが更新される頻度の比ではない。ネットワーク上のコンピュータの性能、リソース、開発環境と、機器のそれを比べてみれば当然である。従って、機器ソフトウェアが更新されないままであるのに、ネットワークサービスが更新され、向上していく状況が常に起こり得る。
こういった場合、機器が出荷された後、後から作られたネットワークサービスと機器を連携させることは従来は困難であった。一部の機器ではファームウェアアップデート機能が備えられる。それを使えば新ネットワークサービスと連携させることは不可能ではない。しかしながら、ファームウェアアップデートはユーザに負担をかけるし、ROM容量等の面からソフトウェアの変更の自由度は低い。さらに、上述したのと同様に、これも開発行為が必要となる。
本発明は、アプリケーションの開発し直しが不要で、アプリケーションの実行時に部品の置換を可能とする装置を提供する。
アプリケーションを構成する部品と外部サービスとを結合する方法であって、
前記外部サービスのインタフェースの情報を取得する取得工程と、
他の部品と結合された処理対象の部品が他の部品のサービスを利用するためのインタフェースに、前記取得工程で取得した情報が示す外部サービスのインタフェースが適合するか判断する判断工程と、
前記判断工程によって、前記処理対象の部品が前記他の部品を利用するためのインタフェースに前記外部サービスのインタフェースが適合すると判断された場合、前記処理対象の部品が、前記取得工程で取得した情報が示す外部サービスと結合されるように、前記処理対象の部品と前記他の部品との結合を変更する変更工程と、
前記外部サービスと結合された部品を実行する実行工程と、
を備えることを特徴とする方法。
本発明によれば、アプリケーションの開発し直しが不要で、アプリケーションの実行時に部品の置換が可能になる。
第1の実施形態における部品結合装置100の構成を示すブロック図。 部品と部品の結合及び部品と外部サービスとの結合を示す図。 (A)は部品結合関係をSCA仕様に則って記述した部品結合定義を示す図、(B)はalternativeタグが追加されている部品結合定義を示す図。 複数の部品及び複数の外部サービスの部品結合関係を示す図。 図4に示す部品結合関係を表現した表形式のデータを示す図。 部品置換を行う際の全体の概略処理を示すフローチャート。 部品結合処理(S602)の詳細を示すフローチャート。 部品Aと部品Bとの結合の間に代理オブジェクトが介在する状態を示す図。 部品実行処理(S604)の詳細を示すフローチャート。 部品Aが外部サービスCに結合される場合を説明するための図。 部品置換処理(S605)の詳細を示すフローチャート。 更新後の部品結合定義の一例を示す図。 第2の実施形態における部品結合処理を示すフローチャート。
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。本実施形態では、ソフトウェア部品(部品)又はコンポーネントを結合してアプリケーションを構築する部品結合装置について説明する。
[第1の実施形態]
図1は、第1の実施形態における部品結合装置100の構成を示すブロック図である。図1に示す中央処理装置(CPU)101は、装置全体を制御すると共に、置換部110、結合部111、実行部112、出力部113、入力部114、及びインタフェース検証部115として機能する。
ハードディスクドライブ(HDD)102は、記憶部(メモリ)であり、HDD102にはアプリケーション120が記憶されている。尚、アプリケーション120は部品結合装置100の出荷時から格納されていても良いし、出荷後にHDD102にインストールされても良い。
アプリケーション120は、1以上の部品121と、それらの部品121の結合方法を記述した部品結合定義122とを含む。また、部品として提供されるソフトウェア以外のソフトウェア、即ち、アプリケーションロジック(不図示)もアプリケーション120に含まれる。尚、当然のことながら、アプリケーションロジックから部品121を利用することは可能である。
アプリケーションロジックから部品121を利用する方法は、部品121から他の部品121を利用する方法と変わりがない。そのため、以下ではアプリケーションロジックに対して、特に言及しない。
ネットワークI/F103は、部品結合装置100を装置外部に存在するネットワーク150に接続するためのインタフェースである。ROM104には、各種動作プログラムが読み取り可能な形式で格納されている。RAM105は、CPU101がROM104に格納されているプログラムに従って処理を実行中に使用される一時的な値等を保存するメモリである。
FlashROM106は、各種設定データファイル等を保存しておくための不揮発性メモリである。尚、不揮発性という性質がHDD102に近いことからFlashROM106を本発明における記憶部として用いることも可能である。
ディスプレイ107は、各種情報をユーザに表示する表示装置である。操作部108は、具体的にはキーボード、マウス、タッチディスプレイ等のユーザが入力操作を行うものである。部品結合装置100はネットワークI/F103、ネットワーク150を介してPC130及びサーバ140に接続されている。
次に、上述の構成を有する部品結合装置100において、アプリケーション120の中の部品121間の結合及び部品121と外部サービスとの部品結合関係を、図2を用いて説明する。
図2は、部品と部品の結合及び部品と外部サービスとの結合を示す図である。サービスコンポーネントアーキテクチャー(SCA)仕様によれば、部品がその機能を部品外部に公開するインタフェースはサービスと呼ばれ、部品が別の部品のサービスを利用するためのインタフェースは参照と呼ばれる。図2に示す例では、部品Aが2つの参照210A、210Bのインタフェースを有し、部品Bがサービス220Aのインタフェースを有し、外部サービスCがサービス220Bのインタフェースを有する。ここで、ある参照があるサービスを利用するときに、その参照とそのサービスとが結合される。
図2では、部品Aが部品Bを利用する際の参照210Aとサービス220Aとの結合を関係線230Aで示し、部品Aが外部サービスCを利用する際の参照210Bとサービス220Bとの結合を関係線230Bで示している。このとき、結合された参照210Aとサービス220Aとのインタフェースを整合しなければならない。整合しなければ、参照210Aからサービス220Aの全ての機能を利用することができないからである。
Java(登録商標)言語で言えば、参照210Aが依拠するJava(登録商標)インタフェースクラスとサービス220Aが依拠するJava(登録商標)インタフェースクラスとの互換性がとれていなければならない。
具体的には、サービス220Aが依拠するJava(登録商標)インタフェースクラスは参照210Aが依拠するJava(登録商標)インタフェースクラスと一致しているか、もしくはスーパーセットでなければならない。非特許文献1には、その他の条件も記載されている。
図2に示すように、結合は同一のアプリケーション120の中の部品同士だけでなく、アプリケーション120内の部品Aとアプリケーション120外の外部サービスCとの間でも行うことができる。その意味で、外部サービスCは部品A、部品Bと同様に取り扱うことができる。
図3の(A)に、図2に示す部品結合関係をSCA仕様に則って記述した部品結合定義122の一部を示す。図3に示す(A)では、説明のために行番号が付与されているが、本来はXML言語形式で記述されるものである。
2行目は部品Aについての記述であることを示す。3行目は部品Aの参照210Aを示し、その名前は「b」であること、それがターゲット(結合先)部品Bに結合されることを示す。4行目は参照210AのインタフェースがJava(登録商標)インタフェースクラスBBB(不図示)に従うことを示す。
以下同様に、6〜9行目は参照210Bが外部サービスCに結合されることを示す。尚8行目は結合がWebサービスを用いて行われることを示す。Webサービスでアクセスするのに必要となるURI(Uniform Resource Identifier)はuri属性で示される。
部品Aの参照210Bと外部サービスCのサービス220Bとの間のインタフェースの整合性は次にように確認する。まず、参照210Bのインタフェースについては、7行目でそれがJava(登録商標)インタフェースクラスCCCに従うことが分かる。サービス220Bが提供するインタフェースについては、それに対応するWSDLファイル(不図示)の内容を調べる。一般に、Webサービスではサービスのインタフェースの内容を示すWSDLファイルが提供される。従って、WSDLファイルを調べればサービス220Bのインタフェースの内容を知ることができる。それがJava(登録商標)インタフェースクラスCCCと互換性があるか否かを調べれば良い。
次に、第1の実施形態におけるアプリケーション120内の複数の部品及び複数の外部サービスの部品結合関係を、図4を用いて説明する。ここで、アプリケーション120は複数の部品121として部品Aから部品Lを含む。
図2では、参照とサービスとを明示していたが、図4ではそれらを省略し、任意の部品から別の部品への結合を単純な矢印で表現している。実線の矢印は実際に結合されていることを示し、破線の矢印は結合候補であることを示す。例えば、部品Aは現在、部品Bに結合されている。両者の間の結合インタフェースはインタフェースBBBである。部品Bの他にインタフェースBBBを満たす2つの部品(部品D、部品E)がアプリケーション120内に存在し、部品Aはそれらとも結合することができる。
また、現在結合されているものが部品であれば、結合候補も部品でなければならないということはない。即ち、部品Fは部品Gに結合されているが、そのインタフェースGGGを満たす外部サービスCを結合候補とすることもできる。
また、部品Hの場合、その結合が示すように、現在は外部サービスIに結合されているが、インタフェースIIIを満たす外部サービスJを結合候補とすることもできる。更に、部品Kは、現在部品Lに結合されているだけで、結合候補は持っていない例である。
ここで、図4に示す部品結合関係を表現した表形式のデータを、図5を用いて説明する。この表の内容となるデータはRAM105に格納される。図5において、部品列501は参照210を持つ部品121のリストである。参照列502は、対応する部品列501の部品121が備える参照210である。この例では、一つの部品につき一つの参照しか記述していないが、一つの部品につき複数の参照が存在しても良い。その場合には一つの部品につき複数の行が存在することになる。
使用部品列503は、対応する参照列502の参照が結合している先の部品である。尚、上述したように、外部サービスはアプリケーション120内の部品121と同様に取り扱えるので、使用部品列503に外部サービスが入っていても良い。
部品候補列504は、対応する参照列502の参照が結合する候補となる部品のリストである。また、部品候補列504の一つのセル内に複数の部品及び外部サービスが入っても良い。インタフェース列505は、対応する参照列502の参照が従うインタフェースである。
次に、図5に示す表データを生成する基となる部品結合定義122を図3に示す(B)を用いて説明する。図3に示す(A)を用いて説明した、SCA仕様で一般的な部品結合定義122とほぼ同じであるが、図3の(B)では更に、alternativeタグが追加されている。このタグを用いて結合候補部品が記述される。
例えば、5〜6行目では、参照aに対する結合候補として部品Dと部品Eが記述されている。12〜14行目では、参照fに対する結合候補として外部サービスCが挙げられている。これらの結合候補が部品候補列504に格納される。
ここで、第1の実施形態における部品結合装置100が部品置換を行う際の全体の概略処理を、図6を用いて説明する。最初に、部品結合装置100が外部装置(不図示)からアプリケーション120をインストールする(S601)。このインストールの操作は、ユーザが操作部108とディスプレイ107とを用いて行う。そして、操作部108からインストールが指示されると、CPU101がネットワーク150に接続されている外部装置からネットワークI/F103を介してアプリケーション120をダウンロードしてHDD102に格納する。
次に、ユーザが操作部108からアプリケーション120の開始を指示すると、CPU101がアプリケーション120内の部品結合定義122を読み出し、解析することで、アプリケーション120内の部品121の結合処理を行う(S602)。この結合処理を行った後、CPU101はアプリケーション120を実際に開始する。それに伴い、部品121のコードを実行する(S604)。
ここれ、ユーザが現在使用している部品121を置き換えたくなった時、部品121の置換処理を指示する。この指示に応じてCPU101は部品121の置換処理を実行する(S605)。部品121の置換処理を行った後には(S606)、ループの先頭に戻り(S603)、置き換えた部品を使用する。つまり、CPU101は置換した部品121のコードを実行する(S604)。
尚、この例では、一旦、部品121を実行した後、部品121の置換を行っているが、アプリケーション120をインストールした直後、即ち、実行する前に部品121の置換を行っても良い。また、図8では省略しているが、アプリケーション120を停止したり、アンインストールしたりすることも当然のことながら可能である。
次に、第1の実施形態における部品結合処理(S602)の詳細を、図7を用いて説明する。以下のシーケンスでは結合部111として機能するCPU101が部品結合処理の動作主体となる。
最初に、CPU101がHDD102に格納されたアプリケーション120内の部品結合定義122を読み出す(S701)。そして、CPU101は読み出した部品結合定義122を解釈する(S702)。即ち、CPU101は図3に示す(B)のようなXML言語で記述された部品結合定義122を解釈し、図5に示すような表形式のデータを生成し、RAM105に格納する。
部品結合定義122には、1以上の部品121についてのデータが存在する。そこで、ループ1の先頭(S703)から末尾(S709)までの処理を部品121毎に繰り返す。また、一つの部品121内には1以上の参照が存在し得る。ここで、SCAの仕様上は参照が存在しない部品121もあり得るが、本発明は部品結合を関心とするので、結合が不可能な参照がない部品121のことはここでは考えない。つまり、ループ2の先頭(S704)から末尾(S708)までの処理を参照毎に繰り返す。
次に、CPU101は処理の対象である参照の結合先部品が外部サービスか否かを判定する(S705)。尚、使用部品列503について、外部サービスは部品121と同様な取り扱いが可能であると説明したが、それは両者の区別がつかないという意味ではない。S702で部品結合定義122を解釈した時に、結合先部品がアプリケーション120内の部品121(内部部品)か、外部サービスかを示す情報がRAM105に格納される。
S705で、CPU101が外部サービスではなく、内部部品121と判定した場合、内部部品121用の代理オブジェクトのインスタンスを生成する(S706)。この代理オブジェクトのインスタンスとは、あるクラスのインタフェースを満たすように、動的に生成される代理クラスのインスタンスである。
Java(登録商標)言語では、あるインタフェースクラスに対して、代理クラスをプログラム中で生成することができる。その代表的な用途は、あるインタフェースクラスを実装した実装クラスのオブジェクトのメソッドをプログラムが呼び出すときに、代理クラスがその呼び出しをキャッチし、そのタイミングで何か別の処理を行うことである。代理クラスは間接的に呼び出しを行う機能を提供する。部品結合においては、その機能が有用であるため、第1の実施形態においては代理クラスを使用している。
代理クラスは、部品121の参照が従うインタフェース401に基づいて生成される。従って、S706で代理オブジェクトインスタンスを生成する直前に、代理クラスが生成されれば良い。但し、当然のことながら、図7のループ処理を実行中、同一の代理クラスから複数個の代理オブジェクトインスタンスを生成する場合は、その都度、代理クラスを生成する必要はなく、一度代理クラスを生成すれば良い。
また、上述のS705で、結合先部品が外部サービスと判定した場合、CPU101は外部サービス用の代理オブジェクトのインスタンスを生成する(S710)。ここで代理オブジェクトのインスタンスは結合先部品に関連する情報を含むことに注意すべきである。例えば、代理オブジェクトのインスタンス生成時には、結合先の内部部品121のクラス情報或いは外部サービスのアクセス用部品(詳細は後述する)のクラス情報がコンストラクタパラメータとして渡され、インスタンス内部に保存される。これらのクラス情報は結合先内部部品121或いは外部サービスアクセス用部品のインスタンスを生成するのに用いられる。
上述したS706又はS710の処理の後に、部品121の参照に対応するフィールドに代理オブジェクトインスタンスを設定する(S907)。ここでフィールドとは、部品121オブジェクトの中にある情報格納場所であり、Java(登録商標)言語で言うところのフィールドに相当する。フィールドに設定されたオブジェクトを通じて、他のクラスのメソッドを呼び出すことができる。他の言語でもこのフィールドに相当するものは存在する。
図8に、部品Aと部品Bとの結合の間に代理オブジェクトが介在する状態を示す。アプリケーション120側から見ると、アプリケーション120は代理オブジェクトBの存在を知らないので、部品Aが部品Bに直接結合されているように見える。
しかし、CPU101は結合の間に代理オブジェクトBを介在させる。即ち、S706又はS710で代理オブジェクトBのインスタンスを生成し、S707でそれを部品Aの参照210Aに対応するフィールド1203Aに設定する。設定動作を矢印1202Aで示している。この設定により部品Aと代理オブジェクトBが結合される。
代理オブジェクトBは、部品Aの参照210Aが従うインタフェースと整合性を持つ代理クラスから生成されたものである。従って、代理オブジェクトBのサービス220Cのインタフェースは、必然的に参照210Aのインタフェースと互換性を持ち、参照210Aとサービス220Cが結合される。つまり、部品Aは、参照210Aを通じて代理オブジェクトBのメソッドの呼び出しを確実に行うことができる。代理オブジェクトBと部品Bとの結合については後述する。
図7の説明に戻ると、S708でループ2の末尾に至り、S704のループ先頭に戻る。S709でループ1の末尾に至り、S703のループ先頭に戻る。以上で部品結合手順を終了する。
次に、第1の実施形態における部品実行処理(S604)の詳細を、図9を用いて説明する。以下のシーケンスでは実行部112として機能するCPU101が部品実行処理の動作主体となる。
最初に、アプリケーション120が、部品Aが提供するサービスを呼び出す(S901)。即ち、CPU101が、部品Aが提供するサービスの実装であるメソッドを呼び出す。図8に示すように、部品Aが部品Bを使用しているものとする。部品Aは部品Bを使用するために、参照210Aが従うインタフェースのメソッドを呼び出す(S902)。
参照210Aのインタフェースのメソッドは、フィールド1203Aを通じて代理オブジェクトBのメソッドを呼び出す(S903)。図7を用いて説明したように、部品結合処理でフィールド1203Aへの設定が済んでいるので、この処理が可能になる。
代理オブジェクトBのメソッドは、自オブジェクトが外部サービス用か否かを判定する(S904)。S706又はS710で代理オブジェクトインスタンスを作成した時に、内部部品121用或いは外部サービス用の何れの用途で作成したかの情報を記憶しておき、その情報に基づいて判定を行う。判定の結果、内部部品121用と判定した場合、代理オブジェクトBのメソッドは、代理オブジェクトインスタンス内に格納された結合先内部部品のクラス情報を用いて結合先内部部品のインスタンスを生成する(S905)。この処理では、結合先内部部品は部品Bであるので、部品Bのインスタンスが生成される。
また、S904で外部サービス用と判定した場合、代理オブジェクトBのメソッドは、結合先外部サービスアクセス用部品のインスタンスを生成する(S908)。このインスタンスの生成は、代理オブジェクトインスタンス内に格納された結合先外部サービスアクセス用部品のクラス情報を用いて行われる。例えば、図10に示すように、部品Aが外部サービスCに結合される場合、外部サービスCにアクセスするための外部サービスCアクセス用部品のインスタンスが生成される。
代理オブジェクトBのメソッドは、S905又はS908で生成されたインスタンスを、代理オブジェクトB内のフィールド1203Bに設定する(S906)。結合先部品が部品Bの場合の設定動作を図8の矢印1202Bに示す。結合先部品が外部サービスCの場合の設定動作を図13の矢印1202Cに示す。
最後に、代理オブジェクトBのメソッドは、フィールド1203Bに設定されたインスタンスのメソッドを呼び出す(S1007)。インスタンスが部品Bのものである場合は、このメソッド呼び出しは部品Bのメソッド呼び出しとなる。また、インスタンスが外部サービスCアクセス用部品のものである場合は、このメソッド呼び出しは外部サービスCアクセス用部品のメソッド呼び出しとなる。外部サービスCアクセス用部品のメソッド呼び出し(不図示)は、外部サービスCにアクセスするために必要な初期化を行い、その後に実際のサービスアクセス処理、例えばWebサービス通信処理を行う。
以上の処理をもって、部品Aから部品Bの呼び出し、又は部品Aから外部サービスCへのアクセスが完結する。以上が部品実行処理である。
次に、第1の実施形態における部品置換処理(S605)の詳細を、図11を用いて説明する。以下のシーケンスでは置換部110、出力部113、入力部114、インタフェース検証部115として機能するCPU101が部品置換処理の動作主体となる。
最初に、ユーザがPC130にインストールされているWebブラウザを用いて部品結合装置100が提供するWebページにアクセスする(S1101)。ここでアクセスは、HTTP(Hyper Text Transfer Protocol)プロトコルを用いて行われる。このとき、ユーザが要求したページは部品の置換機能を提供するページであり、Java(登録商標)サーブレット(出力サーブレット113)によって実現されている。ここでJava(登録商標)サーブレットは、Webページを出力する手法の一例であり、他の言語や方法を用いても差し支えない。また、Java(登録商標)サーブレットによるWebページ出力もHTTPプロトコルを用いて行われる。
PC130のWebブラウザから部品置換の要求を受けて、部品結合装置100の出力サーブレット113が部品置換のためのWebページをPC130に対して送信する(S1102)。ここで部品置換のためのWebページ(不図示)のページ内容には、現在の部品結合関係と、部品結合候補が記述される。ここでは、図4及び図5において、部品Aの参照aに結合される部品を置換しようとしてWebページが要求された場合を考える。この場合、部品Aの参照aには現在部品Bが結合されており、参照aに結合され得る候補部品として部品Dと部品Eが存在することを示すWebページが送信される。典型的には、結合候補部品は選択リストとして表現されているものとする。
PC130のユーザは、送信されたWebページを見て、部品Aの参照aに結合すべき部品を選択する。例えば、Webページの選択リストから部品Dを選択し、フォーム送信ボタンを押下する。これによって、選択部品を記述したデータがPC130から部品結合装置100に送られ、入力サーブレット114が部品の置換内容であるデータを受信する(S1103)。
尚、図1に示す例では、出力サーブレット113と入力サーブレット114とを異なるものとしているが、同一のサーブレットであっても良い。その場合、部品置換内容データの存在の有無により、出力として機能すべきか、入力として機能すべきかを判断し、判断結果に応じて機能すれば良い。
入力サーブレット114は、部品置換内容データを置換部110に渡す。置換部110は置換後の結合先が外部サービスか否かを判定する(S1104)。ここでは、部品置換内容データを見て、部品Aの参照aに新たに結合すべき部品が部品Dであることを知る。即ち、外部サービスではなく部品Dなので、置換部110は部品D用の代理オブジェクトインスタンスを生成する(S1112)。そして、置換部110は部品Aの参照aに対応するフィールドにその代理オブジェクトインスタンスを設定する(S1108)。
次に、部品置換内容を反映するように、部品結合関係を示すデータ(図5の表データ)を更新する(S1109)。具体的には、部品Aの参照aに対応する使用部品列503のセルの内容を、部品Bから部品Dに置き換える。また、部品候補列504のセルの内容のうち、部品Dを部品Bに置き換える。部品Eについてはそのままとする。これによって、部品Dが使用部品となると共に、今まで使用していた部品Bは結合候補となる。
続いて、部品置換内容を反映するように、部品結合定義122を更新する(S1110)。更新後の部品結合定義122の一例を図12に示す。図12と図3に示す(B)とを比較すると、3行目において、部品Aの参照aに対応する結合先部品が部品Bから部品Dに置き換えられている。また、5行目において、結合候補が部品Dから部品Bに置き換えられている。
また、部品結合定義122の更新内容は、HDD102に書き込まれる。これにより、部品結合装置100が再起動された後、部品結合処理が実行されたとき、置換後の内容で部品121が結合されるという効果がある。
最後に、置換部110が置換成功を出力サーブレット113に通知し、出力サーブレット113が置換成功通知のためのWebページをPC130に送信する(S1111)。これにより、PC130のWebブラウザ上には置換成功を示すWebページが表示され、ユーザは置換成功を知る。
また同様に、ユーザが部品Fの参照fに結合される部品を部品Gから外部サービスCに置き換える場合を、図11を用いて説明する。S1101〜S1103については上述の場合と同様である。ここで、部品Fの参照fに結合される部品として、外部サービスCをPC130のユーザは選択したとする。
置換部110は、ユーザが選択した部品121を見て置換後の結合先が外部サービスか否かを判定する(S1104)。この場合、外部サービスなのでS1105へ進み、インタフェース検証部115が、指定された部品である外部サービスCのインタフェース情報を取得する。具体的には、外部サービスCに対応するWSDLファイルの内容を調べる。WSDLファイルの位置は、部品結合定義122の中に記述されている外部サービスCに対するアクセスURI情報又はそのWSDLファイル位置情報(不図示)から知ることができる。
次に、インタフェース検証部115が、取得したインタフェース情報から外部サービスCのインタフェースが参照fのインタフェースに適合しているか否かを判断する(S1106)。ここで適合していると判断すれば、置換部110は外部サービスC用の代理オブジェクトインスタンスを生成する(S1107)。そして、置換部110は部品Fの参照fに対応するフィールドに、その代理オブジェクトインスタンスを設定する(S1108)。S1109以降は上述の通りである。
これに対して、S1106で適合していないと判断すれば、置換部110は置換エラーを出力サーブレット113に通知し、出力サーブレット113が置換エラー通知のためのWebページをPC130に送信する(S1113)。これにより、PC130のWebブラウザ上には置換エラーを示すWebページが表示され、ユーザは置換エラーを知ることができる。
図12に示すように、10〜14行目は、部品Fの参照fに結合される部品が部品Gから外部サービスCに置き換えられている。更に、処理は説明していないが、図12に示す17〜23行目は、部品Hの参照hに結合される部品が外部サービスIから外部サービスJに置き換えられている。
上述した処理では、PC130のWebブラウザに対して結合部品候補を出力し、PC130のユーザがその結合部品候補から結合部品を選択していたが、本発明はこれに限定されるものではない。
S1102で、部品置換用のWebページを送信するとき、自由入力用のテキストフィールドを含んだWebページを送信する。ここで、候補にはない外部サービスのURIをPC130のユーザがテキストフィールドに入力し、その入力内容を部品結合装置100に送ったとする。この場合には、S1103でそのURIが置換内容として入力される。尚、S1104以降の処理は上述の処理と同様であり、新たに指定された外部サービスが結合される。
このとき、S1109とS1110は上述の処理と少し異なる。新たに指定された外部サービスは使用部品として認識され、今まで使用していた部品121は結合部品の候補として認識される。従って、結合候補の部品が一つ増加する。それを示すように図5に示す表データと部品結合定義122が更新される。
第1の実施形態は、結合候補部品の出力と選択した部品の入力を、HTTPプロトコルを用いて行っており、そのため、出力部113は出力サーブレットであり、入力部114は入力サーブレットであった。
しかし、本発明はこれだけに限定されるものではない。結合候補部品の出力と選択した部品の入力は他の一般的な入出力デバイスを用いて行っても良い。例えば、ディスプレイ107と操作部108を用いて同様に結合候補部品の出力と選択した部品の入力が可能である。
[第2の実施形態]
次に、図面を参照しながら本発明に係る第2の実施形態を詳細に説明する。第1の実施形態では、出力部113と入力部114を用いて部品121を置換した。第2の実施形態では、出力部113と入力部114を用いずに部品121を置換する方法を説明する。
第2の実施形態における部品結合装置の構成は、第1の実施形態での図1に示す構成と同様であり、その説明は省略する。
ここで、第2の実施形態における部品結合処理を、図13を用いて説明する。図13において、S1301〜S1304はS701〜S704と同様である。
S1305で、結合部111として機能するCPU101が現在処理中の参照について使用部品と候補部品の情報を取得する。S1302において、図5に示す表データを取得済みなので、そこから取得することができる。
次に、結合部111はアプリケーション120のメタ情報を取得する(S1306)。ここでメタ情報とは、アプリケーション120に付随する情報であり、第2の実施形態では不図示であるが、アプリケーション120に内包されるものとする。例えば、Java(登録商標)アプリケーションの場合、jarファイルの中のマニフェストファイルがメタ情報に相当する。
メタ情報には様々な情報が格納されるが、ここでは優先使用部品情報が格納されているものとする。この優先使用部品情報とは、それが指す部品121が候補部品の中にあれば、使用部品として指定された部品121より優先して使用するものである。
次に、結合部111は、取得したアプリケーション120のメタ情報中の優先使用部品情報を見て現在処理中の参照に対応する使用部品をそのまま使用すべきか否かを判定する(S1307)。
現在処理中の参照に対応する使用部品が優先使用部品情報の中にあれば、そのまま使用すべきだと判断される。一方、現在処理中の参照に対応する候補部品が優先使用部品情報の中にあれば、現在の使用部品がその候補部品に置き換えられるべきだと判断される。
ここで使用部品をそのまま使用すべきだと判断された場合は、S1309以降の処理を実行する。S1309〜S1314はS705〜S710と同様である。
また、使用部品が置き換えられるべきだと判断された場合は、現在の使用部品を優先使用部品情報の中に存在する候補部品に置換する(S1308)。具体的には、S1109とS1110で説明したように、表データと部品結合定義122が更新される。そして、S1309以降の処理を実行する。
尚、第2の実施形態では、優先使用部品情報として候補部品情報が格納されている例を示したが、代わりに新たな外部サービスに関する情報が格納されていても良い。その場合、候補にない、新たな外部サービスを使用部品として入力した上述の場合と同様の処理を行う。
また、第2の実施形態では、アプリケーション120のメタ情報の中の優先使用部品情報を用いて部品の置換が行われたが、他の方法によるものでも良い。例えば、FlashROM106に優先使用部品情報が格納され、結合部111がそれを読出し、使用部品の置換の可否を判断しても良い。
優先使用部品情報そのものを使用しない実施形態も考えられる。例えば、部品結合装置100のスペック情報を結合部111が取得し、規定以上のスペックであれば、部品Dを、或いは規定以下のスペックであれば部品Bを使用するなどと判定しても良い。
実施形態によれば、アプリケーションの開発し直しが不要で、アプリケーションの実行時に部品の置換が可能になる。また、結合候補部品を選ぶだけで部品の置換が可能であり、アプリケーションの実行時に部品の置換が簡単に行える。
また、外部サービスを指定でき、インタフェースを検証できることでアプリケーションが意図していなかったサービスとも確実に連携できる。例えば、アプリケーションが完成した後に作成されたネットワークサービスとも連携できる。
[他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (11)

  1. アプリケーションを構成する部品と外部サービスとを結合する方法であって、
    前記外部サービスのインタフェースの情報を取得する取得工程と、
    他の部品と結合された処理対象の部品が他の部品のサービスを利用するためのインタフェースに、前記取得工程で取得した情報が示す外部サービスのインタフェースが適合するか判断する判断工程と、
    前記判断工程によって、前記処理対象の部品が前記他の部品を利用するためのインタフェースに、前記取得工程で取得した情報が示す外部サービスのインタフェースが適合すると判断された場合、前記処理対象の部品が前記外部サービスと結合されるように、前記処理対象の部品と前記他の部品との結合を変更する変更工程と、
    前記外部サービスと結合された部品を実行する実行工程と、
    を備えることを特徴とする方法。
  2. 前記判断工程では、前記処理対象の部品が利用可能な部品を示す設定に基づいて選択された外部サービスのインタフェースが前記インタフェースに適合するか判断する
    ことを特徴とする請求項1記載の方法。
  3. 前記判断工程では、前記処理対象の部品が利用可能な外部サービスを外部装置に出力し、前記外部装置で指定された外部サービスのインタフェースが前記インタフェースに適合するか判断する
    ことを特徴とする請求項1記載の方法。
  4. 前記変更工程では、前記処理対象の部品と前記他の部品との結合の変更として、前記処理対象の部品と結合された他の部品と、該処理対象の部品と結合する候補の部品とが記述された定義を、変更する
    ことを特徴とすることを特徴とする請求項1記載の方法。
  5. 前記変更工程では、前記処理対象の部品が前記外部サービスと結合され、前記他の部品が結合する候補の部品として記述されるように、前記処理対象の部品と前記他の部品との結合の定義を変更する
    ことを特徴とする請求項1記載の方法。
  6. 前記変更工程では、前記処理対象の部品と前記他の部品との結合の変更として、サービスコンポーネントアーキテクチャー(SCA)仕様に従って記述された、前記処理対象の部品と前記他の部品との結合の関係を示す結合定義を変更する
    ことを特徴とする請求項1記載の方法。
  7. 前記判断工程では、前記処理対象の部品が前記他の部品のサービスを利用するためのインタフェースのクラスと前記外部サービスのクラスが対応するか、判断する
    ことを特徴とする請求項1記載の方法。
  8. 前記判断工程では、優先使用部品として指定された前記外部サービスのインタフェースが、前記他の部品のサービスを利用するためのインタフェースに適合するか、判断する
    ことを特徴とする請求項1記載の方法。
  9. 前記処理対象の部品が他の部品のサービスを利用するためのインタフェースは、Javaインタフェースクラスに従う
    ことを特徴とする請求項1記載の方法。
  10. アプリケーションを構成する部品と外部サービスとを結合する部品結合装置の制御をコンピュータに機能させるためのプログラムであって、
    前記コンピュータに、
    前記外部サービスのインタフェースの情報を取得する取得手段と、
    他の部品と結合された処理対象の部品が他の部品のサービスを利用するためのインタフェースに、前記取得手段で取得した情報が示す外部サービスのインタフェースが適合するか判断する判断手段と、
    前記判断手段によって、前記処理対象の部品が前記他の部品を利用するためのインタフェースに、前記取得手段で取得した情報が示す外部サービスのインタフェースが適合すると判断された場合、前記処理対象の部品が前記外部サービスと結合されるように、前記処理対象の部品と前記他の部品との結合を変更する変更手段と、
    前記外部サービスと結合された部品を実行する実行手段と、
    して機能させることを特徴とするプログラム。
  11. アプリケーションを構成する部品と外部サービスとを結合する部品結合装置であって、
    前記外部サービスのインタフェースの情報を取得する取得手段と、
    他の部品と結合された処理対象の部品が他の部品のサービスを利用するためのインタフェースに、前記取得手段で取得した情報が示す外部サービスのインタフェースが適合するか判断する判断手段と、
    前記判断手段によって、前記処理対象の部品が前記他の部品を利用するためのインタフェースに、前記取得手段で取得した情報が示す外部サービスのインタフェースが適合すると判断された場合、前記処理対象の部品が前記外部サービスと結合されるように、前記処理対象の部品と前記他の部品との結合を変更する変更手段と、
    前記外部サービスと結合された部品を実行する実行手段と、
    を備えることを特徴とする部品結合装置。
JP2010106665A 2010-05-06 2010-05-06 部品結合装置及び部品結合方法 Active JP5669433B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010106665A JP5669433B2 (ja) 2010-05-06 2010-05-06 部品結合装置及び部品結合方法
US13/086,803 US9189223B2 (en) 2010-05-06 2011-04-14 Connecting method and apparatus for connecting a component included in an application with an external service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010106665A JP5669433B2 (ja) 2010-05-06 2010-05-06 部品結合装置及び部品結合方法

Publications (3)

Publication Number Publication Date
JP2011237883A JP2011237883A (ja) 2011-11-24
JP2011237883A5 JP2011237883A5 (ja) 2013-04-18
JP5669433B2 true JP5669433B2 (ja) 2015-02-12

Family

ID=44902828

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010106665A Active JP5669433B2 (ja) 2010-05-06 2010-05-06 部品結合装置及び部品結合方法

Country Status (2)

Country Link
US (1) US9189223B2 (ja)
JP (1) JP5669433B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011504767A (ja) 2007-11-26 2011-02-17 イースタン バージニア メディカル スクール マグナレトラクタシステムおよび方法
CL2009000279A1 (es) 2009-02-06 2009-08-14 Biotech Innovations Ltda Sistema de guia y traccion remota para cirugia mini-invasiva, que comprende: al menos una endopinza quirurgica y desprendible con medios de enganches y una porcion de material ferro magnaetico, una guia de introduccion de forma cilindrica, un mecanismo de desprendimiento, y al menos un medio de traccion remota con iman.
US8764769B1 (en) 2013-03-12 2014-07-01 Levita Magnetics International Corp. Grasper with magnetically-controlled positioning
US10010370B2 (en) 2013-03-14 2018-07-03 Levita Magnetics International Corp. Magnetic control assemblies and systems therefor
WO2015112645A1 (en) 2014-01-21 2015-07-30 Levita Magnetics International Corp. Laparoscopic graspers and systems therefor
WO2016168380A1 (en) 2015-04-13 2016-10-20 Levita Magnetics International Corp. Grasper with magnetically-controlled positioning
WO2016168377A1 (en) 2015-04-13 2016-10-20 Levita Magnetics International Corp. Retractor systems, devices, and methods for use
US11020137B2 (en) 2017-03-20 2021-06-01 Levita Magnetics International Corp. Directable traction systems and methods
US10635572B2 (en) * 2018-05-01 2020-04-28 Hitachi, Ltd. System and method for microservice validator
JP2021196912A (ja) * 2020-06-15 2021-12-27 ヤフー株式会社 実行装置、実行方法、および実行プログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10254701A (ja) * 1997-03-10 1998-09-25 Mitsubishi Electric Corp 分散オブジェクトシステム
JP2002366356A (ja) 2001-06-12 2002-12-20 Toshiba Corp ソフトウェア開発支援システム、その方法およびソフトウェア開発支援プログラム
JP4023803B2 (ja) 2003-05-30 2007-12-19 インターナショナル・ビジネス・マシーンズ・コーポレーション ウェブアプリケーション開発支援装置、データ処理方法及びプログラム
US7594217B2 (en) * 2004-12-07 2009-09-22 International Business Machines Corporation Matching client interfaces with service interfaces
US20080140760A1 (en) * 2005-03-21 2008-06-12 Conner Peter A Service-oriented architecture system and methods supporting dynamic service provider versioning
JP4444867B2 (ja) * 2005-03-31 2010-03-31 富士通株式会社 業務プロセスモデル作成支援システムおよびプログラム,ならびに業務プロセスモデル作成処理方法
US20080140857A1 (en) * 2006-03-21 2008-06-12 Conner Peter A Service-oriented architecture and methods for direct invocation of services utilizing a service requestor invocation framework
JP2008108155A (ja) 2006-10-27 2008-05-08 Hitachi Ltd 稼働実績情報に基づくモジュール切替システム
JP4812680B2 (ja) * 2007-04-11 2011-11-09 三菱電機株式会社 アクセス制御装置
US8464212B2 (en) 2007-07-27 2013-06-11 Canon Kabushiki Kaisha Method, apparatus and storage medium for customizing application
US8656354B2 (en) * 2008-12-11 2014-02-18 Infosys Limited Compound versioning and identification scheme for composite application development
CN102455918B (zh) * 2010-10-26 2014-04-30 鸿富锦精密工业(深圳)有限公司 通信装置及其固件补丁方法
US8898285B2 (en) * 2010-11-01 2014-11-25 Architecture Technology Corporation Service oriented architecture version and dependency control

Also Published As

Publication number Publication date
US20110276941A1 (en) 2011-11-10
JP2011237883A (ja) 2011-11-24
US9189223B2 (en) 2015-11-17

Similar Documents

Publication Publication Date Title
JP5669433B2 (ja) 部品結合装置及び部品結合方法
US20120005603A1 (en) Application development supporting apparatus, program, and recording medium
US20130198333A1 (en) Method and device for recording and reproducing web operation
JP5804749B2 (ja) データ処理装置、データ処理方法およびプログラム
JP2013131141A (ja) プロジェクタ、プロジェクタの制御方法及びプロジェクタの制御プログラム
US7836449B2 (en) Extensible infrastructure for task display and launch
JP2010027007A (ja) 処理装置、要求装置、及びそれらの処理方法
JP2016066355A (ja) Webアプリケーション生成システム、Webアプリケーション生成システムの制御方法、Webアプリケーション生成システムのプログラム、Webアプリケーション生成装置、Webアプリケーション生成装置の制御方法、およびWebアプリケーション生成装置のプログラム
KR101482149B1 (ko) 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체
US20190213003A1 (en) Method, system and software application for developing mobile applications
JP2010262548A (ja) データ提供方法およびサーバ
CN113748409B (zh) 信息处理系统、信息处理装置、信息处理方法及程序
WO2013088534A1 (ja) クライアントからネットワークを介して携帯端末にアクセスするためのサーバ、方法、及び、コンピュータを該サーバとして機能させるプログラム
JP5058219B2 (ja) シナリオ作成方法、その装置、プログラム及び記録媒体
WO2015097729A1 (ja) 情報処理装置、ウェブサーバ及びコンピュータプログラム
CN102455876A (zh) 产品信息管理和自动化
KR101460515B1 (ko) 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체
EP4229527A1 (en) Page loading method and display apparatus
JP6281264B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP2011059751A (ja) プログラム生成システムおよびプログラム生成装置およびプログラム生成方法およびプログラムならびに記録媒体
Yaici et al. Runtime middleware for the generation of adaptive user interfaces on resource-constrained devices
JP2011242941A (ja) 部品結合装置及びその処理方法
JP2018205889A (ja) 画像形成装置、デバッグ装置、読み込み制御方法、及びプログラム
JP2008310570A (ja) 電文解析方法、電文解析装置、及び電文解析プログラム
JP2018205888A (ja) 画像形成装置及びその制御方法、並びにプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130305

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130305

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140417

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141216

R151 Written notification of patent or utility model registration

Ref document number: 5669433

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151