JP5947888B2 - 統合開発環境におけるライブ・ブラウザー・ツーリング - Google Patents

統合開発環境におけるライブ・ブラウザー・ツーリング Download PDF

Info

Publication number
JP5947888B2
JP5947888B2 JP2014515870A JP2014515870A JP5947888B2 JP 5947888 B2 JP5947888 B2 JP 5947888B2 JP 2014515870 A JP2014515870 A JP 2014515870A JP 2014515870 A JP2014515870 A JP 2014515870A JP 5947888 B2 JP5947888 B2 JP 5947888B2
Authority
JP
Japan
Prior art keywords
file
browser
fetch
mapping
source
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
JP2014515870A
Other languages
English (en)
Other versions
JP2014523567A (ja
JP2014523567A5 (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
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 JP2014523567A publication Critical patent/JP2014523567A/ja
Publication of JP2014523567A5 publication Critical patent/JP2014523567A5/ja
Application granted granted Critical
Publication of JP5947888B2 publication Critical patent/JP5947888B2/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/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • G06F8/355Round-trip engineering
    • 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/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)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Description

従来技術
[0001] ワールド・ワイド・ウェブは、近代的な生活の至る所にある一部になっている。対応して、ウェブの開発は、急速に発展しつつある産業となっている。ウェブの開発は、従前のソフトウェア開発とは様々な深い面で異なる。
[0002] 複雑なウェブ・サイトは、様々な異なるページで構成することができ、そのコンテンツは、多くの異なるファイルから生成することができる。コンテンツは、ウェブ開発者によって、無限数の方法でファイル間において分割することができる。ウェブ開発者は、ファイルにおいてコードを書き、このコードがウェブ・サーバーによって処理されブラウザーによって表示されると、ページが得られて、これを閲覧者が見る。ウェブ・サーバーがファイルを処理すると、途中で追加のコンテンツを頻繁に生成する。ウェブ・サーバーによって処理される数行のコードが、最終的なウェブ・ページにおける数百行ものコードの生成に関与することがあり得る。クライアントがウェブ・サーバーに要求を行うと、ウェブ・サーバーは、どのファイルが応答を生成するか判断し、それらを1つのファイルに組み立て、応答をクライアントに返送する。ブラウザーがウェブ・サーバーから受信した文書をブラウザー内にロードした後、ウェブ・ページに対話処理機能(interactive features)を追加するスクリプティング言語が、文書内のコンテンツを追加、削除、または変更することもできる。
[0003] ウェブ処理を行う方法がウェブ開発に影響を及ぼす。ウェブ開発者がウェブ・サイトの一部を変更したいとき、ウェブ開発者は、ウェブ・サイトに関連するウェブ・サーバーにおけるファイルの内どれが、変更しなければならないファイルであるのか知る必要がある。更に、今日では、コードがウェブ・サーバーによって処理されてクライアントが応答を受信するまでは、サーバーがどのコンテンツが生成したのか知る方法がないので、ウェブ開発者は、彼が行おうとする変更の影響を想像することしかできない。スタティック(static)HTML文書にアプリケーション状機能を追加するために、HTMLファイルにおいてスクリプティング言語が頻繁に実行される。スクリプティング言語が実行した後、ブラウザーによって提示される文書は、サーバーから届いたオリジナル文書とは異なる。現在、ブラウザーにおいて選択したエレメントを、ウェブ・サーバーから受信したファイルにマッピングする自動的な方法はない。
[0004] フェッチ・ファイルにおける位置範囲に選択をマッピングし、フェッチ・ファイルにおける位置範囲をソース・ファイルにおける位置範囲にマッピングすることによって、ブラウザーにおける選択を、それを生成したソース・コード・ファイルにおける位置範囲にマッピングすることができる。ソース・ファイルにおける位置範囲を、フェッチ・ファイルにおける位置範囲にマッピングし、フェッチ・ファイルにおける位置範囲をブラウザーにおける選択にマッピングすることによって、ソース・ファイルにおける位置範囲を、ブラウザーにおける選択にマッピングすることができる。
[0005] ブラウザー・ファイルと、ウェブ・サーバーからフェッチしたオリジナル文書との間に関連を作り、ブラウザー選択をブラウザー・ファイルにマッピングし、ブラウザー・ファイルとオリジナル・フェッチ・ファイルとの間の関連を使用してブラウザーにおける選択を、ウェブ・サーバーからフェッチしたオリジナル文書にマッピングすることによって、ブラウザーにおける選択は、フェッチ・ファイルにおける位置範囲にマッピングすることができる。
[0006] フェッチ・ファイルの生成の間にメタデーターを収集することによって、フェッチ・ファイルにおける位置範囲を、フェッチ・ファイルを生成したソース・ファイルにおける位置範囲にマッピングすることができる。メタデーターは、マッピング・テーブルを作るために使用することができ、マッピング・テーブルは、フェッチ・ファイルにおける位置範囲をソース・ファイルにおける位置範囲にマッピングするために使用することができる。また、このマッピング・テーブルは、ソース・ファイルにおける位置範囲を、フェッチ・ファイルにおける位置範囲にマッピングするために使用することもできる。ブラウザー・ファイルとオリジナル・フェッチ・ファイルとの間の関連は、フェッチ・ファイルにおける位置範囲をブラウザーにおける選択にマッピングするために使用することができる。これらのタスクを実行するモジュールをIDE(統合開発環境)に統合することができる。
[0007] HTTP要求に応答してHTMLコードをウェブ・サーバーにおいて生成するとき、メタデーター、即ち、HTMLコードのスニペットを逆に特定のソース・ファイルにおける特定の位置にマッピングする情報で、コードを拡張する(augment)ことができる。ユーザーがブラウズすることができるウェブ・ページを表すファイルを生成するコードをウェブ・サーバーにおいて実行すると、マッピング情報を、生成したファイルに注入することができ、または他のメカニズムを介してクライアント側ブラウザーに伝えることができる。クライアント側マッピング・モジュールは、ウェブ・サーバーからファイルを受信し、メタデーターを記録し、このメタデーターを使用してマッピング・テーブルを作ることができる。このマッピング・テーブルは、フェッチ・ファイルからの位置範囲を、コンテンツを最初に作ったソース・ファイルにおける対応する位置範囲にマッピングする。クライアント側モジュールは、開発機能と統合され、IDE内部で実行するブラウズ体験を提供することができる。開発者にレンダリングされ表示されるものが、ウェブ・サーバー挙動をシミュレーションした解釈ではなく製作ウェブ・サーバーの応答となるように、完全なウェブ・サーバーへのラウンド・トリップ(full round trip)を行うことによって、開発中のページにコンテンツをレンダリングすることができる。
[0008] 文書オブジェクト・モジュール(DOM)ツールが、ブラウザー・ページを表現するツリー・データー構造の可視化を提供することができる。カスケード・スタイル・シート(CSS:Cascade Style Sheet)ツールが、ルールまたはプロパティを選択し、そのルールまたはプロパティを対応するソース・ファイルにおいて変更することによって、選択したスタイル特性を、そのソース・コード・ファイルにマッピングし、HTMLエレメントのスタイル特性に対して考えられる変更を、自動的に永続的にすることを可能にすることができる。また、開発者は、変更をソース・ファイルに適用することなく、ブラウザーにおいて考えられるスタイルの変更を視認することもできる。
[0009] ウェブ・フレームワークが、クライアントにおけるブラウザーからのHTTP要求に応答してサーバーからクライアントに送られたマッピング情報を収集することができるように、サーバー側マッピング・モジュールをウェブ・フレームワークと統合することができる。
[0010] この摘要は、詳細な説明の章において以下で更に説明する概念から選択したものを簡略化された形式で紹介するために、設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
[0011] 図面において、
図1は、本明細書において開示する主題の形態にしたがって、IDEにおいてライブ・ブラウザー・ツーリング(live browser tooling)を設けるシステム100の一例を示す。 図2aは、本明細書において開示する主題の形態にしたがって、フェッチしたフィルとソース・コード・ファイルとの間でマッピングを行う方法200の一例を示す。 図2bは、 本明細書において開示する主題にしたがって、ブラウザーとフェッチ・ファイルとの間でマッピングを行う方法203の一例を示す。 図2cは、本明細書において開示する主題にしたがって、DOMにおける位置範囲と、フェッチ・ファイルにおける位置範囲との間で関連を作る方法290の一例を示す。 図2dは、本明細書において開示する主題による、フェッチ・ファイルのブロック・リストおよびDOMのブロック・リストの一例230を示す。 図2eは、ブラウザーにおける選択からDOMブロック・リストへ、次いでフェッチ・ファイルへのマッピングの一例270を示す。 図2fは、本明細書において開示する主題にしたがって、IDEにおいてライブ・ブラウザー・ツーリングを設ける方法240の一例を示す。 図3は、本明細書において開示する主題による計算環境の一例のブロック図である。 図4は、本明細書において開示する主題による統合開発環境の一例のブロック図である。
全体像
[0012] ウェブ開発において、(具体的には、MicrosoftのASP.NETのようなフレームワークにおいて)、多くの異なるソース・ファイルを組み合わせて、ユーザーがウェブ上でブラウズすることができるページを形成することができる。例えば、ウェブ・サイトは「ホーム」、「について」(About)、「連絡先」(Contact us)等というように、ウェブ・サイト上のメニュー・バーに複数のページが列挙されている場合がある。このメニュー・バーのコードは、1つのソース・ファイルに存在し、「について」のページは他のソース・ファイルに存在する等という場合がある。ユーザーがこのウェブ・サイトにブラウズするとき、全てのソース・ファイルがユーザーのブラウザーに、例えば、"About.htm"と呼ばれるファイルまたは"Contact.htm"と呼ばれるファイルというような、1つのファイルとして戻っていくことがある。
[0013] ウェブ・サイトにおいて何かを変更したい開発者は、どのファイルに、彼が変更したいエレメントが配置されているのか知らなければならない。多くの場合、変更するファイルを発見することは厄介な作業である。何故なら、例えば、ウェブ・サイトのコンテンツを分割するためにウェブ開発者が選択することができる異なる方法が多数あるからであり、更に情報はソースにコード化される代わりに、データーベースから抽出される可能性があるからである。このため、開発者は「ファイル内で発見する」(find in files)コマンドを手動で実行し、コード全体を見て回り、またはエレメントを発見できるところを思い出すことを頼りにすることを強要されることがある。
[0014] 本明細書において開示する主題の形態によれば、ブラウザーにおいて選択された任意のエレメント、キャラクタ、または位置範囲を、それを生成したソース・コードにマッピングすることができ、ソース・コードにおいて選択された任意の位置範囲を、ブラウザーにおいてソース・コードが生成するものにマッピングすることができる。コンパイルされる開発者ソース・コード(例えば、アセンブリー、バイナリ、エクゼキュータブル等にコンパイルされる)は、コンパイルの間または後の時点において、インストルメント化することができ、コールは、実行されると、コードのスニペットを特定のソース・ファイルにマッピングし、更にソース・ファイルにおける特定の位置にマッピングするメタデーターを送る(emit)。インストルメント化されたコールは、解釈されたソース・コード・ファイルに挿入することができる。ソース・コード・ファイルは、これが解釈されるときに、コードのスニペットを逆に特定のソース・ファイルにマッピングし、更にソース・ファイルにおける特定の位置にマッピングするメタデーターを送る。このメタデーターは、HTMLにおける特定の開始位置から特定の終了位置までの情報が、ソース・ファイルにおける特定の開始位置から特定の終了位置までに及ぶことを指定する注入シンボル(injected symbol)を含むことができる。
[0015] ソース・ファイルは、開発者装置において一緒にコンパイルし、サーバーにアップロードして、ユーザーがウェブ・サイトにナビゲートするときに実行されるコードを形成することができる。ウェブ・サイトのあるページがブラウズされたとき、サーバーによってファイルが生成され、ブラウザーによってユーザーのコンピューターにフェッチされる。ユーザーがサーバーにナビゲートすると、サーバーは、実行可能コード内部のメソッドを実行することができる。実行可能コードは、サーバー・コードがHTMLファイルを構築しブラウザーがこれを取り込むと、HTMLファイルの各部分がソース・コードにおけるどこから来るのかを示すメタデーターを収集することができるような方法で、インストルメント化することができる。このように、ブラウザーによってフェッチされたファイルは、ブラウザーがユーザーに表示する必要がないメタデーターを含むことがある。したがって、ブラウザーがHTMLファイルを取り込むと、ブラウザーがウェブサイト・コンテンツを示すために使用するファイルから、メタデーターを除去することができる。メタデーターは、メモリーにおけるデーター構造に存続することができる。データー構造は、ブラウザー内部における選択を、逆にソース・ファイルにマッピングするために使用することができ、更にソース・ファイルにおける選択を、フェッチ・ファイルにマッピングするために使用することができる。
[00016] ブラウザーの選択を逆にサーバーからフェッチしたHTMLファイルにマッピングすることは、一層難しくなる。何故なら、Javascript(登録商標)、MicrosoftのJScript(登録商標)、Actionscript、Apple script、VBscript等というようなスクリプティング言語は、ブラウザーにおいて実行することがあるからである。スクリプティング言語は、サーバーからフェッチされたHTMLを変化させる可能性がある。HTMLは、テキスト、リスト、テーブル、およびハイパーリンクを含むスタティック文書を生成する。スクリプティング言語は、HTMLをプレゼンテーション言語として使用して、HTMLエレメントを追加、削除、変更、および移動することによって、アプリケーション状体験を提供することができる。スクリプティング言語は、これを行うときに、ブラウザーにおいて見られる文書を表すデーター構造を変化させる。本明細書において開示する主題の形態によれば、サーバーから受信したオリジナル・ファイルのコピーを維持することができる。このオリジナル・ファイルにおける単語およびエレメントに識別子を割り当てることができる。スクリプティング言語が実行すると、基礎になるHTMLに対する変更を、ウェブ・サーバーから受信したオリジナルHTMLと比較することができる。HTMLファイルのブロック・リストおよびDOMのブロック・リストを作ることができ、同一のブロックは同一の識別子を有するので、データー構造においてあるエレメントが、スクリプティング言語の実行の結果移動した場合でも、そのエレメントを、ウェブ・サーバーから受信したオリジナルHTMLにマッピングすることができる。スクリプティング言語が文書を変更すると、ブラウザーにおけるユーザーの選択を、フェッチしたオリジナル・ファイルにマッピングすることを可能にするために、差分アルゴリズム(differencing algorithm)を実行することができる。
[0017] 本明細書において説明する特徴を組み合わせると、ブラウザーにおける選択を、ソース・コードにおける対応する位置にマッピングすることが可能になる。ソース・コードの選択は、そのソース・コードの選択が最終的にブラウザーにおいて生成するものに、逆にマッピングすることができる。即ち、ブラウザーにおける選択から開発者の装置におけるソース・ファイルのマッピングおよびその逆の組み合わせによって、ユーザーがエレメントを選択する行為によって、開発者が、ウェブ・ページにおけるエレメントのソース・コード・ファイルにアクセスすることを可能にする。例えば、開発者がウェブ・サイトの連絡先ページにおける電話番号を変更したいと仮定する。開発者はIDEを開き、クライアント・コンピューターにおけるクライアント側ブラウザーにおいて視認コマンド(view command)を使用してブラウザーを呼び出し、ブラウザーを開いて、連絡先ページにナビゲートし、DOM(文書オブジェクト・モデル)検査ツールを使用して、連絡先ページにおける電話番号を選択することができる。この連絡先ページのソース・ファイルは、ブラウザー表示に隣接して表示することができるので、このブラウザー・ページを生成するHTMLコードを、ブラウザーにおけるウェブ・ページと同時に視認することができる。ソース・コードのビュー(view)は、ブラウザーにおける選択に対応するソース・ファイルにおける位置までスクロールすることができる。例えば、クライアント側モジュールは、ユーザーを連絡先ページに、そして連絡先ファイルの正確な位置まで連れていくことができる。この位置に、電話番号がハードコード化されているか、あるいはファイルまたはデーターベースにおいて電話番号にアクセスするコマンドが発見される。ソース・ファイルにおける選択を、フェッチ・ファイルから生成されたブロック・リストにおける位置範囲にマッピングすることによって、ソース・ファイルにおける選択を、ブラウザーにおける位置範囲にマッピングすることができる。フェッチ・ファイルにおける位置範囲は、ソース・ファイルにおける選択を生成に関与したダイナミック・ブラウザー・ファイル(例えば、DOM)から生成されたブロック・リストにおける位置範囲にマッピングすることができる。
[0018] ソース・ファイルにおいて電話番号を変更するユーザー入力を受けたことに応答して、このファイルを保存し、サイトを再構築し、コードをサーバーにアップロードすることができる。更に、クライアント側マッピング・モジュールは、ブラウザーにおけるページがソース・コードと一致するかまたは一致しないか、開発者に伝えることができる。(対照的に、既知のブラウザーは、そのブラウザーがファイルの最新バージョンを実行しているかまたはそうでないのかわからない。)画面上に表示される選択肢を選択することによって、表示されたウェブ・ページと対応するソース・ファイルを引き出すことができ、ソース・ファイルの最新バージョンを示すことができる。
[0019] クライアント側マッピング・モジュールは、DOM(文書オブジェクト・モデル)ツリー可視化ツールを含むことができる。このツールは、HTMLからエレメントを作り、HTMLページのエレメントの図式表現を表示することができる。ウェブ・ページの他の形態は、ページが見える様子である。ページが見える様子は、そのスタイルと呼ばれ、そのページで使用される色、サイズ、レイアウト、フォント等を含む。ページのスタイルは、カスケーディング・スタイル・シート(CSS)によって決定される。スタイルは、複数の場所において定めることができ、文書におけるいずれかの場所、エレメントの右隣り、別のCSSファイル等が含まれるが、これらに限定されるのではない。本明細書において開示する主題の形態によれば、ブラウザーに関連するCSSツールは、ページにおける特定のエレメントについてスタイリング(styling)を分析することができる。
[0020] 特定のタグ(HTMLエレメント)について、CSSツールは、そのエレメントに適用される全てのスタイルを格子形式で表示することができる。CSSツールは、色、サイズ、余白、フォント・サイズ、パディング(padding)、太字、イタリック体等を含むスタイリングの形態を、表示されるツール・ペインにおいて、例えば、ブラウザー表示の下に表示することができる。スタイリング値に変更が行われると、そのライブDOMファイルを変更することによって、この変更を直ちにブラウザーに反映することができる。更に、スタイルは、CSSツールによって表示される格子から、そのエレメントに対してスタイルを定めるソース・ファイルにマッピングすることができる。例えば、特定のソース・ファイルにおける特定のエレメントに対して色が定められる場合、クライアント側マッピング・モジュールは、そのエレメントの色が定められるソース・ファイルの識別を判定することができる。文書またはファイルにおいて特定のスタイルが定められた正確な位置を提示することができる。変更する特性を定めるエレメントのプロパティを選択することによって、または変更する特性を定める規則を選択することによって、クライアント側マッピング・モジュールは、開発者がソース・ファイルを変更することによってその変更を行うことができるソース・ファイルにおける位置を判定し表示することができる。CSS規則マッピングは、フェッチしたオリジナル・ファイルにおけるCSS規則毎に一意の識別子を生成し、これらの一意の識別子を使用してDOM規則を逆にそのオリジナル・ソースにマッピングすることによって行うことができる。実行時URLを開発者装置におけるオリジナル・プロジェクト・パスに関連付けるために、プロジェクト・システムを使用することができる。
[0021] 特定のページを表示するためにブラウザーによって用いられるライブDOMファイルからソース・ファイルへの選択マッピングは、入力をサーバーに送り、出力をサーバーから受信することができる(ここでは、サーバーを経由するラウンド・トリップと呼ぶ)。サーバーではかなりの量の処理が行われる可能性があるので、開発者の変更の成果がどのようなものか判断することは難題であり得る。例えば、HTMLコードはある項目をオーダーにおいて定めることができるが、このオーダーがサーバーにおいて処理されるまでは、結果的に作られるページがどのように見えるのか知ることができない。何故なら、いくつの項目がオーダーされたか等というようなサーバーの処理に依存するからである。以前の開発ソフトウェアは、設計ビューを提供し、サーバーがそのサーバー側処理を実行した後に、ブラウザーにおいてファイルがどのように見えることになるか開発コンピューター上でシミュレーションを行おうとしていた。
[0022] 開発コンピューターは通例ライブ・サーバーにおける情報にアクセスできないので、そしてサーバー側処理を実行しないので、開発シミュレーションは、処理がサーバーにおいて行われたときのページの外観に非常に近くない場合が多い。本明細書において開示する主題の形態によれば、ウェブ・サーバーからデーターが要求される。開発ファイルがウェブ・サーバーに送られ、ウェブ・サーバーはこのファイルを処理して、結果を開発装置に戻す。HTTP要求は、開発装置が、実際のカストマー体験に忠実である成果を表示できるように実行することができる。言い換えると、IDEにおいてブラウザーの現在のページのコンテンツをレンダリングする代わりに、サーバーへの完全なラウンド・トリップを行って、開発者にレンダリングされるものが、ウェブ・ページを見ているユーザーにサーバーが提供するものと同じになるようにする。
[0023] 選択マッピングを行うために、ウェブ・サーバー・コンピューターにおいて生成されたメタデーターに基づいたマッピング・テーブルを作ることができる。このマッピング・テーブルは、ブラウザーからのHTTP要求に応答して、クライアントがウェブ・サーバーから受信したファイル(即ち、フェッチ・ファイル)の一部をソース・ファイルにマッピングすることができる。このファイルの各部分は、メタデーターに基づく識別子を、ファイルの各セクションに割り当てることによって特定することができる。ファイルの特定された部分を選択する選択イベントを検出したことに応答して、このファイルの選択された部分を、フェッチした文書に逆にマッピングし、更にソース・ファイルに逆にマッピングすることができ、これによって、ユーザーがサーバーへのラウンド・トリップによってページのコンテンツを取り込み、ライブ・ブラウザーのコンテンツをソース・ファイルにマッピングすることを可能にする。
IDEにおけるライブ・ブラウザー・ツーリング
[0024] 図1は、本明細書において開示する主題の形態にしたがって、IDEにおいてライブ・ブラウザー・ツーリング(live browser tooling)を設けるシステム100の一例を示す。システム100の全部または一部は、図3に関して以下で説明するコンピューターのような、1つ以上のコンピューターに存在することができる。システム100は、図4に関して説明するソフトウェア開発コンピューターのような、ソフトウェア開発コンピューターにおいて全体的にまたは部分的に実行することができる。システム100の全部または一部は、IDE104のようなIDE内部で実行することもできる。IDE104は、図4に関して説明するもののようなIDEとすることができ、または任意の他のIDEとすることもできる。システム100の全部または一部は、IDEの外部で実行することができる。システム100の全部または一部は、プラグインまたはアドオンとして実現することもできる。
[0025] システム100は、コンピューター102のような1つ以上のコンピューターまたは計算デバイスを含むことができ、プロセッサー142等のような1つ以上のプロセッサー、メモリー144のようなメモリー、およびサーバー・モジュール108等のような、IDEにおけるライブ・ブラウザー・ツーリングをサポートするサーバー側処理に備える1つ以上のサーバー側モジュールを含む。また、システム100は、コンピューター103のような1つ以上のコンピューターまたは計算デバイスを含むこともでき、プロセッサー143等のような1つ以上のプロセッサー、メモリー145のようなメモリー、およびクライアント・モジュール116のような、IDEにおけるライブ・ブラウザー・ツーリングを設ける1つ以上のクライアント側モジュールを含む。当技術分野において周知の他のコンポーネントも含まれてもよいが、ここでは示されていない。尚、サーバー・モジュール108のような1つ以上のサーバー・モジュールをメモリー144にロードして、プロセッサー142のような1つ以上のプロセッサーに、1つ以上のサーバー側モジュールに帰せられる(attribute)動作を実行させることができることは認められよう。尚、クライアント・モジュール116の内1つ以上というような、1つ以上のクライアント側モジュールをメモリー145にロードして、プロセッサー143のような1つ以上のプロセッサーに、1つ以上のクライアント側モジュールに帰せられる動作を実行させることができることも認められよう。
[0026] コンピューター102は、HTTPプロトコルを使用してウェブ・ページおよび他の文書をブラウザーに配信するウェブ・サーバー・コンピューターを表すことができる。コンピューター102は、ウェブ・フレームワーク104のような、1つ以上のウェブ・フレームワークを含むことができる。ウェブ・フレームワーク104は、ASP.NET、PHP、PERL、Ruby等のようなウェブ・フレームワークとすることができるが、これらに限定されるのではない。本明細書において開示する主題の形態にしたがってライブ・ブラウザー・ツーリングを提供するシステムのサーバー部は、図1ではサーバー・モジュール108等によって表されている。サーバー・モジュール108等は、ウェブ・フレームワークに対するプラグインまたはアドインとすることができる。ソース・コード132および/またはコンパイルしたコード134をサーバー・モジュール108等から受信することができ、HTMLファイルを生成するために使用することができる。このHTMLファイルは、ブラウザー118のようなブラウザーからのHTTP要求に応答して、サーバー・コンピューター102からクライアント・コンピューター103に送られる。
[0027] サーバー・モジュール108は、クライアント・コンピューター103のようなクライアント・コンピューターに送られるHTMLファイル(「フェッチ・ファイル」(fetched file))を生成することができる。サーバー・モジュール108は、ソース・ファイルに関する情報を送ることができ、このソース・ファイルからHTMLファイルのセクションが生成される。ソース・ファイルに関する情報は、クライアント・コンピューターに戻すことができる。例えば、クライアントに送られるHTMLファイルの中に情報を埋め込むことによって、情報を戻すことができ、または別のファイルにおいて情報を送ることができる。クライアント・コンピューターに送られるHTMLファイルにメタデーターが含まれるのか、別個に送られるのか、または全く送られないのかは、ウェブ・サイト構成設定、HTTPヘッディング情報、クエリー・ストリング情報、フォーム・データー等によって制御することができる。
[0028] サーバー・モジュール108は、注釈付きHTMLファイルにおける位置を、ソース・コード・ファイルにおけるソース・コードのセクションと関連付けるメタデーターを生成することができる。例えば、XMLテーブルを用いて、ソース位置および宛先位置双方を格納することができる。あるいは、トークンを用いて、HTMLファイルにおける位置範囲を、ソース・コード・ファイルのセクション等と関連付けることができる。本明細書において開示する主題の一部の形態によれば、サーバー・モジュール108は開始トークンおよび終了トークンを生成することができ、これらが合わさって、サーバー・コンピューター102によって生成されるHTMLファイルにおいて、特定のソース・ファイルにおける特定の位置に由来する位置の範囲を定める。尚、トークンのフォーマットは任意の適したフォーマットとすることができることは認められよう。例えば、1つのフォーマットは、$startToken$および$endToken$とすることができる。$startToken$は、考慮対象のHTMLコードの部分に対するHTMLファイルにおける開始位置を定めるために使用することができ、$endToken$は、HTMLファイルにおける終了位置を定めるために使用することができる。各開始トークン/終了トークンには連番または他の識別子を割り当てて、1対の開始および終了トークンを他の対の開始および終了トークンから区別することができる。
[0029] サーバーが要求ファイル(requested file)を生成し終えた後、コンテキスト・データーを生成することができる。コンテキスト情報を露出するには、任意のデーター構造を使用することができる。コンテキスト・データーを露出する1つの方法は、XMLフォーマットのデーター構造である。このデーター構造は、マッピング・テーブルとして使用することができ、HTMLファイルにおけるセクションを、ソースのセクションと関連付けるために必要なデーターを含む。例えば、ソース・ファイルにおいて、開始および終了トークンによって定められるHTMLにおける位置の範囲に対応する範囲のテーブルを含むことができる。本明細書において開示する主題の一部の形態によれば、コンテキスト情報は、クライアント・コンピューターに送られるHTMLファイルの終端に含めることができる。開始および終了トークンの各対は、開始および終了トークンの特定の対を識別する識別子によって識別することができ(例えば、その開始および終了トークンの対に一意の識別子)、HTMLファイルにおける位置と、HTMLスニペットが生成された元の特定のソース・ファイルにおける位置との間のマッピングを、識別子を照合することによって可能にする。
[0030] 例えば、フェッチ・ファイルにおいて、ソース・ファイルの位置0から開始する10キャラクタの範囲にマッピングされる、位置50から開始する10キャラクタ範囲に対して、この10キャラクタ範囲に入る、フェッチ・ファイルにおける選択位置58を、以下のようにして、ソース・ファイルにマッピングすることができる。フェッチした範囲の開始位置を、選択位置から減算することができ、その結果をソース・ファイルにおける範囲の開始位置に加算することができる。この場合、58−50+0=8となり、8がソース・ファイルにおいて選択された位置となる。同じ演算を、フェッチ・ファイル内において選択した範囲の開始位置および終了位置について実行して、ソース・ファイルにおける対応する範囲の開始および終了を発見することができる。1つのソース位置範囲が、サーバー・コンピューター102によって生成されたHTMLファイルにおける複数の位置範囲にマッピングする可能性もある。例えば、ソース・ファイルが、現在の位置において他のソース・ファイルを含むためのコマンドを含むことができる。
[0031] サーバーによって生成されたHTMLにおけるコンテンツは、ソース・ファイルにおけるコンテンツと、キャラクタ毎に同一である可能性がある。このタイプのコンテンツを、リテラル・コンテンツ(literal content)と呼ぶ。リテラル・コンテンツは、例えば、HTMLであることができる。サーバーによって生成されたHTMLにおけるコンテンツは、ソース・ファイルにおけるコンテンツとは異なる可能性がある。このタイプのコンテンツを非リテラル・コンテンツ(non-literal content)と呼ぶ。非リテラル・コンテンツは、サーバーによって生成されたHTMLファイルにおいてHTMLを生成するために実行されるソース・ファイルにおけるコードとすることができる。サーバーによって生成されるメタデーターは、以下のコンテキスト情報を含むことができる。ソースをフェッチ・ファイルにマッピングするために使用される識別子、ソース・ファイルにおける開始位置、ソース・ファイルにおける終了位置、あるいは代わりに、ソース・ファイルにおける長さ、ソース・ファイルの名称またはパス(出力が作られた元)、コンテンツがリテラル・コンテンツかまたは非リテラル・コンテンツかを示すインディケーター、フェッチ・ファイルにおける開始位置、フェッチ・ファイルにおける終了位置、または代わりに、フェッチ・ファイルにおける長さ。この情報は、フェッチ・ファイルからソース・ファイルへの移動(translation)を可能にする。
[0032] 図2aは、本明細書において開示する主題の形態にしたがって、ブラウザーおよびソース・コード・ファイル間でマッピングを行う方法200の一例を示す。図2aにおいて説明する方法は、図1に関して以上で説明したようなシステムによって実施することができるが、これに限定されるのではない。以下で説明する動作の一部は任意であることができる。以下で説明する動作の一部は、以下で説明するのとは異なるシーケンスで実行することができる。201において、ブラウザーはHTTP要求を、ウェブ・サーバー・コンピューター102のような、ウェブ・サーバーに送って、特定のウェブ・ページを要求することができる。202において、サーバー側ブラウザー・モジュールを実行するウェブ・サーバーがHTTP要求を受けることができ、204において、応答して、HTMLファイルおよびマッピング・メタデーターを含む応答を生成することができる。本明細書において開示する主題の一部の形態によれば、生成されたHTMLファイルは、HTMLファイルにおける各出力エレメントの位置範囲を定める注釈を含むことができる。ウェブ・サーバー・コンピューターは、メタデーターを生成することができる。このメタデーターは、HTMLファイルにおける各注釈付きエレメントについてのコンテキスト・データーを含むマッピング・テーブルを含む。ウェブ・サーバーは、注釈付きHTMLファイルおよびメタデーターをクライアントに送ることができる。206において、クライアント・ファイルは注釈付きHTMLファイルおよびメタデーターを受信することができる。メタデーターは、HTMLに埋め込むことができ、または別個に送ることもできる。208において、メタデーターを用いてデーター構造を生成することができる。このデーター構造は、フェッチ・ファイルとソース・コード・ファイルとの間、およびソース・ファイルとフェッチ・ファイルとの間でマッピングを行うために使用することができる。210において、HTMLファイルから注釈をはぎ取ることができ、212において、結果的に得られたダイナミック・ブラウザー・ファイルを、表示のためにブラウザーに渡すことができる。ダイナミック・ブラウザー・ファイルは、DOMとして表すことができる。
[0033] コンピューター103は、ウェブ・ブラウザー(例えば、ブラウザー118)をホストするクライアント・コンピューターを表すことができる。ブラウザー118は、任意のブラウザーとすることができ、Mosaic、MicrosoftのInternet Explorer(登録商標)、Mozilla、Netscape、Firefox等を含むがこれらに限定されるのではない。ウェブ・ブラウザーは、ワールド・ワイド・ウェブにおける情報リソースを引き出し、提示し、そしてスキャンする(traverse)ためのソフトウェア・アプリケーションである。情報リソースは、ユニフォーム・リソース識別子(URI)によって特定され、ウェブ・ページ、画像、ビデオ、または他のコンテンツ要素であってもよい。コンピューター103は、ソフトウェア開発コンピューターを表すことができる。コンピューター103は、IDE110をホストすることができる。IDE110は、本明細書において開示する主題の形態によるIDEにおけるライブ・ブラウザー・ツーリングのために、1つ以上のクライアント・モジュール116等を含む。1つ以上のクライアント・モジュール116は、ブラウザー118、マッピング・モジュール136、DOMツリー・ビジュアライザ160、CSSツール162、および/またはフィルター124を含むことができる。また、システム100は、以下の内任意のものまたは全てを含むこともできる。マッピング・テーブル138、1つ以上のソース・ファイル(図1におけるソース・ファイル126に代表される)、フェッチ・ファイル128、および/またはライブDOMのようなダイナミック・ブラウザー・ファイル。文書オブジェクト・モデル(DOM)は、HTML、XHTML、およびXML文書におけるオブジェクトを表しこれらと相互作用する相互プラットフォーム、言語独立表示である。DOMエレメントは、限定ではなくJScriptのようなスクリプティング言語を含むプログラミング言語によってアドレスおよび操作することができる。DOMは、任意の方向のナビゲーションをサポートする。即ち、DOMは、子供からその親、親からその子供、および子供から前の兄弟へのナビゲーションをサポートする。また、コンピューター103は、ウェブ・サーバー・コンポーネント(例えば、ウェブ・フレームワーク、およびサーバー・モジュール108に類似する1つ以上のサーバー・モジュール)(図示せず)も含むことができる。コンピューター102および103は、ネットワーク114を介して接続することができる。
[0034] ブラウザー118は、HTTP要求を、ウェブ・サーバー・コンピューター102のようなウェブ・サーバーに送ることができる。あるいは、要求をコンピューター103におけるウェブ・サーバーに送ることもできる。HTTP要求は、ウェブ・サイトのページを求める要求とすることができる。要求されるHTMLファイルは、本明細書で記載するような、注釈付きHTMLファイルとすることができる。メタデーターは、別個に送ることができ、または注釈付きHTMLファイル内部に埋め込むことができる。HTMLファイル内部における注釈の必要性をなくす追加のメタデーターを供給することができる。HTTP要求を受けたことに応答して、ウェブ・サーバー・コンピューター102はHTMLファイルを生成することができ、このファイルの中に、HTMLにおける位置範囲をソース・ファイルにおける対応する位置範囲にマッピングするメタデーターが注入される。注釈付きHTMLファイルは、クライアント・コンピューター103に送ることができる。あるいは、メタデーターを別個のファイルで送ることもできる。クライアント・モジュール116の内1つ以上のモジュールが注釈付きHTMLファイル、フェッチ・ファイル128を受信することができ、メタデーターおよび/または注釈をはぎ取ることができ、メタデーターからマッピング・テーブル138を構築することができ、メタデーターを用いずにブラウザーにファイルを生成することができる。
[0035] フェッチ・ファイルから生成され、ブラウザーがウェブ・ページを得て表示するために使用するファイルを、ダイナミック・ブラウザー・ファイルと呼び、DOM130のようなDOMに変換することができる。あるいは、メタデーターを別個に送ることもできる。HTTP要求を受けたことに応答して、サーバー・モジュールはHTMLファイルおよびメタデーター・ファイルを生成することができ、このファイルにおいて、フェッチ・ファイルにおける各出力エレメントをソース・ファイルにおける対応する位置にマッピングするメタデーターが提供される。HTMLファイルおよびメタデーター・ファイルは、クライアント・コンピューター103に送ることができる。クライアント・モジュール(1つ以上)116は、HTMLファイル、(例えば、フェッチ・ファイル128)、およびメタデーター・ファイルを受信することができる。マッピング・モジュール136は、このメタデーターからマッピング・テーブル138を構築することができ、このHTMLファイルをブラウザーに供給することができる。マッピング・モジュール136は、先にもっと詳しく説明したように、識別子を照合することによって、ダイナミック・ブラウザー・ファイルまたはDOM130とソース・ファイル126との間で、マッピング・テーブル138を使用して、マッピングを行うことができる。ブラウザー118は、マッピング・テーブル138における情報に基づいて、ブラウザー118において表示されているページに対して、ブラウザー表示に隣接して、ソース・コード・ファイル(例えば、ソース・コード・エディター(例えば、ソース・コード・エディター119)におけるソース・ファイル)を同時に表示することができる。
[0036] コンピューター103は、IDE110をホストすることができる。IDE110は、本明細書において開示する主題の形態にしたがって、ブラウザーにおける選択とウェブ・サーバーからのフェッチ・ファイルとの間でマッピングを行う1つ以上のモジュール(例えば、選択マッピング・モジュール137)を含む。選択マッピング・モジュール137は、フィルタリング・モジュールを含むことができる。あるいは、フィルター124のようなフィルタリング・モジュールは、選択マッピング・モジュール137に対して外部であることもできる。選択マッピング・モジュール137は、差分モジュールを含むことができる。あるいは、差分モジュール120のような差分モジュールは、選択マッピング・モジュール137に対して外部であることもできる。選択マッピング・モジュール137は、ブロック・リスト生成モジュールを含むことができる。あるいは、ブロック・リスト生成モジュール122のようなブロック・リスト生成モジュールは、選択マッピング・モジュール137に対して外部であることもできる。IDE110は、ブラウザー118、レイアウト・エンジン(図示せず)および/またはブラウザー内にレンダリングされたファイルにおいて実行するスクリプティング言語150の内1つ以上を含むことができる。IDE110は、ソース・コード・エディター119のような、ソース・コード・エディターを含むことができる。
[0037] また、システム100は、以下の内の任意のものまたは全てを含むことができる。フェッチ・ファイル128のようなフェッチ・ファイル、DOM130のようなダイナミック・ブラウザー・ファイル、フェッチ・ファイル・ブロック・リスト129のような、フェッチ・ファイルから得られたブロック・リスト、およびDOMブロック・リスト127のような、DOMから得られたブロック・リスト。ブラウザー118は、ウェブ・サーバーにウェブ・サイトのページを求める要求(例えば、HTTP要求)を送ることができる。応答して、ブラウザー118は、ウェブ・サーバーからウェブ・ページを受信することができる。このウェブ・ページはHTMLファイルであるとよい。ブラウザー118によって受信されたファイルは、フェッチ・ファイル28としてメモリー145に格納することができる。HTMLファイルがウェブ・サーバーから受信されると、本明細書において開示する主題の一部の形態にしたがって、フィルター124のようなモジュールがHTMLファイルにおける各エレメントに識別子を割り当てて、異なる各エレメントにそれ自体の識別子が割り当てられるようにすることができる。また、単語にも識別子を割り当てることができる。HTMLファイルにおけるエレメントは、HTML開始タグおよびHTML終了タグの対の存在によって境界が定められる。フィルター124は、MIME型「テキスト」に動作するMIME(多目的インターネット・メール拡張)フィルターとしてもよい。尚、代わりに、スクリプティング言語が実行する前の他の時点で(例えば、HTMLファイルがブラウザーにレンダリングされた後)、識別子をHTMLフィアルにおける各エレメントに割り当ててもよいことは認められよう。
[0038] 識別子は、スクリプティング言語が実行しエレメントが動かされてもまたは変化させられても、DOM内のエレメントを、フェッチ・ファイルにおけるエレメントに、そしてその逆にマッピングすることを可能にする。尚、削除されたエレメントをマッピングすることはできないことは認められよう。同様に、DOMに挿入されたエレメントを、フェッチ・ファイルにおける対応するエレメントにマッピングすることもできない。何故なら、これはフェッチ・ファイルにはないからである。HTMLフェッチ・ファイル128を解析して、DOM130のような文書オブジェクト・モデル(DOM)を求めることができる。文書オブジェクト・モデル(DOM)は、HTML、XHTML、およびXML文書におけるオブジェクトを表しこれらと相互作用する相互プラットフォーム、言語独立表示である。DOMエレメントは、限定ではなくJScriptのようなスクリプティング言語を含むプログラミング言語によってアドレスおよび操作することができる。DOMは、任意の方向のナビゲーションをサポートする。即ち、DOMは、子供からその親、親からその子供、および子供から前の兄弟へのナビゲーションをサポートする。
[0039] フェッチ・ファイル128から作られたDOM130をメモリー145に格納することができ、ブラウザー118におけるビュー104のような、ウェブ・ページのビューを表示するために、レイアウト・エンジンによって使用することができる。DOM130は、スクリプティング言語の実行によって変更することができる。つまり、DOM130はときの経過とともに変化することもあり、動的である。ブラウザー118が最初にサーバーからフェッチしたウェブ・ページを提示するとき、ビュー104は、フェッチ・ファイル128に対応する。HTMLをDOMに変換することによって、スクリプティング言語がブラウザー118内部で実行することが可能になる。JScriptのようなスクリプティング言語が実行することができる。スクリプティング言語が実行すると、スクリプティング言語はDOMを変化させる可能性がある。DOMが変化すると、ビュー104がブラウザーにおいて変化する可能性がある。つまり、スクリプティング言語が実行するとすぐに、フェッチ・ファイルはもはや現在のビューを反映しなくなる。DOMが変化すると、対応する変化がビュー104において反映される。
[0040] ブロック・リスト生成モジュール122のようなブロック・リスト生成モジュールは、DOM130からブロック・リスト(例えば、DOMブロック・リスト127)を生成することができる。ブロック・リスト生成モジュール122のようなブロック・リスト生成モジュールは、フェッチ・ファイル128からブロック・リスト(例えば、フェッチ・ファイル・ブロック・リスト129)を生成することができる。差分モジュール120のような差分モジュールは、フェッチ・ファイル・ブロック・リスト129およびDOMブロック・リスト127に対して実行して、DOMがもはやフェッチ・ファイルを反映しなくても、ブロック・リスト間でマッピングを行うことができる。差分モジュール120によって実行される処理について、以下で更に詳しく説明する。
[0041] つまり、本明細書において開示する主題の形態によれば、スクリプティング言語がブラウザー118におけるビュー104の基礎となるDOMデーター構造を変化させると、DOMおよびフェッチ・ファイルのブロック・リストに対して差分アルゴリズムを実行し、ブロック・リストにおけるマッピングの変化に対処することができる。DOMブロック・リスト127は、スクリプティング言語の実行によって行われた変化を反映するように変化することができる。
[0042] 図2bは、本明細書において開示する主題の形態にしたがって、ブラウザーにおける選択をウェブ・サーバーからフェッチ・ファイルにマッピングする方法203の一例を示す。図2bにおいて説明する方法は、図1に関して説明したようなシステムによって実施することができるが、これに限定されるのではない。以下で説明する動作の一部は、任意とすることができる。以下で説明する動作の一部は、以下で説明するのとは異なるシーケンスで実行することができる。
[0043] 213において、ブラウザーは、HTTP要求のような要求をウェブ・サーバーに送ることができる。214において、ブラウザーは、要求したファイルをウェブ・サーバーから受信することができる。ブラウザーの要求に応答してブラウザーが受信したファイルを、ここでは、フェッチ・ファイルと呼ぶ。フェッチ・ファイルは、HTMLファイルとすることができる。フェッチ・ファイルをメモリーにロードすることができる。214において、フェッチ・ファイルを受信すると、異なる各エレメントにそれ自体の識別子が割り当てられるように、216においてHTMLファイルにおけるエレメントに識別子を割り当てることができる。ブラウザーによって、HTMLファイルをDOMに変換し、レンダリングすることができる。実行中、218において、JScriptのようなスクリプティング言語をDOMにおいて実行することができる。スクリプティング言語は、JScriptに限定されるのではない。220において、スクリプティング言語は、実行するに連れて、DOMを変化させることがある。222において、ブロック識別子を照合することによって、DOMとフェッチ・ファイルとの間の関連を生成することができる。これについては、以下で更に詳しく説明する。224において、ブラウザーにおいて表示されている文書の一部を選択するユーザー入力に応答して、この選択をDOMの一部にマッピングすることができる。226において、このDOMの一部を、フェッチ・ファイルのセクションにマッピングすることができる。
[0044] 図2cは、本明細書において開示する主題の態様にしたがって、DOMにおける位置範囲とフェッチ・ファイルにおける位置範囲との間で関連を作る方法290の一例を示す。図2cにおいて説明する方法は、図1に関して説明したようなシステムによって実施することができるが、これに限定されるのではない。以下で説明する動作の一部は、任意とすることができる。以下で説明する動作の一部は、以下で説明するのとは異なるシーケンスで実行することができる。
[0045] 292において、フェッチ・ファイルにおける各エレメントに、異なる識別子を割り当てることができる。エレメントは、開始タグおよび終了タグの存在によって特定することができる。294において、フェッチ・ファイルからブロック・リストを作ることができる。DOMから、他のブロック・リストを作ることができる。フェッチ・ファイル(HTMLファイル)に対してブロック・リストを作るために、このファイルを解析することができ、HTMLファイルにおいて発見された開始および終了タグ対毎に、ブロックを作ることができる。エレメントに割り当てられた識別子を保存することができる。ブロックは、HTMLファイルにおける単語毎に作ることができる。本明細書において開示する主題の一部の形態によれば、単語には、その単語のハッシュである識別子を割り当てることができる。つまり、HTMLファイルにおいて特定の単語が1回よりも多く発見された場合、この特定の単語の各出現は同じ識別子を有する。
[0046] DOM294に対してブロック・リストを作るために、DOMをHTMLファイルに変換することができ、フェッチ・ファイルに関して以上で説明したプロセスを使用して、DOMブロック・リストを生成することができる。あるいは、DOMツリーを辿ることができ、それによって、以上で説明したようなDOMブロック・リストを作ることができる。296において、差分モジュールが、変更ヘッケル差分アルゴリズム(modified Heckel Diffing Algorithm)のような、差分アルゴリズムを2つの作成したブロック・リストに対して実行することができる。この差分アルゴリズムは、DOMブロック・リストおよびフェッチ・ファイル・ブロック・リストに対して実行することができる。HTMLファイルにおける各開始および終了タグを、1つのブロックとして扱うことができる。つまり、ブロックは、フェッチ・ファイルおよびDOMにおける単語毎に、そして開始または終了タグ対毎に作ることができる。同じタグがHTML文書において1回よりも多く使用されることは頻繁にあるので、一意の識別子を各開始タグに割り当てることができる(例えば、フェッチ・ファイルにおける対応するエレメントの属性に、一意の識別子を設定することによって)。単語は、それらのテキストをそれらの識別子として使用し、したがって、同じ単語が文書において1回よりも多く存在する場合、一意ではない。フェッチ・ファイル・ブロックが、DOMブロックの一意の識別子と一致する一意の識別子を有する場合、2つのブロックは同一であると判断される。これらの関連を記録することができる。テキストの場合のように、フェッチ・ファイル・ブロックが一意でない識別子を有するが、フェッチ・ファイルにおいて関連するブロックに隣接して存在し、一致する識別子を有するブロックが、DOMにおける対応するブロックに隣接して存在する場合、これら2つのブロックは同じブロックであると判断される。これらの関連を記録することができる。このプロセスをブロック・リストにおいて順方向および逆方向に繰り返し適用することによって、変化しないブロックの一意でない識別子との関連が見いだされる。記録されている関連を使用して、フェッチ・ファイルのブロック・リストとDOMのブロック・リストとの間、およびその逆のマッピングを行う。
[0047] 図2dは、フェッチ・ファイルのブロック・リスト(例えば、フェッチ・ファイル・ブロック・リスト232)、およびDOMのブロック・リスト(例えば、DOMブロック・リスト234)の一例230を示す。各ファイルにおいて同一のブロックは、指定された識別子を使用して、互いに関連付けることができる(例えば、フェッチ・ファイル・ブロック・リスト232のid=AAA240によって特定されるブロックは、DOMブロック/リスト234においてid=AAA242によって特定されるブロックにマッピングする)。例えば、図2cにおいて、フェッチ・ファイル・ブロック・リスト232におけるブロック236は、DOMブロック・リスト234におけるブロック238と同一である。ブロック236をブロック238にマッピングすること、およびその逆を行うことができる。何故なら、ブロック236の識別子240は、ブロック238の識別子242と同一であるからである。DOMブロック・リスト234におけるブロック244は、フェッチ・ファイル・ブロック・リスト232におけるブロックにマッピングしない。何故なら、フェッチ・ファイルが受信された後に"<img/>がDOMに追加されたからである。フェッチ・ファイル・ブロック・リスト232におけるブロック246("WORLD")DOMブロック・リスト234において類似するブロックを有さない。何故なら、"WORLD"は、フェッチ・ファイルがウェブ・サーバーから受信された後に、DOMにおいて削除されたからである。
[0048] テキストのブロックには識別子がなくてもよいが(例えば、テキストは属性を有することができないため)、同一の識別子によって特定されたブロックに続く双方のブロック・リストにおけるテキストの特定されていないブロックは同一のブロックであると仮定することによって、DOMブロック・リストにおけるテキストのブロックは、フェッチ・ファイル・ブロック・リストにおけるテキストのブロックにマッピングすることができる。例えば、フェッチ・ファイル・ブロック・リスト232におけるブロック236を、DOMブロック・リストにおけるブロック238にマッピングすることができる。何故なら、ブロック236における識別子id=AAA240が、ブロック238における識別子id=AAA242と同一であるからである。
[0049] DOMのブロック・リストにおけるどのブロックがブラウザーにおける選択に対応するのか判断することによって、ブラウザーにおける文書選択を、ダイナミック・ブラウザー・ファイルのテキストにマッピングすることができる。MicrosoftのInternet Explorer、Mozilla等のようなブラウザーにおいて選択イベントが発生すると、選択されたストリングおよび選択コンテキスト(即ち、DOMにおける現在の位置)を含むオブジェクトを返すことができる。ブラウザーにおいて行われた選択に対応するDOMブロック・リストにおけるブロックを判定するために、識別子(例えば、ID=x)がある開始タグが発見されるまで、DOMにおける現在の位置からDOMの先頭までのナビゲーションを行うことができる。開始タグが発見されるまでに逆方向スキャニングにおいて見つかったキャラクタを記録することができる。DOMブロック・リストにおける対応するブロック(即ち、ID=xのブロック)にアクセスする。選択に対応する位置が見つかるまで、ブロック・リストおよびDOMを順方向にスキャニングする。DOMブロック・リストとフェッチ・ファイル・ブロック・リストとの間の関連を使用して、フェッチ・ファイルにおける対応する位置にマッピングすることができる。
[0050] 図2eは、ブラウザーにおける選択(例えば、選択されたテキスト)からDOMブロック・リストへ、そしてフェッチ・ファイルへのマッピングの一例270を示す。ブラウザーによって見られているファイルにおいて、以下のコードが発見されたと仮定する。
Figure 0005947888
ユーザーがビューにおいて単語Helloから2番目の文字「l」を選択したと仮定する(選択278)。この選択イベントは、選択されたストリングおよび文書における選択位置を有するオブジェクトを返すことができる。フェッチされた文書にマッピングすることができるIDを含む最初のエレメントが発見されるまで(例えば、ブロック237まで)、DOM(例えば、ビュー272)における現在の位置279から開始して、DOMをスキャニングし、データー構造において左に移動し、図2dにおいて上方向に、DOMの先頭まで移動することができる。その途中で見つかったキャラクタを記録することができる(即ち、この例では、"L"、"L"、"E"、"H"、および"<DIV>"を記録することができる)。
[0051] ブロック237において開始タグ(ID=AAA)281の識別子を使用して、DOMブロック・リストにおけるID=AAA283のブロック、即ち、ブロック280にアクセスすることができる。DOM(ビュー272)およびDOMブロック・リスト274は双方とも、記録されているキャラクタ"<DIV>"、"H"、 "E"、 "L"、"L"が見つかるまで、順方向にスキャニングされる。DOMブロック・リスト274とフェッチ・ファイル・ブロック・リスト276との間の関連を使用して、フェッチ・ファイルにおいて"L"284を"L"282にマッピングすることができる。
[0052] ブラウザー118は、ブラウザーにおいてレンダリングされ開発者に表示されるものが、サーバー行動をシミュレーションした解釈ではなく生産サーバーの応答であるようにサーバーに対する完全なラウンド・トリップを行うことにより、開発中のページにコンテンツをレンダリングすることができる。フェッチ・ファイル128がサーバーによって生成されると、コード・メタデーターをクライアント・コンピューターに発信し(emit)送る(send)ことができる。このメタデーターは、フェッチ・ファイル128に注入することができ、または別個に送ることができる。フィルター124のようなフィルターは、プラガブル・マイン・フィルター(pluggable mine filter)とすることができ、フェッチ・ファイル(例えば、フェッチ・ファイル128)からメタデーターを取り除く。サーバー・コンピューター102から受信したオリジナル・ファイルは、ブラウザー118に埋め込まれているスクリプティング言語150のようなスクリプティング言語の実行によって変化させられる可能性がある。
[0053] 文書オブジェクト・モデル(DOM)ツール(例えば、DOMツリー・ビジュアライザ160)は、フェッチ・ファイルからブラウザー・ページを表すデーター構造の可視化に備えることができる。カスケード・スタイル・シート(CCS)ツール(例えば、CCSツール162)は、選択されたスタイル特性を逆にそのソース・コード・ファイルにマッピングし、規則またはプロパティを選択しこの規則またはプロパティを変更することによって、HTMLエレメントのスタイル特性に対して考えられる変化を自動的に永続させることができる。マッピング・ブラウザー・モジュールは、視認された変化を、エレメントの外観に関与するソース・ファイルに自動的にマッピングすることができる。また、開発者は、変更をソース・ファイルに適用することなく、ブラウザーにおいて考えられるスタイル変更を見ることもできる。
[0054] 図2fは、本明細書において開示する主題の形態にしたがって、IDEにおいてダイナミック・ブラウザー・ツーリングを設ける方法275の一例を示す。図2において説明する方法は、図1に関して説明したようなシステムによって実施することができるが、これに限定されるのではない。以下で説明する動作の一部は、任意とすることができる。以下で説明する動作の一部は、以下で説明するのとは異なるシーケンスで実行することができる。
[0055] 241において、マッピング・ブラウザーは、ウェブ・サーバー102のようなウェブ・サーバーに、特定のウェブ・ページを要求するHTTP要求を送ることができる。243において、サーバー側マッピング・ブラウザー・モジュールを実行するウェブ・サーバーがこのHTTP要求を受けることができ、応答して245において、HTMLファイルを含む応答を生成することができる。生成されたHTMLファイルは、このHTMLファイル内における各出力範囲のソース・ファイル位置を示すメタデーターを含むことができる。ウェブ・サーバーは、マッピング・テーブルを含むメタデーターを生成することができる。このマッピング・テーブルは、HTMLファイルにおける注釈付き出力範囲毎にコンテキスト・データーを含む。ウェブ・サーバーは、HTMLファイルをメタデーターと共にクライアントに送ることができる。247において、クライアント側は、このHTMLファイルをメタデーターと共に受信することができる。248において、メタデーターをHTMLファイルから抽出することができ、フェッチ・ファイルとソース・コード・ファイルとの間、およびソースとフェッチ・ファイルとの間でマッピングを行うために用いることができるデーター構造(例えば、マッピング・テーブル138)を生成するためにこのメタデーターを使用することができる。250において、メタデーターをHTMLファイルからはぎ取ることができる。252において、結果的に得られたファイルを、表示のためにブラウザーに渡すことができる。結果的に得られたダイナミック・ファイルをDOMに変換することができる。実行中、254において、JavaScript(登録商標)のような、しかしこれには限定されないスクリプティング言語をDOMに対して実行することができる。このスクリプティング言語は、それが実行するに連れて、DOMを変化させる可能性がある。
[0056] 258において、オリジナルHTMLファイル(フェッチ・ファイル)および、DOMとすることができるダイナミック・ブラウザー・ファイルに対して差分アルゴリズムを実行することによって生成されたブロック識別子を照合することによって、ダイナミック・ブラウザー・ファイルとフェッチ・ファイルとの間の関連を生成することができる。HTMLにおける各開始および終了タグは、ブロックとして扱うことができる。つまり、ブロックは、フェッチ・ファイルおよびダイナミック・ブラウザー・ファイルにおける単語毎に、そして開始または終了タグ毎に、作ることができる。HTML文書では、同じタグが1回よりも多く使用されることが頻繁にあるので、一意の識別子を各開始タグ/終了タグ対に割り当てることができる(例えば、DOMにおける対応するオブジェクトのプロパティを一意の識別子に設定することによって)。第1ブロック・リストは、フェッチ・ファイルに対して生成することができ、第2ブロック・リストは、ダイナミック・ブラウザー・ファイルに対して生成することができる。フェッチ・ファイルにおける一意のブロックに直接隣接して、同一のブロックがダイナミック・ブラウザー・ファイルにおける対応する一意のブロックの隣りに存在すると判断したことに応答して、これら2つのブロックが同じブロックであると判定される。このプロセスを一意のブロックから順方向および逆方向に繰り返し適用することによって、変化していないブロックのシーケンスが発見される。2つのファイルにおける同一ブロックは、互いにマッピングすることができる。即ち、ダイナミック・ブラウザー・ファイルにおけるブロックを、フェッチ・ファイルに、そしてその逆にマッピングすることができる。260において、ブラウザーにおいて表示されている文書の一部を選択するユーザー入力に応答して、この選択をダイナミック・ブラウザー・ファイルの一部にマッピングすることができる。このダイナミック・ブラウザー・ファイルの一部は、フェッチ・ファイルの一部にマッピングすることができる。262において、このフェッチ・ファイルの一部は、ソース・ファイルの対応するセクションにマッピングすることができる。
適した計算環境の例
[0057] 本明細書において開示した主題の種々の形態についてコンテキストを規定するために、図3および以下の説明は、本明細書において開示した主題の種々の実施形態を実現することができる、適した計算環境510の端的な全体的な説明を行うことを意図している。本明細書において開示した主題は、1つ以上のコンピューターまたは他の計算デバイスによって実行される、プログラム・モジュールのようなコンピューター実行可能命令という一般的なコンテキストで説明されるが、本明細書において開示した主題の一部は、他のプログラム・モジュールとの組み合わせおよび/またはハードウェアおよびソフトウェアの組み合わせでも実現できることは、当業者には認められよう。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、物理的アイテム(physical artifact),データー構造等を含み、これらは特定のタスクを実行するか、または特定のデーター型を実装する。通例、プログラム・モジュールの機能は、種々の実施形態における所望に応じて、組み合わせることまたは分散させることができる。計算環境51は、適した動作環境の一例に過ぎず、本明細書において開示した主題の使用範囲や機能を限定することを意図していない。
[0058] 図3を参照して、コンピューター512の形態とした計算デバイスについて説明する。コンピューター512は、処理ユニット514、システム・メモリー516、およびシステム・バス518を含むことができる。処理ユニット514は、種々の入手可能なプロセッサーの内任意のものとすることができる。デュアル・マイクロプロセッサーおよび他のマルチプロセッサー・アーキテクチャーも、処理ユニット514として採用することができる。システム・メモリー516は、揮発性メモリー520および不揮発性メモリー522を含むことができる。不揮発性メモリー522は、リード・オンリー・メモリー(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、またはフラッシュ・メモリーを含むことができる。揮発性メモリー520は、外部キャッシュ・メモリーとして機能することができるランダム・アクセス・メモリー(RAM)を含むことができる。システム・バス518は、システム・メモリー516を含むシステムの物理的アイテム(artifact)を処理ユニット514に結合する。システム・バス518は、メモリー・バス、メモリー・コントローラー、周辺バス、外部バス、またはローカル・バスを含む、様々なタイプの内任意のものにすることができ、任意の種々の入手可能なバス・アーキテクチャーを使用することもできる。
[0059] コンピューター512は、通例、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体というような、種々のコンピューター読み取り可能媒体を含む。コンピューター記憶媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の格納のための任意の方法または技術で実現することができる。コンピューター記憶媒体には、RAM、ROM、EEPROM、フラッシュ・メモリーまたは他のメモリー技術、CDROM、ディジタル・バーサタイル・ディスク(DVD)または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、あるいは所望の情報を格納するために使用することができコンピューター512によってアクセスすることができる任意の他の一時的媒体または永続的媒体を含むが、これらに限定されるのではない。
[0060] 尚、図3は、ユーザーとコンピューター・リソースとの間において仲介として機能することができるソフトウェアについて説明することは認められよう。このソフトウェアは、オペレーティング・システム528を含むことができる。オペレーティング・システム528は、ディスク・ストレージ524に格納することができ、コンピューター512のリソースを割り当てることができる。ディスク・ストレージ524は、インターフェース526のような非リムーバブル・メモリー・インターフェースを介してシステム・バス512に結合されるハード・ディスク・ドライブであってもよい。システム・アプリケーション530は、オペレーティング・システム528によるリソースの管理を、システム・メモリー516またはディスク・ストレージ524のいずれかに格納されているプログラム・モジュール532およびプログラム・データー534を介して利用する。尚、コンピューターには種々のオペレーティング・システムまたはオペレーティング・システムの組み合わせを実装できることは認められよう。
[0061] ユーザーは、入力デバイス(1つ以上)536を介してコマンドまたは情報をコンピューター512に入力することができる。入力デバイス536は、マウスのようなポインティング・デバイス、トラックボール、スタイラス、タッチ・パッド、キーボード、マイクロフォン等を含むが、これらに限定されるのではない。これらおよびその他の入力デバイスは、システム・バス518を通ってインターフェース・ポート(1つ以上)538を介して処理ユニット514に接続する。インターフェース・ポート(1つ以上)538は、シリアル・ポート、パラレル・ポート、ユニバーサル・シリアル・バス(USB)等を表すことができる。出力デバイス(1つ以上)540は、入力デバイスと同じタイプのポートを使用することができる。出力アダプター542が、特定のアダプターを必要とするモニター、スピーカー、およびプリンターのような一部の出力デバイス540があることを例示するために示されている。出力アダプター542は、出力デバイス540とシステム・バス518との間において接続を設けるビデオおよびサウンド・カードを含むが、これに限定されるのではない。リモート・コンピューター(1つ以上)544のような他のデバイスおよび/またはシステムまたはデバイスは、入力および出力双方の機能を設けることができる。
[0062] コンピューター512は、リモート・コンピューター(1つ以上)544のような、1つ以上のリモート・コンピューターへの論理接続を使用するネットワーク接続環境において動作することができる。リモート・コンピューター544は、パーソナル・コンピューター、サーバー、ルーター、ネットワークPC、ピア・デバイスまたは他の共通ネットワーク・ノードとすることができ、通例、コンピューター512に関して以上で説明したエレメントの多くまたは全てを含むが、図3には、メモリー記憶デバイス546だけが図示されている。リモート・コンピューター(1つ以上)544は、通信接続(1つ以上)550を介して論理的に接続することができる。ネットワーク・インターフェース548は、ローカル・エリア・ネットワーク(LAN)およびワイド・エリア・ネットワーク(WAN)のような通信ネットワークを含むが、他のネットワークを含むのでもよい。通信接続(1つ以上)550は、ネットワーク・インターフェース548をバス518に接続するために採用されるハードウェア/ソフトウェアを指す。通信接続(1つ以上)550は、コンピューター512に対して内部であっても外部であってもよく、モデム(電話、ケーブル、DSL、およびワイヤレス)およびISDNアダプター、イーサネット・カードのような内部および外部技術を含むことができる。
[0063] 尚、図示するネットワーク接続は一例に過ぎず、コンピューター間に通信リンクを作る他の手段を使用してもよいことは認められよう。当業者は、コンピューター512または他のクライアント・デバイスをコンピューター・ネットワークの一部として配備できることを認めることができよう。これに関して、本明細書において開示した主題は、任意の数のメモリーまたは記憶ユニット、ならびに任意の数の記憶ユニットまたはボリュームに跨がって存在する任意の数のアプリケーションおよびプロセスを有する任意のコンピューター・システムに関連することができる。本明細書において開示した主題の形態は、リモート・ストレージまたはローカル・ストレージを有するネットワーク環境において配備されたサーバー・コンピューターおよびクライアント・コンピューターを備えた環境に適用することもできる。また、本明細書において開示した主題の形態は、プログラミング言語機能、解釈および実行能力を有する、スタンドアロン計算デバイスにも適用することができる。
[0064] 図4は、統合開発環境(IDE)600および共通言語実行時間環境602を示す。IDE600は、ユーザー(例えば、開発者、プログラマ、設計者、プログラム検査者など)が、プログラム、1組のプログラム、ウェブ・サイト、ウェブ・アプリケーション、およびウェブ・サービスをコンピューター・システムにおいて設計、コード化、コンパイル、検査、実行、編集、デバッグ、または構築することを可能にするのであるとよい。ソフトウェア・プログラムは、ソース・コード(コンポーネント610)を含むことができ、1つ以上のソース・コード言語(例えば、Visual Basic、Visual J#、C++、C#、J#、Java Script、APL、COBOL、Pascal、Eiffel、Haskell、ML、Oberon、Perl、Python、Scheme等)で作られる。IDE600は、ネーティブ・コード開発環境を提供することができ、あるいは仮想装置において実行する被管理コード開発(managed code development)を提供することができ、またはその組み合わせを提供することができる。IDE600は、NETフレームワークを使用して、被管理コード開発環境を提供することができる。中間言語コンポーネント650は、ソース・コード・コンポーネント610およびネーティブ・コード・コンポーネント611から、言語特定ソース・コンパイラー620を使用して作ることができ、ネーティブ・コード・コンポーネント611(例えば、装置実行可能命令)は、アプリケーションを実行するときに、中間言語コンポーネント650から、中間言語コンパイラー660(例えば、ジャスト・イン・タイム(JIT)コンパイラー)を使用して作られる。即ち、ILアプリケーションを実行するとき、実行されながら、コンパイルされて、それが実行されているプラットフォームに適した機械語になることによって、様々なプラットフォームに跨がってコードを移植可能にする。あるいは、他の実施形態では、プログラムをコンパイルして、その意図するプラットフォームに適したネーティブ・コード機械語(図示せず)にすることもできる。
[0065] ユーザーは、既知のソフトウェア・プログラミング技法、ならびに特定のソース言語に関連する特定の論理および構文上の規則にしたがって、IDE600におけるユーザー・インターフェース640およびソース・コード・エディター651を介して、ソース・コード・コンポーネントを作ることおよび/または編集することができる。その後、ソース・コード・コンポーネント610をソース・コンパイラー620によってコンパイルすることができ、これによって、アセンブリー630のような、プログラムの中間言語表現を作ることができる。アセンブリー630は、中間言語コンポーネント650およびメタデーター642を含むことができる。
アプリケーションの設計は、配備の前に、有効性を検証できるとよい。
[0066] 本明細書において説明した種々の技法は、ハードウェアまたはソフトウェアと合わせて、あるいはしかるべき場合には双方の組み合わせで実現することができる。つまり、本明細書において説明した方法および装置(apparatus)、あるいはそのある種の形態またはその一部は、フロッピー(登録商標)・ディスク、CD−ROM、ハード・ドライブ、または任意の他の装置読み取り可能記憶媒体というような有形媒体に具体化されたプログラム・コード(即ち、命令)の形態をなすことができ、プログラム・コードが、コンピューターのような装置にロードされ実行されると、その装置(machine)が、本明細書において開示した主題の形態を実施する装置(apparatus)となる。本明細書において使用する場合、「装置読み取り可能媒体」という用語は、任意の形態の伝搬信号を供給する(即ち、格納および/または送信する)メカニズムをいずれも除外するように捉えるものとする。プログラマブル・コンピューターにおけるプログラム・コードの実行の場合、計算デバイスは、一般に、プロセッサー、このプロセッサーによって読み取り可能な記憶媒体(揮発性および不揮発性メモリー、および/または記憶エレメントを含む)、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを含む。ドメイン特定プログラミング・モデルの形態の作成および/または実現例を、例えば、データー処理API等の使用によって利用する1つ以上のプログラムを、上位手続き言語またはオブジェクト指向言語で実現し、コンピューター・システムと通信することができる。しかしながら、望ましければ、プログラム(1つ以上)は、アセンブリーまたは機械語で実装することができる。いずれの場合でも、言語は、コンパイル型言語またはインタープリタ型言語であり、ハードウェアの実現例と組み合わせることができる。
[0067] 以上、構造的特徴および/または方法論的動作に特定した言語で本主題について説明したが、添付した特許請求の範囲において定められる主題は、必ずしも以上で説明した具体的な特徴や動作には限定されないことは言うまでもない。逆に、以上で説明した具体的な特徴や動作は、特許請求の範囲を実現する形態例として開示したまでである。

Claims (10)

  1. システムであって、
    計算デバイスの少なくとも1つのプロセッサーと、
    前記計算デバイスのメモリーと、
    前記メモリーにロードされる少なくとも1つのモジュールと、
    を含み、前記少なくとも1つのモジュールが前記少なくとも1つのプロセッサーに、
    統合開発環境(IDE)に含まれたブラウザーにおいて選択を受けるステップであって、前記選択が、ウェブ・サーバーから受けたフェッチ・ファイルからのコンテンツに関連し、前記IDEが更にソース・コード・エディターを含む、ステップと、
    前記フェッチ・ファイルにおいて前記コンテンツを生成したソース・ファイルにおける位置範囲に前記選択をマッピングするステップと、
    前記ソース・ファイルに対しなされたユーザー変更を受けるステップであって、変更されたソース・ファイルが前記ユーザー変更にしたがって生成される、ステップと、
    前記変更されたソース・ファイルを前記ウェブ・サーバーにアップロードするステップと、
    前記変更されたソース・ファイル基づいて前記ウェブ・サーバーからアップデートされたコンテンツを受けるステップと、
    前記ブラウザーにおける前記選択を、前記ース・コード・エディターにおける前記変更されたソース・ファイルと同時表示するステップであって、表示される前記変更されたソース・ファイルが、前記ブラウザーにおける前記選択に対応する前記位置範囲まスクロールされる、ステップと、
    を行わせ、前記ブラウザーにおけ表示された前記選択が前記アップデートされたコンテンツを含む、システム。
  2. 請求項1記載のシステムにおいて、前記少なくとも1つのプロセッサーが、前記フェッチ・ファイルにおける位置範囲を、特定のソース・ファイルにおける特定の位置範囲にマッピングするメタデーターを受信し、前記メタデーターが、前記特定のソース・ファイルに対するパスと、前記特定のソース・ファイルにおける開始位置とを含む、システム。
  3. 請求項2記載のシステムにおいて、前記少なくとも1つのモジュールが、前記受信したメタデーターからマッピング・テーブルを生成し、前記マッピング・テーブルが、前記フェッチ・ファイルにおける位置範囲を、ソース・ファイルにおける位置範囲にマッピングする、システム。
  4. 請求項1記載のシステムにおいて、前記少なくとも1つのモジュールが、更に、
    前記ブラウザーにおける前記選択を、ダイナミック・ブラウザー・ファイルブロック・リストにおける位置範囲にマッピングするステップと、
    前記ダイナミック・ブラウザー・ファイルブロック・リストにおける前記位置範囲を、前記フェッチ・ファイルブロック・リストにおける位置範囲にマッピングするステップと、
    前記フェッチ・ファイルブロック・リストにおける前記位置範囲を、前記ブラウザーにおいて前記選択を生成した前記ソース・ファイルにおける対応する位置範囲にマッピングするステップと、
    を含む、システム。
  5. 方法であって、
    ソフトウェア開発コンピューターのプロセッサーによって、ウェブ・サーバーから、統合開発環境(IDE)に含まれたブラウザーにおけるユーザー選択を受るステップであって、前記IDEが更にソース・コード・エディターを含む、ステップと、
    前記ブラウザーにおける前記ユーザー選択を、フェッチ・ファイルにおける位置範囲にマッピングするステップであって、前記フェッチ・ファイルが、ハイパーテキスト転送プロトコル(HTTP)要求に応答して、ウェブ・サーバーから受信したファイルを含む、ステップと、
    前記フェッチ・ファイルにおける前記位置範囲を、前記ブラウザーにおいて前記ユーザー選択を生成したソース・ファイルにおける位置範囲にマッピングするステップと、
    前記ソース・ファイルに対しなされたユーザー変更を受けるステップであって、変更されたソース・ファイルが前記ユーザー変更にしたがって生成される、ステップと、
    前記変更されたソース・ファイルを前記ウェブ・サーバーにアップロードするステップと、
    前記変更されたソース・ファイルに基づいて前記ウェブ・サーバーからアップデートされたコンテンツを受けるステップと、
    記ブラウザーにおける前記ユーザー選択を、前記ソース・コード・エディターにおける前記変更されたソース・ファイルと同時に表示するステップであって、表示される前記変更されたソース・ファイルが、前記ブラウザーにおける前記ユーザー選択に対応する前記位置範囲までスクロールされるステップと、
    を含み、前記ブラウザーにおける示された前記ユーザー選択が、前記アップデートされたコンテンツを含む、方法。
  6. 請求項5記載の方法であって、更に、
    前記フェッチ・ファイルにおける位置範囲を、前記フェッチ・ファイルの前記位置範囲においてコンテンツを発生したソース・ファイルにおける対応する位置範囲にマッピングするメタデーターを受信するステップを含み、前記メタデーターが、前記ソース・ファイルへのパスと、前記フェッチ・ファイルにおける前記位置範囲に対応する前記ソース・ファイルにおける前記対応する位置範囲とを含む、方法。
  7. 請求項6記載の方法であって、更に、
    前記ソフトウェア開発コンピューターのメモリーにおいてマッピング・テーブルを生成するステップを含み、前記マッピング・テーブルが、前記フェッチ・ファイルとブラウザー・ファイルとの間で関連を作ることによって、前記ブラウザーにおけるコンテンツを、前記フェッチ・ファイルにおける対応するコンテンツにマッピングする、方法。
  8. 請求項7記載の方法であって、更に、サーバー・コンテンツを生成する要求を前記ウェブ・サーバーに送ることによって前記サーバー・コンテンツを生成し、前記ブラウザーにおいて前記サーバー・コンテンツを表示するステップを含む、方法。
  9. 請求項5記載の方法であって、更に、
    ブラウザー・ページを表すツリー・データー構造を表示するステップを含み、前記ブラウザー・ページが前記ブラウザー内に表示される、方法。
  10. コンピューター実行可能命令を含むコンピューター読み取り可能記憶媒体であって、前記コンピューター実行可能命令を実行すると、計算デバイスの少なくとも1つのプロセッサーに、
    統合開発環境(IDE)に含まれたブラウザーにおける選択を受るステップであって、前記IDEが更にソース・コード・エディターを含む、ステップと、
    前記ブラウザーにおける前記選択を、ダイナミック・ブラウザー・ファイルブロック・リストにおける位置範囲にマッピングするステップと、
    前記ダイナミック・ブラウザー・ファイルブロック・リストにおける前記位置範囲を、フェッチ・ファイルブロック・リストにおける位置範囲にマッピングするステップであって、前記フェッチ・ファイルが、ウェブ・サーバーから受信されたファイルを含む、ステップと、
    前記フェッチ・ファイルブロック・リストにおける前記位置範囲を、前記ブラウザーにおいて前記選択を生成したソース・ファイルにおける対応する位置範囲にマッピングするステップと、
    前記ソース・ファイルに対しなされた1つ以上のユーザー変更を前記ウェブ・サーバーが処理して変更されたソース・ファイルを生成することに基づいて、前記ウェブ・サーバーからアップデートされたコンテンツを受けるステップと、
    前記ブラウザーにおける前記選択と、前記ソース・コード・エディターにおける前記変更されたソース・ファイルとを前記IDEにおいて同時に表示するステップであって、表示される前記変更されたソース・ファイルが、前記対応する位置範囲までスクロールされるステップと、
    を行わせ、前記ブラウザーにおける表示された前記選択が前記アップデートされたコンテンツを含む、コンピューター読み取り可能記憶媒体。
JP2014515870A 2011-06-16 2012-06-05 統合開発環境におけるライブ・ブラウザー・ツーリング Active JP5947888B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/161,529 2011-06-16
US13/161,529 US9753699B2 (en) 2011-06-16 2011-06-16 Live browser tooling in an integrated development environment
PCT/US2012/040956 WO2012173829A2 (en) 2011-06-16 2012-06-05 Live browser tooling in an integrated development environment

Publications (3)

Publication Number Publication Date
JP2014523567A JP2014523567A (ja) 2014-09-11
JP2014523567A5 JP2014523567A5 (ja) 2015-07-23
JP5947888B2 true JP5947888B2 (ja) 2016-07-06

Family

ID=47354804

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014515870A Active JP5947888B2 (ja) 2011-06-16 2012-06-05 統合開発環境におけるライブ・ブラウザー・ツーリング

Country Status (6)

Country Link
US (1) US9753699B2 (ja)
EP (1) EP2721513B1 (ja)
JP (1) JP5947888B2 (ja)
KR (1) KR101908162B1 (ja)
CN (1) CN103597469B (ja)
WO (1) WO2012173829A2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8745027B1 (en) * 2011-04-11 2014-06-03 Google Inc. Jslayout cascading style sheets optimization
US9460224B2 (en) 2011-06-16 2016-10-04 Microsoft Technology Licensing Llc. Selection mapping between fetched files and source files
US9563714B2 (en) 2011-06-16 2017-02-07 Microsoft Technology Licensing Llc. Mapping selections between a browser and the original file fetched from a web server
US20130185623A1 (en) * 2012-01-12 2013-07-18 International Business Machines Corporation Instructing web clients to ignore scripts in specified portions of web pages
CN102662737B (zh) * 2012-03-14 2014-06-11 优视科技有限公司 扩展程序的调用方法及装置
US10530894B2 (en) * 2012-09-17 2020-01-07 Exaptive, Inc. Combinatorial application framework for interoperability and repurposing of code components
US9792354B2 (en) 2013-09-30 2017-10-17 Microsoft Technology Licensing, Llc Context aware user interface parts
WO2015172228A1 (en) * 2014-05-14 2015-11-19 Pagecloud Inc. Methods and systems for web content generation
US9646103B2 (en) * 2014-07-10 2017-05-09 MyMojo Corporation Client-side template engine and method for constructing a nested DOM module for a website
US9952915B2 (en) 2014-11-06 2018-04-24 Microsoft Technology Licensing, Llc Event processing development environment
US10769351B2 (en) 2015-05-08 2020-09-08 Citrix Systems, Inc. Rendering based on a document object model
US9678724B2 (en) * 2015-05-29 2017-06-13 Intentional Software Corporation System and method for combining text editing and tree encoding for computer programs
CN107704479B (zh) * 2017-02-08 2020-06-30 深圳壹账通智能科技有限公司 文件生成方法和装置
KR101809460B1 (ko) * 2017-05-15 2017-12-15 주식회사 한글과컴퓨터 웹 문서 편집툴에서 지원하는 스타일 속성에 따라 웹 문서에 대한 외부 콘텐츠의 붙여넣기 처리가 가능한 클라이언트 단말 장치 및 그 동작 방법
US10795670B2 (en) * 2018-12-20 2020-10-06 Roblox Corporation Developer collaboration control system
CN110085256B (zh) * 2019-03-21 2021-11-19 视联动力信息技术股份有限公司 信息处理方法和装置
KR20210057306A (ko) 2019-11-12 2021-05-21 주식회사 모카앤제이에스 블록 에디터 기반 문서 편집 서비스 제공 방법, 그를 수행하기 위한 서버 및 컴퓨터 프로그램
KR20220052134A (ko) 2020-10-20 2022-04-27 주식회사 모카앤제이에스 블록 에디터 기반의 문서 편집을 위한 연관 블록 연결 방법, 그를 수행하기 위한 서버 및 컴퓨터 프로그램
KR20220052135A (ko) 2020-10-20 2022-04-27 주식회사 모카앤제이에스 블록 에디터 기반의 문서 편집을 위한 임포트 블록 삽입 방법, 그를 수행하기 위한 서버 및 컴퓨터 프로그램
US11409432B2 (en) * 2020-12-23 2022-08-09 Microsoft Technology Licensing, Llc Pen command for ink editing

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339433A (en) 1992-11-19 1994-08-16 Borland International, Inc. Symbol browsing in an object-oriented development system
US5774670A (en) 1995-10-06 1998-06-30 Netscape Communications Corporation Persistent client state in a hypertext transfer protocol based client-server system
US5740430A (en) 1995-11-06 1998-04-14 C/Net, Inc. Method and apparatus for server-independent caching of dynamically-generated customized pages
US6393569B1 (en) 1996-12-18 2002-05-21 Alexander S. Orenshteyn Secured system for accessing application services from a remote station
US6038573A (en) 1997-04-04 2000-03-14 Avid Technology, Inc. News story markup language and system and process for editing and processing documents
US6317885B1 (en) 1997-06-26 2001-11-13 Microsoft Corporation Interactive entertainment and information system using television set-top box
US6178433B1 (en) 1997-07-15 2001-01-23 International Business Machines Corporation Method and system for generating materials for presentation on a non-frame capable web browser
US5964836A (en) 1997-09-11 1999-10-12 International Business Machines Corporation Apparatus, methods and computer program products for managing web-page-embedded sessions with a host-based application
US6023764A (en) 1997-10-20 2000-02-08 International Business Machines Corporation Method and apparatus for providing security certificate management for Java Applets
US6092100A (en) 1997-11-21 2000-07-18 International Business Machines Corporation Method for intelligently resolving entry of an incorrect uniform resource locator (URL)
US6247020B1 (en) * 1997-12-17 2001-06-12 Borland Software Corporation Development system with application browser user interface
US6175832B1 (en) 1998-05-11 2001-01-16 International Business Machines Corporation Method, system and program product for establishing a data reporting and display communication over a network
US6182097B1 (en) 1998-05-21 2001-01-30 Lucent Technologies Inc. Method for characterizing and visualizing patterns of usage of a web site by network users
US6205432B1 (en) 1998-06-05 2001-03-20 Creative Internet Concepts, Llc Background advertising system
US6083276A (en) 1998-06-11 2000-07-04 Corel, Inc. Creating and configuring component-based applications using a text-based descriptive attribute grammar
WO2000004483A2 (en) 1998-07-15 2000-01-27 Imation Corp. Hierarchical data storage management
US6502239B2 (en) * 1998-11-12 2002-12-31 Computer Associates Think, Inc Method and apparatus for round-trip software engineering
US6629127B1 (en) 1999-07-26 2003-09-30 Microsoft Corporation Methods and systems for processing HTTP requests
US6609246B1 (en) 1999-12-07 2003-08-19 Bull Hn Information Systems Inc. Integrated development environment for high speed transaction processing WWW applications on heterogeneous computer systems
US6643652B2 (en) 2000-01-14 2003-11-04 Saba Software, Inc. Method and apparatus for managing data exchange among systems in a network
US6990653B1 (en) 2000-05-18 2006-01-24 Microsoft Corporation Server-side code generation from a dynamic web page content file
US20020023112A1 (en) * 2000-05-24 2002-02-21 Nttx Corporation Graphical web page editor
WO2001095123A1 (en) 2000-06-05 2001-12-13 Altoweb Systems, Inc. System and method for accessing, organizing, and presenting data
CA2322594C (en) * 2000-10-06 2005-01-11 Ibm Canada Limited-Ibm Canada Limitee System and method for managing web page components
US7191405B1 (en) * 2000-11-22 2007-03-13 Adobe Systems Incorporated System and method for editing information
US7155478B2 (en) 2001-10-03 2006-12-26 International Business Machines Corporation Selectively handling data processing requests in a computer communications network
US8104017B2 (en) * 2001-10-25 2012-01-24 The Mathworks, Inc. Traceability in a modeling environment
AU2003239209A1 (en) 2002-06-12 2003-12-31 I-Logix Inc. Providing dynamic model-code associativity
CA2391719A1 (en) 2002-06-26 2003-12-26 Ibm Canada Limited-Ibm Canada Limitee Editing files of remote systems using an integrated development environment
US8032597B2 (en) 2002-09-18 2011-10-04 Advenix, Corp. Enhancement of e-mail client user interfaces and e-mail message formats
US7316003B1 (en) * 2002-12-18 2008-01-01 Oracle International Corp. System and method for developing a dynamic web page
US7441195B2 (en) * 2003-03-04 2008-10-21 Omniture, Inc. Associating website clicks with links on a web page
US7395312B2 (en) 2003-04-08 2008-07-01 Microsoft Corporation Integrating online community and program development environments
US7143115B2 (en) 2003-04-15 2006-11-28 Pocket Soft, Inc. Method and apparatus for finding differences between two computer files efficiently in linear time and for using these differences to update computer files
WO2005015912A2 (en) 2003-08-08 2005-02-17 Maven Networks, Inc. System and method of integrating video content with interactive elements
US7543268B2 (en) 2003-09-30 2009-06-02 Sap Ag Development environment for developing applications using a metamodel and a metadata API
US7503035B2 (en) 2003-11-25 2009-03-10 Software Analysis And Forensic Engineering Corp. Software tool for detecting plagiarism in computer source code
US7328217B2 (en) 2003-11-26 2008-02-05 Symantec Operating Corporation System and method for detecting and storing file identity change information within a file system
US7325191B2 (en) 2003-12-08 2008-01-29 Microsoft Corporation Preservation of source code formatting
US20050198565A1 (en) 2004-02-20 2005-09-08 Mcchrystal Peter S. Method and apparatus for automatic update ad notification of documents and document components stored in a document repository
US7246134B1 (en) 2004-03-04 2007-07-17 Sun Microsystems, Inc. System and methods for tag library generation
US20060039348A1 (en) 2004-08-20 2006-02-23 Nokia Corporation System, device and method for data transfer
US7475391B2 (en) 2004-10-07 2009-01-06 International Business Machines Corporation System and method for revealing remote object status in an integrated development environment
WO2006043274A2 (en) * 2004-10-22 2006-04-27 Flash Networks Ltd Method and system for accelerating downloading of web pages.
US7890919B1 (en) * 2004-10-27 2011-02-15 Adobe Systems Incorporated Automatic component update and integration
US7440967B2 (en) 2004-11-10 2008-10-21 Xerox Corporation System and method for transforming legacy documents into XML documents
US20090019064A1 (en) * 2005-02-14 2009-01-15 Justsystems Corporation Document processing device and document processing method
US7480897B2 (en) * 2005-03-10 2009-01-20 International Business Machines Corporation Method and system for managing development objects for computer program code
US7516445B2 (en) * 2005-06-30 2009-04-07 Microsoft Corporation Locating source code when stopping in a debugger
US7661064B2 (en) 2006-03-06 2010-02-09 Microsoft Corporation Displaying text intraline diffing output
WO2008017044A1 (en) * 2006-08-02 2008-02-07 Watt Systems Technologies, Inc. Object oriented system and method of graphically displaying and analyzing complex systems
US20080033996A1 (en) * 2006-08-03 2008-02-07 Anandsudhakar Kesari Techniques for approximating the visual layout of a web page and determining the portion of the page containing the significant content
US7861213B2 (en) 2006-09-05 2010-12-28 Oracle International Corporation Mechanism for developing AJax applications using java swing framework and method for using the same
US8578334B2 (en) 2006-12-04 2013-11-05 Microsoft Corporation Dynamic language-based integrated development environment
US7694282B2 (en) 2006-12-12 2010-04-06 Arkhipov Mikhail E Mapping breakpoints between web based documents
US8276118B2 (en) 2007-03-01 2012-09-25 International Business Machines Corporation Depicting changes to structures in an integrated development environment
US8065667B2 (en) * 2007-03-20 2011-11-22 Yahoo! Inc. Injecting content into third party documents for document processing
US8499237B2 (en) * 2007-03-29 2013-07-30 Hiconversion, Inc. Method and apparatus for application enabling of websites
US7941755B2 (en) * 2007-04-19 2011-05-10 Art Technology Group, Inc. Method and apparatus for web page co-browsing
US8392880B2 (en) 2007-04-27 2013-03-05 International Business Machines Corporation Rapid application development for database-aware applications
US8392890B2 (en) * 2007-10-15 2013-03-05 Software Research, Inc. Method and system for testing websites
WO2008157322A1 (en) * 2007-06-13 2008-12-24 Quattro Wireless, Inc. Displaying content on a mobile device
US7779161B2 (en) * 2007-07-24 2010-08-17 Hiconversion, Inc. Method and apparatus for general virtual application enabling of websites
KR100958786B1 (ko) * 2007-10-08 2010-05-18 엔에이치엔(주) 웹문서 편집 방법 및 장치
US8719451B1 (en) * 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US20140006913A1 (en) * 2007-12-21 2014-01-02 Adobe Systems Incorporated Visual template extraction
US8255793B2 (en) 2008-01-08 2012-08-28 Yahoo! Inc. Automatic visual segmentation of webpages
US8181167B2 (en) * 2008-01-09 2012-05-15 Kan Zhao Method and system for presenting and analyzing software source code through intermediate representation
US8887089B2 (en) 2008-02-12 2014-11-11 Oracle International Corporation System and method for generating a file peek ahead user interface
US8356277B1 (en) * 2008-04-04 2013-01-15 Adobe Systems Incorporated System and method for freezing operation of dynamic code of a run-time web page
US8713520B2 (en) * 2008-04-04 2014-04-29 Adobe Systems Incorporated Web development environment that enables a developer to interact with run-time output presentation of a page
EP2271984A4 (en) 2008-04-28 2012-01-18 Salesforce Com Inc OBJECT-BASED SYSTEM FOR CREATING AND MANAGING WEB SITES AND THEIR CONTENT
US8549064B2 (en) 2008-08-12 2013-10-01 Hewlett-Packard Development Company, L.P. System and method for data management
US20100162096A1 (en) * 2008-12-23 2010-06-24 Micorsoft Corpration Techniques for Utilizing Dynamic Components with Wikis
US20100251143A1 (en) * 2009-03-27 2010-09-30 The Ransom Group, Inc. Method, system and computer program for creating and editing a website
US20100293524A1 (en) 2009-05-12 2010-11-18 International Business Machines, Corporation Development environment for managing database aware software projects
US8307347B2 (en) * 2009-05-18 2012-11-06 National Instruments Corporation Collecting and analyzing graphical data flow web application results from multiple users
US8924943B2 (en) 2009-07-17 2014-12-30 Ebay Inc. Browser emulator system
CN101645009A (zh) 2009-08-25 2010-02-10 中国科学院计算技术研究所 Web服务集成开发***和方法
CN102270116A (zh) 2010-06-07 2011-12-07 南通智普网络科技有限公司 Web IDE在线开发平台
EP2609518A2 (en) * 2010-08-26 2013-07-03 Massively Parallel Technologies, Inc. Parallel processing development environment and associated methods
US8843892B2 (en) * 2010-12-03 2014-09-23 Adobe Systems Incorporated Visual representations of code in application development environments

Also Published As

Publication number Publication date
KR101908162B1 (ko) 2018-10-15
US20120324422A1 (en) 2012-12-20
KR20140038459A (ko) 2014-03-28
WO2012173829A2 (en) 2012-12-20
CN103597469B (zh) 2018-02-02
EP2721513B1 (en) 2020-10-07
CN103597469A (zh) 2014-02-19
JP2014523567A (ja) 2014-09-11
WO2012173829A3 (en) 2013-05-23
US9753699B2 (en) 2017-09-05
EP2721513A4 (en) 2014-12-31
EP2721513A2 (en) 2014-04-23

Similar Documents

Publication Publication Date Title
JP5947888B2 (ja) 統合開発環境におけるライブ・ブラウザー・ツーリング
US10594769B2 (en) Selection mapping between fetched files and source files
US10447764B2 (en) Mapping selections between a browser and the original fetched file from a web server
JP5821678B2 (ja) ウェブ・アプリケーションのブラウザに依存しない自動互換性チェックのためのウェブ・サービス
US8065667B2 (en) Injecting content into third party documents for document processing
US20110167332A1 (en) System and Method for Generating Web Pages
KR20080053293A (ko) 클라이언트 스크립트 웹 페이지에 대한 서버측 초기 콘텐츠렌더링
US20160259630A1 (en) Systems, apparatus and methods for sharing visual model-based applications
JP2013506175A (ja) 統一リソース識別子(uri)による、アプリケーション状態情報の管理
EP2823406B1 (en) Uniquely identifying script files
US8918766B2 (en) Analysis of propagated information using annotated forests
US11119896B1 (en) Browser based visual debugging
CN110334302B (zh) 复杂Web应用前端运行时分析方法
US10198408B1 (en) System and method for converting and importing web site content
JP6723976B2 (ja) テスト実行装置及びプログラム
JP5267342B2 (ja) マッシュアッププログラム、マッシュアップ装置及びマッシュアップ方法
US20120216132A1 (en) Embedding User Selected Content In A Web Browser Display
US20140258835A1 (en) System and method to download images from a website
CN117251231B (zh) 一种动画资源处理方法、装置、***及电子设备
CN116166866B (zh) 一种对spa应用进行seo的优化方法、装置、终端及存储介质
JP2000076057A (ja) デ―タ処理システムにおいてデ―タにアクセスするための方法および装置
JP2008009674A (ja) 巡回型画面キャプチャーシステム
CN115373656A (zh) 页面生成方法、装置、计算机可读介质及电子设备
KR20050044014A (ko) 가상 uri를 이용한 웹어플리케이션 구동 및 웹 매크로 서비스의 구현 방법

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150604

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160215

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160603

R150 Certificate of patent or registration of utility model

Ref document number: 5947888

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