JP2016511497A - ジャストマイコードを使用したジャバスクリプトデバッギング - Google Patents

ジャストマイコードを使用したジャバスクリプトデバッギング Download PDF

Info

Publication number
JP2016511497A
JP2016511497A JP2016501782A JP2016501782A JP2016511497A JP 2016511497 A JP2016511497 A JP 2016511497A JP 2016501782 A JP2016501782 A JP 2016501782A JP 2016501782 A JP2016501782 A JP 2016501782A JP 2016511497 A JP2016511497 A JP 2016511497A
Authority
JP
Japan
Prior art keywords
code
debugger
javascript
statement
user
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
JP2016501782A
Other languages
English (en)
Other versions
JP6543609B2 (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 JP2016511497A publication Critical patent/JP2016511497A/ja
Application granted granted Critical
Publication of JP6543609B2 publication Critical patent/JP6543609B2/ja
Active 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
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本発明は、ライブラリコードまたはオープンソースコード内のエラーに移ることなく、デバッガにおいてジャバスクリプトコードをステップスルーするための方法、システム、およびコンピュータプログラム製品に及ぶ。デバッガは、ジャバスクリプトコードの1つまたは複数のセグメントをライブラリコードとして指定するユーザー入力を受け取る。次いで、デバッガは、ジャバスクリプトコードに対してデバッグ動作を実行する。デバッグ動作は、ジャバスクリプトコードのユーザーにより生成されたセグメントのみにおけるエラーを識別するために、ジャバスクリプトコードをステップスルーするためのステップ動作を含み、ユーザーにより生成されたセグメントは、ライブラリコードとして指定されなかったコードに対応する。

Description

[背景技術]
[0001] 多岐にわたるライブラリおよびプラグインがジャバスクリプトに使用可能であり、このことは、ジャバスクリプトベースのアプリケーションのより簡単な開発を可能にする。このようなライブラリは、すでにデバッグされ、最適化されているので、ジャバスクリプト開発者は、通常、ライブラリ自体はデバッグされる必要がないと想定する。加えて、このようなツールのうちの多くは、基礎をなすコードが難読化され、開発者には読めなくなるように圧縮および縮小されており、これは、ジャバスクリプト開発者がこれらの第三者のライブラリをさらに変更することを防止する。ジャバスクリプト開発者のコード内のエラーは、このようなライブラリ内にエラーを引き起こすことがあり、これは、開発者がライブラリコードを変更できないか、または変更したくない場合、コードをデバッグする際に混乱を招くおそれがある。それよりも、開発者は、開発者自身のコード内のエラーを識別することにより興味があることが多い。
[0002] 本概要は、発明を実施するための形態において以下にさらに説明される概念の集まりを簡略化された形式で選択された概念を紹介するために提供される。本発明の概要は、特許請求される主題の重要な特徴または本質的な特徴を識別することを意図されず、特許請求される主題の範囲を限定するために使用されることも意図されない。
[0003] デバッガは、ジャバスクリプト開発者が第三者のライブラリをブラックボックスとして扱うことを可能にし、それにより、それらのライブラリ内のエラーが開発者に識別されないようにする。その代わりに、ジャバスクリプト開発者は、開発者自身のコードが実行上の問題についてどのように誤りがあるかを迅速に識別することができる。
[0004] スクリプトホストは、入力がデバッギングにとって興味があるか否か、すなわち、コードが開発者のコードであるのか、または第三者のコードであるのかを識別する。このような入力に基づいて、スクリプトデバッガは、興味がない入力を自動的に排除するか、またはステップオーバする。
[0005] 効率的なジャバスクリプトデバッグ体験を提供するために、デバッグモニタは、新たなタイプのステップメカニズムを提供し、このステップメカニズムは、本明細書において、「Step to Document Boundary」と呼ばれる。他の一般的なステップ方法(例えば、ステップイントゥ、ステップオーバ、ステップアウト)を使用することは、興味がある入力を見逃すか、またはリモートデバッギング中にはあまりに煩雑(chatty)となるかのいずれかとなるであろう。
[0006] 本発明の上記および他の利点および特徴をさらに明確にするために、本発明の実施形態のより具体的な説明は、添付の図面を参照しつつ、与えられるであろう。これらの図面は、本発明の典型的な実施形態のみを図示しており、そのため、本発明の範囲を限定するものとみなされるべきではないことが認識される。本発明は、添付の図面の使用を通じて、追加の特異性および詳細と共に説明および解説されるであろう。
[0007]例示的な実施形態に係る、デバッガツールまたは統合開発環境アプリケーションのためのユーザーインターフェースを例示する図である。 [0008]ジャストマイコードを用いてデバッグする場合に開発者のプリファレンスを選択するためのユーザーインターフェースを例示する図である。 [0009]一実施形態に係る、デバッガにおいてブレークをトリガする例外をどのように処理するかを評価するためのプロセスのフローチャートである。 [0010]一実施形態に係る、デバッガのステップ挙動を処理するためのプロセスを例示するフローチャート。 [0011]どの部分が開発者コードであり、どの部分がライブラリコードであるのかを示すコメントを有する注釈つきのコンパイル済みドキュメントを例示する図である。 [0012]コンパイル済みドキュメント内のドキュメントバウンダリを識別するためにソースマップが使用される実施形態を例示する図である。 [0013]ジャストマイコード機能を使用したジャバスクリプトデバッグのための適切なコンピューティングおよびネットワーキング環境の一例を例示する図である。
[0014] 図1は、例示的な実施形態に係る、デバッガツールまたは統合開発環境(IDE:integrated development environment)アプリケーションのためのユーザーインターフェース100を例示する図である。ユーザーインターフェース100は、開発者がデバッグ用のコードを選択し、当該コードが当該開発者によって作成されたもの、すなわち、「マイコード(my code)」であるのか、または外部ソースからのものであるのかを識別することを可能にする。
[0015] コードウィンドウ101は、ジャバスクリプトドキュメントなどの選択されたソースファイルについての一連のコードを示す。ソースドキュメントウィンドウ102は、デバッギングに使用可能なファイルを示す。開発者は、マウスもしくはタッチパッドなどのポインティングデバイスを使用して、またはメニューコマンドを使用して、ソースファイルのうちの1つを選択し得る。これらのファイルは、コードウィンドウ101内に示されるapplication.jsという例示的なコードなどの、開発者によって書かれたコードであり得る。開発者によって使用されてはいるが、開発者によって作成されたものではないライブラリ、プラグイン、および他の外部ファイルも、ウィンドウ102内に示され得る。例えば、開発者は、既存の機能を再作成するよりもむしろ、その機能のためのコードを有するオープンソースドキュメントを取得し、そのオープンソースドキュメントを新たなアプリケーション内で使用し得る。
[0016] 開発者は、ソースドキュメントウィンドウ102内のファイルを選択し、マウスを用いて「右クリックすること」、またはメニューコマンドを使用することによって、コード指定ウィンドウ103を開き得る。開発者は、適当なオプションを選択することによって、選択されたコードをライブラリファイルとして、または開発者自身のコード、すなわち、「マイコード」として指定し得る。ファイル指定は、デバッガツールまたはIDEによって、そのファイルについてのコード内のエラーに移るか、またはそのファイルについてのコード内のエラーを表示するかを判定するために使用される。
[0017] ユーザーインターフェース100は、時計104、ブレークポイント105、またはデバッガツールのためのイベントを設定する能力などの他の構成オプションも開発者に提供する。開発者は、選択されたコードについてのコールスタック107も見ることができる。
[0018] 図2は、ジャストマイコード機能を用いてデバッグする場合に開発者のプリファレンスを選択するためのユーザーインターフェース200を例示する。開発者は、チェックボックス201または他の機能を使用して、「マイコード」として指定されたファイルにデバッグを限定することを選択し得る。開発者は、ライブラリコードを識別する際に、デバッガツールまたはIDEが使用すべきURIをウィンドウ202において指定し得る。マイコードURIウィンドウ203は、デバッガによって「マイコード」としてみなされるべきファイルを特定するために、開発者によって使用され得る。
[0019] ユーザーインターフェース200は、ライブラリファイル(202)とみなされるか、または「マイコード」(203)としてマークされるドキュメントおよびファイルをユーザーが具体的に選択することを可能にする。ライブラリファイルとして、または「マイコード」として具体的に指定されないファイルは、ワイルドカードマッチングまたはヒューリスティックによって、そのようなものとしてマークされ得る。例えば、特定のファイルlibrary.jsは、ライブラリファイルとして具体的に指定され、ワイルドカード*.min.js.を使用することで、縮小済みのあらゆるジャバスクリプトもライブラリファイルとみなされ、「マイコード」から除外される。
[0020] 開発者のユーザースクリプトコードのデバッグ中に、開発者は、テスト環境が予想通りに機能しているかを判定するために、開発者がテスト環境を調べ得るブレークポイントを挿入することが多い。ブレークポイントにおいて、開発者は、変数を調べ、異なる関数へそれらの間のコードを実行せずにステップし、コードを編集および実行を継続し、例外処理を見直す等し得る。デバッガが、デバッグ対象のアプリケーション内のブレークポイントに到達すると、デバッグ対象は、開発者によって実行が再開されるまでフリーズする。しかしながら、開発者は、ライブラリコードまたはオープンソースコード内でアプリケーションを停止させることを望まないかもしれない。なぜならば、そのライブラリコードまたはオープンソースコードは、すでにデバッグ済みである可能性が高く、そのため、デバッグ対象のアプリケーションにおけるエラーの原因ではない可能性が高いためである。その代わりに、開発者は、開発者自身のコード(「マイコード」)内にある可能性が高い、エラーの近因を確認することを望む。
[0021] エラーを引き起こしている開発者自身のコードを手動でナビゲートすることを開発者に求めるよりもむしろ、ジャストマイコード機能を使用するデバッガは、ライブラリおよびオープンソースコードを自動的にスキップする。デバッガツールが、通常は停止をトリガするであろう例外に遭遇した場合、デバッガは、ソースファイルが「マイコード」を構成するかを評価する。ソースファイルが「マイコード」を構成しない場合、デバッガは、「マイコード」URIに一致する実行スタック上で最新のドキュメントがないか実行スタックをスキャンする。デバッガが「マイコード」ドキュメントを見つけると、デバッガは、デバッガ(102)において関連する行を強調する。「マイコード」ドキュメントが見つからない場合、例外が発生したドキュメントが表示され得るか、または、任意選択により、例外は完全に無視され得る。他の全てのデバッガ機能は、典型的な手法で挙動する。デバッガは、一般に、ライブラリファイルまたはオープンソースファイルについてのソースコードを表示しない。しかしながら、開発者は、例えば、コールスタック(107)をナビゲートすることによって、「マイコードではない」ファイルを調べることも選び得る。
[0022] 図3は、一実施形態に係る、デバッガにおいてブレークをトリガする例外をどのように処理するかを評価するためのプロセスのフローチャートである。このプロセスは、例えば、ファーストチャンス例外またはユーザー未処理の例外をどのように取り扱うかを例示する。工程301において、例外がデバッガ内で発生する。工程302において、デバッガは、例外が発生したコードが「マイコード」として指定済みであるか判定する。現在のコードが「マイコード」として指定済みである場合、工程303において、デバッガは、エラーが発生した現在のコールコンテキストを表すスクリプト内の行を表示する。
[0023] 工程302において、現在のコードが「マイコード」として指定済みではない場合、デバッガは、工程304において、コールスタックにおいてレベルを1つ自動的にナビゲートダウンする。デバッガは、工程305において、コールスタックが調べ尽くされた(exhausted)かを評価する。コールスタックが調べ尽くされていない場合、本プロセスは、デバッガがコールスタックのこのレベルが「マイコード」として指定済みであるかを評価する工程302へ戻り、上述されたように進む。
[0024] 工程305において、コールスタックが調べ尽くされた場合、本プロセスは、工程306へ移り、デバッガは、コールスタックの最上部へ戻る。工程307において、デバッガは、ユーザーが外部コード内のエラーを見直すことに興味があるかをさらに評価する。ユーザーは、これを、例えば、ポップアップユーザーインターフェースクエリに応答することによって、全ての外部エラーについて、またはエラーごとに構成設定において示し得る。ユーザーが外部エラーを見直すことを望む場合、本プロセスは、コールスタックの最上部におけるコンテキストを表すスクリプト内の行における例外アシスタントをデバッガが表示する工程303へ移る。そうでない場合、ユーザーは、任意選択により、工程307において例外を無視し得る。例外が無視される場合、本プロセスは、工程308へ移り、通常の実行が再開される。
[0025] 効率的なジャバスクリプトデバッグ体験を提供するために、デバッガツールは、新たなタイプのステップメカニズム:「Step to Documentary Boundary」を提供する。プロセスデバッグマネージャ(PDM:process debug manager)は、スクリプトエンジンのデバッガとユーザーインターフェースとの間の関係を調停する。PDMは、ユーザー入力を解釈し、当該ユーザー入力をスクリプトエンジンの基礎をなす工程挙動に変換する。
[0026] デバッギングについての一般的なステッピングパターンは、「ステップイン/ネクスト」、「ステップオーバ」、および「ステップアウト」であり、これらは、期待される機能的挙動に対する現在のプログラミング言語の範囲の関係を識別する。ドキュメント指向のプログラミング言語であるジャバスクリプトの場合、スクリプトは、いくつかの異なるファイルに由来し得るが、ファイルのコンパイルは存在しない。ユーザーインターフェース100、200は、ジャバスクリプトドキュメント内のコードが「マイコード」、ライブラリコード、または何らかの他の名称であるのかを示すために使用され得る。ジャバスクリプトについて「マイコード」を効率的にデバッグすることをサポートするために、新たなステップ挙動が導入される。開発者が、関数呼び出しに「ステップインする」ことを望み、その関数呼び出しが、「マイコード」としてマークされないドキュメント内に存在する場合、従来のデバッガは、開発者が「ステップイン」コマンドを発行することを求めるであろう。開発者がリモートデバッグしている場合、これは、ネットワーク上で非常に「煩雑に」なり得、実行に長時間を要し得る。
[0027] 「step to documentary boundary」コマンドを使用することで、PDMは、スクリプトエンジンに、スクリプトエンジンが現在のドキュメントを離れるまで実行を継続するように伝える。この機能は、開発者に透過的となるように、デバッガによって自動的にトリガされ得る。この機能性は、反対方向においても存在し得る。ユーザーが関数呼び出しを「ステップアウトする」ことを選択する場合、呼び出し関数は「マイコード」ではなかったかもしれず、その時点で、ユーザーは、現在実行中の関数の下のコールスタックにおける最初の「マイコード」ドキュメント命令に移るべきである。この時点で「マイコード」ドキュメントが存在しない場合、実行は、通常通り再開すべきである。これは、開発者が作成しておらず、デバッグ中に関心がないコードを隠す効果がある。
[0028] 本発明の実施形態は、ドキュメントバウンダリを示すためのエントリイベントおよび終了イベントを用いてデバッグする際に、全ての関数本体に注釈を付け、これは、スクリプトがいつドキュメントを移行するかをデバッガに伝える。
[0029] 図4は、一実施形態に係る、デバッガのステップ挙動を処理するためのプロセスを例示するフローチャートである。このプロセスは、Step to Document Boundary機能性をサポートするために、既存のデバッガに付加され得る。工程401において、開発者は、ユーザーインターフェースレベルでステップインまたはステップアウト(すなわち、任意のステップ動作)する所作を行う。工程402において、PDMは、スクリプトエンジンに、対応する動作を実行するように命令する。工程403において、デバッガは、開発者が「ステップイントゥした」対象コードが「マイコード」であるかを次のコード文において評価する。対象コードが「マイコード」である場合、工程404において、ユーザーインターフェースは、デバッグイベントと次に中断される命令におけるコードとを表示する。
[0030] 対象コードが「マイコード」ではない場合(例えば、スクリプトエンジンがライブラリコードにステップインする場合)、工程405において、PDMは、スクリプトエンジンに、次のドキュメントバウンダリへステップアウトするように、すなわち、「ドキュメントバウンダリへステップする(step to document boundary)」ように命令する。工程405において、スクリプトエンジンは、ドキュメントバウンダリイベントを検出するまで、実行モードにある。工程406において、本プロセスは、スクリプトの実行がデバッガにイールドする(yields)かを判定する。スクリプトの実行がイールドしない場合、工程407において、スクリプトは、通常の実行を継続する。スクリプトの実行がイールドする場合、本プロセスは、工程403に戻り、次のドキュメントについて、上述されたように継続する。
[0031] したがって、各デバッギングイベントについて、デバッガは、「マイコード」に移る場合には中断すべきか、またはライブラリコードもしくは「マイコード」とラベル付けされていない他のコードに移る場合に、ドキュメントをステップスルーし、通常の実行を継続すべきかを判定する。
[0032] 他の実施形態において、ドキュメントレベルは、有用な粒度ではないことがある。例えば、開発者は、アプリケーションを展開する前に、開発者のジャバスクリプトファイルの全てを単一のファイルにコンパイルし得る。その時点において、ドキュメントレベルは、「マイコード」とライブラリコードとを区別するための十分な粒度のレイヤではない。より具体的には、アプリケーションが単一のドキュメントにコンパイルされる場合、そのドキュメントは、全て「マイコード」または「マイコードではない」ものとしてラベル付けされ得るにすぎない。
[0033] この状況を補うために、開発者は、ソースドキュメントに注釈またはコードレベルコメントを付加して、ドキュメントバウンダリが発生する場所を示し得る。これは、開発者が、コードのどの部分が「マイコード」であり、どの部分が「マイコードではない」のか注釈を付けることを可能にする。
[0034] 図5は、どの部分が「マイコード」であり、どの部分が「マイコードではない」のかを示すコメントを有する注釈つきのコンパイル済みドキュメントを例示する。例えば、ソースドキュメント501〜504は、開発者によって単一のドキュメント505にコンパイルされ得る。ドキュメント501および504は、開発者により生成されたスクリプトであり、ドキュメント502および503は、ライブラリコード、オープンソースドキュメント、または開発者がデバッグすることを望まない他のスクリプトである。どこから「マイコード」が始まるか506と、どこからライブラリコードが始まるか507とを示すために、コンパイル済みドキュメントに注釈が付加される。追加のコメント508は、各セグメントがどこで終了するかを示し得る。
[0035] コンパイル済みファイル505をデバッグする場合、デバッガは、ドキュメントバウンダリを識別するために、コメント506〜508を探す。例えば、ライブラリコード内でエラーが発生する場合、デバッガは、step to document boundary機能性を実装する際に、end library code注釈508を探す。
[0036] 図6は、コンパイル済みドキュメント内のドキュメントバウンダリおよび内容を識別するためにソースマップが使用される別の実施形態を例示する。ソースマップは、結合および縮小されたファイル605を元の未ビルド状態601〜604へマッピングするための手法を提供する。加えて、ソースマップは、結合されたファイルを、タイプスクリプト、コーヒースクリプト、またはダートなどの、ジャバスクリプトにコンパイルされる他の言語へマッピングするための手法を提供する。ソースマップ606は、ジャバスクリプトが製品用にビルドされる場合に生成される。元のジャバスクリプトファイル601〜604は、製品ファイル605に縮小および結合される。ソースマップ606は、元のファイル601〜604に関する情報を保持する。開発者が、ジャバスクリプト605内のある行番号および列番号を問い合わせする場合、デバッガは、元の位置を判定するために、ソースマップ606を検索することができる。デバッガツールは、ソースマップ606を自動的に構文解析し、縮小および結合されていないファイル601〜604を実行しているかのように見せることができる。ソースマップ606の情報は、Step to Document Boundary機能のためにドキュメントバウンダリを判定すべく使用され得る。
[0037] 図7は、図1〜図6の例が実装され得る適切なコンピューティングおよびネットワーキング環境700の一例を例示する。コンピューティングシステム環境700は、適切なコンピューティング環境の1つの例に過ぎず、本発明の使用または機能性の範囲に関していかなる限定も示唆することを意図されない。本発明は、多数の他の汎用または特殊用途のコンピューティングシステム環境または構成と共に動作可能である。本発明と共に使用するのに適し得る周知のコンピューティングシステム、環境、および/または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、タブレットデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスのうちのいずれかを含む分散コンピューティング環境等を含むが、これらに限定されない。
[0038] 本発明は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能な命令の一般的なコンテキストにおいて説明され得る。一般に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、これらは、特定のタスクを実行し、または特定の抽象データ型を実装する。本発明は、通信ネットワークを通じてリンクされる複数のリモート処理デバイスによってタスクが実行される分散コンピューティング環境においても実践され得る。分散コンピューティング環境において、プログラムモジュールは、メモリ記憶デバイスを含むローカルコンピュータ記憶媒体および/またはリモートコンピュータ記憶媒体に位置し得る。
[0039] 図7を参照すると、本発明の様々な態様を実装するための例示的なシステムは、汎用コンピューティングデバイスをコンピュータ700の形式で含み得る。構成要素は、処理装置701、システムメモリなどのデータストレージ702、データストレージ702を含む様々なシステム構成要素を処理装置701に結合するシステムバス703などの様々なハードウェア構成要素を含み得るが、これらに限定されない。システムバス703は、メモリバスまたはメモリコントローラ、周辺バス、および多様なバスアーキテクチャのうちのいずれかを使用するローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかであり得る。限定ではなく、例として、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロチャネルアーキテクチャ(MCA:Micro Channel Architecture)バス、強化ISA(EISA:Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバスとしても知られるPCI(Peripheral Component Interconnect)バスを含む。
[0040] 処理装置701は、本明細書において説明される本発明の態様を実装するために、IDE、ジャバスクリプトエディタ、またはブラウザなどの、開発者ツールおよびデバッギングツールを実行し得る。
[0041] コンピュータ700は、典型的には、多様なコンピュータ読取可能な媒体704を含む。コンピュータ読取可能な媒体704は、コンピュータ700によってアクセスされ得る任意の使用可能な媒体であってもよく、揮発性媒体および不揮発性媒体と、取外し可能な媒体および取外し不可能な媒体との両方を含むが、伝搬信号を排除する。限定ではなく、例として、コンピュータ読取可能な媒体704は、コンピュータ記憶媒体と通信媒体とを含み得る。コンピュータ記憶媒体は、コンピュータ読取可能な命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶のために、任意の方法または技術において実装される揮発性および不揮発性、取外し可能および取外し不可能な媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD:digital versatile disk)もしくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用され得、コンピュータ700によってアクセスされ得る任意の他の媒体を含むが、これらに限定されない。通信媒体は、典型的には、コンピュータ読取可能な命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他の伝送メカニズムなどの変調されたデータ信号において具現化し、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、情報を信号中にエンコードするような手法でその特性のうちの1つまたは複数を設定または変更した信号を意味する。限定ではなく、例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体と、音響、RF、赤外線、および他の無線媒体などの無線媒体とを含む。上記のうちの任意のものの組み合わせも、コンピュータ読取可能な媒体の範囲内に含まれ得る。コンピュータ読取可能な媒体は、コンピュータ記憶媒体に記憶されるソフトウェアなどのコンピュータプログラム製品として具現化され得る。
[0042] データストレージまたはシステムメモリ702は、コンピュータ記憶媒体を、読み出し専用メモリ(ROM:read only memory)およびランダムアクセスメモリ(RAM:random access memory)などの揮発性メモリおよび/または不揮発性メモリの形式で含む。スタートアップ期間などに、コンピュータ700内の要素間で情報を伝達するのに役立つ基本ルーチンを含む基本入出力システム(BIOS:basic input/output system)は、典型的には、ROMに記憶される。RAMは、典型的には、処理ユニット701に即座にアクセス可能であり、および/または、処理ユニット701によって現在動作させられているデータおよび/またはプログラムモジュールを含む。限定ではなく、例として、データストレージ702は、オペレーティングシステム、アプリケーションプログラム、ならびに他のプログラムモジュールおよびプログラムデータを保持する。
[0043] データストレージ702は、他の取外し可能/取外し不可能な、揮発性/不揮発性のコンピュータ記憶媒体も含み得る。ほんの一例として、データストレージ702は、取外し不可能な不揮発性の磁気媒体から読み出し、または取外し不可能な不揮発性の磁気媒体に書き込むハードディスクドライブ、取外し可能な不揮発性の磁気ディスクから読み出し、または取外し可能な不揮発性の磁気ディスクに書き込む磁気ディスクドライブ、および、CD ROMまたは他の光媒体などの取外し可能な不揮発性の光ディスクから読み出し、または取外し可能な不揮発性の光ディスクに書き込む光ディスクドライブであり得る。例示的な動作環境において使用され得る、他の取外し可能/取外し不可能な、揮発性/不揮発性のコンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM等を含むが、これらに限定されない。上述され、図7に例示されるドライブおよびそれらの関連付けられるコンピュータ記憶媒体は、コンピュータ読取可能な命令、データ構造、プログラムモジュールおよびコンピュータ700のための他のデータのストレージを提供する。
[0044] データストレージ702およびコンピュータ読取可能な媒体704は、IDE、ジャバスクリプトエディタまたはブラウザなどの、ジャバスクリプトアプリケーションを開発し、デバッグするためのソフトウェアアプリケーションを保持し得る。加えて、データストレージ702およびコンピュータ読取可能な媒体704は、開発者により生成されたコード(すなわち、「マイコード」)ならびにライブラリコード、オープンソースコード、第三者のコード、および他のコード(すなわち、「マイコードではない」)などのジャバスクリプトファイルを保持し得る。タイプスクリプト、コーヒースクリプト、またはダートなどの他のプログラミング言語のファイルも記憶され得る。
[0045] ユーザーは、ユーザーインターフェース705、またはタブレット、電子デジタイザ、マイクロフォン、キーボード、および/もしくは一般的にマウス、トラックボール、もしくはタッチパッドと呼ばれるポインティングデバイスなどの他の入力デバイスを通じて、コマンドおよび情報を入力し得る。他の入力デバイスは、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ等を含み得る。加えて、音声入力、手もしくは指を使用するジェスチャ入力、または他のナチュラルユーザーインターフェース(NUI:natural user interface)も、マイクロフォン、カメラ、タブレット、タッチパッド、グローブ、または他のセンサなどの適当な入力デバイスと共に使用され得る。これらおよび他の入力デバイスは、システムバス703に結合されるユーザーインターフェース705を通じて処理装置701に接続されることが多いが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス(USB:universal serial bus)などの他のインターフェースおよびバス構造によって接続されてもよい。ユーザーインターフェース705は、ジャバスクリプトコードのセクションを「マイコード」または「マイコードではない」として識別するためのツールを開発者に提供し得る。
[0046] モニタ706または他のタイプの表示デバイスも、ビデオインターフェースなどのインターフェースを介してシステムバス703に接続される。モニタ706は、タッチスクリーンパネル等と一体化されてもよい。モニタおよび/またはタッチスクリーンパネルは、タブレットタイプのパーソナルコンピュータにおけるように、コンピューティングデバイス700が組み込まれる筐体に物理的に結合され得ることに留意されたい。加えて、コンピューティングデバイス700などのコンピュータは、出力周辺インターフェース等を通じて接続され得る、スピーカおよびプリンタなどの他の周辺出力デバイスも含み得る。
[0047] コンピュータ700は、リモートコンピュータなどの1つまたは複数のリモートデバイスへの論理接続707を使用して、ネットワーク化された環境またはクラウドコンピューティング環境において動作し得る。リモートコンピュータは、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他の一般的なネットワークノードであってもよく、典型的には、コンピュータ700に関連して上述された要素のうちの多くまたは全てを含む。図7に図示される論理接続は、1つまたは複数のローカルエリアネットワーク(LAN:local area network)と、1つまたは複数の広域ネットワーク(WAN:wide area network)とを含むが、他のネットワークも含み得る。そのようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいてありきたりなものである。
[0048] ネットワーク化された環境またはクラウドコンピューティング環境において使用される場合、コンピュータ700は、ネットワークインターフェースまたはアダプタ707を通じて、公衆ネットワークまたはプライベートネットワークに接続され得る。いくつかの実施形態において、モデムまたは他の手段は、ネットワーク上での通信を確立する。内部または外部であり得るモデムは、ネットワークインターフェース707または他の適当なメカニズムを介してシステムバス703に接続され得る。インターフェースおよびアンテナなどを含む無線ネットワーキングコンポーネントは、アクセスポイントまたはピアコンピュータなどの適切なデバイスを通じて、ネットワークに結合され得る。ネットワーク化された環境において、コンピュータ700に関連して図示されるプログラムモジュールまたはその一部は、リモートメモリストレージデバイスに記憶され得る。図示されるネットワーク接続は例示であり、コンピュータ間の通信リンクを確立する他の手段が使用されてもよいことが認識され得る。
[0049] ネットワークインターフェース707は、システム700を使用する開発者がリモートデバイス上で実行されているコードをデバッグすることができるように、リモートコンピュータまたは端末上で実行されているソフトウェアおよびコードへのアクセスを提供するためにも使用され得る。
[0050] 主題は、構造的な特徴および/または方法論的な動作に固有の言語で説明されてきたが、添付の特許請求の範囲において定義される主題は、必ずしも上述された特定の特徴または動作に限定されるとは限らないことが理解されるべきである。むしろ、上述された特定の特徴および動作は、特許請求の範囲を実施する例示的な形式として開示される。

Claims (10)

  1. コンピュータシステムにおいて、ジャバスクリプトコードおよびジャバスクリプトにコンパイルされる他のコードをデバッグするための方法であって、
    前記ジャバスクリプトコードの1つまたは複数のセグメントをライブラリコードとして指定するユーザー入力を受け取ることと、
    前記ジャバスクリプトコードのユーザーにより生成されたセグメントのみにおけるエラーを識別するために、前記ジャバスクリプトコードをステップスルーするためのステップ動作を含むデバッグ動作を前記ジャバスクリプトコードに対して実行することとを含み、前記ユーザーにより生成されたセグメントは、ライブラリコードとして指定されなかったコードに対応する、方法。
  2. スクリプトエンジンによって次のコード文を実行するステップ動作をデバッガによって実行することと、
    前記実行される文がユーザーにより生成されたコードである場合、デバッガユーザーインターフェース上で前記実行された文を識別することと、
    をさらに含む、請求項1に記載の方法。
  3. スクリプトエンジンによって次のコード文を実行するステップ動作をデバッガによって実行することと、
    前記実行される文がライブラリコードである場合、前記スクリプトエンジンに、ドキュメントバウンダリへステップするように命令することと、
    をさらに含む、請求項1に記載の方法。
  4. 前記ジャバスクリプトコードの前記1つまたは複数のセグメントが、コンパイル済みスクリプトファイル内の注釈によって識別される別個のドキュメントである、請求項3に記載の方法。
  5. 前記ジャバスクリプトコードの前記1つまたは複数のセグメントが、コンパイル済みスクリプトファイルについてのソースマップによって識別される別個のドキュメントであり、前記別個のドキュメントは、ジャバスクリプトまたは他のプログラミング言語で書かれている、請求項3に記載の方法。
  6. 実行が前記デバッガにイールドする場合、前記ドキュメントバウンダリにおいて、前記ジャバスクリプトの通常の実行を継続すること、
    をさらに含む、請求項3に記載の方法。
  7. 実行が前記デバッガにイールドしない場合、前記ドキュメントバウンダリにおいて、前記ドキュメントバウンダリに続く文がユーザーにより生成されたコードであるかを判定することと、
    前記文がユーザーにより生成されたコードである場合、デバッガユーザーインターフェース上で前記実行される文を識別することと、
    をさらに含む、請求項3に記載の方法。
  8. 実行が前記デバッガにイールドしない場合、前記ドキュメントバウンダリにおいて、前記ドキュメントバウンダリに続く文がライブラリコードであるかを判定することと、
    前記実行される文がライブラリコードである場合、前記スクリプトエンジンに、次のドキュメントバウンダリへステップするように命令することと、
    をさらに含む、請求項3に記載の方法。
  9. デバッガと、1つまたは複数のジャバスクリプトドキュメントと、スクリプトエンジンとを含むコンピュータシステムであって、前記デバッガは、ジャバスクリプトコードをステップスルーするためのステップ動作を含む、1つまたは複数のデバッグ動作を実行するように構成され、前記デバッガは、
    前記ジャバスクリプトコードの1つまたは複数のセグメントをライブラリコードとして指定するユーザー入力を受け取り、
    前記ジャバスクリプトコードのユーザーにより生成されたセグメントのみにおけるエラーを識別するために、前記ジャバスクリプトコードをステップスルーする
    ように動作し、前記ユーザーにより生成されたセグメントは、ライブラリコードとして指定されなかったコードに対応する、コンピュータシステム。
  10. 前記デバッガが、
    ユーザーによってステップインするように指示される場合、前記スクリプトエンジンによって次のコード文を実行し、
    前記実行される文がユーザーにより生成されたコードである場合、デバッガユーザーインターフェース上で前記実行される文を識別し、
    前記実行される文がライブラリコードである場合、前記スクリプトエンジンに、ドキュメントバウンダリへステップするように命令する
    ようにさらに動作する、請求項9に記載のコンピュータシステム。
JP2016501782A 2013-03-15 2014-03-13 ジャストマイコードを使用したジャバスクリプトデバッギング Active JP6543609B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/831,801 US10664384B2 (en) 2013-03-15 2013-03-15 Javascript debugging using just my code
US13/831,801 2013-03-15
PCT/US2014/025198 WO2014151201A1 (en) 2013-03-15 2014-03-13 Javascript debugging using just my code

Publications (2)

Publication Number Publication Date
JP2016511497A true JP2016511497A (ja) 2016-04-14
JP6543609B2 JP6543609B2 (ja) 2019-07-10

Family

ID=50628934

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016501782A Active JP6543609B2 (ja) 2013-03-15 2014-03-13 ジャストマイコードを使用したジャバスクリプトデバッギング

Country Status (6)

Country Link
US (1) US10664384B2 (ja)
EP (1) EP2972882B1 (ja)
JP (1) JP6543609B2 (ja)
KR (1) KR102184436B1 (ja)
CN (1) CN105164648B (ja)
WO (1) WO2014151201A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8997049B1 (en) * 2010-05-21 2015-03-31 Cadence Design Systems, Inc. Method and system for debugging of compiled code using an interpreter
US9977661B2 (en) * 2013-06-28 2018-05-22 Tencent Technology (Shenzhen) Company Limited Method and system for generating a user interface
US10003499B2 (en) * 2015-09-09 2018-06-19 International Business Machines Corporation Client-configured server class tracing to a configurable threshold
US10289536B2 (en) * 2016-08-31 2019-05-14 Synopsys, Inc. Distinguishing public and private code in testing environments
US10162731B2 (en) 2017-01-23 2018-12-25 International Business Machines Corporation Conditional breakpoint on call stack during debugging at runtime
US20180210713A1 (en) * 2017-01-24 2018-07-26 Salesforce.Com, Inc. Methods and systems for using cross repositories
US11392482B2 (en) 2019-01-03 2022-07-19 Microsoft Technology Licensing, Llc Data breakpoints on certain kinds of functions
US11983094B2 (en) 2019-12-05 2024-05-14 Microsoft Technology Licensing, Llc Software diagnostic context selection and use
US11748460B2 (en) * 2020-04-27 2023-09-05 Imperva, Inc. Procedural code generation for challenge code
CN113031932B (zh) * 2021-03-11 2023-10-20 腾讯科技(深圳)有限公司 项目开发方法、装置、电子设备及存储介质
CN114625660A (zh) * 2022-03-22 2022-06-14 阿里巴巴(中国)有限公司 调试方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002196950A (ja) * 2000-12-25 2002-07-12 Toshiba Corp デバッグシステム
JP2003323318A (ja) * 2002-05-01 2003-11-14 Seiko Epson Corp 特殊名付き関数によるソフトウェア区切り点の実行装置及びその方法
JP2004326789A (ja) * 2003-04-21 2004-11-18 Microsoft Corp ジャストマイコード型のデバッグ方法

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819093A (en) * 1995-03-03 1998-10-06 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
US6065035A (en) * 1996-06-13 2000-05-16 Microsoft Corporation Method and system for procedure boundary detection
US6052780A (en) * 1996-09-12 2000-04-18 Open Security Solutions, Llc Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information
CA2205096C (en) * 1997-05-09 2001-10-09 Ibm Canada Limited-Ibm Canada Limitee A system for remote debugging of client/server applications
US6061518A (en) 1997-11-25 2000-05-09 International Business Machines Corporation Data processing system and method for debugging a JavaScript program
US7353163B2 (en) * 1999-04-27 2008-04-01 Transitive Limited Exception handling method and apparatus for use in program code conversion
US7165243B1 (en) * 1999-06-25 2007-01-16 Sun Microsystems, Inc. Multi-lingual tag extension mechanism
US6539464B1 (en) * 2000-04-08 2003-03-25 Radoslav Nenkov Getov Memory allocator for multithread environment
JP2004013190A (ja) * 2002-06-03 2004-01-15 Matsushita Electric Ind Co Ltd ソフトウエア開発環境、シミュレータ及び記録媒体
US7213123B2 (en) 2002-10-24 2007-05-01 International Business Machines Corporation Method and apparatus for mapping debugging information when debugging integrated executables in a heterogeneous architecture
US7650592B2 (en) * 2003-03-01 2010-01-19 Bea Systems, Inc. Systems and methods for multi-view debugging environment
US7685570B2 (en) * 2003-06-09 2010-03-23 Microsoft Corporation Error/exception helper
US7730460B1 (en) 2004-06-18 2010-06-01 Apple Inc. Code execution visualization using software fingerprinting
US8302020B2 (en) 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
US7984220B2 (en) * 2004-09-02 2011-07-19 International Business Machines Corporation Exception tracking
US7882492B2 (en) * 2004-09-17 2011-02-01 Oracle America, Inc. Intelligent computer program debugger, and system and method for implementing the same
US7698692B1 (en) * 2005-11-10 2010-04-13 Sun Microsystems, Inc. Preparing a binary file for future instrumentation
US8087002B2 (en) 2006-04-04 2011-12-27 Tibco Software Inc. Method and system for providing a visual debugger for an interpreted statistical language
US20070250810A1 (en) * 2006-04-20 2007-10-25 Tittizer Abigail A Systems and methods for managing data associated with computer code
US8225286B2 (en) 2006-05-23 2012-07-17 Microsoft Corporation Debugging interpreted input
US8429613B2 (en) 2006-10-31 2013-04-23 Microsoft Corporation Stepping and application state viewing between points
US8196107B2 (en) 2008-06-19 2012-06-05 Microsoft Corporation Simulating stepping through interpreted code
US9632909B2 (en) 2008-12-16 2017-04-25 Microsoft Technology Licensing, Llc Transforming user script code for debugging
US8595702B2 (en) 2009-03-13 2013-11-26 Microsoft Corporation Simultaneously displaying multiple call stacks in an interactive debugger
CN102053906A (zh) 2009-10-30 2011-05-11 国际商业机器公司 用于收集程序运行时信息的系统和方法
US8640104B2 (en) 2009-12-08 2014-01-28 International Business Machines Corporation Computer method and apparatus for debugging in a dynamic computer language
US9262137B2 (en) 2010-05-27 2016-02-16 Salesforce.Com, Inc. Adding directives for versions of javascript files directly into source code in a multi-tenant database environment
US8910148B2 (en) * 2010-07-29 2014-12-09 International Business Machines Corporation Packaging an application with plurality of libraries
US8397218B2 (en) 2010-10-19 2013-03-12 International Business Machines Corporation Step granularity selection in a software debugger
US8495590B2 (en) * 2011-06-10 2013-07-23 International Business Machines Corporation User-specific software debugging
US20130055205A1 (en) * 2011-08-23 2013-02-28 Semmle Limited Filtering source code analysis results
US9135147B2 (en) 2012-04-26 2015-09-15 International Business Machines Corporation Automated testing of applications with scripting code
US8914776B2 (en) 2012-05-17 2014-12-16 Microsoft Corporation Assisting development tools through inserted code statements
US9436452B2 (en) * 2012-11-12 2016-09-06 Keysight Technologies, Inc. Method for enforcing language subsets
US20140201709A1 (en) 2013-01-15 2014-07-17 Martin Carl Euerle JavaScript™ Deployment Build Tool for software code that uses an object literal to define meta data and system code.
US9052980B2 (en) * 2013-02-20 2015-06-09 Bmc Software, Inc. Exception based quality assessment
US20140013306A1 (en) 2013-04-20 2014-01-09 Concurix Corporation Computer Load Generator Marketplace
US9424163B2 (en) 2014-01-15 2016-08-23 Microsoft Technology Licensing, Llc Exception and debugging behaviors for JavaScript debugging using just my code
US9239774B2 (en) 2014-01-15 2016-01-19 Microsoft Technology Licensing, Llc Classification of JavaScript code for debugging using just my code
CN104375940A (zh) 2014-11-28 2015-02-25 浪潮电子信息产业股份有限公司 一种对javaScript文件的调试方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002196950A (ja) * 2000-12-25 2002-07-12 Toshiba Corp デバッグシステム
JP2003323318A (ja) * 2002-05-01 2003-11-14 Seiko Epson Corp 特殊名付き関数によるソフトウェア区切り点の実行装置及びその方法
JP2004326789A (ja) * 2003-04-21 2004-11-18 Microsoft Corp ジャストマイコード型のデバッグ方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
下岡秀幸: "ステップアップ!PHP 最終回 ドキュメントを残す", WEB+DB PRESS, vol. 第49巻, JPN6018002227, 25 March 2009 (2009-03-25), JP, pages 184 - 191 *
北村研二: "Google API開発環境", 月刊アスキードットテクノロジーズ, vol. 第16巻,第6号, JPN6018002225, 23 April 2011 (2011-04-23), JP, pages 24 - 31 *
的場聡弘: "デバッグもリズムだ! 意図したところで止める、デバッグサイクルを高速化する", WEB+DB PRESS, vol. 第43巻, JPN6018002226, 25 March 2008 (2008-03-25), JP, pages 60 - 67 *

Also Published As

Publication number Publication date
US10664384B2 (en) 2020-05-26
EP2972882B1 (en) 2019-12-04
KR20150132161A (ko) 2015-11-25
US20140282417A1 (en) 2014-09-18
JP6543609B2 (ja) 2019-07-10
EP2972882A1 (en) 2016-01-20
KR102184436B1 (ko) 2020-11-30
CN105164648A (zh) 2015-12-16
WO2014151201A1 (en) 2014-09-25
CN105164648B (zh) 2019-09-03

Similar Documents

Publication Publication Date Title
JP6543609B2 (ja) ジャストマイコードを使用したジャバスクリプトデバッギング
US9239774B2 (en) Classification of JavaScript code for debugging using just my code
US9424163B2 (en) Exception and debugging behaviors for JavaScript debugging using just my code
Burg et al. Interactive record/replay for web application debugging
US10761963B2 (en) Object monitoring in code debugging
US10409564B2 (en) Recording and playback of development sessions
US8429613B2 (en) Stepping and application state viewing between points
KR20210002701A (ko) 교차 레벨 트레이스 매핑을 통한 실행 제어
CN100590604C (zh) 可插部件上的断点调试
US20120159449A1 (en) Call Stack Inspection For A Thread Of Execution
US10445216B2 (en) Debugging program code at instruction level through emulation
US9459989B2 (en) Method and apparatus for reverse debugging source code using causal analysis
CN106844181B (zh) 用于记录用户行为的方法、系统及移动终端
US20130346917A1 (en) Client application analytics
US20070294667A1 (en) Method for moving and copying dependencies along with source code
US9009678B2 (en) Software debugging with execution match determinations
JP2006185211A (ja) プログラム解析装置、テスト実行装置、その解析方法及びプログラム
US8898649B2 (en) Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program
EP3195115A1 (en) Code development tool with multi-context intelligent assistance
TWI672613B (zh) 使用者行為記錄方法與使用該方法的電子裝置
JP2008191796A (ja) 解析装置及び解析方法及びプログラム
US20130007517A1 (en) Checkpoint Recovery Utility for Programs and Compilers
Kulesovs Automated Testing of iOS Apps: tTap Extension for Apple UIAutomation

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20151110

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181205

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190617

R150 Certificate of patent or registration of utility model

Ref document number: 6543609

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