説明

ログ解析装置、ログ解析方法およびプログラム

【課題】異常なシーケンスの有無や、性能の変化の検出に要するコストを低減する。
【解決手段】システムから出力されたログを解析するログ解析装置であって、システムにおいてシーケンスが正常に実行された場合に出力されたログを、そのログに含まれる時刻情報に基づき、時間領域において周期性を有する所定の関数上の点の座標値に変換し、システムにおいてシーケンスが正常に実行された場合以外に出力されたログを、そのログに含まれる時刻情報に基づき、時間領域において所定の関数上以外の点の座標値に変換し、変換された座標値に対してフーリエ変換を実行することによって周波数領域における座標値を算出する解析部と、解析部にて算出された座標値に基づいた情報を外部に通知するための出力を行う出力部と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、大規模分散処理システムから出力されたログを解析するログ解析装置、ログ解析方法およびプログラムに関する。
【背景技術】
【0002】
近年、Googleの検索システムに代表される、多数のPC(Personal Computer)サーバを用いて大規模なデータを並列して分散処理する大規模分散処理技術の研究開発が盛んに行なわれている。
【0003】
大規模分散処理技術では、多数のPCサーバのそれぞれに小規模なデータ処理を実行させることにより、全体として大規模なデータ処理の実行を可能にしている。また、大規模分散処理技術では、データ処理の性能を向上させたい場合や、データの蓄積容量を増大させたい場合には、PCサーバを追加することによって対応できるようにしている。
【0004】
さらに、大規模分散処理技術では、多数のPCサーバを用いることから、PCサーバの故障に対して柔軟に対応できるようにしている。具体的には、大規模分散処理技術を適用した大規模分散処理システムでは、PCサーバの故障時にその故障したPCサーバを自動的にシステムから切り離し、システム全体の処理に影響がないようにするフォールトトレラント性が確保されている。
【0005】
一方、大規模分散処理システムを利用および運用する際には、障害時の原因分析や、想定している性能が発揮されない場合の性能分析等が必要となる。このような分析を行う場合、多数のPCサーバのそれぞれにおいて動作する多数のプロセスから出力された大量のログを解析しなければならず、この解析自体に大規模分散処理技術を要するほどの状況になることがしばしばある。
【0006】
なお、大規模分散処理システムの障害解析作業を効率化するための技術が例えば、非特許文献1に開示されている。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】敷田幹文,後藤宏志,"大規模サーバ間の部品依存関係に基づくログ管理支援法",情報処理学会論文誌,49,3,1081,9,2008/03
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述したように、大規模分散処理システムにおいて障害時の原因分析や性能分析を行うためには、大規模分散処理システムから出力された大量のログを解析する必要がある。
【0009】
ここで、データベースへの書き込みや読み込み、ファイルシステムへのデータの書き込みや読み込み等、大規模分散処理システムにおいて繰り返し行われている処理に着目する。そして、このような処理において、異常なシーケンス(正常時とは異なるシーケンス)の有無の検出や、性能の変化の検出について考えてみる。
【0010】
まず、異常なシーケンスの有無については、例えばエラーメッセージがログに示されるような場合、このエラーメッセージを見つけることによって比較的容易に検出することができる。
【0011】
しかし、大規模分散処理システムは、上述したようにPCサーバ等の故障に対して柔軟に対応できるように設計されている。そのため、再送や故障回避等の処理によってシステム全体としては正常に処理が済んでいるように見える場合もある。この場合、異常なシーケンスがあることを見逃してしまう可能性がある。
【0012】
これを回避するためには、大量のログを複数のシーケンス毎に分類し、シーケンス毎に処理過程を分析して異常なシーケンスの有無を検出する必要があるが、ログが大量であるため、膨大な時間がかかってしまう。
【0013】
また、性能の変化については、大規模分散処理システムの性能を測定できるアプリケーションによって検出することもできる。しかし、そのアプリケーションが定常的に動作するとは限らない。この場合も、性能の変化を見逃してしまう可能性がある。
【0014】
これを回避するためには、異常なシーケンスを検出する場合と同様に、大量のログをシーケンス毎に分類し、それぞれの処理に要した時間を分析することになるが、ログが大量であるため、非常に労力がかかる作業となる。
【0015】
このように、異常なシーケンスの有無や性能の変化を検出するには、膨大な時間や労力等のコストを要するという問題点がある。
【0016】
本発明は、異常なシーケンスの有無や、性能の変化の検出に要するコストを低減することを可能にするログ解析装置、ログ解析方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0017】
上記目的を達成するために本発明のログ解析装置は、システムから出力されたログを解析するログ解析装置であって、
前記システムにおいてシーケンスが正常に実行された場合に出力されたログを、該ログに含まれる時刻情報に基づき、時間領域において周期性を有する所定の関数上の点の座標値に変換し、前記システムにおいてシーケンスが正常に実行された場合以外に出力されたログを、該ログに含まれる時刻情報に基づき、前記時間領域において前記所定の関数上以外の点の座標値に変換し、前記変換された座標値に対してフーリエ変換を実行することによって周波数領域における座標値を算出する解析部と、
前記解析部にて算出された座標値に基づいた情報を外部に通知するための出力を行う出力部と、を有する。
【0018】
また、上記目的を達成するために本発明のログ解析方法は、システムから出力されたログを解析するログ解析装置におけるログ解析方法であって、
前記システムにおいてシーケンスが正常に実行された場合に出力されたログを、該ログに含まれる時刻情報に基づき、時間領域において周期性を有する所定の関数上の点の座標値に変換し、前記システムにおいてシーケンスが正常に実行された場合以外に出力されたログを、該ログに含まれる時刻情報に基づき、前記時間領域において前記所定の関数上以外の点の座標値に変換する処理と、
前記変換された座標値に対してフーリエ変換を実行することによって周波数領域における座標値を算出する処理と、
前記算出した座標値に基づいた情報を外部に通知するための出力を行う処理と、を有する。
【0019】
また、上記目的を達成するために本発明のプログラムは、システムから出力されたログを解析するログ解析装置に、
前記システムにおいてシーケンスが正常に実行された場合に出力されたログを、該ログに含まれる時刻情報に基づき、時間領域において周期性を有する所定の関数上の点の座標値に変換し、前記システムにおいてシーケンスが正常に実行された場合以外に出力されたログを、該ログに含まれる時刻情報に基づき、前記時間領域において前記所定の関数上以外の点の座標値に変換する機能と、
前記変換された座標値に対してフーリエ変換を実行することによって周波数領域における座標値を算出する機能と、
前記算出した座標値に基づいた情報を外部に通知するための出力を行う機能と、を実現させる。
【発明の効果】
【0020】
本発明は以上説明したように構成されているので、異常なシーケンスの有無や性能の変化を検出するために、大量のログをシーケンス毎に分類して解析する必要がない。
【0021】
従って、異常なシーケンスの有無や、性能の変化の検出に要するコストを低減することが可能となる。
【図面の簡単な説明】
【0022】
【図1】本発明のログ解析装置の実施の一形態の構成を示すブロック図である。
【図2】図1に示したログ入力部が受け付ける複数のログの一例を示す図である。
【図3】図1に示した解析部がログを時間領域における座標値に変換する際に用いる正弦関数を説明するための図である。
【図4】図1に示した解析部がログを正弦関数上の点の座標値に変換する動作を説明するための図である。
【図5】図1に示した出力部が備える画面に表示された周波数領域のグラフの一例を示す図である。
【図6】図1に示した出力部が備える画面に表示された周波数領域のグラフの他の例を示す図である。
【図7】図1〜図6に示したログ解析装置が大規模分散処理システムから出力されたログを解析する動作を説明するためのフローチャートである。
【発明を実施するための形態】
【0023】
以下に、本発明の実施の形態について図面を参照して説明する。
【0024】
図1は、本発明のログ解析装置の実施の一形態の構成を示すブロック図である。
【0025】
本実施形態のログ解析装置10は図1に示すように、ログ入力部11と、解析部12と、出力部13とを備えている。
【0026】
ログ入力部11は、多数のPCサーバから構成される大規模分散処理システム20から出力されたログをネットワーク50を介して受け付ける。そして、ログ入力部11は、例えば受け付けたログの数が所定数になると、受け付けた複数のログを解析部12へ出力する。なお、ログ入力部11は、例えば所定の時刻になると、受け付けた複数のログを解析部12へ出力するようにしてもよい。また、ここでは、ログ入力部11は、大規模分散処理システム20から出力されたログをネットワークを介して受け付けているが、ログを受け付ける方法は、これに限定されない。ログ入力部11は、例えば大規模分散処理システム20から出力されたログを記憶した記憶装置等に記憶されたログを受け付けることも可能である。
【0027】
図2は、図1に示したログ入力部11が受け付ける複数のログの一例を示す図である。
【0028】
図1に示したログ入力部11が受け付ける複数のログのそれぞれは図2に示すように、時刻を示す時刻情報と、そのログの内容を示すメッセージとを含むものとする。なお、時刻情報は例えば、そのログが大規模分散処理システム20から出力された時刻や、そのログに対応する処理が大規模分散処理システム20にて実行された時刻を示す情報である。
【0029】
再度、図1を参照すると、解析部12は、ログをx軸(時間)とy軸とからなる時間領域において周期性を有する関数上の点の座標値に変換する。具体的には、解析部12は、ログを、時間領域における正弦関数上の点の座標値に変換する。
【0030】
図3は、図1に示した解析部12がログを時間領域における座標値に変換する際に用いる正弦関数を説明するための図であり、(a)は大規模分散処理システム20においてシーケンスが正常に実行された場合に出力されると想定される複数のログのそれぞれに含まれる時刻情報の一例を示す図、(b)は(a)に示した時刻情報を含む複数のログに基づいた正弦関数を示す図である。
【0031】
ここでは、大規模分散処理システム20においてシーケンスが正常に実行された場合に出力されると想定されるログに含まれる時刻情報とメッセージとを、(time1,message1),(time2,message2),(time3,message3),・・・(timeN,messageN)のように表す。なお、時刻情報は、文字列ではなく整数値に変換されたものを用いる。整数値とは例えば、time1を基準とした秒数とすることが考えられる。
【0032】
大規模分散処理システム20においてシーケンスが正常に実行された場合に出力されると想定されるログは、x軸とy軸とからなる時間領域における周波数fの正弦関数(y=sin(2π×f×x)(0≦x<2π))上の点に割り当てられる。
【0033】
具体的には、時刻(timeX)におけるxの値(x_timeX)を以下に示す式(1)を用いて算出する。
【0034】
x_timeX=(timeX−time1)/(timeN−time1)・・・式(1)
そして、算出したx_timeXの値を以下に示す式(2)に代入する。
【0035】
y_messageX=sin(2π×f×x_timeX)・・・式(2)
解析部12は、上記の式(2)にて表される正弦関数を予め記憶している。また、解析部12は、シーケンスが正常に実行された場合に出力されるログの種類を記憶している。解析部12は、ログ入力部11から出力された複数のログを受け付ける。そして、解析部12は、受け付けた複数のログのうちの1つを選択し、選択したログが、シーケンスが正常に実行された場合に出力されたログであるかどうかを確認する。確認の結果、選択したログがシーケンスが正常に実行された場合に出力されたログである場合、解析部12は、以下に示す式(3)を用いてx_timeXを算出する。
【0036】
x_timeX=((timeX mod (timeN−time1))/(timeN−time1))・・・式(3)
なお、式(3)において((timeX mod (timeN−time1))としているのは、ログを正弦関数上の点の座標値に変換する際に、x_timeXの値が0〜2πの間に含まれるようにするためである。
【0037】
そして、解析部12は、算出したx_timeXの値を上記の式(2)に代入する。これにより、大規模分散処理システム20においてシーケンスが正常に実行された場合に出力されたログは、上述した正弦関数(y=sin(2π×f×x)(0≦x<2π))と周波数成分が同じで位相θだけが異なる正弦関数(y=sin(2π×f×x+θ)(0≦x<2π))上の点の座標値に変換されることになる。
【0038】
図4は、図1に示した解析部12がログを正弦関数上の点の座標値に変換する動作を説明するための図であり、(a)は解析部12が受け付けた複数のログのそれぞれに含まれる時刻情報の一例を示す図、(b)は(a)に示した時刻情報を含む複数のログが正弦関数上の点の座標値に変換された状態を示す図である。
【0039】
図4は、大規模分散処理システム20において相互に異なる3つのシーケンスが実行されている場合を示している。つまり、図4(a)に示すログ1−1〜1−7、ログ2−1〜2−7、ログ3−1〜3−7のそれぞれは、相互に異なる3つのシーケンスのそれぞれが実行されたことによって出力されたログである。
【0040】
図4(b)に示す3つの正弦関数の周波数はすべて同じである。この場合、後述するフーリエ変換が実行されることにより、周波数領域には単一のスペクトルが周波数成分として現れることになる。
【0041】
ここで、上述した確認の結果、選択したログが、シーケンスが正常に実行されたときに出力されたログでない場合、例えば再送処理やエラー等、シーケンスが正常に実行された場合以外に出力されたログである場合、解析部12は、上記の式(2)を用いずにログを時間領域における点の座標値に変換する。すなわち、解析部12は、選択したログを、上記の式(2)にて表される正弦関数上以外の点の座標値に変換する。具体的には例えば、(x,y)=(x_timeX,0)とする。これにより、後述するフーリエ変換が実行されることで周波数領域には、上述した単一のスペクトルとは異なるスペクトルが周波数成分として現れることになる。なお、解析部12は、受け付けた複数のログのすべてについて、上述した確認と、時間領域における点の座標値への変換とを繰り返して行う。
【0042】
次に、解析部12は、変換した複数の座標値のそれぞれに対してフーリエ変換を実行することにより、周波数領域における座標値を算出する。そして、解析部12は、算出した周波数領域における座標値を出力部13に出力する。
【0043】
なお、シーケンスが正常に実行された場合に出力されたログの数が十分でなく、フーリエ変換を実行した際に、十分な数の座標点が得られない場合には、シーケンスが正常に実行された場合に出力された1つログを、上記の式(2)上の連続する複数の点の座標値に変換しておけばよい。
【0044】
再度、図1を参照すると出力部13は、画面(不図示)を備えている。出力部13は、解析部12から出力された座標値を受け付け、受け付けた座標値を示す周波数領域のグラフをその画面に表示する。
【0045】
図5は、図1に示した出力部13が備える画面に表示された周波数領域のグラフの一例を示す図であり、(a)は大規模分散処理システム20においてシーケンスが正常に実行された場合を示す図、(b)は大規模分散処理システム20において正常に実行されなかったシーケンスがある場合を示す図である。
【0046】
大規模分散処理システム20においてシーケンスが正常に実行された場合には図5(a)に示すように、周波数fの単一のスペクトルのみが周波数成分として現れることになる。
【0047】
一方、大規模分散処理システム20において正常に実行されなかったシーケンスがある場合には図5(b)に示すように、周波数fの単一スペクトル以外のスペクトルが周波数成分として現れることになる。これにより、例えば大規模分散処理システム20の管理者は、大規模分散処理システム20において正常に実行されなかったシーケンスがあることを把握することができる。
【0048】
なお、出力部13は、スペクトルを対数表示で表示することも可能である。この場合、微小な周波数成分が拡大表示されることになる。これにより、例えば大規模分散処理システム20の管理者は、大規模分散処理システム20において正常に実行されなかったシーケンスがあることをより容易に把握することができる。
【0049】
図6は、図1に示した出力部13が備える画面に表示された周波数領域のグラフの他の例を示す図である。
【0050】
図6では、シーケンスが正常かつ、予め想定していた性能で実行された場合の周波数をfとしている。
【0051】
大規模分散処理システム20においてシーケンスが正常に実行されたが、その処理時間が想定よりも遅い場合、例えば図6(a)において実線で表したような、中心周波数がfよりも小さなスペクトルが周波数成分として現れることになる。一方、大規模分散処理システム20においてシーケンスが正常に実行され、その処理時間が想定よりも速い場合、例えば図6(a)において破線で表したような、中心周波数がfよりも大きなスペクトルが周波数成分として現れることになる。
【0052】
また、大規模分散処理システム20においてシーケンスが正常に実行されたが、その処理時間のばらつきが想定よりも大きな場合、例えば図6(b)に示す線幅が広いスペクトルが現れることになる。一方、大規模分散処理システム20においてシーケンスが正常に実行され、その処理時間のばらつきが想定よりも小さな場合、例えば図6(b)に示す線幅が狭いスペクトルが周波数成分として現れることになる。
【0053】
これにより、例えば大規模分散処理システム20の管理者は、大規模分散処理システム20の性能の変化を把握することができる。
【0054】
以下に、上記のように構成されたログ解析装置10が大規模分散処理システム20から出力されたログを解析する動作について説明する。
【0055】
図7は、図1〜図6に示したログ解析装置10が大規模分散処理システム20から出力されたログを解析する動作を説明するためのフローチャートである。
【0056】
まず、ログ入力部11は、大規模分散処理システム20から出力された複数のログを受け付ける(ステップS1)。
【0057】
そして、ログ入力部11は、受け付けた複数のログを解析部12へ出力する。
【0058】
ログ入力部11から出力された複数のログを受け付けた解析部12は、受け付けた複数のログのうち未選択のログを1つ選択する(ステップS2)。
【0059】
そして、解析部12は、選択したログが、シーケンスが正常に実行された場合に出力されたログであるかどうかを確認する(ステップS3)。
【0060】
ステップS3における確認の結果、選択したログが、シーケンスが正常に実行された場合に出力されたログである場合、解析部12は、上記の式(2)および式(3)を用い、選択したログを時間領域における正弦関数上の点の座標値に変換する(ステップS4)。
【0061】
一方、ステップS3における確認の結果、選択したログが、シーケンスが正常に実行された場合に出力されたログでない場合、解析部12は、選択したログを、時間領域における上記の式(2)上の点以外の座標値に変換する(ステップS5)。
【0062】
ステップ4またはステップ5の後、解析部12は、受け付けた複数のログのすべてを選択済みかどうかを確認する(ステップS6)。
【0063】
ステップS6における確認の結果、受け付けた複数のログのすべてを選択済みでない場合、ステップS2の動作へ遷移する。
【0064】
一方、ステップS6における確認の結果、受け付けた複数のログのすべてを選択済みである場合、解析部12は、ステップS4およびステップS5にて変換した複数の座標値のそれぞれに対してフーリエ変換を実行することによって周波数領域における座標値を算出する(ステップS7)。
【0065】
そして、解析部12は、算出した座標値を出力部13へ出力する。
【0066】
解析部12から出力された座標値を受け付けた出力部13は、受け付けた座標値を示す周波数領域のグラフを画面に表示する。すなわち、出力部13は、解析部12にて算出された座標値を示す周波数領域のグラフを画面に表示する(ステップS8)。
【0067】
このように本実施形態においてログ解析装置10は、大規模分散処理システム20においてシーケンスが正常に実行された場合に出力されたログを、そのログに含まれる時刻情報に基づき、時間領域において周期性を有する所定の関数上の点の座標値に変換する。
【0068】
また、ログ解析装置10は、大規模分散処理システム20においてシーケンスが正常に実行された場合以外に出力されたログを、そのログに含まれる時刻情報に基づき、上記の時間領域において上記の所定の関数上以外の点の座標値に変換する。
【0069】
そして、ログ解析装置10は、変換された座標値に対してフーリエ変換を実行することによって周波数領域における座標値を算出し、算出した座標値に基づいた情報を外部に通知するための出力を行う。
【0070】
これにより、異常なシーケンスの有無や性能の変化を検出するために、大量のログをシーケンス毎に分類して解析する必要がない。
【0071】
従って、異常なシーケンスの有無や、性能の変化の検出に要するコストを低減することが可能となる。
【0072】
なお、本実施形態では、解析部12がログを正弦関数上の点の座標値に変換する場合について説明したが、解析部12がログを例えば余弦関数上の点の座標値に変換するようにしてもよい。
【0073】
また、本実施形態では、出力部13が、受け付けた座標値を示す周波数領域のグラフを画面に表示する場合について説明した。但し、出力部13は、大規模分散処理システム20においてシーケンスが正常に実行されたかどうかや、性能に変化があったかどうか等のシーケンスの正常性を外部に通知することができればよい。従って、出力部13は、例えば印刷機能を備え、受け付けた座標値を示す周波数領域のグラフを印字して出力するようにしてもよい。また、出力部13は、通信機能を備え、受け付けた座標値を示す周波数領域のグラフの情報を予め決められた装置等へ送信するようにしてもよい。
【0074】
また、出力部13は、受け付けた座標値の特徴や、受け付けた座標値とシーケンスが正常に実行された場合の座標値との比較から、大規模分散処理システム20において実行されたシーケンスの正常性を確認するようにしてもよい。そして、大規模分散処理システム20において実行されたシーケンスの正常性が確認されなかった場合、出力部13は、例えば警報を発するようにしてもよい。
【0075】
また、本実施形態においては、大規模分散処理システム20からのログの出力タイミングのパターンが1つである場合を想定していた。大規模分散処理システム20からのログの出力タイミングのパターンが複数ある場合、解析部12が、相互に異なる複数の周波数のそれぞれを含む複数の正弦関数を予め記憶しておく。そして、解析部12が、受け付けた複数のログのそれぞれの出力タイミングのパターンを判定し、複数の正弦関数のうち、判定した結果に応じた正弦関数を用いてそのログを時間領域における座標値に変換するようにすればよい。これにより、周波数領域において相互に異なる複数の周波数成分が現れることになる。
【0076】
また、本発明においては、ログ解析装置内の処理は上述の専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムをログ解析装置にて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムをログ解析装置に読み込ませ、実行するものであっても良い。ログ解析装置にて読取可能な記録媒体とは、フレキシブルディスク、光磁気ディスク、DVD、CDなどの移設可能な記録媒体の他、ログ解析装置に内蔵されたHDDなどを指す。
【符号の説明】
【0077】
10 ログ解析装置
11 ログ入力部
12 解析部
13 出力部
20 大規模分散処理システム
50 ネットワーク

【特許請求の範囲】
【請求項1】
システムから出力されたログを解析するログ解析装置であって、
前記システムにおいてシーケンスが正常に実行された場合に出力されたログを、該ログに含まれる時刻情報に基づき、時間領域において周期性を有する所定の関数上の点の座標値に変換し、前記システムにおいてシーケンスが正常に実行された場合以外に出力されたログを、該ログに含まれる時刻情報に基づき、前記時間領域において前記所定の関数上以外の点の座標値に変換し、前記変換された座標値に対してフーリエ変換を実行することによって周波数領域における座標値を算出する解析部と、
前記解析部にて算出された座標値に基づいた情報を外部に通知するための出力を行う出力部と、を有するログ解析装置。
【請求項2】
請求項1に記載のログ解析装置において、
前記出力部は、前記解析部にて算出された座標値を示す周波数領域のグラフを表示するログ解析装置。
【請求項3】
請求項1に記載のログ解析装置において、
前記出力部は、前記解析部にて算出された座標値に基づき、前記システムにおいて実行されたシーケンスの正常性を確認し、該確認の結果を外部に通知するための出力を行うログ解析装置。
【請求項4】
請求項1乃至3のいずれか1項に記載のログ解析装置において、
前記所定の関数は、正弦関数または余弦関数であるログ解析装置。
【請求項5】
システムから出力されたログを解析するログ解析装置におけるログ解析方法であって、
前記システムにおいてシーケンスが正常に実行された場合に出力されたログを、該ログに含まれる時刻情報に基づき、時間領域において周期性を有する所定の関数上の点の座標値に変換し、前記システムにおいてシーケンスが正常に実行された場合以外に出力されたログを、該ログに含まれる時刻情報に基づき、前記時間領域において前記所定の関数上以外の点の座標値に変換する処理と、
前記変換された座標値に対してフーリエ変換を実行することによって周波数領域における座標値を算出する処理と、
前記算出した座標値に基づいた情報を外部に通知するための出力を行う処理と、を有するログ解析方法。
【請求項6】
システムから出力されたログを解析するログ解析装置に、
前記システムにおいてシーケンスが正常に実行された場合に出力されたログを、該ログに含まれる時刻情報に基づき、時間領域において周期性を有する所定の関数上の点の座標値に変換し、前記システムにおいてシーケンスが正常に実行された場合以外に出力されたログを、該ログに含まれる時刻情報に基づき、前記時間領域において前記所定の関数上以外の点の座標値に変換する機能と、
前記変換された座標値に対してフーリエ変換を実行することによって周波数領域における座標値を算出する機能と、
前記算出した座標値に基づいた情報を外部に通知するための出力を行う機能と、を実現させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate