説明

WINDOWS(登録商標)リモートデバッガサービス

【課題】IFRS(Internet Friendly Relay Service:インターネットフレンドリリレーサービス)を利用することによって、インターネットを介しかつファイアウォールの背後に位置するマシンをデバッグすることが可能な、拡張可能なリモートデバッギングシステムのためのシステムおよび方法を提供すること。
【解決手段】このIFRSを共通の到達範囲内に配置することが可能であり、またSSLおよびセキュリティトークンをリアルタイムに使用して、HTTP上での通信トラフィックを交換する安全な方法を提供することもできる。さらに、IFRSの1つ(または複数)のウェブサーバは、許可システムおよび/または追跡システムを利用して、デバッギングを目的とするそれに対するクライアントの接続を検証することが可能である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、1つ(または複数)のファイアウォールがその間にあるマシン間でのデータ交換に関し、より詳細には、インターセプトを利用して、HTTP(Hyper Text Transfer Protocol)上でのシームレスな接続を介してマシンを接続する、拡張可能なリモートデバッギングサービスに関する。
【背景技術】
【0002】
コンピュータ技術(たとえば、マイクロプロセッサの速度、メモリの容量、データ転送の帯域幅、ソフトウェアの機能など)のますますの進歩は、一般に、様々な産業におけるコンピュータの適用の拡大に寄与している。しばしば一連のサーバとして構成され、ますます強力になるサーバシステムが、一般に提供され、外部のリソース、たとえばWorld Wide Webなどからの要求を処理する。
【0003】
様々なコンピュータソフトウェア/アプリケーションからエラーを除去するプロセスは一般に、デバッギングとして知られている。たとえば、コンピュータプログラムのコーディング中、コードまたは命令の一行がそのコードの他の要素と矛盾する場合など、不注意によるエラーまたはバグの発生は、一般に避け難いことである。コンピュータプログラムからバグを特定し除去するのに役立つデバッギングシステムが開発され、かかる事態の悪影響を緩和している。さらに、サーバアプリケーションの様々な種類の問題を分析するための診断を行う、様々なデバッギングツールおよび方法が存在する。かかるデバッギングは、たとえばサーバの種類、ファイアウォールの存在などが関連する複雑さに応じて、非常にコストがかかり、時間を消費することもある。
【0004】
また、デバッギングは一般に、たとえばコンピュータソフトウェアデバッギングや、ハードウェア記述言語の機能検証(hardware description language functional verification)、ハードウェアの論理レベル分析(hardware logic level analysis)、ハードウェア挙動のソースレベルエミュレーション(hardware behavioral source level emulation)などの複数の異なる手法を利用して行われている。たとえば、コンピュータソフトウェアデバッギングは、コンピュータソフトウェアデバッガを利用して実装することが可能である。
【発明の開示】
【発明が解決しようとする課題】
【0005】
一般に、コンピュータソフトウェアデバッガは、ソフトウェア開発者が、たとえばブレークポイントを設定し、コンピュータソフトウェアプログラムの実行を順次シングルステップで行い、変数および式を検査し表示してプログラムの状態を見るなどにより、実行中の(run)コンピュータソフトウェアプログラムの実行を制御できるようにする、ソフトウェアツールである。さらに、デバッギングのサイクルタイムを短縮するためのソフトウェアツール(たとえば、デバッガ)を、開発することが可能である。デバッガは通常、その目的のために設計されたオペレーティングシステムプリミティブを用いて、検討中のアプリケーションプログラムを制御するための自立型の(self−contained)プロセスとして実行される。また、ソフトウェアデバッガは通常、コンピュータ上で順次実行されるソフトウェアプログラムの対話型デバッギングを提供することが可能である。しかし、かかるデバッギングツールは、異なるサーバおよびコンピュータの構成およびアーキテクチャに容易に拡張可能ではない。
【0006】
同時に、企業の1つ(または複数)のファイアウォールの存在によって、かかるファイアウォールの背後にあるデバッギングマシンの複雑さがさらに増すこともある。ファイアウォールは通常、私的情報を保護する際の第1の防御線とみなすことが可能であり、ハードウェアでもソフトウェアでも、あるいはその両方の組合せでも実装することが可能である。かかるファイアウォールは通常、開発者がデバッギングのためにテスタに容易にアクセスするのを妨ぐことが可能である。通常、かかる環境で適切なデバッギングセッションを適切に実行するためには、負担の大きい計画および細心の注意を払った実行が必要とされることもある。さらに、異なるマシン上での複数のデバッギングセッションが望まれる場合、大きな難題が存在する。
【0007】
したがって、従来のシステムおよび装置に伴う上述の例示的な欠陥を克服することが、求められている。
【課題を解決するための手段】
【0008】
本発明の1つまたは複数の態様に関する基本的な理解を与えるために、以下に本発明の簡略的な概要を提示する。この概要は、本発明の網羅的な概略ではない。この概要は、本発明の重要なまたは極めて重要な要素を特定するものではなく、本発明の範囲を限定するものでもない。そうではなく、この概要の主な目的は、本発明のいくつかの概念を、後述する、より詳細な説明の序文として簡略化した形で提示することである。
【0009】
本発明は、HTTP上で通信トラフィックを交換する安全な方法を提供するためのインターセプトとして機能する、IFRS(Internet Friendly Relay Service:インターネットフレンドリリレーサービス)を利用することにより、インターネットを介しかつファイアウォールの背後にあるマシンをデバッグすることが可能な、拡張可能なリモートデバッギングシステムを提供する。したがって、本発明は、エクスチェンジサーバにアクセスするためにファイアウォールを突破することが望まれる場合はいつでも、TCP(Transmission Control Protocol)ポートを開く必要をかかる環境において緩和することが可能となる。したがって、ファイアウォールの一方側に位置するクライアント(たとえば、エンドユーザ、テスタ、または開発者)が、コマンドおよび返答について、IFRSに関連するメインサーバを継続的にポーリングすることが可能である。返答を保留することにより、ファイアウォールの他方側のクライアントが、かかるサーバに近づき、コマンドの返答を獲得することができ、次いでSSL(Secure Sockets Layer)およびセキュリティトークンをリアルタイムに使用して、HTTPトラフィック上でのシームレスな接続を行うことが可能となる。関連する一態様では、IFRSサービスをポーリングする任意のマシンおよび/またはクライアント上でのデータ転送を開始し、中断し、再開し、かつ/または停止させるかどうかを判定するための負荷の閾値も、IFRSによって提供することが可能である。かかる負荷の閾値により、複数のマシンにまたがる処理の均衡をとり、任意の1つのマシンの負担をさらに緩和することが可能となる。また、様々な人工知能スキームを利用して、IFRSとクライアントの間の負荷の調整および/または均衡を容易にすることが可能である。さらに、1つ(または複数)の開発者マシンと1つ(または複数の)テスタマシンの間でのデバッギングセッション中に、別の1つ(または複数)の開発者マシンが、現在のデバッギングセッションに参加することが可能であり、キャッシュされたデバッギングの履歴を取り出し、かかるデバッギングセッションを観察しかつ/またはそれに参加することも可能である。
【0010】
本発明は、主にデバッギング手続きのコンテキストで説明されているが、1つ(または複数)のファイアウォールがその間に位置する、クライアントとサーバの間でのバイナリデータの交換中に、本発明の様々な態様を利用することも可能であることに理解されたい。たとえば、通常はそのファイアウォール構成の故にバイナリデータを1つ(または複数)のクライアントにプッシュすることが可能でない場合に、ファイアウォールの一方の端にあるサーバと、その他方の端にある1つ(または複数)のクライアントとによるバイナリデータの交換について、本発明を利用することも可能である。したがって、本発明は、インターネットを介してトラフィックを中継することができるインターセプト(IFRS)を配置することにより、かかる通信を容易にすることが可能である。したがって、ファイアウォールの背後にあるクライアントAおよびクライアントBは、共通の到達範囲内に位置するIFRSに関連するウェブサーバと話すことが可能であり、またウェブサーバは、許可システムおよび/または追跡システムを利用して、それに対するクライアントの接続を検証することが可能である。
【0011】
したがって、クライアントAがバイナリデータをクライアントBに送出することを必要とする場合、クライアントBは、サーバに情報を求める必要があり、したがって、ポーリング機構を利用することが可能である。したがって、クライアントAもBも通常、ファイアウォールの制約のために、ウェブサーバをポーリングするはずである。クライアントBがクライアントAから返答(たとえば、コマンドの返答、データストリーム、バイナリ交換など)を受け取ったとき、クライアントAはその後サーバをポーリングし、送出されるのを待っているデータがあるかどうか検証する。
【0012】
本発明の他の態様では、数学的アルゴリズムを利用して、ランダムな振舞い、ならびに各クライアントがウェブサーバをポーリングすることが可能な周期間隔および/または回数を指定することが可能である。かかるアルゴリズムは、ウェブサーバ上での、たとえばポアソン分布を用いた適応型ポーリングの形成を容易にすることが可能である。したがって、システムをスケーリングし、クライアントAとクライアントBの間のトラフィックを調整することが可能なので、ウェブサーバは、長い(たとえば5秒を超える)時間間隔でポーリングされる。さらに、このサーバは、かかるサーバの負荷を調整するために、一方のクライアントに他方のクライアントの振舞いに変化があった(たとえば、クライアントが緩和する(relax)ことを学習し、情報を求める頻度を学習するようになった)ときにその旨を知らせることが可能であり、どちらのクライアントの活動についても統計データベースを維持することが可能であり、事象パターン(たとえば、クライアント間でのバイナリ交換の流れ)を予測することが可能である。特に、HTTPのオーバーヘッドがTCPのバイナリデータに追加される場合、本発明は、クライアントとかかるウェブサーバの間での頻繁なポーリングセッションを緩和することが可能である。
【0013】
関連する一態様では、複数のクライアントからの要求を集約することが可能な1つ(または複数)のインテリジェントプロキシエンティティを提供して、IFRSとの通信を容易にし、各クライアントによって必要とされるTCP接続の種類および数をさらに制限することが可能となる。したがって、IFRSのウェブサーバと対話するために最適化を実施することが可能となる。たとえば、このインテリジェントプロキシは、各クライアントが独立してウェブサービスに接触するのとは対照的に、クライアント間の通信をウェブサービスへの1つのまとまった要求(one major push)に集約することが可能である。ウェブサーバからデータが供給されている他方の側で同様のインテリジェントプロキシを利用して、デバッグ手続きを必要とする様々なクライアントおよび/またはマシンの間にTCPチャネルを容易に設けることが可能である。IFRSおよび1つ(または複数)のインテリジェントプロキシエンティティが、1つ(または複数)のファイアウォールが存在しないこと(またはかかるファイアウォールを介して利用可能なオープンポート)を検出し、さらには事象ベースの機構に基づいて(たとえば、TCPを介して)通信することも可能であることを理解されたい。
【0014】
本発明の他の態様によれば、ファイアウォールの一方側で故障し、バグチェッカクラッシュ(bug checker crash)を伴うデバッグ対象にUSBを介して接続されたマシンを用いるテスタで、IFRSのウェブサーバをポーリングすることが可能である。かかる環境では、インテリジェントプロキシエンティティは、デバッガツールからTCP/IP(Transmission Control Protocol/Internet Protocol)トラフィックを得ることが可能であり、それをネットワークを介して転送する代わりに、HTTPの形にパッケージ化し、それをファイアウォールから外にIFRSのウェブサーバへと送出することが可能である。次いでIFRSは、その情報をキャッシュし、かかる情報をIFRSデータベースの一部としてバッファに置くことが可能である。次いでそのようなキャッシュされたデータを、最終的に開発者に移送するために準備することが可能である。次いでマシンを登録し、デバッグする準備を整えることが可能であり、開発者は、開発者によるデバッギングが予期されるマシンを指定する通知(たとえば、電子メール)を受け取ることが可能である。
【0015】
したがって、上記および関連する目的の達成のために、本発明は、以下で十分に記載される特徴を備えている。以下の記載および添付の図面は、本発明のある種の例示的な態様を詳細に示す。ただし、それらの態様は、本発明の原則を利用することができる様々な方法のほんのいくつかを示すに過ぎない。本発明の他の態様、利点、および新規な特徴は、本発明についての以下の詳細な説明を添付の図面と併せて読めば明らかになるであろう。
【発明を実施するための最良の形態】
【0016】
次に本発明を、添付の図面を参照して説明する。添付の図面では、全体を通して同様の参照番号が、同様の要素を指すために使用されている。以下の記載では、説明の目的で、本発明の完全な理解を与えるために、数々の具体的な詳細が詳しく述べられている。しかし、それらの具体的な詳細なしに、本発明が実施できることは明らかであるだろう。他の例では、本発明の説明を容易にするために、よく知られた構造および装置が、ブロック図に示されている。
【0017】
本願で使用する「コンポーネント」、「ハンドラ」、「モデル」、「システム」などの用語は、コンピュータに関連するエンティティを指し、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかを指すものとする。たとえば、コンポーネントは、それだけに限らないが、プロセッサ上で走っているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および/またはコンピュータであることが可能である。たとえば、サーバ上で稼動しているアプリケーションとサーバの両方が、コンポーネントであることが可能である。1つまたは複数のコンポーネントが、プロセスおよび/または実行スレッド内に常駐してもよく、1つのコンポーネントが、1つのコンピュータ上に局在し、かつ/または2つ以上のコンピュータ間で分散していてもよい。また、これらのコンポーネントを、様々なデータ構造がそれに記憶されている様々なコンピュータ読取り可能な媒体から実行することが可能である。これらのコンポーネントは、1つまたは複数のデータパケット(たとえば、ローカルシステム内、分散システム内の別のコンポーネントと対話し、かつ/または信号を介してインターネットなどのネットワークを介して他のシステムと対話している、1つのコンポーネントからのデータ)を有する信号に従うようなローカルおよび/またはリモートプロセスを介して、通信することが可能である。
【0018】
さらに、本明細書で使用する「推論」という用語は一般に、事象および/またはデータを介して獲得された1組の観測値から、システム、環境、および/またはユーザの状態を推測し(reason about)、あるいは推論する(infer)プロセスを指している。推論を利用して、個々のコンテキストまたは活動を特定することが可能であり、あるいはたとえば状態に関する確率分布を生成することが可能である。この推論は、確率論的であることが可能であり、すなわち対象とされる状態に関する確率分布の計算を、データおよび事象の考察に基づいて行うことが可能である。推論はまた、1組の事象および/またはデータから、より高レベルの事象を構成するのに利用される技術を指すことも可能である。かかる推論の結果、その事象同士が時間的に近接して相互に関連していようとなかろうと、また、その事象およびデータが1つの事象およびデータソースから生じたものであれ複数の事象およびデータソースから生じたものであれ、1組の観測された事象および/または記憶された事象データから、新たな事象または活動が構築される。
【0019】
本発明は、IFRSを利用することにより、インターネットを介しかつファイアウォールの背後にあるマシンをデバッグすることが可能な、拡張可能なリモートデバッギングシステムを提供する。本発明は、主にデバッギング手続きのコンテキストで説明されているが、1つ(または複数)のファイアウォールがその間に位置する、クライアントとサーバの間でバイナリデータの交換が必要とされる場合に、本発明の様々な態様を利用することも可能であることを理解されたい。
【0020】
まず図1を参照すると、本発明の一態様によるIFRS110が示されている。IFRS110は、SSLおよびセキュリティトークンをリアルタイムに使用して、HTTP上での通信トラフィックを交換する安全な方法を提供することが可能である。
【0021】
さらに、IFRS110は、以下で詳細に説明するように、たとえば、インターネット上でトラフィックリレーを中継可能なインターセプトとして機能し、それに接続されたクライアントに「負荷を分散」し、ポーリングセッションを緩和するよう知らせることが可能である。IFRS110としては、World Wide Webパブリッシングサービス、FTP(File Transfer Protocol)サービス、SMTP(Simple Mail Transfer Protocol)サービス、およびNNTP(Network News Transfer Protocol)サービスなどが提供できるIIS(Internet Information Service)ウェブサーバを挙げることが可能である。このIISには、ウェブブラウザ(たとえば、Internet Explorer)を使用し、インターネット上のHTTPを介してアクセスすることが可能である。ウェブサーバは、IFRSの一部として共通の到達範囲内に配置することが可能であり、許可システムおよび/または追跡システムを利用して、それに対するクライアントの接続を検証することが可能である。
【0022】
図示したように、ファイアウォール120は通常、境界防衛(perimeter defense)を提供し、一般に外部の安全でないネットワークから内部のネットワークにアクセスするのを制限する。かかるファイアウォール120を利用して、内部のネットワークにおけるセグメント間のトラフィックを制限することも可能である。通常、ファイアウォール120の重要な利点は、それ自体の構成ファイルである。かかるファイルは、どのトラフィックを許可し、どのトラフィックを遮断すべきかを決定することが可能である。かかる情報が露呈すると、ファイアウォールは、脆弱になることがある。
【0023】
また、ファイアウォール120を、パケットフィルタまたはプロキシのいずれかとすることが可能である。パケットフィルタとするなら、ファイアウォール120は、ルータを利用して、ソースアドレス、宛先アドレス、およびポートに基づきアクセスを承諾または拒否することが可能である。かかるパケットフィルタは、迅速かつ柔軟なファイアウォール120として機能することが可能である。
【0024】
ファイアウォール120はさらに、そこを通過するトラフィックのための媒介物または中継器として機能するプロキシを含むことが可能である。たとえば、2種類のプロキシ、すなわち回路レベルのプロキシおよびアプリケーションレベルのプロキシを、ファイアウォール120の一部として利用することが可能である。回路レベルのプロキシは、パケットフィルタと非常に多くの点で類似している。というのも、それらの両方は、ほぼ同程度の低レベルの情報に基づき決定を行うことが可能であり、いずれも汎用装置であるからである。基本的に、パケットフィルタと回路レベルのプロキシの相違点は、プロキシが媒介するすべてのトラフィックは、外見上そのプロキシから出発し、そこに帰着することになるが、パケットフィルタを介したトラフィックは、それ自体の出発点および帰着点を保持し続けるという点である。同様に、アプリケーションレベルのプロキシは、使用されるアプリケーションを理解しているので、それによって媒介されるトラフィックの内容に基づき決定を行うことができる。かかるアプリケーションレベルのプロキシは使用されるアプリケーションプロトコルを理解しているので、アプリケーションレベルのプロキシを、それによって媒介されたトラフィックの内容に基づき決定を行うことができる高レベルの装置とすることが可能である。したがって、通常1つ(または複数)のファイアウォール120で利用されるアプリケーションレベルのプロキシを、かなり特殊化することが可能であるが、異なるアプリケーションプロトコル用に別々のプロキシが、たとえばFTP用のプロキシ、HTTP用のプロキシなどが必要になる。
【0025】
図1に示すように、テスタ105(またはエンドユーザ)が、シリアルケーブルまたは1394ケーブルを介して、故障しデバッグする必要があるデバッグ対象のマシンに接続されており、そこでは、デバッグ対象112、114、116(ただし、Nは整数)のいずれかが、試験対象システムを形成することが可能である。IFRS110がテスタ105および開発者109によって周期的な間隔でポーリングされ、デバッギングセッションを開始することが可能である。したがって、ファイアウォール120の制約のために、通常テスタ105もデバッガマシン109も、ポーリング構成を使用して、IFRS110に関連するウェブサーバを照会する。
【0026】
同様に、2つのクライアントがファイアウォールの両側で通信している場合、ファイアウォールの一方側に位置するクライアントは、コマンドおよび返答について、ウェブサーバを継続的にポーリングすることが可能である。返答を保留することにより、ファイアウォールの他方側のクライアントが、そのウェブサーバに近づき、コマンドの返答を獲得することが可能となり、したがってHTTPトラフィック上でのシームレスな接続を行うことが可能となる。さらに、IFRS110は、ウェブサーバがテスタ105および/または開発者109によってポーリングされている負荷と待ち時間のバランスをとるためのマネジャとして働くことが可能である。一般に、IFRS110は、知られているネットワークプロトコルおよび/または独自プロトコル(proprietary protocols)を含めた1つまたは複数のデータ転送プロトコルを介して、情報を供給することが可能である。適当なネットワークプロトコルの例には、HTTP、およびSOAP(Simple Object Access Protocol)がある。
【0027】
図1に示すように、インテリジェントプロキシ/アグリゲータ106は、デバッガツール108からTCP/IPトラフィックを得ることが可能であり、かかるトラフィックをネットワークを介して転送する代わりに、HTTPの形にパッケージ化し、それをファイアウォール120の外にIFRS110へと送出することが可能である。次いでIFRS110は、その情報をキャッシュし、かかる情報をIFRSデータベース107の一部としてバッファに置くことが可能である。次いでそのようなキャッシュされたデータを、最終的に開発者109に移送するために準備することが可能である。次いで開発者109は、特定のマシンがデバッグの準備を整えられしたがってデバッギングチェックのために登録された旨の通知(たとえば、電子メール)を受け取ることが可能である。開発者109に通知する目的に関して、予め定められたビジネス構成が存在することもある。また、テスタ105は、開発者109がそれを観測可能なように、それ自体をIFRS110に知らせることも可能である。
【0028】
次いで開発者109は、かかる情報を受け取ると、IFRS110に接続しあるいはそれをポーリングし、最初のパケットを取得して、会話を開始することが可能である。サーバポーリングのそのような開始はさらに、クライアント、1つ(または複数)のデータ検索状態、タイムアウト、記憶媒体、サブスクライバ、および検索情報の格納先のうちの少なくとも1つに関する情報を提供することを含むことが可能である。情報のそのようなポーリングはまた、ストリーム、ファイル、データパケット、および/またはデータバーストとして、情報を要求することを含むことが可能である。
【0029】
図2は、本発明の一態様による、IFRS200システムのブロック図である。このシステムは、IFRSライブラリ214と対話して、許可、セキュリティ、バリデーションを追跡し、それに対するクライアントの接続を検証することが可能な、IFRSマネジャ210を含むことが可能である。また、IFRSマネジャ210は負荷の閾値を提供し、IFRS200を利用しかつ/またはポーリングする任意のマシン上でのデータ転送を開始し、中断し、再開しかつ/または停止させるかどうかを判定して、たとえば複数のマシンにまたがる処理のバランスをとり、それによって任意の1つのマシンの負担を緩和することが可能となる。通常、メッセージ転送セッション(たとえば、接続)が開始されるとき、IFRSマネジャ210は、そのセッション用の接続インスタンスを生成することが可能である。この接続インスタンスには、たとえばクライアント、マシンおよび1つ(または複数)のメッセージを示す情報、および/または接続ID(たとえば、キープアライブメッセージ)を埋め込む(populate)ことが可能である。かかる情報を利用して、IFRSとクライアント(たとえば、テスタまたは開発者)の間でのメッセージ転送を開始することが可能である。さらに、接続IDを利用して、異なるマシン内でのメッセージ伝送を追跡することが可能である。
【0030】
さらに、接続インスタンスを動的に更新して、伝送の進捗状況を反映させ伝送の履歴を提供することが可能である。たとえば、伝送に成功したあるいは失敗した任意の部分を(全体のメッセージを含めて)示す標識(indicia)を、接続インスタンスに関連付けることが可能である。伝送履歴としては、転送の開始と終了、中断と再開、通信アクティビティ(たとえば、クライアント間の会話の程度)のレベル、エラー、再送信、処理中のマシンの変化などに関連する情報を挙げることが可能である。
【0031】
たとえば、IFRS200が呼び出され、テスタと開発者の間で接続が確立されるとき、IFRSマネジャ210は、マシンID(たとえば、グローバル一意識別子、すなわちGUID)を追跡して、かかる接続用の接続インスタンスを生成することが可能である。接続インスタンスは、システムパラメータを介してデバッグされる任意のマシンのIDを、IFRSライブラリ214の一部として含むことが可能である。かかる情報を利用して、所望のマシンを配置することが可能となり、またその所望のマシンおよびアダプタにアクセスが提供されあるいはそれらが適切に登録されたのを検証することが可能となる。呼出しがクライアントおよび/またはプルされるメッセージを示す情報を含んでいる場合、かかる情報をさらに接続インスタンスに含めることが可能である。この情報を利用して、クライアントを配置しメッセージを検証することが可能である。さらに、接続IDおよび必要とされるデバッギングパラメータを、接続インスタンスへのキーとして含めることが可能であり、またIFRSマネジャ210が転送セッションを管理するために利用することも可能である。開発者側またはテスタ側の2つ以上のマシンが、複数の分散したマシンの一部として、IFRS200に接続を要求することが可能であることを理解されたい。たとえば、1つ(または複数)の開発者マシンと、1つ(または複数)のテスタマシンの間でのデバッギングセッション中、別の1つ(または複数)の開発者マシンが、既存のデバッギングセッションに参加することが可能であり、キャッシュされたデバッギングの履歴を取り出して、かかるデバッギングセッションを観察しかつ/またはそれに参加することが可能である。
【0032】
したがって、あるメッセージが与えられた場合、いくつかのマシンのうちの1つを選択し、ポーリングを開始し、かつ/またはメッセージ伝送を開始することが可能である。さらに、2つ以上のマシンが、転送に参加することが可能である。たとえば、1つのマシンを利用してメッセージ伝送を開始し、その後、接続を別の1つ(または複数)のマシンに滑らかに移行(float)して、伝送を続行しかつ/または終了することが可能である。かかる態様を利用して、信頼性を確保し、伝送およびマシンのエラーを低減し、複数のマシンに処理を効率的に分散させることが可能である。一般に、接続インスタンス内に格納された接続IDを利用して、どのマシンが接続インスタンスにアクセスし、クライアントからデータをプルすることができるかを決定することが可能である。たとえば、接続IDをあるマシンに運搬することが可能であり、次いでそのマシンが接続インスタンスをロックし、メッセージの運搬を開始することが可能であるが、その際、接続インスタンスを保持するマシンだけが、メッセージ伝送をロックし容易にすることが可能である。別のマシンがメッセージ伝送に参加できるようにするために、接続IDを、したがってロックを、その別のマシンに滑らかに移行させることが可能である。
【0033】
したがって、ファイアウォールの他方側に位置する開発者および/またはテスタは、IFRS200をポーリングし、コマンドの返答を獲得して、たとえばHTTPトラフィック上でのシームレスな接続を行うことが可能である。さらに、デバッガツールからのTCP/IPトラフィックを、HTTPの形にパッケージ化し、それをファイアウォールの外にIFRS200のウェブサーバ212へと送出することが可能である。次いでIFRS200は、その情報をキャッシュし、かかる情報をIFRSデータベースの一部としてバッファ(図示せず)に置くことが可能である。次いでそのようなキャッシュされたデータを、最終的に開発者に移送するために準備することが可能である。IFRS200を周期的な間隔でポーリングし、IFRS200が開発者またはテスタに転送すべき何らかのデータを含んでいるかどうか判定することが可能である。
【0034】
図3には、本発明の一態様による、人工知能コンポーネントを利用するIFRSを示してある。図示したように、本発明では、負荷を調整しかつ/またはバランスをとること、および/またはIFRS300をポーリングすることなどに関する様々な態様を実施するための、様々な人工知能ベースのスキームを利用することが可能である。たとえば、IFRS300をポーリングするクライアントがいつ緩和可能かを明示的にまたは暗示的に学習するプロセスを、自動的な分類システムおよび方法を使用して円滑に進めることが可能である。分類は、確率論ベースおよび/または統計ベースの分析を(たとえば、その分析の有用性およびコストを考慮に入れて)利用し、ユーザが自動的に実行されるのを望む活動を予測し(prognose)推論する(infer)ことが可能である。たとえば、SVM(support vector machine)分類器を利用することが可能である。他の分類手法には、ベイズネットワーク、決定木、様々な独立性パターンを提供する確率分類モデル(probabilistic classification models)があり、それらを利用することが可能である。本明細書で使用する分類には、優先モデル(models of priority)を展開するために利用される統計的回帰も含まれる。
【0035】
容易に理解されるように、本発明では、(たとえば、包括的な訓練データを使用して)明示的に訓練され、かつ(たとえば、ユーザの振舞いを観察し、外的情報(extrinsic information)を受け取ることによって)暗示的に訓練された分類器を利用することが可能であり、したがって、その分類器を使用して、ある質問にどの返答を返すかを、予め定められた基準に従い自動的に決定する。たとえばよく知られているSVMについては、それらのSVMは、分類器コンストラクタおよび特徴選択モジュール内での学習または訓練段階を経て構成される。分類器は、ある入力の属性ベクトルx=(x1、x2、x3、x4、xn)を、その入力があるクラスに属する信頼(confidence)に、すなわちf(x)=信頼(クラス)に写像する関数である。さらに、様々な統計ベースの分布(たとえば、ポアソン分布)を利用して、IFRS300、開発者、テスタの間の負荷レベルを評価し予想することが可能であり、たとえば、ランダムな振舞いおよび各マシンがどれほどの頻度でウェブサーバをポーリングすることができるかを指定し、適応型ポーリングを形成することが可能である。
【0036】
次に図4を参照すると、本発明の一態様によるマシンをデバッグする方法であって、開発者およびテスタをファイアウォールの背後に置き、IFRSを共通の到達範囲内に配置することが可能な例示的な方法が示されている。まず420で、故障したデバッグ対象のマシンが、デバッギングを必要としている。次いで430で、かかるデバッグ対象のマシンを、シリアルケーブルまたは1394ケーブルを介してテスタに接続することが可能である。次いで440で、テスタが、IFRSにサインインし、IFRSからリターンチケットを受け取る。テスタがIFRSにサインインすると、450で、(たとえば、電子メールを介して)開発者に通知を送ることが可能であり、あるいはそれをIFRSに知らせることも可能である。次に、開発者が行う動作について手順は図5に、テスタが行う動作について手順は図6に進む。
【0037】
図5に示すように、開発者は、通知を受け取ると、次いで510でIFRSとのセッションを開始することが可能である。次に520で、かかる開発者は、デバッグ対象をデバッグするために必要とされるパラメータを取得することが可能である。かかるパラメータに基づき、530で、デバッギング手続きのためにデバッガセッションを開始することが可能である。したがって、ポーリング機構540を利用することが可能であり、IFRSを周期的にポーリングして、開発者に伝送されるのを待っているデータがあるかどうかを検証することが可能である。
【0038】
同様に図6には、本発明の一態様による、テスタが行う一連の動作を示してある。610で、開発者がIFRSと接続されているかどうかの判定が行われる。接続されていない場合は、図4の動作450に戻る。そうではなく、開発者がIFRSと接続されている場合は、デバッガツールをデバッグ対象のマシン上で起動させる。ポーリング機構630が利用可能であり、IFRSを周期的にポーリングして、テスタに伝送されるのを待っているデータがあるかどうかを検証することが可能である。
【0039】
本明細書では例示的な方法を、様々な事象および/または動作を表す一連のブロックとして記載し図示してあるが、本発明は、例示したかかるブロックの順序によって限定されるものではない。たとえば、本発明によるいくつかの動作または事象が、本明細書で例示した順序とは別の異なる順序で、かつ/または他の動作もしくは事象と同時に生じてもよい。また、本発明による方法を実施するために、すべての例示したブロック、事象、あるいは動作が、必ずしも必要とされるわけではない。さらに、本発明による例示的な方法および他の方法を、図示し本明細書に記載した方法、ならびに図示されず記載されていない他のシステムおよび装置と一緒に実施することもできることが理解されるであろう。
【0040】
図7は、本発明の一態様による、1つ(または複数)のクライアントA、および1つ(または複数)のクライアントBがファイアウォールの背後にある場合の、IFRS715によりそれらのクライアントに関するバイナリデータの交換を容易にすることが可能な、ブロックアーキテクチャ700である。1つ(または複数)のクライアントAがバイナリデータをクライアントBに送出することを必要とする場合、クライアントBは、IFRS715における1つ(または複数)のサーバ710に情報を求める必要があり、したがって通常、ポーリング機構が利用される。したがって、クライアントAもクライアントBも通常、ファイアウォールの制約のため、1つ(または複数)のウェブサーバ710をポーリングしなければならない。
【0041】
クライアントBがクライアントAから返答720(たとえば、コマンドの返答、データストリーム、バイナリ交換など)を受け取ったとき、クライアントAはその後、1つ(または複数)のサーバ710をポーリング740し、待ち状態のデータがあるかどうかを検証することが可能である。本発明の関連する一態様では、数学的アルゴリズムを利用して、ランダムな振舞いおよびクライアントAとBのそれぞれがどれほどの頻度でウェブサーバ710をポーリングすることが可能かを指定し、ウェブサーバ710上でたとえばポアソン分布を用いた適応型ポーリングを形成することが可能である。したがって、システム700をスケーリングし、クライアントAとクライアントBの間のトラフィックを調整することが可能であるので、1つ(または複数)のウェブサーバ710は、長い(たとえば5秒を超える)時間間隔でポーリングされる。さらに、1つ(または複数)のサーバ710は、あるクライアントに、他方のクライアントの振舞いに変化があった(たとえば、クライアントが緩和することを学習し、情報を求める頻度を学習するようになった)ときその旨を知らせ、さらにどちらのクライアントの活動についても統計データベースを維持し、事象パターン(たとえば、クライアント間でのバイナリ交換の流れ)を予測し、その負荷を調整することが可能である。特に、HTTPのオーバーヘッドがTCPのバイナリデータに追加される場合、本発明は、クライアントと1つ(または複数)のウェブサーバ710の間での頻繁なポーリングセッションを緩和することを可能とする。
【0042】
次に図8を参照すると、本発明の様々な態様を実施することが可能な、適当なコンピューティング環境の簡略な概要が示されている。これまで本発明を、1つのコンピュータまたは複数のコンピュータ上で走るコンピュータプログラムのコンピュータ実行可能な命令の一般的なコンテキストで説明してきたが、本発明を、他のプログラムモジュールと組み合わせて実装することも可能なことが、当業者には理解されるであろう。一般に、プログラムモジュールには、特定のタスクを実行しかつ/または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造などがある。さらに、本発明の方法を、シングルプロセッサまたはマルチプロセッサのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルド型コンピューティング装置、マイクロプロセッサベースのまたはプログラマブルな大衆消費電子製品(consumer electronics)などを含めて他のコンピュータシステム構成を用いて実施することも可能なことが、当業者には理解されるであろう。先に説明したように、本発明の例示した態様を、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境で実施することも可能である。ただし、本発明の全部ではなくとも一部の態様は、スタンドアロンコンピュータ上で実施することも可能である。分散コンピューティング環境では、プログラムモジュールを、ローカルとリモートの両方の記憶装置に配置することが可能である。この例示的な環境は、処理ユニット821と、システムメモリ822と、システムメモリを含む様々なシステムコンポーネントを処理ユニット821に結合するシステムバス823とを含むコンピュータ820を含む。処理ユニット821は、様々な市販のプロセッサのどれでもよい。また、処理ユニット821として、デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを使用することも可能である。
【0043】
システムバスは、商業上利用可能な様々なバスアーキテクチャのうちのいずれかを使用する、USB、1394、周辺バス、およびローカルバスを含む様々な種類のバス構造のどれでもよい。システムメモリとしては、ROM(Read Only Memory)824、およびRAM(Random Access Memory)825を挙げることができる。ROM824には、起動時などにコンピュータ820内の要素間で情報を転送するのに役立つ、基本的なルーチンを含んでいるBIOS(Basic Input/Output System)が格納されている。
【0044】
コンピュータ820はさらに、ハードディスクドライブ827と、たとえば取外し可能なディスク829への読み書きを行うための磁気ディスクドライブ828と、たとえばCD−ROMディスク831への読み書きを行うための、あるいは他の光媒体への読み書きを行うための光ディスクドライブ830とを含む。ハードディスクドライブ827、磁気ディスクドライブ828、および光ディスクドライブ830は、それぞれハードディスクドライブインターフェイス832、磁気ディスクドライブインターフェイス833、および光ドライブインターフェイス834によってシステムバス823と接続されている。それらのドライブおよびそれらに関連するコンピュータ読取り可能媒体は、コンピュータ820のための、データ、データ構造、コンピュータ実行可能な命令等の不揮発性記憶装置を提供する。上記のコンピュータ読取り可能媒体に関する説明では、ハードディスク、取外し可能な磁気ディスク、およびCDに言及しているが、この例示的な処理環境では、たとえば磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジなど、コンピュータ読取り可能な他の種類の媒体を使用することも可能であり、さらに、かかるどの媒体が本発明の方法を実施するためのコンピュータ実行可能な命令を含んでいてもよいことが、当業者には理解されるはずである。
【0045】
オペレーティングシステム835、1つまたは複数のアプリケーションプログラム836、他のプログラムモジュール837、およびプログラムデータ838を含む複数のプログラムモジュールを、ドライブおよびRAM825に格納することが可能である。例示したコンピュータでは、オペレーティングシステム835は、実質的にどんな商業上利用可能なオペレーティングシステムであってもよい。
【0046】
ユーザは、キーボード840、およびマウス842などのポインティングデバイスを使用して、コンピュータ820にコマンドおよび情報を入力することが可能である。他の入力装置(図示せず)としては、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを挙げることが可能である。これらおよび他の入力装置は、しばしばシステムバスと結合されたシリアルポートインターフェイス846を介して処理ユニット821に接続されるが、パラレルポートや、ゲームポート、USB(Basic Input/Output System)などの他のインターフェイスによって接続されてもよい。モニタ847または他の種類の表示装置も、ビデオアダプタ848などのインターフェイスを介してシステムバス823に接続されている。コンピュータは通常、モニタに加えて、スピーカ、プリンタなど、他の周辺出力装置(図示せず)も含む。
【0047】
コンピュータ820は、リモートコンピュータ849など1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することが可能である。リモートコンピュータ849は、ワークステーション、サーバコンピュータ、ルータ、ピア装置または他の共通ネットワークノードでよく、また図8にはメモリ記憶装置850だけを示してあるが、通常、コンピュータ820に関連して記載される要素の多くまたは全部を含んでいる。図8に示した論理接続としては、LAN(Local Area Network)851、およびWAN(Wide Area Network)852を挙げることができる。かかるネットワーキング環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、およびインターネットにおいてごく一般的である。
【0048】
コンピュータ820は、LANのネットワーキング環境で利用される場合は、ネットワークインターフェイスまたはアダプタ853を介して構内ネットワーク851に接続することが可能である。コンピュータ820は、WANのネットワーキング環境で利用される場合は、通常、モデム854を含むことが可能であり、かつ/またはLAN上の通信サーバに接続し、かつ/またはインターネットなどの広域ネットワーク852を介して通信を確立する他の手段を有することも可能である。モデム854は、内部モデムでも外部モデムでも可能であり、シリアルポートインターフェイス846を介してシステムバス823に接続することが可能である。ネットワーク化された環境では、コンピュータ820に関連する図示したプログラムモジュールまたはその一部分を、リモートの記憶装置に格納することが可能である。図示したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を利用することが可能なことが理解されるであろう。
【0049】
以上、本発明を、コンピュータプログラミングの技術分野における当業者のプラクティスに従って、別段の指示がない限り、コンピュータ820などのコンピュータが行う動作、ならびに記号で表される処理に関して説明してきた。かかる動作および処理は、コンピュータで実行される(computer−executed)動作および処理と呼ばれることもある。この動作および記号で表される処理には、結果として電気信号表現の変換(transformation)または逆変換(reduction)を生じさせる処理ユニット821によるデータビットを表す電気信号の操作、および(システムメモリ822、ハードドライブ827、フロッピー(登録商標)ディスク828、およびCD−ROM831を含む)メモリシステム内の記憶場所でのデータビットの維持が含まれ、それによってコンピュータシステムの動作ならびに他の信号処理を再構成し、またはその他の形で変更することが、理解されるであろう。かかるデータビットが維持される記憶場所は、そのデータビットに対応する特定の電気的、磁気的、または光学的な特徴を有する物理的な場所である。
【0050】
次に図9を参照すると、本発明の一態様による、IFRSを利用することが可能なクライアント/サーバシステム900が、示されている。1つ(または複数)のクライアント920を、ハードウェアおよび/またはソフトウェア(たとえば、スレッド、プロセス、コンピューティング装置)とすることが可能である。システム900には、1つまたは複数のサーバ940も含まれている。また、1つ(または複数)のサーバ940を、ハードウェアおよび/またはソフトウェア(たとえば、スレッド、プロセス、コンピューティング装置)としてもよい。たとえば、かかるサーバ940は、本発明を利用して変換を行うためのスレッドを格納することが可能である。クライアント920とサーバ940は、本発明に従って2つ以上のコンピュータプロセス間で伝送されるデータパケットの形で通信を行うことが可能である。図示したように、システム900は、1つ(または複数)のクライアント920と、1つ(または複数)のサーバ940との間の通信を容易にすることが可能な通信フレームワーク980を含んでいる。1つ(または複数)のクライアント920は、1つ(または複数)のクライアント920のローカルに情報を記憶することが可能な、1つ(または複数)のクライアントデータストア910と操作可能に接続されている。さらに、クライアント920は、サーバプロセスを走らせているサーバコンピュータ940上に配置されたデータベース960にアクセスし、それを更新することが可能である。本発明の一態様では、クライアントプロセスがウェブブラウザであり、サーバプロセスがウェブサーバである場合、通信フレームワーク980は、インターネットであることが可能である。したがって、典型的なクライアント920は、中央処理装置(CPU)、システムメモリ、パーソナルコンピュータをインターネットに接続するためのモデムまたはネットワークカード、表示装置、ならびにキーボードやマウスなど他のコンポーネントを有する、従来のパーソナルコンピュータなどの汎用コンピュータであることが可能である。同様に、典型的なサーバ940は、大学または企業向けのメインフレームコンピュータあるいは専用ワークステーションなどであることが可能である。
【0051】
本発明を、ある種の例示的な態様に関して図示し記載してきたが、当業者なら、本明細書および添付の図面を読み、理解すれば、これと等価な変形形態(alteration)および変更形態(modification)に想到することが理解されるであろう。特に、上述したコンポーネント(アセンブリ、装置、回路、システムなど)によって実現される様々な機能に関して、かかるコンポーネントを説明するために使用される用語(「手段」という表現を含む)は、別段の指示がない限り、たとえそれがここに開示した構造と構造上等価でない場合でも、ここに記載したコンポーネントの指定の機能を実現し、本明細書において例示した本発明の例示的な態様における機能を実現する、あらゆるコンポーネント(たとえば、機能的に等価なコンポーネント)に対応するものとする。この点に関して、本発明は、システム、ならびに本発明の様々な方法における動作を実施し、かつ/または事象をもたらすコンピュータ実行可能な命令を有するコンピュータ読取り可能な媒体を含むことも理解されるであろう。さらに、「含む(includes)」、「含んでいる(including)」、「有する(has)」、「有している(having)」という用語およびその活用語は、詳細な説明または特許請求の範囲のいずれかにおいて使用する限りにおいて、「備える(comprising)」と同様に、包含的な用語であるものとする。
【図面の簡単な説明】
【0052】
【図1】本発明の一態様による、テスタ/開発者デバッギングアプリケーションにおけるIFRSの概略ブロック図である。
【図2】本発明の特定の一態様による、IFRSの例示的なアーキテクチャを示す図である。
【図3】本発明の一態様による、人工知能コンポーネントを利用するIFRSの別の例示的なブロック図である。
【図4】本発明の1つの方法による、デバッギング手続きの流れ図である。
【図5】本発明の一態様による、デバッギング方法の別の態様を示す図である。
【図6】本発明の一態様による、ファイアウォールの背後にあるマシンをデバッグする方法の別の流れ図である。
【図7】本発明の一態様による、ファイアウォールの両側にあるクライアント間でデータを交換する場合に、IFRSによってバイナリデータの交換を容易にすることが可能なシステムのブロック図である。
【図8】本発明の様々な態様を実施することが可能な、適当なコンピューティング環境の簡略な概要を示す図である。
【図9】本発明の一態様による、IFRSを利用することが可能なクライアント/サーバシステムの図である。
【符号の説明】
【0053】
105 テスタマシン/エンドユーザ
106 インテリジェントプロキシ/アグリゲータ
107 IFRSデータベース
108 デバッガツール
109 開発者マシン
110 IFRS
112 バグチェッカクラッシュを伴うデバッグ対象1
114 バグチェッカクラッシュを伴うデバッグ対象2
116 バグチェッカクラッシュを伴うデバッグ対象N
120 ファイアウォール

