JP2005267644A - 共通言語ランタイム言語におけるリソースのアドレスサポート - Google Patents

共通言語ランタイム言語におけるリソースのアドレスサポート Download PDF

Info

Publication number
JP2005267644A
JP2005267644A JP2005077740A JP2005077740A JP2005267644A JP 2005267644 A JP2005267644 A JP 2005267644A JP 2005077740 A JP2005077740 A JP 2005077740A JP 2005077740 A JP2005077740 A JP 2005077740A JP 2005267644 A JP2005267644 A JP 2005267644A
Authority
JP
Japan
Prior art keywords
resource
developer
providing
collection
tool
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.)
Granted
Application number
JP2005077740A
Other languages
English (en)
Other versions
JP4851107B2 (ja
Inventor
Jerry Mun Coley
ムン コレイ ジェリー
Mark James Mcnulty
ジェイムズ マクナルティ マーク
Michelle Ann Watkins
アン ワトキンス ミッシェル
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
Original Assignee
Microsoft Corp
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 filed Critical Microsoft Corp
Publication of JP2005267644A publication Critical patent/JP2005267644A/ja
Application granted granted Critical
Publication of JP4851107B2 publication Critical patent/JP4851107B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation

Abstract

【課題】ランタイムをターゲットとする言語コンパイラで開発されるマネージコードの実行環境のコンテキストにおいて、実行時に先立ってコーディングエラーを低減する。
【解決手段】マネージコード実行環境を提供するマネージコードインフラストラクチャと、マネージコード実行環境を少なくとも部分的にターゲットとするコードの生成の際に開発者をサポートするコード生成環境を提供する設計プログラムと、設計プログラムを補足し、マネージコード実行環境によってサポートされるマネージコードリソースに対応するようにリソース識別子が正しくアドレスされていることを開発者が検証できるようにする文字列リソースツールを備える。
【選択図】図4

Description

本発明は、一般に、ソフトウェア開発者に提供されるプログラミングツールに関する。より詳細には、本発明は、リソース、特に共通言語仕様(Common Language Specification)に準拠するリソースをアドレスするためのプログラミングツールに関する。
マネージコード実行環境内でのプログラミングは、技術的に知られている。このような環境の既知の一例は、共通言語ランタイム(CLR:Common Language Runtime)を含む環境である。コンパイラおよびツールは、ランタイムの機能を公開し、開発者がマネージコードの実行から恩恵を受けるコードを書けるようにする。ランタイムをターゲットとする言語コンパイラで開発されるコードは、マネージコードとして知られる。マネージコードは、クロス言語(cross−language)インテグレーション、クロス言語例外処理、強化されたセキュリティ、バージョン管理および展開サポート、コンポーネントのインターラクションのための簡略化されたモデル、そしてデバッギングおよびプロファイリングサービスなどの機能から恩恵を受ける。
オブジェクトは、実装された言語に関わらず、他のオブジェクトと完全に対話するためには、相互運用(inter−operate)されることになる諸言語に共通なオブジェクトの機能を呼出し側に公開すべきであることは、理解されているセオリーである。このセオリーを念頭において、複数のアプリケーションにわたって共通する基本的な言語の機能のセットである共通言語仕様(CLS)が定義された。CLRをターゲットとする言語は、CLS機能をサポートすることに一般的に同意し、コンパイラ向けのCLSルールに従う。CLRをターゲットとする言語のためのコンパイラは、CLSのデータ型および機能を、コンポーネントを作成するために利用可能にすることによってCLS準拠を簡略化している。コンポーネントが、(派生したクラスを含めて)他のコードに公開するCLS機能のみをAPIで使用する場合、このコンポーネントは、このCLSをサポートするどのようなプログラミング言語からもアクセス可能であることが本質的に保証される。CLSルールを順守し、CLSに含まれている機能だけを使用するコンポーネントは、CLS準拠コンポーネントと言われる。
一般的にいえば、現在の開発環境は、設計時に、リソース、特にCLS準拠のリソースを管理するための大雑把なレベルのサポートしか提供していない。リソースをコードに挿入するために、開発者は共通して、参照識別子を(たとえばメモリから)ハードコーディングする必要がある。あるいは、開発者は、参照識別子を参照ファイルからコピーする(たとえば、開発者がコーディング中のプログラムと参照ファイルの間で交互に切り替えを行う必要がある)。
リソースの参照識別子は、共通して、キー名および文字列を備える。リソース管理に対するサポートの現在のレベルを考えると、開発者がキー名や文字列を不正確に入力するという顕著なリスクがある。キー名または文字列を得るために参照ファイルを調べるプロセスは、理論的にはエラーを低減することになるが、この追加の努力は単調なものであり、それゆえ、開発者にとって正しい値を推測しようとする何らかのインセンティブを与えていることはおそらく間違いのないことである。もちろん、推測のプロセスは誤りを生じやすい。
不正確にアドレスされたリソースに由来するバグは、構築時のエラーを生じず、通常は実行時にだけ発見可能である。これは、製品のテスト中に不正確にアドレスされたリソースを実際に機能させるコードパスが概ねヒットされなければならないことを意味する。すべてのアドレスエラーを認識することは、コード侵入的な手段なくしては困難である可能性がある。また、こうしたテスト環境のもとでのアドレス訂正では、アプリケーションのテスタは、通常、アドレスエラーを正しく解釈することが必要とされ、これは必ずしも容易または簡単なタスクではない。
本発明の実施形態は、マネージコード実行環境のコンテキストにおいて実行時に先立ってコーディングエラーを低減するためのコンピュータ実施される方法に関する。
この方法は、開発者に複数のマネージコードリソースに対するアクセスを提供することを含む。この方法はまた、開発者によって入力されたリソース識別子が、複数のマネージコードリソースの1つに対応することを検証することを含む。
図1は、本発明の実施形態を実装することができる適切なコンピューティングシステム環境100の一例を示している。コンピューティングシステム環境100は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲に関していかなる限定も示唆するものではない。コンピューティング環境100は、例示的動作環境100に示すコンポーネントの任意の1つまたは組合せに関するいかなる依存または要件を有するものと解釈すべきでもない。
本発明は、数多くの他の汎用または専用のコンピューティングシステムの環境または構成で動作する。本発明で使用するのに適している可能性のある周知のコンピューティングシステム、環境および/または構成の例には、これらに限られないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、電話システム、上記のシステムやデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
本発明は、コンピュータで実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで記述することができる。一般に、プログラムモジュールには、特定のタスクを実行したり、特定の抽象データ型を実装したりする、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などが含まれる。本発明はまた、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルおよびリモートの両方のコンピュータ記憶媒体に配置することができる。
図1を参照すると、本発明を実装するための例示的システムは、コンピュータ110の形態で汎用コンピューティング装置を含んでいる。コンピュータ110のコンポーネントには、これらに限られないが、中央処理装置120、システムメモリ130、そしてシステムメモリを含む様々なシステムコンポーネントを処理装置120に結合するシステムバス121が含まれ得る。
システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含むいくつかのタイプのバス構造のいずれかとすることができる。限定ではなく例として、このようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニン(Mezzanine)バスとしても知られるPCI(Peripheral Component Interconnect)バスが含まれる。
コンピュータ110は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110によってアクセスすることができる任意の利用可能な媒体とすることができ、それには、揮発性および不揮発性、リムーバブルおよび非リムーバブルの両媒体が含まれる。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の格納のための任意の方法または技術で実装された揮発性および不揮発性、リムーバブルおよび非リムーバブルの両媒体が含まれる。コンピュータ記憶媒体には、これらに限られないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、DVD(デジタル多用途ディスク)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ディスク記憶装置、あるいは所望の情報を格納するために使用することができ、コンピュータ110によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他のトランスポート機構などの変調されたデータ信号に具体化し、任意の情報配送媒体を含む。用語「変調されたデータ信号」は、信号に情報をエンコードするように1つまたは複数の信号特性が設定または変更された信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の任意の組合せも、コンピュータ可読媒体の範囲に含まれるものとする。
システムメモリ130は、ROM(リードオンリメモリ)131およびRAM(ランダムアクセスメモリ)132などの揮発性および/または不揮発性のメモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータ110内の要素間で情報を転送するのを助ける基本ルーチンが入っている基本入出力システム(BIOS)133は、通常、ROM131に格納されている。RAM132は、通常、処理装置120によって即座にアクセス可能であり、そして/または現在操作されているデータおよび/またはプログラムモジュールを収容する。限定ではなく例として、図1には、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136およびプログラムデータ137を示している。
コンピュータ110は、他のリムーバブル/非リムーバブルの揮発性/不揮発性のコンピュータ記憶媒体を含むことがある。単に例として、図1は、非リムーバブルで不揮発性の磁気媒体との間で読み取りまたは書き込みを行うハードディスクドライブ141、リムーバブルで不揮発性の磁気ディスク152との間で読取りまたは書込みを行う磁気ディスクドライブ151、そしてCD ROMまたは他の光媒体などのリムーバブルで不揮発性の光ディスク156との間で読み取りまた書き込みを行う光ディスクドライブ155を示している。この例示的な動作環境において使用することができる他のリムーバブル/非リムーバブル、揮発性/不揮発性のコンピュータ記憶媒体には、これらに限られないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体RAMおよび半導体ROMなどが含まれる。ハードディスクドライブ141は、通常、インターフェース140などの非リムーバブルメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150などのリムーバブルメモリインターフェースによってシステムバス121に接続される。
図1に示し、上で論じたドライブおよび関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよびコンピュータ110のための他のデータのストレージを提供する。図1では、たとえば、ハードディスクドライブ141がオペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146およびプログラムデータ147を格納するものとして図示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じものであっても、異なるものであってもよいことに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146およびプログラムデータ147には、これらが少なくとも異なるコピーであることを示すために、ここでは異なる番号が与えてられている。
ユーザは、キーボード162、マイクフォン163、そしてマウス、トラックボールまたはタッチパッドのようなポインティングデバイス161などの入力装置を介して、コマンドおよび情報をコンピュータ110に入力することができる。他の入力装置(図示せず)には、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナなどが含まれ得る。これらおよびその他の入力装置は、システムバスに結合されているユーザ入力インターフェース160を介して処理装置120に接続されることが多いが、パラレルポート、ゲームポートまたはUSB(ユニバーサルシリアルバス)などの他のインターフェースおよびバス構造によって接続することもできる。モニタ191または他のタイプの表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。モニタに加え、このコンピュータはまた、出力周辺装置インターフェース195を介して接続することができるスピーカ197およびプリンタ196など他の周辺出力装置を含むことができる。
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を用いたネットワーク化された環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、ハンドヘルドデバイス、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードとすることができ、通常、コンピュータ110に関して上述した要素の多くまたは全てを含む。図1に示す論理接続は、ローカルエリアネットワーク(LAN)171、およびワイドエリアネットワーク(WAN)173を含むが、他のネットワークを含むこともある。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
LANネットワーキング環境で使用されるとき、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用されるとき、コンピュータ110は、通常、モデム172や、インターネットなどのWAN173を介して通信を確立するための他の手段を含む。モデム172は、内蔵でも外付けでもよく、ユーザ入力インターフェース160または他の適切なメカニズムを介してシステムバス121に接続することができる。ネットワーク環境では、コンピュータ110に関して示されたプログラムモジュールまたはその部分をリモートメモリ記憶装置に格納してもよい。限定ではなく例として、図1では、リモートコンピュータ180上に常駐するリモートアプリケーションプログラム185が示されている。ここに示したネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用することもできることが理解されよう。
図2は、本発明の一態様によるコード開発環境201を示す模式的なブロック図である。この環境は、設計プログラム202およびマネージコードインフラストラクチャ204を含む。インフラストラクチャ204は、必須ではないが例示として、マネージコード実行環境であり、これだけに限られないが、たとえば、ワシントン州レドモンドのマイクロソフトコーポレーションによって提供される既存の.NETフレームワークを組み込んだ環境である。
設計プログラム202は、開発ツール、特にプログラミング環境であり、マネージコードインフラストラクチャ204と共に動作して、アプリケーションの設計、構築、テストおよび展開を行うためのツールを提供する。設計プログラム202は、必須ではないが例示として、マイクロソフトコーポレーションによって提供されるVISUAL STUDIO.NETの製品ラインのプログラムである。マネージコードインフラストラクチャ204は、例示として、クロス言語対応コードをサポートするように構成されているマネージコード実行環境を組み込んでいる。一実施形態によれば、インフラストラクチャ204は、マイクロソフトコーポレーションの.NETインフラストラクチャの共通言語ランタイムコンポーネントを組み込み、この場合、設計プログラム202は、少なくとも部分的にCLS準拠のコードを生成する際にマネージコードインフラストラクチャ204と連携するように構成されている。
本発明の一態様によれば、マネージコードインフラストラクチャ204および設計プログラム202は連携して、マネージコードインフラストラクチャ204によってサポートされる言語のリソース情報207を管理するリソースマネージャ208を提供する。一実施形態によれば、リソース情報207は、CLS準拠リソースに関連する情報を含む。図2内では、リソースマネージャ208および情報207は、プログラム202およびインフラストラクチャ204とは別個の点線で囲まれたボックスに示されている。このような配置は、その具体的な実装形態が本発明には重要でないということを反映するように意図されている。リソースマネージャおよび情報は、インフラストラクチャ204の部分、プログラム202の部分、または別個のコンポーネントとして、あるいは他の方法で実装することができよう。
リソース要求は、様々な周知の許容可能な方法のいずれかによってリソースマネージャ208に伝えられる。一実施形態によれば、リソースは、例示的には「GetString(文字列KeyName)」メソッドによって要求される。たとえば、設計時に、開発者は、プログラム202とインターフェースをとり、リソースマネージャ208に対する呼出し、たとえばリソース情報207の部分として維持されているCLS準拠コンポーネントの呼出しを組み込むコードを作成する。コード化されたリソースの呼出しは、例示として、所望のリソースに関連付けられた文字列およびキー名の指示を含む。コード化されたリソースの呼出しに基づいて、プロセスのある時点で、対応する文字列のリソース要求が「GetString(文字列KeyName)」呼出しを利用して、リソースマネージャ208に対して行われる。文字列および/またはキー名が設計時に正しく入力されていない場合(たとえばKeyName中の誤字)、そのエラーが実行時までに容易に発見できないことは珍しくない。重ねて、記載のGetStringメソッド以外のメソッドを本発明の範囲から逸脱することなく利用することができる。
本発明の一態様によれば、設計プログラム202は、実行時に先立ってリソースのアドレス設定におけるエラーを低減または除去するように一般的に構成された文字列リソース(StringRes)ツール206を含む。StringResツール206は、例示として、文字列リソースをより良く管理するのを助けるために設計プログラム202を補足するカスタムツールである。一実施形態によれば、StringResツール206は、設計プログラム202の一体部分として出荷される。他の実施形態によれば、StringResツール206は、プログラム202に統合またはインストールすることができるアップグレードである。
設計プログラム202がStringResツール206を含むと想定すると、一実施形態によれば、このツールは、設計プログラム202を利用する開発者によって開始された任意のコーディングプロジェクトに関連して自動的に実装される。しかし、他の実施形態によれば、特定のプロジェクトのコンテキストにおいてツールが開始またはインストールされたときに限り(すなわち、ツールがプロジェクトごとに選択的に起動される)、開発者にツール206の機能が提供される。
図3は、設計プログラム202のインターフェースがどのように見えるかの一例を示すスクリーンショット300である。開発者が、例示として、コーディング領域302にコードを入力する。ハイライトされたタブ304によって示されているように、スクリーンショット300の特定のコンテキストにおいて、開発者が、「Form1.cs」と指定されたファイルに関連するコードを作成している。
ファイル選択領域305は、開発者が異なるファイルおよび異なるプロジェクトの間で移動できるように提供されている。コンフィギュレーション領域306は、開発者がStringResツール206など様々なプログラミングツールを少なくとも選択的にアクティブ化または非アクティブ化できるように提供されている。領域306内に示すように、スクリーンショット300の特定のコンテキストでは、StringResツールが、「FORM1.RESX」ファイルに関連してアクティブ化されている。したがって、StringResツールの機能が、開発者がFORM1.RESXファイルのコンテキストでコードを入力するとき、開発者に提供されることになる。一実施形態によれば、この機能はまた、Form1.resxファイルと所定の階層関係を持つファイルに拡張されることになる。したがって、本発明の一態様によれば、StringResツールは、要望に応じてアクティブ化されるカスタムプログラミングツールとして実装される。この説明の目的上、StringResツール206は、コーディング領域302で開かれたファイルである「FORM1.CS」ファイルに対してもアクティブ化されていると想定することにする。
これを念頭において、本発明の一態様によれば、StringResツールに関連付けられたサブシステム(たとえばプロジェクト管理サブシステム)は、作業中のプロジェクトに使用されている特定のCLR準拠言語に従って応答することができる。新しいファイルがプロジェクトに加えられるか、または(たとえばCustom Toolプロパティに触れることにより)既存のファイルが修正されると、そのファイルの親が検査される。その親が、プロジェクトがC#、C++、VBなどであるかを判定する。この判定に基づいて、コードがそのプロジェクトの適切な言語で出力される。このようにして、1つの設計プログラムのソリューションが複数のプロジェクトを収容することができ、StringResツールがこれに対応することができる。
本発明の一態様によれば、StringResツール206は、リソースのアドレス/インデックス情報へ、そして任意選択的にカタログ化されたリソースに対応する値への使い勝手のよい設計時のアクセシビィティを提供する。本発明の一実施形態によれば、リソースへのアクセスは、ステートメントおよび機能の完了において開発者を補助するポップアップウィンドウおよび/またはドロップダウンリスト(たとえば設計プログラムインターフェース内に直接)に表示される情報の形態で提供される。たとえば、利用可能なリソースに対応する識別子情報(すなわち、キー名、文字列および/または値の情報)が、選択およびステートメントの完了のために開発者に表示される。
一実施形態によれば、有効なリソース情報が、特定リソースの参照のために表示される。たとえば、リソースオブジェクト、コマンドまたは関数の入力に続いて、アクティベーターキーによって、現在のコマンドまたは関数のための有効な値のドロップダウンリストの表示が開始される。本発明の一実施形態によれば、アクティベーターキーは、ピリオド(.)である。他の実施形態によれば、アクティベーターキーは、スペースキー、左(開き)括弧、または何らかの他のキー呼出しである。一実施形態によれば、ドロップダウンリストをナビゲート(すなわちスクロール)するか、またはタイプし、利用可能な選択の1つで(たとえば所定の時間の間)停止することによって、追加の情報がドロップダウンメニューの近傍のポップアップウィンドウに現れるようにするであろう。
一実施形態によれば、開発者がリソース情報の自動配送のステータスを自動、手動またはディスエーブルに調整できるようにする設計プログラムインターフェース上のオプションが開発者に提供される。自動に設定した場合、アクティベーターキーを押したときリソースリストが自動的に現れる。手動に設定した場合、開発者は、カーソルが情報のアベイラビリティに関連付けられたところに位置決めされると、(たとえば編集メニューコマンド、ショートカットメニュー選択またはCTRLキーの組合せを用いて)リソース情報の表示を選択的にアクティブ化することができる。一実施形態によれば、CLS準拠リソースと特に関連する情報は、StringResツール206のコンポーネントとして提供される上述の設計プログラムインターフェースのアップグレードを通じて開発者に利用可能になされる。
一般的にいえば、StringResツール206は、リソース識別子および対応する情報、特にCLS準拠リソースに関連する識別子および情報の選択のための効率的な相互参照を可能にする。したがって、本発明の一態様によれば、開発者がリソースクラスを入力し、それに続けてアクティベーションキーを入力すると、関連するアクセス可能なメソッドおよびプロパティを示すリスト(たとえばドロップダウンメニュー)が自動的に提供される。一実施形態によれば、自動的に生成されたリストは、利用可能な文字列のキー名のコレクションである。他の実施形態によれば、キー名の1つをハイライトすると、(たとえばポップアップボックス内に)関連する文字列の値の提供が開始される。
図4は、設計プログラム202のインターフェースの別の例を示すスクリーンショット400である。図4のショットは、大体は図3のショットと同様であり、StringResツール206がアクティブ化されているという想定は有効のままである。コーディング領域内の位置425で、開発者は「FORM11」とキー入力したが、これは例示として、リソース識別子の入力に対する先行(precursor)である。この先行に続いて、開発者は、ピリオド(.)をキー入力したが、これは、例示として、StringResツール206からの応答をドロップダウンメニュー430の形態で開始するアクティベーターキーである。メニュー430は、例示として、対応する先行エントリに有効なリソース情報を収容している。
一実施形態によれば、ドロップダウンボックス中の情報は、階層的に配置される。たとえば、リソースは、例示的には、複数の言語ベースで利用可能とすることができ、それぞれの言語は、より広いソースエレメントに関連する階層的エレメントとしてボックス中に表示された個々のエレメントに対応している。もちろん、編成は言語以外の任意のファクタに基づいて行うことができる。メニュー430は、例示した6つの選択肢より多くを収容するように(たとえばスクロール可能なアルファベット順のリストまたは他の配列で)構成することができることに留意されたい。メニュー430にリストされたエレメントは、必須ではないが、CLS準拠のエレメントなどのエレメントに対応するキー名とすることができる。
この例を続けて、開発者は、メニュー430を通してナビゲートし、「MICHELLELOC」エントリ上で停止する。このエントリで一時停止すると、例示として、対応するポップアップボックス436が現れ始め、このポップアップボックスは、メニュー430から選択されたエレメントに関連する文字列および/または値の情報を収容する。最終的には、開発者はメニュー430からのエントリの1つを選択することになる。この選択により、リソースのキー名、文字列および/または値が、適切な位置でコードに自動的に挿入されることになる。
図5は、本発明の一実施形態に関連付けられるステップを例示するフローチャートである。ブロック502では、開発者にCLS準拠リソースへのアクセスが提供される。ステップ504では、コード開発期間中に、それぞれがCLS準拠リソースを表すリソース識別子のコレクションが開発者に提示される。ステップ506で示すように、開発者は次いで、所望のCLS準拠リソースを表す識別子をこのコレクションから選択する。最後に、ステップ508では、対応し、正確な情報が開発者のプロジェクトに組み込まれる。
本発明の他の態様によれば、StringResツール206は、リソース、特にCLS準拠リソースが間違ってアドレスされたかどうかを判定する構築時チェックのサポートが提供される。このチェックは、コード中のリソース識別子の値を有効な値のコレクション(たとえば、リソース情報を上述のように設計時に提供するのをサポートするために維持しているものと同じリソース値のコレクション)と比較することによって行われる。格納された値とマッチしないリソース値がある場合、例示的には、エラーが訂正のために開発者に提示されることになる。一実施形態によれば、システムが新しいかまたは異なるリソース入力を受け入れるようにシステムを構成する必要に応じて、開発者が有効な値のリストに情報を追加できるようにシステムが構成される。
一実施形態によれば、図3のスクリーンショットを参照して、リソースツールを新しいリソース情報に拡張するために、開発者が、領域305のソリューションエクスプローラ(solution explorer)内のプロジェクトを(たとえば右クリック)選択する。開発者は次いで、「.strings」の拡張子を有するファイルのプロジェクトファイルへの追加を開始することができる。新しい文字列が次いで、必要に応じて.stringsファイルに追加される。
さらに1つの特定の実施形態によれば、新しいリソース情報を追加するために、開発者はまず、ソリューション領域305のプロジェクトを選ぶ(すなわち右クリックする)ことによって、機能オプションのメニューを提示する。開発者は次いで、ダイアログを提示するために「新しいアイテムを追加」機能を選択する。開発者は次いで、「.strings」の拡張子を有するファイルをプロジェクトに追加するために、「リソース」カテゴリおよび「文字列リソースツール」サブカテゴリを選ぶ。ソリューションエクスプローラ中の「すべてのファイルを表示」オプションを選択すると、例示として、.stringsファイルが2つの子のアイテム「.cs」ファイルおよび「.resx」ファイルを有することが明らかにされることになる。子ファイルは、.stringsファイルから生成されるので、例示として、直接編集されない。このファイルは、構築時に生成されるのではなく、.stringsファイル、あるいは.stringsファイルのCustom ToolプロパティまたはCustom Tool Namespaceプロパティに変更があったときは常に生成される。
リソース情報に追加するために、開発者は、たとえばフォーマット「<keyName>=<値>」)」を用いて.stringsファイルに情報を単に追加する。このフォーマットの一例は、次の通りである。
SimpleMsg=これは単純なメッセージです。
.stringsファイルのデフォルトのファイル名は、例示的にはSTR1.stringsであり、これは、子の「cs.」ファイルにおいて「STR1」と名付けられたクラスを生成する(クラス名はファイル名に由来する)。したがって、たとえばC#プログラミング環境内では、下記が正確な例であろう。
STR1.SimpleMsg;//これから返される文字列は、「これは単純なメッセージです。」であろう。
string.フォーマットを使用する共通の操作は、例示的には、ツールによっても取り扱われる。一例は、次の通り。
FileNotFoundError(ファイル名,説明,リトライ回数)={1}のためにファイル{0}が見つかりませんでした。リトライ試行回数は{2}でした。
所与のパラメータの型を指定しないと、例示的には、System.Stringがデフォルトの型になる。C#プログラミング環境内では、適用可能な例は次の通り。
STR1.FileNotFoundError(“myFile.abc”,「ファイルが削除されました」,30;//これをプリントするでしょう:ファイルが削除されたためファイルmyFileabcが見つかりませんでした。リトライ試行回数は30回でした。
.stringsファイル中のコメントは、例示的には、ポンド記号(#)またはセミコロン(;)で始まる。ポンド記号でマークされたコメントは、例示的には、外部から見えないが、セミコロンでマークされたコメントは、一般に利用可能である。外部から見られるべきコメントは、.resxファイルに出力される。StringResツールは、例示的には、ラインの最初の文字が「#」または「;」である場合にのみ、有効なコメントラインを認識する。
.stringsファイル中の各メッセージは、例示的には、自動生成されたクラス中に2つのアクセサを生成する。1つは、「言語中立」のためのものであり、もう1つは「指定言語」のためのものである。単純なタイプのメッセージでは、アクセサはフィールドである。パラメータとして言語を追加するには、関数が追加され、名前が若干変更される(たとえば「Loc」フィールド名が付加される)。パラメータを取るメッセージでは、名前は変更されず、パラメータリストだけが変化する(すなわちCultureInfoパラメータが追加される)。自動生成された.csファイルに目を通すことにより詳細が明らかになるであろう。
.stringsファイルは、プロジェクトに追加されると、例示的には、Custom Toolプロパティを「StringRes」に、Custom Tool Namespaceをヌルに、Build Actionを「none」に設定する。StringResの出力のネームスペースはプロジェクトから得られるが、例示的には、Custom Tool Namespaceを出力の所望のネームスペースに設定することによってオーバライドすることができる。
設計プログラムがStringResツールをカスタムツールとして認識する方法は、例示として、StringResに設定されたCustom Toolプロパティを有するソリューションエクスプローラ中のファイルによってである。したがって、Custom ToolプロパティがStringResに設定され、ファイルが有効なフォーマットである限り、(すなわちC#プロジェクト内で).txtまたは.abcファイルを追加してもかまわない。
プロダクションとして環境中立(culture−neutral)のリソースを展開後、例示として、バイナリに触れることなく、また再構築する必要なく、いつでもlocリソースを展開することができる。文字列リソースが要求され、実行時に利用できない場合、リソースの階層が例示的にはトラバースされ、階層のルートが環境中立リソースセットである。そのため、日本語の文字列が要求されたが、利用できない場合、英語の文字列が返されることになる。あとで日本語リソースセットが利用可能になると、日本語の文字列が代わりに返されることになる。
一例として、以下のシナリオを検討する。
1)AppXが、AppX実行可能ファイルに組み込まれた文字列リソースを使用する。
2)6週間後、オーストリアでAppXについて急な関心が持ち上がり、オーストリア系ドイツの言語は、System.Localization.CultureInfoクラスにおいて「de−At」である。
3)AppXの実行可能ディレクトリにおいて、「de−AT」のサブディレクトリが標準ドイツ語の「de」の1つと共に作成される。
4)オーストリア系ドイツ語のローカルベンダ(loc vendor)は遅れるが、ローカライズされたリソースは、標準ドイツ語では遅れずに受け取られる。
5)ローカライズされたリソースは、「de」サブディレクトリにドロップされ、この場合、locリソースが起動中にドロップされた(たとえばサービスをリスタートする必要はない)ので、AppXは引き続き稼動している。
6)「de−AT」の文字列の要求は、「de」の文字列で返され、
7)後日、「de−AT」のリソースがドロップされたときに、代わって返される。
一実施形態によれば、StringResツールは複数の文字列を管理するように構成され、その表現が、(たとえばドロップダウンリストボックス内に)何らかの形態でユーザに提供される。ツールは自動コンプリート機能を提供し、StringResが管理しているエントリの1つをユーザが選択(たとえばドロップダウンリストボックスから選択)するとき、その文字列の値が(たとえばポップアップボックス内で)何らかの形態でユーザに提供される。
たとえば、StringResツールが「myString=これは私の文字列です」を含むSTR1.stringsを管理しているシナリオを考える。設計プログラムインターフェース内で、ユーザが、(たとえばVisualStudio.net IDEとして)適切な位置にSTR1をタイプすると、対応するオプションのリストが(たとえばドロップダウンリストボックス内に)提示されることになる。ユーザがオプションのリストからmyStringを選択すると、ツールが、対応する値(たとえば「これは私の文字列です」)を報告することになる。一実施形態によれば、値がバルーンまたはポップアップボックス内で報告される。したがって、ユーザは、設計時にアドレスされた文字列の**値**を得ることができる。
ここに記載の方法は、一般に、リソースのアドレスシングエラーを削減または除去し、それによって、エラーがアプリケーションに導入されるのを防止する。リソース、特にCLS準拠リソースの値を設計時に提供することによって、コード開発の生産性および正確性を向上する。
本明細書は、文字列がどのように具体的に.stringsファイルに追加されるかについての説明を含んでいる。本発明の一態様によれば、StringResツールは、標準のファイル(たとえば標準.resxファイル)と共に機能する。一実施形態によれば、文字列の定義が、StringResツール機能を通じて利用可能になされた定義に追加されるとき、必要とされるすべては、名前/値のペア(たとえば「myString=これは私の文字列です」)である。
本発明について特定の実施形態を参照して説明してきたが、当業者には、本発明の趣旨および範囲から逸脱することなく形態および細部を変更できることが理解されよう。
本発明を実施することができる1つのコンピューティング環境を示すブロック図である。 コード開発環境を示す模式的ブロック図である。 例示的なスクリーンショットである。 例示的なスクリーンショットである。 CLS準拠リソースに関係する情報に直接アクセスすることに関連するステップを示すフローチャートである。
符号の説明
100 コンピューティングシステム環境
110 コンピュータ
120 処理装置
130 システムメモリ
131 ROM
132 RAM
133 BIOS
134 オペレーティングシステム
135 アプリケーションプログラム
136 他のプログラムモジュール
137 プログラムデータ
140 非リムーバブル不揮発性メモリインターフェース
141 ハードディスクドライブ
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 リムーバブル不揮発性メモリインターフェース
151 磁気ディスクドライブ
152 磁気ディスク
155 光ディスクドライブ
156 光ディスク
160 ユーザ入力インターフェース
161 ポインティングデバイス
162 キーボード
163 マイクロフォン
170 ネットワークインターフェース
171 ローカルエリアネットワーク
172 モデム
173 ワイドエリアネットワーク
180 リモートコンピュータ
185 リモートアプリケーションプログラム
190 ビデオインターフェース
191 モニタ
195 出力周辺インターフェース
196 プリンタ
197 スピーカ
201 コード開発環境
202 設計プログラム
204 マネージコードインフラストラクチャ
206 文字列リソースツール
207 リソース情報
208 リソースマネージャ
300 スクリーンショット
302 コーディング領域
304 ハイライトされたタブ
305 ファイル選択領域
306 コンフィギュレーション領域
400 スクリーンショット
425 コーディング領域内の位置
430 ドロップダウンメニュー
436 ポップアップボックス

Claims (25)

  1. マネージコード実行環境のコンテキストにおいて実行時に先立ってコーディングエラーを低減するためのコンピュータ実施される方法であって、
    開発者に複数のマネージコードリソースへのアクセスを提供することと、
    開発者によって入力されるリソース識別子が前記複数のマネージコードリソースの1つに対応することを検証することと
    を備えることを特徴とする方法。
  2. 検証することは、
    開発者にリソース識別子のコレクションを提供することと、
    リソース識別子の前記コレクションからの選択の形態で開発者から前記リソース識別子の入力を受けることと
    を備えることを特徴とする請求項1に記載の方法。
  3. リソース識別子のコレクションを提供することは、開発者によって選択された特定のクラスに対応するリソース識別子のコレクションを提供することを備えることを特徴とする請求項2に記載の方法。
  4. リソース識別子のコレクションを提供することは、アクティベーションキーの開発者による入力に応答してリソース識別子のコレクションを提供することを備えることを特徴とする請求項2に記載の方法。
  5. アクティベーションキーの入力に応答して提供することは、リソースクラスの入力に続くアクティベーションキーの入力に応答して提供することを備えることを特徴とする請求項4に記載の方法。
  6. リソース識別子のコレクションを提供することは、キー名のコレクションを提供することを備えることを特徴とする請求項2に記載の方法。
  7. 前記リソースキー名のコレクションの選択された1つに対応するリソース値を開発者に提供することをさらに備えることを特徴とする請求項6に記載の方法。
  8. 前記リソース識別子のコレクションの選択された1つに対応するリソース値を開発者に提供することをさらに備えることを特徴とする請求項2に記載の方法。
  9. リソース値を提供することは、ポップアップボックス内に情報を提供することを備えることを特徴とする請求項8に記載の方法。
  10. 前記リソース識別子のコレクションを提供することは、ドロップダウンメニュー内に情報を提供することを備えることを特徴とする請求項2に記載の方法。
  11. 開発者に複数のマネージコードリソースへのアクセスを提供することは、開発者に共通言語仕様に準拠する複数のリソースへのアクセスを提供することを備えることを特徴とする請求項1に記載の方法。
  12. 前記複数のマネージコードリソースへの追加を開発者から受けることをさらに備えることを特徴とする請求項1に記載の方法。
  13. リソース識別子のコレクションを提供することは、リソース情報の表示の要求に対応する開発者による入力に応答して、リソース識別子のコレクションを提供することを備えることを特徴とする請求項2に記載の方法。
  14. リソース情報の表示の要求に対応する開発者による入力に応答して、リソース識別子のコレクションを提供することは、
    情報アベイラビリティに関連付けられた位置にカーソルが位置決めされるときに行われる開発者による入力に応答して、リソース識別子のコレクションを提供することを備えることを特徴とする請求項2に記載の方法。
  15. リソース識別子のコレクションを開発者に提供することは、それぞれが基本的に同じリソースである異なる言語のバージョンを識別する少なくとも2つの識別子を含むリソース識別子のコレクションを開発者に提供することを備えることを特徴とする請求項2に記載の方法。
  16. ソフトウェアアプリケーションを開発するためのシステムであって、
    マネージコード実行環境を提供するマネージコードインフラストラクチャと、
    前記マネージコード実行環境を少なくとも部分的にターゲットとするコードの生成の際に開発者をサポートするコード生成環境を提供する設計プログラムと、
    前記設計プログラムを補足し、前記マネージコード実行環境によってサポートされるマネージコードリソースに対応するようにリソース識別子が正しくアドレスされていることを開発者が検証できるようにする文字列リソースツールと
    を備えたことを特徴とするシステム。
  17. 前記文字列リソースツールは、共通言語仕様に準拠するリソースに対応するようにリソース識別子が正しくアドレスされていることを開発者が検証できるようにさらに構成されたことを特徴とする請求項16に記載のシステム。
  18. 前記文字列リソースツールは、
    前記設計プログラムのインターフェースを介してリソース識別子のコレクションを提供することと、
    前記リソース識別子のコレクションからの選択の形態で開発者からリソース識別子の入力を受けることと
    によってリソース識別子が正しくアドレスされていることを開発者が検証できるように構成されたことを特徴とする請求項17に記載のシステム。
  19. 前記文字列リソースツールは、前記設計プログラムインターフェースを介して、リソースのキー名情報を提供するようにさらに構成されたことを特徴とする請求項18に記載のシステム。
  20. 前記文字列リソースツールは、前記設計プログラムインターフェースを介して、値の情報を提供するようにさらに構成されたことを特徴とする請求項18に記載のシステム。
  21. マネージコード実行環境のコンテキストにおいて実行時に先立ってコーディングエラーを低減するための文字列リソースツールであって、
    設計プログラムインターフェースを介して文字列情報を提供するツールコンポーネントであって、前記文字列情報は開発者が特定の文字列を表す特定の識別子を選択肢の閉じた集合から選択できるようにするツールコンポーネントを備えたことを特徴とする文字列リソースツール。
  22. 前記文字列情報は、開発者が共通言語仕様に準拠する特定の文字列を表す特定の識別子を選択肢の閉じた集合から選択できるようにしたことを特徴とする請求項21に記載の文字列リソースツール。
  23. 前記選択肢の閉じた集合は、開発者によって選択された特定のクラスに対応することを特徴とする請求項21に記載の文字列リソースツール。
  24. 前記ツールコンポーネントは、前記設計プログラムインターフェースへの開発者によるアクティベーションキーの入力に応答して前記文字列情報を提供するように構成されたことを特徴とする請求項21に記載の文字列リソースツール。
  25. 前記ツールコンポーネントは、前記選択肢の閉じた集合において表された少なくとも1つの識別子について、前記設計プログラムインターフェースを介して、値の情報を提供するようにさらに構成されたことを特徴とする請求項21に記載の文字列リソースツール。
JP2005077740A 2004-03-17 2005-03-17 コンピュータ実施方法 Expired - Fee Related JP4851107B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/802,422 2004-03-17
US10/802,422 US7814464B2 (en) 2004-03-17 2004-03-17 Address support for resources in common-language runtime languages

Publications (2)

Publication Number Publication Date
JP2005267644A true JP2005267644A (ja) 2005-09-29
JP4851107B2 JP4851107B2 (ja) 2012-01-11

Family

ID=34838905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005077740A Expired - Fee Related JP4851107B2 (ja) 2004-03-17 2005-03-17 コンピュータ実施方法

Country Status (5)

Country Link
US (1) US7814464B2 (ja)
EP (1) EP1577762A3 (ja)
JP (1) JP4851107B2 (ja)
KR (1) KR101114038B1 (ja)
CN (1) CN1670715B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9626437B2 (en) * 2004-06-10 2017-04-18 International Business Machines Corporation Search scheduling and delivery tool for scheduling a search using a search framework profile
US7802228B2 (en) * 2004-08-19 2010-09-21 Microsoft Corporation Systems and methods for varying software build properties using primary and supplemental build files
US8117601B2 (en) * 2007-11-14 2012-02-14 Microsoft Corporation Internal test and manipulation of an application
US20110271258A1 (en) * 2010-04-30 2011-11-03 Microsoft Corporation Software Development Tool
US8667456B1 (en) * 2011-04-20 2014-03-04 Google Inc. Cloud-based indexing for integrated development environments
US9760415B2 (en) 2014-05-16 2017-09-12 Microsoft Technology Licensing, Llc Code service for language-independent dispatch
CN113064647A (zh) * 2021-03-26 2021-07-02 山东英信计算机技术有限公司 一种bios中配置项目端口的方法、装置、终端及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281879A (ja) * 1994-04-11 1995-10-27 Hitachi Ltd アプリケーションプログラム編集装置
JPH10254688A (ja) * 1997-03-07 1998-09-25 Toshiba Corp プログラム作成支援装置
JP2001175596A (ja) * 1999-12-14 2001-06-29 Nec Corp コマンド処理装置、コマンド処理方法、およびそのプログラムを記録した記録媒体
JP2002082804A (ja) * 2000-09-06 2002-03-22 Akifumi Watanabe 動的識別子情報を利用するエディタ

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5640558A (en) * 1995-05-31 1997-06-17 International Business Machines Corporation Identifying and analyzing multiple level class relationships in an object oriented system by parsing source code without compilation
US6799718B2 (en) * 2001-07-10 2004-10-05 Borland Software Corp. Development assistance for mixed-language sources
US6965990B2 (en) * 2001-10-23 2005-11-15 International Business Machines Corporation Method and apparatus for providing programming assistance
US20040015564A1 (en) * 2002-03-07 2004-01-22 Williams Scott Lane Method of developing a web service and marketing products or services used in developing a web service

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281879A (ja) * 1994-04-11 1995-10-27 Hitachi Ltd アプリケーションプログラム編集装置
JPH10254688A (ja) * 1997-03-07 1998-09-25 Toshiba Corp プログラム作成支援装置
JP2001175596A (ja) * 1999-12-14 2001-06-29 Nec Corp コマンド処理装置、コマンド処理方法、およびそのプログラムを記録した記録媒体
JP2002082804A (ja) * 2000-09-06 2002-03-22 Akifumi Watanabe 動的識別子情報を利用するエディタ

