JP5847734B2 - 仮想化のための拡張ポイントの宣言的登録 - Google Patents

仮想化のための拡張ポイントの宣言的登録 Download PDF

Info

Publication number
JP5847734B2
JP5847734B2 JP2012552121A JP2012552121A JP5847734B2 JP 5847734 B2 JP5847734 B2 JP 5847734B2 JP 2012552121 A JP2012552121 A JP 2012552121A JP 2012552121 A JP2012552121 A JP 2012552121A JP 5847734 B2 JP5847734 B2 JP 5847734B2
Authority
JP
Japan
Prior art keywords
application
extension
point
extension point
operating system
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
JP2012552121A
Other languages
English (en)
Other versions
JP2013519168A5 (ja
JP2013519168A (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.)
Microsoft Corp
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Microsoft Technology Licensing LLC
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 Microsoft Corp, Microsoft Technology Licensing LLC filed Critical Microsoft Corp
Publication of JP2013519168A publication Critical patent/JP2013519168A/ja
Publication of JP2013519168A5 publication Critical patent/JP2013519168A5/ja
Application granted granted Critical
Publication of JP5847734B2 publication Critical patent/JP5847734B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

仮想化とは、物理ハードウェアにより仮想マシンを実行し、次いでオペレーティング・システムおよび/またはアプリケーションをその仮想マシン上で仮想的に実行することをいう。仮想マシンは、ハードウェア機能の最小の共通の特徴を表現することができ、または、オペレーティング・システムおよびアプリケーションを簡単に準備できる公知な構成を表現することができる。多くのデータ・センタでは仮想化を利用して、保守サイクルに対してリソース要求が増大したときに仮想マシンを容易に新たな物理ハードウェアへ移動させ、物理サーバの負荷を平準化することができる。仮想化は多くの状況で有用であるが、多くの仮想マシンが同じリソース(例えば、CPU(central processing unit)、メモリ、およびNIC(network interface card))に対して競合するために生ずる制約をもたらす可能性もある。
アプリケーション仮想化により、1つのアプリケーションのレベルで仮想マシンが提供される。例えば、ホストのオペレーティング・システムがネイティブに幾つかのアプリケーションを実行し、他のアプリケーションを実行するための仮想環境を提供することができる。これにより、オペレーティング・システムが、例えば、様々なオペレーティング・システム向けに設計されたアプリケーションを実行することができる。アプリケーション仮想化により、ユーザにとっては、ホストのオペレーティング・システムでネイティブに実行されているアプリケーションと仮想マシンで実行されているアプリケーションの差異が不明瞭になる。例えば、何れのアプリケーションのタイプも、オペレーティング・システムのシェルが提供するタスクバーまたはメニューの中で隣り合って現れることがある。例えば、マイクロソフトのApplication Virtualization(App−V)は、アプリケーションを、インストールされず他のアプリケーションと衝突しない中央管理型の仮想サービスに変換する。物理的な環境では、全てのアプリケーションは様々なサービスに関してそのOS(operating system)に依存する。当該サービスには、メモリ割当て、デバイス・ドライバが含まれるが、他にも多くのものがある。アプリケーションとそのOSの間の非互換性は、サーバ仮想化またはプレゼンテーション仮想化の何れかにより対処できるが、同じOSインスタンスにインストールされた2つのアプリケーションの間の非互換性については、アプリケーション仮想化により解決される。
オペレーティング・システムは、顧客のニーズに適合するためにそれ自体の振舞いを修正する必要がある。例えば、ユーザがマイクロソフトのWordをインストールすることがあり、これによりファイル・タイプ関連付けが登録される。このファイル・タイプ関連付けにより、オペレーティング・システムがどのように振る舞うかが変更される。Wordのファイル・タイプ関連付けを有するドキュメントをユーザがクリックすると、オペレーティング・システムはマイクロソフトのWordを起動する。ファイル・タイプ関連付けは、オペレーティング・システムの拡張ポイントの具体的な例である。仮想化の一部分は分離であり、これは、或るアプリケーションには別のアプリケーションが見えず、或るアプリケーションの動作がオペレーティング・システムに影響を及ぼさないかまたはプロキシを介してのみオペレーティング・システムに影響を及ぼすことを意味する。ファイル・タイプ関連付けのケースでは、アプリケーションのためにファイル・タイプ関連付けをプロキシとして検出し登録するマイクロソフトのApp−Vクライアントが、プロキシの1つの例である。このように、マイクロソフトのApp−Vはオペレーティング・システムの修正を認識し、仮想化されたアプリケーションが削除されたときは当該修正を元に戻すことができる。
不都合なことに、オペレーティング・システムの拡張ポイントごとにカスタム・プロキシを構築することは現実的でなく拡張可能ではない。マイクロソフトのWINDOWSには3000を超える拡張ポイントがあり、それらの拡張ポイントごとにプロキシを書くことは事実上不可能である。さらに、新たなオペレーティング・システムの各々をサポートすることに伴い、拡張ポイントをさらに検出し管理してアプリケーション仮想化を期待通りに動作させ続ける必要がある。拡張ポイントの数が絶え間なく拡大すると、開発とテストの工数が浪費され、他の新機能に費やす工数が奪われることとなる。
本明細書では、オペレーティング・システムが提供するリパース・ポイントを用いて拡張ポイントの登録を最小限にする、拡張ポイント仮想化システムを説明する。リパース・ポイントはアプリケーションの分離を保ちつつ、拡張ポイントごとにカスタム拡張ポイントのプロキシを書くという拡張性の問題を排除する。オペレーティング・システムをアプリケーション・リソースの典型的な位置から当該アプリケーション・リソースの仮想化された安全な位置にリダイレクトすることによって、多数の拡張ポイントを扱うことができる。拡張ポイント仮想化システムは、リパース・ポイントを使用して、拡張ポイントごとのカスタム・プロキシの必要性を排除する。それだけでなく、本システムは、アプリケーション仮想化リパース・ポイントを包括的に扱う単一のファイル・システム・フィルタを利用し、リダイレクションを要する拡張ポイントに対するリパース・ポイント・データを格納することができる。このように、本システムは、アプリケーション仮想化システムが、単にリパース・ポイントで扱える新たな位置を登録し、次いで登録した位置を包括的に扱えるようにすることで、新たな拡張ポイントを扱う処理を簡潔にする。
本要約は、選択した概念を簡潔な形で導入するために与えたものである。その概念は、下記の発明を実施するための形態においてさらに説明する。本要約は、クレーム主題の主要な特徴または本質的な特徴を特定しようとするものではなく、クレーム主題の範囲を限定するために使用しようとするものでもない。
1実施形態における、拡張ポイント仮想化システムのコンポーネントを示すブロック図である。 1実施形態における、拡張ポイントを識別し、識別した拡張ポイントに対するアプリケーション・リダイレクションを構成するための、拡張ポイント仮想化システムの処理を示す流れ図である。 1実施形態における、拡張ポイントを介してリソースにアクセスする要求に応答するための仮想化システムの処理を示す流れ図である。
本明細書では、オペレーティング・システムが提供するリパース・ポイントを用いて拡張ポイントの登録を最小限にする、拡張ポイント仮想化システムを説明する。リパース・ポイントはアプリケーションの分離を保ちつつ、拡張ポイントごとにカスタム拡張ポイントのプロキシを書くという拡張性の問題を排除する。オペレーティング・システムをアプリケーション・リソースの典型的な位置から当該アプリケーション・リソースの仮想化された安全な位置にリダイレクトすることによって、多数の拡張ポイントを扱うことができる。例えば、以前にファイルをオペレーティング・システムのディレクトリにインストールしたアプリケーションをリダイレクトして、これらのファイルを当該アプリケーションのディレクトリにインストールすることができる(が、アプリケーション仮想化により、アプリケーションはファイルが依然としてオペレーティング・システムのディレクトリに存在すると勘違いする)。
ファイルまたはディレクトリはリパース・ポイントを含むことができる。リパース・ポイントは、ユーザ定義型のデータ集合である。このデータのフォーマットは、当該データとファイル・システム・フィルタを格納するアプリケーションにより認識される。アプリケーション開発者は当該フィルタをインストールしてデータを解釈しファイルを処理する。アプリケーションがリパース・ポイントを設定すると、アプリケーションはこのデータとリパース・タグを格納する。リパース・タグは、アプリケーションが格納しているデータを一意に識別するものである。ファイル・システムがファイルをリパース・ポイントで開くと、当該ファイル・システムは、リパース・タグで識別されたデータ・フォーマットに関連付けられたファイル・システム・フィルタを見つけようとする。ファイル・システム・フィルタが見つかった場合は、当該フィルタはリパース・データが指示するようにファイルを処理する。ファイル・システム・フィルタが見つからなかった場合は、ファイル・オープン動作が失敗する。例えば、リパース・ポイントは、NTFSファイル・システム・リンクとマイクロソフトのRSS(Remote Storage Server)を実装するために使用される。RSSは、管理者が定義した1組のルールを使用して、あまり使用されていないファイルを長期記憶、例えばテープまたは光媒体に移動する。RSSはリパース・ポイントを使用して、ファイル・システム内のファイルに関する情報を格納する。この情報は、リパース・ポイントを含むスタブ・ファイルに格納される。当該リパース・ポイントのデータは、実際のファイルが存在する装置をポイントする。ファイル・システム・フィルタはこの情報を使用してファイルを取り出すことができる。リパース・ポイントはまた、マウントされたフォルダを実装するために使用される。
拡張ポイント仮想化システムは、リパース・ポイントを使用して、拡張ポイントごとのカスタム・プロキシの必要性を排除する。それだけでなく、本システムは、アプリケーション仮想化リパース・ポイントを包括的に扱う単一のファイル・システム・フィルタを利用し、リダイレクションを要する拡張ポイントに対するリパース・ポイント・データを格納することができる。例えば、システムは、リパース・ポイントをファイルまたはレジストリ・キーと、そのファイルまたはレジストリ・キーの具体的な拡張の目的とは無関係に、関連付けることができる。このように、本システムは、アプリケーション仮想化システムが、単にリパース・ポイントで扱える新たな位置を登録し、次いで登録した位置を包括的に扱えるようにすることで、新たな拡張ポイントを扱う処理を簡潔にする。
アプリケーション仮想化では、アプリケーションに関するファイルとレジストリ・データを収集してこれをパッケージと呼ばれる記憶域に置いて、ファイルとレジストリ・エントリが、実際にはそうではないけれども、ローカルにインストールされているとアプリケーションに思わせる。以前の拡張ポイント登録方法では、拡張ポイントごとにプロキシを生成していた。このプロキシでは、パッケージがシステム上に存在することを検出し、拡張ポイントをオペレーティング・システムに登録するのに十分なメタデータを抽出していたはずである。このプロキシは、拡張ポイントが起動されたときに起動され、正しいパッケージを発見し、作業をそのパッケージに委譲したはずである。対照的に、本明細書で説明する拡張ポイント仮想化システムでは、オペレーティング・システムの機能、即ち、リパース・ポイント(または、UNIXではシンボリック・リンク)を利用して拡張ポイントの登録を最小限にする。リパース・ポイントとは、特定のパスがオペレーティング・システムのAPI(application programming interface)で使用されるときにオペレーティング・システムが代替のデータ・パスを見るべきであることをオペレーティング・システムに伝える、オペレーティング・システムの機能である。
拡張ポイント仮想化システムにより、仮想パッケージ内の位置へのリダイレクションが行われる。これを行うことで、システムは、アプリケーションをオペレーティング・システムから分離し続けつつ、プロキシに依らずに新たな拡張ポイントを追加できる方法を提供する。“.txt”ファイル・タイプ関連付けの例を挙げ、この技法が他の種類の拡張ポイントと連動することを示す。ファイル・タイプ関連付けはレジストリ・キーを有し、当該レジストリ・キーにより、オペレーティング・システムは、ユーザがオペレーティング・システムのシェル(例えば、マイクロソフトのWINDOWSのエクスプローラ)からこのファイル・タイプ関連付けをクリックしたときに実行可能ファイルへのパスを指定するコマンドラインを実行させる。デフォルトでは、レジストリ・キーのデータは”HKEY_CLASSES_ROOT\txtfile\shell\open\command=%SystemRoot%\system32\NOTEPAD.EXE%1“であり、これによりオペレーティング・システムがメモ帳を実行してファイルを開く。拡張ポイント仮想化システムは、”.txt”ファイル・タイプ関連付けを登録したパッケージがシステムに存在することを検出し、リパース・ポイントをレジストリに配置して、シェルが、HKEY_CLASSES_ROOT\txtfile\shell\open\commandを開いたときに、それがHKCR\[APP GUID]\txtfile\shell\open\commandにリパースされるようにする。この場合、[APP GUID]はパッケージ固有のGUID(globally unique identifier)である。
本技法を、他の拡張ポイント、ならびに1つのレジストリ・エントリではなく複数の位置の複数のレジストリ・エントリを含む拡張ポイント、ならびにファイルおよびディレクトリに一般化することができる。拡張ポイント仮想化システムは(データである)パッケージ、パッケージのために登録を行うアプリケーション仮想化環境(例えば、マイクロソフトのApp−Vクライアント)、および1組の拡張ポイントと連動する。拡張ポイントを、宣言的なXML(extensible markup language)構文で表現することができ、それにより、アプリケーション仮想化環境は、環境またはパッケージに修正を加える必要なく新たな拡張ポイントを容易に追加することができる。
図1は、1実施形態における、拡張ポイント仮想化システムのコンポーネントを示すブロック図である。システム100は、拡張ポイント識別コンポーネント110、拡張ポイント・データ記憶120、アプリケーション仮想化環境130、拡張ポイント登録コンポーネント140、リパース・ポイント生成コンポーネント150、拡張ポイント・アクセス・コンポーネント160、および拡張ポイント・リダイレクション・コンポーネント170を備える。これらのコンポーネントの各々を本明細書でさらに詳細に説明する。
拡張ポイント識別コンポーネント110は拡張ポイントを識別する。当該拡張ポイントを介して、サード・パーティ製のプログラム・コードによりオペレーティング・システムまたはアプリケーションを拡張することができる。例えば、当該コンポーネントがレジストリ・キーを検出し、当該レジストリ・キーを介して、アプリケーションによって起動されるアプリケーションのアドインを登録することができる。幾つかの場合、拡張ポイントは、プロセス監視により手動で識別されるか、または、アプリケーションが実行されたときにアプリケーションの振舞いを見るために管理者が使用する他のツールにより手動で識別される。例えば、管理者はレジストリ監視位置を用いて、アプリケーションまたはオペレーティング・システムが読み出すレジストリ位置を決定することができる。
拡張ポイント・データ記憶120は、識別された拡張ポイントを宣言的なフォーマットで格納する。拡張ポイント・データ記憶120は、ファイル(例えば、XMLファイル)、データベース、ネットワーク・ベースのデータ記憶、クラウドベースの記憶サービス、または、識別された拡張ポイントのリストを取り出せる他の記憶媒体を備えてもよい。管理者またはアプリケーション環境の作成者が、時間の経過とともに新たな拡張ポイントを発見され次第追加してもよく、それにより、以前に配置した仮想化アプリケーションでさえも、アプリケーション環境が以前に検出しなかったオペレーティング・システムへの修正から保護することで、オペレーティング・システムの分離が拡大することによる利益を得ることができる。さらに、独立したソフトウェア・ベンダ(ISV)がデータ記憶120に追加するための独自のアプリケーション拡張ポイントのリストを提供し、自己を修正したアプリケーションをより簡単に仮想化し分離できるようにしてもよい。
アプリケーション仮想化環境130は、仮想アプリケーションとホストのオペレーティング・システムの間の間接レベルを提供する。例えばアプリケーションがホストのオペレーティング・システム上で実行するように設計されているときは、ラッパが非常に薄くアプリケーションをほぼネイティブに実行可能としてもよい。代替または追加として、ラッパがAPIを提供し、他のオペレーティング・システムまたはオペレーティング・システムのバージョン向けに設計されたアプリケーションが期待する他の制約を満足してもよい。このように、アプリケーション仮想化環境130は、アプリケーションがホストのオペレーティング・システムの利用可能リソースを用いて設計された環境を、仮想アプリケーションに提供する。
拡張ポイント登録コンポーネント140は、識別された拡張ポイントを参照する仮想アプリケーション・パッケージのインストールを検出する。コンポーネント140は拡張ポイント・データ記憶120にアクセスして、識別された拡張ポイントのリストをロードし、当該リストをユーザが起動したパッケージと比較する。これらがマッチすれば、コンポーネント140はリパース・ポイント生成コンポーネント150を起動して、アプリケーション・パッケージ内の拡張ポイント・データを検索するようにアプリケーションをリダイレクトするリパース・ポイントを生成する。
リパース・ポイント生成コンポーネント150は、識別された拡張ポイントと、識別された拡張ポイントを参照する検出された仮想アプリケーション・パッケージとに対して、リパース・ポイントを生成する。例えば、拡張ポイント登録コンポーネント140がファイル・タイプ関連付けを登録するパッケージを検出した場合、リパース・ポイント生成コンポーネント150は、当該ファイル・タイプ関連付けの中のレジストリ・エントリに対するリパース・ポイントを生成する。当該レジストリ・エントリは、当該ファイル・タイプ関連付けが起動されたときにアプリケーションを起動することを記述するものである。生成されたリパース・ポイントは当該レジストリ・エントリを、検出した仮想アプリケーション・パッケージ内の位置にリダイレクトする。
拡張ポイント・アクセス・コンポーネント160は、生成されたリパース・ポイントへのアクセスを検出し、拡張ポイント・リダイレクション・コンポーネント170を起動して、オペレーティング・システムに、検出された仮想アプリケーション・パッケージに関連付けられた位置で指定データを検索させる。別々のコンポーネントとして説明しているが、拡張ポイント仮想化システム100が、デフォルトのオペレーティング・システムの振舞いを利用して、オペレーティング・システムが拡張ポイント仮想化システム100に通知することなくリダイレクションを実施できるようにしてもよい。しかし、オペレーティング・システムにより、リパース・ポイントがアクセスされたときに起動されるファイル・システム・フィルタを登録可能にし、幾つかの実施形態では、システムがこの機能を利用してアクセスを検出しカスタム処理を実行してもよい。これは、例えば、アプリケーション要求がリダイレクトされているデバッグおよび監査において有用であろう。
拡張ポイント・リダイレクション・コンポーネント170は、オペレーティング・システムまたはアプリケーションに、検出された仮想アプリケーション・パッケージと関連付けられた位置でリパース・ポイントが参照する指定データを検索させる。前述したように、拡張ポイント仮想化システム100はオペレーティング・システムのデフォルトの振舞いを利用して、拡張ポイント仮想化システム100を起動せずにリダイレクションをリパース・ポイントの機能として実行してもよい。
拡張ポイント仮想化システムが実装されたコンピューティング装置が、中央演算装置、メモリ、入力装置(例えば、キーボードおよびポインティング・デバイス)、出力装置(例えば、表示装置)、および記憶装置(例えば、ディスク・ドライブまたは他の不揮発性記憶媒体)を備えてもよい。メモリおよび記憶装置は、システムを実装または実現するコンピュータ実行可能命令(例えば、ソフトウェア)でエンコードできるコンピュータ読取可能記憶媒体である。さらに、データ構造およびメッセージ構造を、通信リンク上の信号のようなデータ伝送媒体を介して格納または送信してもよい。インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、拠点間ダイヤルアップ接続、携帯電話ネットワーク、等の様々な通信リンクを使用してもよい。
システムの諸実施形態を様々な動作環境で実装してもよい。当該動作環境には、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルド装置またはラップトップ装置、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、プログラム可能消費家電、デジタル・カメラ、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ、上述のシステムもしくは装置の何れかを含む分散コンピューティング環境、等が含まれる。コンピュータ・システムが、携帯電話、携帯情報端末、スマート・フォン、パーソナル・コンピュータ、プログラム可能消費家電、デジタル・カメラ、等であってもよい。
システムを、プログラム・モジュールのような、1つもしくは複数のコンピュータまたは他の装置によって実行されるコンピュータ実行可能命令の一般的なコンテキストで説明してもよい。一般に、プログラム・モジュールは、特定のタスクを実施するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。一般に、プログラム・モジュールの機能を様々な実施形態において必要に応じて組み合わせるかまたは分散させてもよい。
図2は、1実施形態における、拡張ポイントを識別し、識別した拡張ポイントに対するアプリケーション・リダイレクションを構成するための拡張ポイント仮想化システムの処理を示す流れ図である。ブロック210から開始して、システムが拡張ポイントを識別する。例えば、システムが拡張ポイントのリストをオペレーティング・システムのベンダまたはISVから受け取って、拡張ポイントのデータ記憶に追加してもよい。代替または追加として、アプリケーション仮想化を利用する仮想化システムの開発者またはシステム管理者が、例えばプロセス監視ツールにより、拡張ポイントを手動で識別してもよい。
続いてブロック220で、システムが、識別した拡張ポイントを拡張ポイント・データ記憶に追加する。拡張ポイント・デーダ記憶が、XMLファイルのような、既知の拡張ポイントと関連するリソース・パスとを列挙する宣言的なフォーマットを備えてもよい。システムがアプリケーション・パッケージ内に拡張ポイント・パスへの参照を検出すると、システムは本明細書で説明したステップを実施して、オペレーティング・システムのアプリケーション修正を分離しリダイレクトする。続いて決定ブロック230で、識別すべき拡張ポイントがまだある場合は、システムはブロック210にループし、そうでなければシステムはブロック240に続く。本流れ図では説明を簡単にするために示したが、以上のステップを、下記のステップと別々に実施しても、新たな拡張ポイントが発見される度にその都度実施してもよいことに留意されたい。同様に、下記のステップを多数のアプリケーションに対して、システムが仮想化アプリケーションを実行する度に繰返し行ってもよい。
続いてブロック240で、システムは、仮想アプリケーション・パッケージを指定するアプリケーション実行要求を受け取る。一般に、これはユーザが、管理者が仮想化するよう構成したアプリケーションをオペレーティング・システムのシェルから実行したときに行われる。アプリケーションは一般にはユーザのコンピュータにインストールさえもされていないが、ユーザのコンピュータは、中央に(例えば、ネットワーク上に)格納された仮想アプリケーション・パッケージを発見して実行するのに十分な参照を有する。仮想アプリケーション・パッケージが起動されると、システムは本明細書で説明したアプリケーション仮想化環境をクライアントとして実行してアプリケーション仮想化プロセスを誘導する。
続いてブロック250で、システムは、仮想アプリケーション・パッケージが参照する1つまたは複数のパスと拡張ポイント・データ記憶内のパスとを比較することによって、1つまたは複数のアプリケーション拡張ポイント参照を指定の仮想アプリケーション・パッケージ内で識別する。例えば、アプリケーションが、レジストリ・ベースの拡張ポイントを介してファイル・タイプ関連付けまたはワード・プロセッサ・アプリケーションのアドインを登録してもよい。レジストリの位置が、拡張ポイント・データ記憶が記憶するリスト上にある場合は、システムはアプリケーション・パッケージが拡張ポイントを参照すると判定する。続いて決定ブロック260で、システムが拡張ポイシト参照を検出した場合は、システムはブロック270に進み、そうでなければシステムは終了する。
続いて決定ブロック270で、システムは識別したアプリケーション拡張ポイント参照を指定の仮想アプリケーション・パッケージ内の分離された位置にリダイレクトするためのリパース・ポイントを生成する。当該リパース・ポイントにより、拡張ポイントにアクセスしてアプリケーション・パッケージ内のデータを検索させ、アプリケーション・パッケージがオペレーティング・システムを直接修正することを防ぐ。続いて決定ブロック280で、システムがアプリケーション拡張ポイント参照をさらに検出した場合、システムはブロック270にループして残りの参照ごとにリパース・ポイントを生成し、そうでない場合は、システムは終了する。ブロック280の後、これらのステップが完了する。
図3は、1実施形態における、拡張ポイントを介してリソースにアクセスする要求に応答するための仮想化システムの処理を示す流れ図である。ブロック310から開始して、システムはリソース・パスを参照するリソース・アクセス要求を受け取る。例えば、アプリケーションが、オペレーティング・システムが提供するファイル・オープンのAPIを呼び出して、アプリケーションが開くことを要求するファイルへのパスを指定してもよい。代替または追加として、オペレーティング・システムのシェルのような他のアプリケーションが、アプリケーションがそれを通じてオペレーティング・システムまたはアプリケーションの機能を拡張できるリソース位置にアクセスを試みてもよい。
続いてブロック320で、拡張ポイント仮想化システムが、パスが参照するリソースが関連するリパース・ポイントを含むかどうかを判定する。例えば、オペレーティング・システムが、リパース・ポイントのデータが格納されているリソースに関連付けられたデータを検索してもよい。続いて決定ブロック330で、システムがリパース・ポイントを検出した場合、システムはブロック340に進み、そうでない場合システムは終了する。続いてブロック340で、拡張ポイント仮想化システムが、参照パスに関連付けられた仮想アプリケーション・パッケージを識別する。例えば、リパース・ポイントが、アプリケーション・パッケージを識別するアプリケーションのGUIDを含んでもよい。システムが、アプリケーションのGUIDを用いてアプリケーション・パッケージを公知の位置に格納するといった、アプリケーションのGUIDをアプリケーション・パッケージにマップする共通メソッドを含んでもよい。
続いてブロック350で、拡張ポイント仮想化システムはリソース要求を識別した仮想アプリケーション・パッケージにリダイレクトする。例えば、オペレーティング・システムが、リパース・ポイントを検出した後に当該リソース要求を登録したファイル・システム・ドライバに転送してもよく、または、例えば当該要求を指定の位置にリダイレクトすることによって当該要求をデフォルトのやり方で処理してもよい。例として、システムが、受け取った要求に含まれるファイル・パスを、仮想アプリケーション・パッケージに関連付けられたファイル・パスで置き換えてもよい。続いてブロック360で、拡張ポイント仮想化システムが、要求されたリソースへのアクセスを提供することによって、リダイレクトされたリソース要求に応答する。例えば、オペレーティング・システムが当該要求に応答して、識別されたファイルを開き、当該ファイルのデータを提供してもよい。アプリケーションは、アプリケーションがデータを通常格納する場所にデータがあたかも存在するかのように振舞い、仮想化システムが、データが実際に格納されている場所を指すように要求を修正する。リパース・ポイントが行ったリダイレクションのため、アプリケーション仮想化は、リソース要求がアプリケーションから来たか、別のプロセスから来たか、または他のソースから来たかに関わらず正しく動作する。ブロック360の後、これらのステップが完了する。
幾つかの実施形態では、拡張ポイント仮想化システムがアプリケーション・データをパッケージ・ファイルのフォーマットで格納する。パッケージ・ファイルは、複数の他のファイルおよび複数の種類のデータを格納できる任意のファイルフォーマットであることができる。例えば、一般的な既存のパッケージ・ファイルフォーマットには、ZIP、CAB、RAR、SFT、および他の同様なフォーマットがある。パッケージ・ファイルはしばしば、複数のファイルを1つのアーカイブ・フォーマットに格納可能とすることに加えて、ファイル・サイズを削減するための圧縮や他の機能(例えば、暗号化)を含む。仮想化アプリケーション向けのパッケージ・ファイルには、レジストリ・ハイブ、ファイル、データベース、および仮想アプリケーションが用いる他種のデータを含めてもよい。オペレーティング・システムが、ディレクトリ、ボリューム、ディスク・ドライブ、または他のリソースのようなパッケージ・ファイルをマウントして、仮想アプリケーションが、ファイルおよび他のリソースを操作するための共通のオペレーティング・システムAPIを用いてパッケージ・ファイル内に格納されたアイテムを参照できるようにしてもよい。幾つかの実施形態では、拡張ポイント仮想化システムが、仮想アプリケーションのデータを当該仮想アプリケーションの実行可能ファイルに含めてもよく、それにより、当該アプリケーションを、自己解凍式データを伴う単一の実行ファイルとして分散させることができる。本明細書では幾つかの例を説明したが、拡張ポイント仮想化システムはアプリケーションのデータを格納するどの特定の方法にも限定されず、説明したもの以外の記憶機構を使用して同様な結果を実現することができる。
以上から、拡張ポイント仮想化システムの特定の実施形態を本明細書では例示の目的で説明したが、本発明の趣旨と範囲を逸脱しない様々な修正を加え得ることは理解されよう。したがって、本発明は添付の特許請求の範囲による以外は限定されない。

Claims (20)

  1. 拡張ポイントを識別しアプリケーションによる拡張ポイントの利用を分離するためのコンピュータ実行型の方法であって、
    サード・パーティ製の拡張を介してオペレーティング・システムまたはアプリケーションを拡張する手法を提供する拡張ポイントを識別するステップと、
    識別した前記拡張ポイントを拡張ポイント・データ記憶に追加するステップと、
    仮想アプリケーション・パッケージを指定するアプリケーション実行要求を受け取るステップと、
    前記仮想アプリケーション・パッケージが参照する1つまたは複数のパスを前記拡張ポイント・データ記憶内のパスと比較することによって、指定した前記仮想アプリケーション・パッケージ内の1つまたは複数のアプリケーション拡張ポイント参照を識別するステップと、
    識別したアプリケーション拡張ポイント参照を前記指定した仮想アプリケーション・パッケージ内の分離した位置にリダイレクトするために、リパース・ポイントを生成するステップと、
    を含み、
    これらのステップが少なくとも1つのプロセッサにより実行されることを特徴とする方法。
  2. 拡張ポイントを識別する前記ステップが、拡張ポイントのリストをオペレーティング・システムのベンダまたは独立したソフトウェア・ベンダ(ISV)から受け取るステップを含む、請求項1に記載の方法。
  3. 拡張ポイントを識別する前記ステップが、アプリケーションがオペレーティング・システムのリソースを利用することを検出するプロセス監視ツールで前記拡張ポイントを識別するステップを含む、請求項1に記載の方法。
  4. 前記拡張ポイント・データ記憶が、既知の拡張ポイントと関連するリソース・パスとをリストする宣言的なフォーマットを含む、請求項1に記載の方法。
  5. アプリケーション実行要求を受け取る前記ステップが、仮想化アプリケーションを実行するためのユーザ要求を受け取るステップを含む、請求項1に記載の方法。
  6. アプリケーション実行要求を受け取る前記ステップが、前記要求が受け取られたコンピュータ・システムにネイティブにインストールされていないアプリケーションを実行する要求を受け取るステップを含む、請求項1に記載の方法。
  7. 前記アプリケーション実行要求を受け取ると、要求されたアプリケーションを実行するためのアプリケーション仮想化環境を起動するステップをさらに含む、請求項1に記載の方法。
  8. 拡張ポイント参照を識別する前記ステップが、ファイル・タイプ関連付けを登録するための要求を識別するステップを含む、請求項1に記載の方法。
  9. リパース・ポイントを生成する前記ステップが、アプリケーション識別子と、識別した前記アプリケーション拡張ポイント参照にアクセスするための代替パスとを指定するステップを含む、請求項1に記載の方法。
  10. リパース・ポイントを生成する前記ステップがさらに、指定された仮想アプリケーションが、前記仮想アプリケーションを実行するホストのオペレーティング・システムを直接修正することを防ぐステップを含む、請求項1に記載の方法。
  11. オペレーティング・システムとアプリケーション拡張ポイントの仮想化を包括的にハンドリングするためのコンピュータ・システムであって、
    ソフトウェア命令を実行するように構成されたプロセッサおよびメモリと、
    拡張ポイントを識別するように構成された拡張ポイント識別コンポーネントであって、当該拡張ポイントを介してオペレーティング・システムまたはアプリケーションをサード・パーティのプログラム・コードにより拡張することができる、拡張ポイント識別コンポーネントと、
    識別した拡張ポイントを宣言的なフォーマットで格納するように構成された拡張ポイント・データ記憶と、
    仮想アプリケーションとホストのオペレーティング・システムとの間の間接レベルを提供するように構成されたアプリケーション仮想化環境と、
    識別された拡張ポイントを参照する仮想アプリケーション・パッケージのインストールを検出するように構成された拡張ポイント登録コンポーネントと、
    識別された拡張ポイントを参照する検出された前記仮想アプリケーション・パッケージをポイントする前記識別された拡張ポイントに対するリパース・ポイントを生成するように構成されたリパース・ポイント生成コンポーネントと、
    生成された前記リパース・ポイントのアクセスを検出し、拡張ポイント・リダイレクション・コンポーネントを起動するように構成された拡張ポイント・アクセス・コンポーネントと、
    前記ホストのオペレーティング・システムまたはアプリケーションに、前記検出された仮想アプリケーション・パッケージに関連付けられた位置でリパース・ポイントが参照する指定データを検索させるように構成された拡張ポイント・リダイレクション・コンポーネントと
    を備える、コンピュータ・システム。
  12. 前記拡張ポイント識別コンポーネントがさらに、プロセス監視に基づいて拡張ポイントを識別し、実行中にアプリケーションによってアクセスされるパスを検出するように構成される、請求項11に記載のシステム。
  13. 前記拡張ポイント・データ記憶が、識別された拡張ポイントのリストを含むXMLファイルを含む、請求項11に記載のシステム。
  14. 前記拡張ポイント・データ記憶がさらに、新たな拡張ポイントが発見される度に、その都度当該新たな拡張ポイントを受け取るように構成され、それにより、以前に配置した仮想化アプリケーションは、前記アプリケーション環境が以前に検出しなかった前記オペレーティング・システムへの修正から保護することで、オペレーティング・システムの分離が拡大することによる利益を得ることを特徴とする、請求項11に記載のシステム。
  15. 前記アプリケーション仮想化環境がさらに、前記ホストのオペレーティング・システムについて利用可能なリソースを用いてアプリケーションが設計された環境を、前記仮想アプリケーションに提供するように構成される、請求項11に記載のシステム。
  16. 前記拡張ポイント登録コンポーネントがさらに、前記拡張ポイント・データ記憶にアクセスして、識別された拡張ポイントのリストをロードし、該リストをユーザにより起動された仮想アプリケーション・パッケージと比較するように構成される、請求項11に記載のシステム。
  17. 前記拡張ポイント・アクセス・コンポーネントがさらに、アクセス情報を、生成されたリパース・ポイントにアクセスされるときに起動されるファイル・システム・フィルタから受け取るように構成される、請求項11に記載のシステム。
  18. 仮想化された拡張ポイントの要求へのアクセスに応答するようにコンピュータ・システムを制御するための命令を備えるコンピュータ可読ストレージ・デバイスであって、該命令は、実行されるときに、
    リソースのパスを参照するリソース・アクセス要求を受け取るステップと、
    パスによって参照されたリソースが、関連するリパース・ポイントを含かについて決定するステップと、
    前記パスによって参照された前記リソースが、関連するリパース・ポイントを含むと決定すると、
    前記参照されたパスに関連付けられた仮想アプリケーション・パッケージを識別するステップと、
    前記受け取ったリソースの要求を、識別された前記仮想アプリケーション・パッケージにリダイレクトするステップと、
    前記要求されたリソースへのアクセスを提供することにより、前記リダイレクトされたリソース要求に応答するステップと
    を含むアクションをプロセッサに実行させる、デバイス。
  19. 前記要求によって参照された前記リソースのパスは、アプリケーションがオペレーティング・システムまたはアプリケーションの機能を拡張できるリソース・ロケーションを参照する、請求項18に記載のデバイス。
  20. 仮想アプリケーション・パッケージを識別する前記ステップが、前記リパース・ポイントに関連付けられたアプリケーション識別子を識別するステップと、該識別したアプリケーション識別子を用いて前記仮想アプリケーション・パッケージにアクセスするステップとを含む、請求項18に記載のデバイス。
JP2012552121A 2010-02-05 2011-02-04 仮想化のための拡張ポイントの宣言的登録 Active JP5847734B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/700,723 2010-02-05
US12/700,723 US9262187B2 (en) 2010-02-05 2010-02-05 Extension point declarative registration for virtualization
PCT/US2011/023801 WO2011097521A2 (en) 2010-02-05 2011-02-04 Extension point declarative registration for virtualization

Publications (3)

Publication Number Publication Date
JP2013519168A JP2013519168A (ja) 2013-05-23
JP2013519168A5 JP2013519168A5 (ja) 2014-03-27
JP5847734B2 true JP5847734B2 (ja) 2016-01-27

Family

ID=44354659

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012552121A Active JP5847734B2 (ja) 2010-02-05 2011-02-04 仮想化のための拡張ポイントの宣言的登録

Country Status (9)

Country Link
US (2) US9262187B2 (ja)
EP (1) EP2531915B1 (ja)
JP (1) JP5847734B2 (ja)
KR (2) KR101836058B1 (ja)
CN (1) CN102754073B (ja)
AU (1) AU2011213666B2 (ja)
CA (1) CA2786890C (ja)
ES (1) ES2687792T3 (ja)
WO (1) WO2011097521A2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9003014B2 (en) * 2010-08-31 2015-04-07 International Business Machines Corporation Modular cloud dynamic application assignment
US9342368B2 (en) * 2010-08-31 2016-05-17 International Business Machines Corporation Modular cloud computing system
US10235147B2 (en) * 2011-08-26 2019-03-19 Microsoft Technology Licensing, Llc Discovery and activation of application extensions
US9092235B2 (en) 2012-05-25 2015-07-28 Microsoft Technology Licensing, Llc Virtualizing integrated calls to provide access to resources in a virtual namespace
CN103902265B (zh) * 2012-12-26 2018-01-09 腾讯科技(深圳)有限公司 一种应用实现方法及相关装置
US9448830B2 (en) * 2013-03-14 2016-09-20 Google Inc. Service bridges
CN104199894A (zh) * 2014-08-25 2014-12-10 百度在线网络技术(北京)有限公司 一种文件扫描方法及装置
US10089489B2 (en) * 2015-06-02 2018-10-02 ALTR Solutions, Inc. Transparent client application to arbitrate data storage between mutable and immutable data repositories
US20170060650A1 (en) * 2015-08-28 2017-03-02 Ncr Corporation Dynamic service extensibility
US10223378B2 (en) * 2015-11-02 2019-03-05 Microsoft Technology Licensing, Llc Controlling reparse behavior associated with an intermediate directory
US10996897B2 (en) * 2016-08-25 2021-05-04 Microsoft Technology Licensing, Llc Storage virtualization for directories
CN108363931B (zh) * 2018-02-13 2020-06-23 奇安信科技集团股份有限公司 一种对隔离区文件进行还原的方法及装置
CN108304699B (zh) * 2018-02-13 2020-07-14 奇安信科技集团股份有限公司 一种对安全软件进行保护的方法及装置
US11029970B2 (en) * 2018-10-24 2021-06-08 Sap Se Operating system extension framework
CN110515598A (zh) * 2019-08-30 2019-11-29 山东浪潮通软信息科技有限公司 一种基于命令行形式的集成服务的方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2365554B (en) * 2000-05-31 2004-09-01 Ibm Virtual machine support for multiple aplications
US7673308B2 (en) * 2002-11-18 2010-03-02 Symantec Corporation Virtual OS computing environment
US20050091658A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Operating system resource protection
US20060015601A1 (en) 2004-05-21 2006-01-19 Bea Systems, Inc. Console architecture
US7752600B2 (en) * 2004-09-30 2010-07-06 Citrix Systems, Inc. Method and apparatus for providing file-type associations to multiple applications
US20060117018A1 (en) 2004-11-30 2006-06-01 Microsoft Corporation Method and system for caching remote files locally
US7493594B2 (en) 2005-03-14 2009-02-17 Research In Motion System and method for designing component based applications
US20060277537A1 (en) 2005-06-01 2006-12-07 International Business Machines Corporation Deployment of containers and container extensions in a modular code runtime platform through a runtime platform extension point
US20070033640A1 (en) 2005-07-22 2007-02-08 International Business Machines Corporation Generic context service in a distributed object environment
US20070156913A1 (en) 2005-12-30 2007-07-05 Hiroyuki Miyamoto Method for enabling extension points through plug-ins
US8108851B2 (en) 2006-01-30 2012-01-31 International Business Machines Corporation External registration for function configuration within a client platform application
US8719816B2 (en) * 2006-03-14 2014-05-06 University Of Utah Research Foundation Extendable framework for distributed applications and data
US8793584B2 (en) 2006-05-24 2014-07-29 International Business Machines Corporation Customizable user interface wrappers for web applications
US7715854B2 (en) * 2006-07-01 2010-05-11 The Boeing Company Method and apparatus for actively monitoring personal cellular devices and controlling access to a celluar communications network with an airborne mobile platform
CN101290584A (zh) * 2007-04-17 2008-10-22 焦秀琴 基于系统调用包裹技术的可迁移软件使用模式
US8060812B2 (en) 2007-07-27 2011-11-15 International Business Machines Corporation Methods, systems, and computer program products for class verification
US8171483B2 (en) * 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US8990903B2 (en) 2007-11-09 2015-03-24 International Business Machines Corporation Extension point application and configuration of a login module
US8261254B2 (en) * 2008-03-31 2012-09-04 Symantec Corporation Dynamic insertion and removal of virtual software sub-layers
CN101593249B (zh) 2008-05-30 2011-08-03 成都市华为赛门铁克科技有限公司 一种可疑文件分析方法及系统
US8307177B2 (en) * 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data

Also Published As

Publication number Publication date
AU2011213666A1 (en) 2012-08-02
ES2687792T3 (es) 2018-10-29
CN102754073B (zh) 2016-01-27
KR20120139692A (ko) 2012-12-27
AU2011213666B2 (en) 2014-05-01
CA2786890C (en) 2016-11-29
KR20170103031A (ko) 2017-09-12
KR101836058B1 (ko) 2018-03-07
US9262187B2 (en) 2016-02-16
US10331466B2 (en) 2019-06-25
CA2786890A1 (en) 2011-08-11
WO2011097521A2 (en) 2011-08-11
US20110197184A1 (en) 2011-08-11
CN102754073A (zh) 2012-10-24
EP2531915A4 (en) 2014-05-21
JP2013519168A (ja) 2013-05-23
EP2531915B1 (en) 2018-07-11
WO2011097521A3 (en) 2011-12-29
EP2531915A2 (en) 2012-12-12
KR101774975B1 (ko) 2017-09-05
US20160162310A1 (en) 2016-06-09

Similar Documents

Publication Publication Date Title
JP5847734B2 (ja) 仮想化のための拡張ポイントの宣言的登録
CN102150105B (zh) 虚拟容器的部署和管理
EP4055477B1 (en) Just-in-time containers
US8839228B2 (en) System and method for updating an offline virtual machine
CN102460382B (zh) 标注虚拟应用进程
CN102782648B (zh) 用于诸如web应用之类的服务器应用的虚拟环境
AU2013219875B2 (en) Generating and caching software code
CN102741814B (zh) 可扩展应用虚拟化子系统
CN103827809B (zh) 用于虚拟分区监测的系统和方法
EP3035191B1 (en) Identifying source code used to build executable files
US20170024198A1 (en) Mapping of virtualized set-up free applications for a computing system
CN102822797A (zh) 虚拟应用扩展点
JP2008524686A (ja) コンピュータ装置においてアプリケーションを保守する方法
US11113393B2 (en) Providing security features in write filter environments
US20070180433A1 (en) Method to enable accurate application packaging and deployment with optimized disk space usage
US8924963B2 (en) In-process intermediary to create virtual processes
US20240264845A1 (en) Smart image preparation for secure workspaces
WO2014078820A1 (en) Translating function calls in virtualized environments
EP2661688A1 (en) Virtualization of configuration settings

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140204

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150512

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150515

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: 20151027

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151125

R150 Certificate of patent or registration of utility model

Ref document number: 5847734

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02