【特許請求の範囲】
【請求項1】
リモートデバッギング操作を容易にするシステムであって、
それぞれ1つまたは複数のファイアウォールの背後に位置する1または複数のテスタと1または複数の開発者との間の、HTTP(Hyper Text Transfer Protocol)上でのシームレスな接続を実装し、拡張可能なデバッギング手続きを円滑に進めるIFRS(Internet Friendly Relay Service:インターネットフレンドリリレーサービス)を備え、前記IFRSが、共通の到達範囲内に配置されることを特徴とするシステム。
【請求項2】
前記IFRSは、ポーリング構成を使用して、コマンドを受け取り、前記テスタおよび前記開発者に応答を返す1つまたは複数のウェブサーバと、1つまたは複数の状態サーバとを備えることを特徴とする請求項1に記載のシステム。
【請求項3】
前記IFRSは、前記IFRSをポーリングするためにポアソン統計分布を利用することによって、前記1つまたは複数のウェブサーバ上での適応型ポーリングの形成を容易にすることを特徴とする請求項2に記載のシステム。
【請求項4】
前記IFRSは、IIS(Internet Information service)ウェブサーバを含むことを特徴とする請求項1に記載のシステム。
【請求項5】
前記IFRSは、それに接続されたクライアントの許可を追跡するIFRSマネジャを含むことを特徴とする請求項1に記載のシステム。
【請求項6】
前記IFRSマネジャは、前記IFRSに接続されたマシンのIDを追跡することを特徴とする請求項5に記載のシステム。
【請求項7】
前記IFRSは、負荷レベルを調整しあるいはバランスをとるための人工知能コンポーネントを含むことを特徴とする請求項1に記載のシステム。
【請求項8】
前記負荷レベルのバランスは、データ交換の開始、中断、再開、および停止のうちの少なくとも1つを備えることを特徴とする請求項7に記載のシステム。
【請求項9】
前記テスタと前記開発者のうちの少なくとも1人は、前記IFRSとの通信を集約するための1つまたは複数のインテリジェントプロキシをさらに備えることを特徴とする請求項1に記載のシステム。
【請求項10】
マシンをデバッグする方法であって、
IFRSを用いて、1つまたは複数のファイアウォールの背後に位置するテスタおよび開発者を登録することと、
前記テスタおよび前記開発者が、前記IFRSをポーリングすることと、
前記テスタと前記開発者とを、HTTP上でシームレスに接続することとを備えることを特徴とする方法。
【請求項11】
前記テスタが前記IFRSからリターンチケットを受け取ることをさらに備えることを特徴とする請求項10に記載の方法。
【請求項12】
前記テスタを前記IFRSに登録したとき、電子メールを介してその旨を前記開発者に通知することをさらに備えることを特徴とする請求項10に記載の方法。
【請求項13】
前記開発者がデバッギングパラメータを取得することをさらに備えることを特徴とする請求項10に記載の方法。
【請求項14】
デバッグすべきマシン上でデバッガツールを起動することをさらに備えることを特徴とする請求項10に記載の方法。
【請求項15】
人工知能スキームを利用して、前記IFRSの負荷を調整することをさらに備えることを特徴とする請求項10に記載の方法。
【請求項16】
明示的に訓練された分類器と、暗示的に訓練された分類器とのうちの少なくとも1つを利用することをさらに備えることを特徴とする請求項15に記載の方法。
【請求項17】
前記負荷を調整することは、データ交換を開始すること、中断すること、再開すること、および、停止することのうちの少なくとも1つを備えることを特徴とする請求項15に記載の方法。
【請求項18】
前記IFRSに接続されたクライアントの許可を追跡することをさらに備えることを特徴とする請求項10に記載の方法。
【請求項19】
数学的アルゴリズムによって前記IFRSのポーリングを適応させることをさらに備えることを特徴とする請求項10に記載の方法。
【請求項20】
リモートデバッギング処理を容易にするシステムであって、
エンドユーザを、HTTP上で開発者にシームレスに接続するインターセプト手段であって、前記エンドユーザおよび前記開発者が、それぞれ1つまたは複数のファイアウォールの背後に位置するインターセプト手段と、
前記インターセプト手段の負荷を調整する手段とを備えることを特徴とするシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2006−236356(P2006−236356A)
【公開日】平成18年9月7日(2006.9.7)
【国際特許分類】
【出願番号】特願2006−50110(P2006−50110)
【出願日】平成18年2月27日(2006.2.27)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】