Also Published As

Publication number Publication date
US7814464B2 (en) 2010-10-12
JP4851107B2 (ja) 2012-01-11
EP1577762A2 (en) 2005-09-21
CN1670715B (zh) 2011-02-09
US20050210449A1 (en) 2005-09-22
KR101114038B1 (ko) 2012-02-21
CN1670715A (zh) 2005-09-21
EP1577762A3 (en) 2006-01-18
KR20060044361A (ko) 2006-05-16

Similar Documents

Publication Publication Date Title
US7127707B1 (en) Intellisense in project upgrade
JP5021211B2 (ja) デジタル装置メニューエディタのための方法およびシステム
JP4366065B2 (ja) リソース・ファイル・ビルダ・ツール及びコンピュータ可読コード
RU2398266C2 (ru) Использование механизма привязки данных для выполнения привязки команд
US20090064196A1 (en) Model based device driver code generation
US8201143B2 (en) Dynamic mating of a modified user interface with pre-modified user interface code library
US20060271924A1 (en) Method and apparatus for automating updates to dependencies
JP4851107B2 (ja) コンピュータ実施方法
US20060117267A1 (en) System and method for property-based focus navigation in a user interface
US20070294586A1 (en) Automated Extensible User Interface Testing
US8850388B2 (en) Controlling application features
JP2001521254A (ja) モバイル・デバイスのアプリケーション・インストール管理システムおよび方法
US8276118B2 (en) Depicting changes to structures in an integrated development environment
US7873960B2 (en) Generic packaging tool for packaging application and component therefor to be installed on computing device
US7730495B2 (en) Declaratively defined control actions
US20140033123A1 (en) User interface and method for comparing a local version of a profile to an online update
CN115437684A (zh) 一种针对Linux内核源代码的文件级裁剪方法和系统
JP4288017B2 (ja) コンピュータ構成のためのテキスト・ファイルを変更する方法及びシステム
US7856623B2 (en) Method and system for providing an enumeration assistant
US20050028152A1 (en) Method and apparatus for identifying a Java class package name without disassembling Java bytecodes
US7917893B2 (en) Using a system of annotations to generate views and adapters
US20120124557A1 (en) Auto retract and background warm up
Smyth Android Studio 3.6 Development Essentials-Kotlin Edition: Developing Android 10 (Q) Apps Using Android Studio 3.6, Kotlin and Android Jetpack
CN115390804A (zh) 虚拟环境集成方法、计算设备及存储介质
JP5251863B2 (ja) ツリ−構造を利用した、ユ−ザ・インタフェイスの構成要素情報の記録およびユ−ザ・インタ−フェイス操作を記録再生するためのプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110610

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110912

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111020

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141028

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

LAPS Cancellation because of no payment of annual fees