(57)【要約】【課題】  システムは大規模かつ複雑化したシステムに対する臨時的ないし応急的な操作が必要な場面でも、システム障害、業務障害を発生する可能性のある操作を未然に把握し、通知する。【解決手段】  システム異常操作検出装置は、自動化スクリプト情報とシステムの運用操作の運用ログを収集する収集部と、収集部により収集された運用ログと自動化スクリプト情報に基づいて、運用操作を標準化する標準化部と、標準化部が標準化した運用操作に基づきモデル化されたモデルを生成する解析部と、解析部により生成されたモデルを記憶する記憶部と、を有する。【選択図】  図１
2020009207.tif 000002
【特許請求の範囲】
【請求項１】
自動化スクリプト情報とシステムの運用操作の運用ログを収集する収集部と、
前記収集部により収集された運用ログと自動化スクリプト情報に基づいて、運用操作を標準化する標準化部と、
前記標準化部が標準化した運用操作に基づきグラフ化されたモデルを生成する解析部と、
前記解析部により生成されたモデルを記憶する記憶部と、を有することを特徴とするシステム異常操作検出装置。
【請求項２】
前記標準化部は、
前記収集部により収集された運用ログを走査し、一連の関連する操作を構成するコマンド列群を抽出し、
抽出されたコマンド列群に、自動化スクリプト情報の自動化識別子があるか判断し、自動化識別子がある場合には自動化識別子を用い、自動化識別子がない場合にはコマンド列群と尤度の高い自動化スクリプト情報のコマンド列と、を対応付けて補完し、
コマンド列群に含まれるコマンドの種別を判定し、コマンドの種別が実行系のコマンドの場合に実行系のコマンドに環境設定コマンドを適用して運用ログを標準化されたコマンド列群に変換することを特徴とする請求項1に記載のシステム異常操作検出装置。
【請求項３】
前記解析部は、前記標準化部により変換されて標準化されたコマンド列群から、実行コマンドを抽出し、
抽出された実行コマンドを実行ノードとして実行順に接続したグラフを作成し、
前記実行ノードに対応する環境設定コマンドを環境設定ノードとして、前記グラフの前記実行ノードに接続し、
前記記憶部に、前記環境設定ノードが接続された前記グラフを、モデルとして記憶することを特徴とする請求項２に記載のシステム異常操作検出装置。
【請求項４】
前記モデルは、前記実行ノードの実行結果を示すメタ情報を前記実行ノードに接続して、前記記憶部に記憶されていることを特徴とする請求項３に記載のシステム異常操作検出装置。
【請求項５】
操作コマンドを入力する入力部と、
前記入力部で入力された操作コマンドを、前記標準化部で標準化し、標準化された操作コマンドを、前記記憶部に記憶されている前記モデルから検索できるか否かを判定する検査部と、を有することを特徴とする請求項１に記載のシステム異常操作検出装置。
【請求項６】
前記検査部は、
前記記憶部からモデルを検索できた場合に検索モデルとし、前記検索モデルの実行ノードの実行順と逆順に探索し、標準化された操作コマンドが、検索モデルの先頭まで辿ることができるか否か、前記検索モデルの環境設定ノードと前記標準化された操作コマンドの環境設定ノードが同一であるか否か、前記検索モデルの実行ノードのメタ情報と前記標準化された操作コマンドのメタ情報が条件を満たすか否かを判定することを特徴とする請求項５記載のシステム異常操作検出装置。
【請求項７】
前記検査部が、前記標準化された操作コマンドを、前記記憶部に記憶されている前記モデルから検索できない場合、前記標準化が行われた操作コマンドの実績がないことを通知するフィードバック生成部を有することを特徴とする請求項６に記載のシステム異常操作検出装置。
【請求項８】
前記フィードバック生成部は、前記検索モデルの実行ノードの実行順と逆順に探索し、標準化された前記操作コマンドによって、前記検査部が前記検索モデルの先頭まで辿ることができない場合、前提となる実行コマンドがないことを通知することを特徴とする請求項７に記載のシステム異常操作検出装置。
【請求項９】
前記フィードバック生成部は、前記検索モデルの環境設定ノードと、標準化された前記操作コマンドの環境設定ノードとが異なる場合、環境設定の不備を通知することを特徴とする請求項７に記載のシステム異常操作検出装置。
【請求項１０】
前記フィードバック生成部は、前記検索モデルのメタ情報と、標準化された前記操作コマンドを実行時のメタ情報とが異なる場合、メタ情報不整合を通知することを特徴とする請求項７に記載のシステム異常操作検出装置。
【請求項１１】
操作コマンドを実行する実行計算機を含むシステムと、システムに操作コマンドを入力する端末とにネットワークを介して接続されるインタフェースと処理部を有する装置を用いた、前記システムの異常操作検出方法であって、
前記処理部は、
前記インタフェースから自動化スクリプト情報と前記システムの運用ログが入力されると、前記システムの運用ログの運用コマンドを自動化スクリプト情報に基づいて標準化し、
前記標準化した運用コマンドに基づきグラフ化されたモデルを生成し、
前記生成されたモデルを記憶部に記憶する、ことを特徴とするシステム異常操作検出方法。
【請求項１２】
前記処理部は、
前記インタフェースにより収集された運用ログを走査し、一連の関連する操作を構成するコマンド列群を抽出し、
コマンド列群に自動化スクリプト情報の自動化識別子があるか判断し、自動化識別子がある場合には自動化識別子を用い、自動化識別子がない場合にはコマンド列群と尤度の高い自動化スクリプト情報のコマンド列と対応付けて補完し、
コマンド列群に含まれるコマンドの種別を判定し、コマンドの種別が実行系のコマンドの場合に、実行系のコマンドに環境設定コマンドを適用して運用ログを標準化されたコマンド列群に変換し、
前記標準化されたコマンド列群から、実行コマンドを抽出し、
抽出された実行コマンドを実行ノードとし、前記実行ノードを実行順に接続したグラフを作成し、
前記実行ノードに対応する環境設定コマンドを環境設定ノードとして、前記グラフの前記実行ノードに接続し、
前記記憶部に、前記環境設定コマンドが接続された前記グラフをモデルとして記憶することを特徴とする請求項１１に記載のシステム異常操作検出方法。
【請求項１３】
前記処理部は、
入力された操作コマンドを自動スクリプト情報に基づいて標準化し、前記標準化が行われた操作コマンドを、前記記憶部に記憶されているモデルから検索できない場合、前記標準化が行われた操作コマンドの実績がないことを通知することを特徴とする請求項１２に記載のシステム異常操作検出方法。
【請求項１４】
操作コマンドを実行する実行計算機を含むシステムと前記システムに操作コマンドを入力する端末とネットワークを介して接続されるインタフェース、処理部、及び、記憶装置とを有する装置の処理部によって実行されるシステムの異常操作検出を実行するコンピュータプログラムであって、
前記インタフェースから自動化スクリプト情報と前記システムの運用ログが入力されると、前記インタフェースにより収集された運用ログを走査し、一連の関連する操作を構成するコマンド列群を抽出し、コマンド列群に自動化スクリプト情報の自動化識別子があるか判断し、自動化識別子がある場合には自動化識別子を用い、自動化識別子がない場合には、コマンド列群と尤度の高い自動化スクリプト情報のコマンド列と、を対応付けて補完し、コマンド列群に含まれるコマンドの種別を判定し、コマンドの種別が実行系のコマンドの場合に、実行系のコマンドに環境設定コマンドを適用して運用ログを標準化されたコマンド列群に変換するプログラム命令と、
前記標準化されたコマンド列群から、実行コマンドを抽出し、抽出された実行コマンドを実行ノードとし、実行ノードを実行順に接続したグラフを作成し、実行ノードに対応する環境設定コマンドを環境設定ノードとして、前記グラフの実行ノードに接続し、前記記憶装置に、環境設定コマンドが接続された前記グラフをモデルとして記憶するプログラム命令とを有することを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム異常操作検出装置、方法およびプログラムの技術に関する。
【背景技術】
【０００２】
システムは大規模かつ複雑化しており、これの運用、保守にも大きな労力と深い知識が要求される。技術の進展により、予め運用パターンが明らかとなっている定常的な運用操作については、ジョブプログラム、スケジューリングおよびそれを束ねるルールなどの活用により自動化が進められており、人間の手を煩わせることなく安定したシステムの稼動が実現されている。
【０００３】
他方、通常に想定した運用とは外れた臨時的な運用のための操作や、予期せぬ障害に対応するための修正および障害原因を明らかにするための調査などは、いまだ完全に機械化されているとは言いがたい。このような臨時運用の局面では、運用ないし保守に従事する者(以下、操作者)の経験とノウハウにより人手によるシステム操作を実施している。このようなケースは概ね緊急性を伴うため、操作者に十分な事前調査の時間を与えることは難しい。加えて、前述の通りシステムが複雑化し、システムを操作する上で必要な要素の依存関係を把握しきるのが困難である。
【０００４】
結果として、操作者が期待するシステムの動作を得ようとシステムに与えた操作群(例えば操作コマンド列)が、システムとしては入力が不十分もしくは誤ったものとなり、システムが誤作動することがある。もしくはシステムの仕様としては正しく動作したが、意図した結果とは異なる業務遂行上の誤動作をしてしまい、システム障害となるというリスクがある。
【０００５】
これを防ぐため、運用、保守を遂行する体制においては、操作手順書、ノウハウ集など人間の運用の工夫を試みているが、条件が複雑多岐に渡るために網羅が難しく、また過去に事例が無かったものに対しての対応を求められるため、手順書だけではシステム障害のリスクを防ぐのが難しい状況にある。
【０００６】
このような背景のもと、適切な操作を行ったログが含まれる範囲を指定し、その範囲に含まれるログのコマンド・ジョブ列に基づき、正しい操作シーケンスを実行した際の手順書を自動で作成する技術として、特許文献１がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−１１７２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
この技術によれば、繰り返し実行が必要なためルーチン化された操作群（コマンド列）に対しては、実績のある手順書の作成ないし自動化スクリプトが得られるので有効である。
【０００９】
しかし、特許文献１の技術では、臨時的ないし応急的にシステムの操作が必要な場面では、多くの場合、過去実績のある操作シーケンスとは異なる操作シーケンスを必然的に実施することになるため、標準手順を与えられたとしてもこれに沿うことはなく、十分に対応することができないことが考えられる。
【００１０】
そこで、本発明の目的は、臨時的ないし応急的にシステムの操作が必要な場面でも、システム障害、業務障害を発生する可能性のある操作を未然に把握し、通知することができる技術を提供することにある。
【課題を解決するための手段】
【００１１】
本発明に係るシステム異常操作検出装置の一側面は、自動化スクリプト情報とシステムの運用操作の運用ログを収集する収集部と、収集部により収集された運用ログと自動化スクリプト情報に基づいて、運用操作を標準化する標準化部と、標準化部が標準化した運用操作に基づきモデル化されたモデルを生成する解析部と、解析部により生成されたモデルを記憶する記憶部と、を有する。
【００１２】
また、本発明に係るシステム異常操作検出方法の一側面は、操作コマンドを実行する実行計算機を含むシステムと、システムに操作コマンドを入力する端末とにネットワークを介して接続されるインタフェースと処理部を有する装置を用いた、システムの異常操作検出方法であって、処理部は、インタフェースから自動化スクリプト情報とシステムの運用ログが入力されると、運用ログの運用コマンドを自動化スクリプト情報に基づいて標準化し、標準化した運用コマンドに基づきグラフ化されたモデルを生成し、生成されたモデルを記憶部に記憶する。
【００１３】
また、本発明に係るコンピュータプログラムの一側面は、操作コマンドを実行する実行計算機を含むシステムと、システムに操作コマンドを入力する端末とネットワークを介して接続されるインタフェース、処理部、及び、記憶装置とを有する装置の処理部によって実行されるシステムの異常操作検出を実行するコンピュータプログラムであって、インタフェースから自動化スクリプト情報とシステムの運用ログが入力されると、インタフェースにより収集された運用ログを走査し、一連の関連する操作を構成するコマンド列群を抽出し、コマンド列群に自動化スクリプト情報の自動化識別子があるか判断し、自動化識別子がある場合には自動化識別子を用い、自動化識別子がない場合には、コマンド列群と尤度の高い自動化スクリプト情報のコマンド列と、を対応付けて補完し、コマンド列群に含まれるコマンドの種別を判定し、コマンドの種別が実行系のコマンドの場合に、実行系のコマンドに環境設定コマンドを適用して運用ログを標準化されたコマンド列群に変換するプログラム命令と、標準化されたコマンド列群から、実行コマンドを抽出し、抽出された実行コマンドを実行ノードとし、実行ノードを実行順に接続したグラフを作成し、実行ノードに対応する環境設定コマンドを環境設定ノードとして、グラフの実行ノードに接続し、記憶装置に、環境設定コマンドが接続されたグラフをモデルとして記憶するプログラム命令とを有する。
【発明の効果】
【００１４】
本発明によれば、システム障害、業務障害を発生する可能性のある操作を未然に把握し、操作者に通知することができる。
【図面の簡単な説明】
【００１５】
【図１】システム異常操作検出装置の機能を説明する機能ブロック図である。
【図２】自動化された運用ログと自動化スクリプトの対応の一例を示した図である。
【図３】モデルの構築処理を示したフロー図である。
【図４】標準化部による運用ログ情報の標準化変換処理を示したフロー図である。
【図５】解析部によるモデル構築処理を示したフロー図である。
【図６】フィードバック生成部で実行されるシステム運用操作列の検証フローを示した図である。
【図７】コマンド種別定義情報を示した図である。
【図８】運用操作列のグラフの一例を示した図である。
【図９】運用履歴のコマンド列群をまとめたグラフを示した図である。
【図１０】検査部で実行される検査処理を示したフロー図である。
【図１１】フィードバック生成部の処理を示したフロー図である。
【図１２】システム異常操作検出装置のハードウェア構成の一例を示した図である。
【発明を実施するための形態】
【００１６】
＜基本概念＞
本発明に係る技術は、大規模かつ複雑であり入力としてのあるべき前提条件の把握が、操作者にとって困難なシステムの運用場面をその主たる対象とする。このようなシステムにおいては試行錯誤を繰り返しながら、問題解決に向けたシステム操作コマンド列を入力する。その際に、過去の事例（主に自動化された操作）に基づき、過去そのコマンドが発行された事前状態を満たしていない場合にこれを通知する。これにより、そのコマンド発行のリスクを検討させ、不用意なコマンド操作によるシステム障害を防ぐことができる。
【００１７】
特に過去、同一のコマンドシーケンスが得られないが無いようなシステム操作においても、危険な操作をアラートすることにより、事故を未然に防ぐことができる。
【００１８】
近年のシステムはジョブスケジューラ・バッチ・シェルなどにより定型的なシステム操作群については定型的な記述に基づき自動化されている。この定型化され、スケジュール化されたシステム操作群については、安定稼働しており、システムとして受理された入力および操作と考えることができる。
【００１９】
実際に実行された処理については、個々の装置やサブシステムにおいて運用ログが出力されている。自動化スクリプトなどは、通常当該装置やサブシステムにかかる記述しか得ることができないが、上記の運用ログと組み合わせることで、システム全体の時系列における依存関係を再現できる。
【００２０】
システム操作は通常、各々がパラメータをとる複数のコマンド列により実現され、システム操作の誤りによる障害は、1コマンドとそのパラメータの関係というよりは、あるシステムコマンドの前提となるコマンドの実施有無、または実施結果の依存関係の破綻、および業務系カレンダーとのタイミングのずれにより発生することが多い。機械化された運用操作と、人が臨時で行う運用操作では、一連の処理を実行するフローが異なる。ごく端的には、例えば反復処理は多くの場合、人手で実行しない。
【００２１】
近年、エンタープライズシステムにおいて、臨時緊急の場合を除いては自動化が進んでいるが、その数は多くない。
【００２２】
そこで、その自動化された運用のログを正常系操作の学習データに用いることで、モデル学習の教示データの数を増やし、予測の精度を向上させることが本技術の特徴の一つである。
【００２３】
個々のシェル（ＯＳユーザのためにインタフェースを提供するソフトウェア）やバッチの単位でも、受理の可否はある程度判断できるが、特にシステムにより実行される業務としては、実績である運用ログを活用しなければ、受理の可否は見えてこない。また、各シェル等のスクリプトでは、関連して動作するシステムの全体を見通せないので、この組み合わせにも運用ログを活用して、システムの正常動作の事例数を担保する。
【００２４】
（１）事前準備：
自動化された運用の実績や静的な定義(シェル・ジョブネットなど)から、要素となるコマンドの環境変数等の前提条件、コマンド（プログラム）の前後関係をグラフ化したモデルを蓄積してモデルを構築する。
【００２５】
（２）運用チェック時：
システム運用時に、システム操作者からの運用操作を入力し、蓄積されたモデルから逸脱する操作について、操作者に通知する。これにより、操作者は、意図して逸脱する操作をしたのか、知らずに操作してしまったのかを確認できる。
【００２６】
本技術によれば、大規模化、複雑化したシステムの運用で、運用実績のある操作以外の運用操作が行われる場合に、システムが誤作動やシステム障害となる可能性を運用操作実行前にシステム操作者に通知することができる。
【実施例】
【００２７】
＜処理概要＞
図１は、システム異常操作を検出するシステム異常操作検出装置（以下、システム異常検出装置）１０の機能を説明する機能ブロック図である。図１を用いて、処理の概略を説明する。図１で説明する機能ブロックは、プログラム命令によって実現する。
【００２８】
収集部１１は、対象操作検査システム(実行計算機を含むシステム)の運用操作の結果であるシステム運用履歴情報（以下、運用ログと記載する場合がある）１３及びシステム運用自動化定義情報（以下、自動化スクリプト情報と記載する）１２を収集する。ここで、自動化スクリプト情報とは、システム運用を自動化しているスクリプトであって、発行するプログラムのコマンドライン列が列挙された、例えばLinuxでいうシェルスクリプト等のことである。
【００２９】
また、システム運用履歴情報１３とは、自動化スクリプト１２とその定義がシステム上で実行された際のパラメータ（環境変数含む）、時刻、実行者もしくは実行権限を記録したものであり、例えば所謂、システム操作ログ（以下、運用ログと記載する）を一例とする。ただし、履歴は自動化定義の中に含まれる、個々のコマンド列及びそのパラメータであっても良い。
【００３０】
標準化部１４は、収集部１１から入力されたシステム運用履歴情報１３および自動化スクリプト情報１２と、コマンドプログラム定義（以下、コマンド種別定義と記載する）１５を用い、システム運用履歴情報から運用操作の標準化を行う。コマンド種別定義１５は、図７で示したコマンドの種別を定義するコマンド種別定義である。
【００３１】
標準化部１４は、時刻ブランクおよび実行主体（ユーザや実行権限）の切り替わり、ログインログアウト操作を認識し、一連の関連する操作を構成するコマンド列を抽出する。標準化部１４は、抽出されたコマンド列を以下の処理により標準化変換する。
【００３２】
また、標準化部１４は、システム運用履歴情報１３と、自動化スクリプト情報１２とを突合せて、各履歴レコードがどの自動化スクリプトから生成されたものかを識別する。もし、システム運用履歴情報１３に、自動化スクリプトの識別子が出力されていれば、それを利用して標準化を行う。自動化スクリプトに識別子が含まれていなければ、自動化スクリプト情報１２に記載されているコマンド列と、システム運用履歴情報１３に出力されているコマンド実行履歴列との比較を行い、尤度の高い自動化スクリプトについて自動化定義を識別して標準化を行う。
【００３３】
標準化部１４は、各コマンドプログラムについて、コマンド種別定義（図７参照）を参照し、そのデータ操作特性を認識する。具体的には、以下の３種類の何れかを認識する。
(a)副作用の無い参照コマンド、
(b)環境やパラメータをセットするためのコマンド、
(c)ファイル等のリソースなどに影響（追加、更新、削除）のあるコマンド。
【００３４】
また、標準化部１４は、ある(c)のコマンドの前に並ぶ(b)コマンドについて、同一の値を段階的に決めているものがあり、そのコマンド列間に(c)のコマンドがなければ、その一連のコマンド列の実行後の値を算出し、最終的な値を決定するコマンドに置換する。この処理は、図５のステップS５１０に対応する処理である。これは、コマンドが操作された最終的な状態を把握するための処理である。例えば、（b）のコマンドがディレクトリーの変更を行うコマンドであった場合に、最終的なディレクトリーを特定することを意味する。
【００３５】
システム運用操作の依存関係の履歴を解析する解析部１６は、標準化部１４により標準化されたシステム運用履歴情報１３に基づき、実行計算機を含む対象操作検査システムが受理した操作を受理要素操作のモデル（以下、モデルと記載する）を生成し、記憶部１７に記憶する。
【００３６】
解析部１６は、システム運用を行う実行計算機が共通、実行権限が共通、時間的に連続しているとして一連の操作と認識した実行履歴について処理を実施する。
【００３７】
解析部１６は、一連の操作として認識された、個々のコマンド列について、以下の処理を実施する。
【００３８】
（１）一連の操作における(c)の操作をノードとして抽出し、順序関係をもつグラフ（図８、９参照）を抽出する。このグラフを抽出する作業を、モデル化と呼ぶ。ノードのグラフ化は、ノードの順序関係、つまり、コマンド列の順序関係をグラフとして表現したものである。この際、実行ノードは、コマンド名（引数）およびコマンド名に与えられたオペランドの組である。
【００３９】
本実施例においては、システム操作の内、個々の行の入力については「コマンド」と表現し、コマンドの集合を「コマンド列」と呼ぶ。このコマンド列を記憶部１７に格納する形式にコマンド列を変換したものを「ノード」と呼ぶ。ノードはその種類により、環境設定ノード、実行ノード、メタ情報ノードと呼び、これらの一連のまとまりとなる集合を「モデル」と呼ぶ。
【００４０】
（２）グラフを逆順に辿り、（１）で抽出した個々の実行ノードの前に実行された(b)のノードを環境設定ノードとして関連付ける。環境設定ノードはコマンド列上で、環境設定コマンドに後続する実行ノードに関連付けるものとする。つまり、環境設定ノードとは、直後に実行される実行ノードの環境やパラメータをセットするためのコマンド列である。この関連付けは、グラフを正順に辿り、各実行ノードの実行時点で実効済みの環境設定ノードを関連付ける方法もある。
【００４１】
（３）得られたグラフについて、モデルを記憶する記憶部１７を探索し、等価なものがあれば記憶部１７に新たに書き込む。
【００４２】
（４）各実行ノード、環境設定ノードに対して、システム運用履歴情報に基づくメタ情報、すなわち実行時刻、実行権限等を記録する(図８参照)。既にメタ情報が記憶されていれば、実行権限等の新しい項目を追記する。このメタ情報は、例えば、モデル化されたグラフが実行される度に生成されるため、一つの実行ノードに対して複数のメタ情報が対応付けられることになる。
【００４３】
（５）上記（１）〜（４）の処理で行うモデル化に先行する一連操作があれば、それを前提操作として記録する。
【００４４】
次に、システム異常検出装置１０は、記憶部１７に記憶されたモデルを用いて、システム操作者（以下、操作者と記載する）２１から入力されるシステム運用操作列２２を検証する。
【００４５】
作業端末(図示せず)からのシステム運用操作を入力する入力部（以下、入力部と記載する）１９は、操作者２１のシステム運用操作コマンドをセッション完了、もしくはタイムアウトするまで逐次受け付ける。尚、入力部１９は、システム異常検出装置１０に接続されたキーボードやマウス等の入力装置から構成されてもよい。
【００４６】
標準化部１４は、操作者２１により入力された運用操作コマンドを(c)種のコマンドが入力されるまでバッファリングしつつ、標準化を行う。
ここで、標準化部１４の標準化は、以下の処理を行う。
【００４７】
（１）(a),(b)種のコマンドであれば、コマンドをバッファし、かつ実行計算機に転送しその結果を操作者２１に提示する。バッファ中において、標準化部１４によりコマンドの標準化を実施する。
【００４８】
（２）(c)種のコマンドが入力された場合、蓄積されているバッファと共に、当該コマンドを要素運用操作検査部１８（以下、検査部と記載する）に転送する。
【００４９】
検査部１８は、転送された運用操作のコマンド列の検査を行う。具体的には、以下の処理を行う。
【００５０】
（１）与えられた(c)種のコマンドが記録された「モデル」に同一の実行ノードが存在するかを検索する。もし存在しなければ、検査失敗とする。
【００５１】
（２）検索されたモデル（検索モデル）の実行ノードを逆順に探索し、依存関係がある実行ノードが既に実行済みかを判定する。このとき、逆順に辿り、開始ノードにたどり着けなかった場合、検査失敗とする。つまり、転送された運用操作のコマンド列が、モデルとして記憶されたグラフ化した通り実行されていないことを意味する。
【００５２】
（３）次に、開始の実行ノードまで探索されたモデルについて、実行ノードに紐づく環境設定ノードと、当該実行ノードの実行までに入力された(b)種の環境設定ノードを比較し、モデル上の環境設定ノードを満たすか否かを判定する。例えば、モデルの環境設定ノードと操作者から入力された環境設定ノードが同一値である場合、環境設定ノードを満たすとする。満たさなければ検査失敗とする。同一の環境変数を操作するノード（コマンド列）の場合、もっとも検査対象の実行ノードに近いノード（コマンド列）の値のみの検査を行う。
【００５３】
（４）メタ情報が、過去の実績とかい離がないか検査する。この検査は、実行権限がずれているか否か、実行の曜日、営業日がずれているか等を判定する。
【００５４】
以上の検査でコマンドが問題なければ、実行計算機にコマンド或いはコマンド列を転送し、その結果を操作者２１に提示する。
【００５５】
フィードバック生成部２０は、要素運用操作検査部１８の検査の結果、検査に失敗した場合、操作者２１に異常操作判定２３としてフィードバックを提示する。このフィードバックには、モデルと操作者２１により入力された運用操作コマンドとの不一致の原因に基づき、以下の通知を含む。
【００５６】
（１）コマンドが過去に実績が無いことを通知する。
【００５７】
（２）実行ノードが開始ノードにたどり着けなかった場合、検索の結果、たどり着けた実行ノードが依存するコマンドを、不足コマンドとして提示する。
【００５８】
直前まで成功した実行コマンドを記録しておき、新たに入力された実行コマンドでエラーが出た場合、不足コマンドとして提示しても良い。
【００５９】
（３）実行ノードが開始ノードにたどり着けたが、環境設定ノードの内容が一致しない場合は、当該環境設定について、過去の履歴を提示する。複数候補がある場合には、過去の頻度順に提示する。
【００６０】
以上が、処理の概要である。収集部１１、標準化部１４、解析部１６、検査部１８、フィードバック生成部２０等の各機能はプログラム命令によって実現する。
【００６１】
本技術は、上記した処理により、自動化された運用のログを正常系操作の学習データに用いることで、モデル学習の数(教示データ)を増やすことができ、システム異常判定の精度を向上させることができる。
【００６２】
また、大規模化や複雑化したシステムの運用で、運用実績のある操作以外の運用操作が行われる場合に、システムが誤作動やシステム障害となる可能性を、モデルとの不一致の原因に基づき、その内容を反映して運用操作実行前に操作者に通知することができる。
【００６３】
以下、自動化スクリプト情報と運用ログに基づくモデル構築と、構築されたモデルに基づく、新規なシステム操作の検証について、詳細に説明する。
【００６４】
＜モデル構築＞
まず、事前準備としてモデルを作成する。
【００６５】
図２は、自動化された運用ログ（一般的には、オペレーションコマンドログという）１３と自動化スクリプト２１１，２１２の対応の一例を示した図である。収集部１１は、システム運用履歴である運用ログ１３を収集する。標準化部１４は、図２で示す通り、収集された運用ログ１３より自動化スクリプト情報１２から該当する実行部分２１１、２１２を抽出し、その対応関係２１４、２１５を認識する。また、収集部１１は、変数部の実行時の値を抽出する。解析部１６は、運用ログ１３上の変数定義の依存関係にある実行時変数値の解析およびコマンドの順序関係２１６を記憶する。図２は、収集部１１により認識された対応関係２１４、２１５と、解析部１６により記憶されるコマンドの順序関係２１６を分かりやすく示した図である。
【００６６】
図３は、システム運用履歴１３と自動化スクリプト情報１２とに基づいて、収集部１１、標準化部１４、解析部１６で実行されるモデルの構築フロー図である。
【００６７】
ステップＳ３０２は、収集部１１がシステム運用履歴である運用ログと自動化スクリプト情報を収集する。次に、ステップＳ３０３にて、標準化部１４は運用ログ情報を標準化する。この処理は、図５において、詳細に説明する。ステップＳ３０４で、解析部１６は標準化部１４で標準化された運用ログに基づき、実行計算機で受理された操作（受理要素操作）をモデル化する。このステップは、図６において詳細に説明する。次に、ステップＳ３０５で運用ログ中に未処理履歴があるか確認し、ある場合には、ステップＳ３０３に戻り、ない場合には処理を終了する。
【００６８】
図４は、標準化部１４による運用ログ情報の標準化変換する処理を示したフロー図である。図４に示した処理は、図３のステップＳ３０３の運用ログ情報の標準化変換のステップに対応する。
【００６９】
ステップＳ４０２で運用ログを走査し、時刻ブランクおよび実行主体（ユーザや実行権限）の切り替わり、ログインログアウト操作を認識し、一連のまとまりとして認識されるようコマンド列を、一連の関連する操作を構成するコマンド列群を抽出する(ステップＳ４０２)し、抽出されたコマンド列群を走査する(ステップＳ４０３)。
【００７０】
ステップＳ４０４は運用ログ上に自動化スクリプト情報の自動化定義識別子があるか否かを判断する。ある場合には、ステップＳ４０６に進み、ない場合には、ステップＳ４０５に進む。ステップＳ４０５では、自動化スクリプト情報を参照し、運用ログのコマンド列と自動化スクリプトとを対応付けてステップＳ４０６に進む。ステップＳ４０５では、自動化スクリプト情報１２に記載されているコマンド列と、システム運用履歴情報１３に出力されているコマンド実行履歴列との比較を行い、尤度の高い自動化スクリプトを対応付ける。
【００７１】
ステップＳ４０６では、該当する自動化スクリプトに記載のコマンド列を運用履歴情報として展開しログにないコマンドを補完する、つまり、該当する自動化スクリプトに記載のコマンド列を運用履歴情報として展開し、運用ログ情報にないコマンドを補完する。この処理は、システム運用履歴情報１３と、自動化スクリプト情報１２とを突合せて、各履歴レコードがどの自動化スクリプトから生成されたものかを識別する。もし、システム運用履歴情報１３に、自動化スクリプトの識別子が出力されていれば、それを利用する。自動化スクリプトに識別子が含まれていなければ、ステップＳ４０５において、対応付けた自動化スクリプトに記載のコマンド列を運用履歴情報として展開して運用ログにないコマンドを補完する。
【００７２】
ステップＳ４０７では、運用ログの各コマンド種別を、コマンド種別定義１５に格納されている定義情報に従って識別する。つまり、コマンド種別が参照、環境設定、実行であるかを識別する。つまり、各コマンドプログラム（コマンド列群）について、コマンド種別定義（図７参照）を参照し、そのデータ操作特性を認識する。具体的には、以下の３種類の何れかを認識する。(a)副作用の無い参照コマンド、(b)環境やパラメータをセットするためのコマンド、(c)ファイル等のリソースなどに影響（追加、更新、削除）のあるコマンド。
【００７３】
ステップＳ４０８では、ステップＳ４０７で識別されたコマンド種別が付加されたコマンド列群を走査する。
【００７４】
ステップＳ４０９では、走査されたコマンド列群が実行系コマンドであるか判定し、実行系コマンドの場合には、ステップＳ４１０で、当該コマンド以前の環境設定コマンドについて、同一の値を決めるものをまとめる（適用する）。この処理は、ある(c)のコマンドの前に並ぶ(b)コマンドについて、同一の値を段階的に決めているものがあり、そのコマンド列間に(c)のコマンドがなければ、その一連のコマンド実行後の値を算出し、最終的な値を決定するコマンドに置換する。この処理は、コマンドが操作された最終的な状態を把握するための処理である。例えば、コマンドがディレクトリーの変更を行うコマンドであった場合に、最終的なディレクトリーを特定することを意味する。
【００７５】
ステップＳ４１１では、ステップＳ４０３で操作されたコマンド列群に未処理コマンドがあるか判断し、あればステップＳ４０８に戻って当該コマンド列群に含まれる未処理コマンドについて同様の処理を行う。なければステップＳ４１２に進む。
【００７６】
ステップＳ４１２では、他のコマンド列群、即ち、未処理コマンド列群があるか判定し、あれば、ステップＳ４０３に戻り、当該未処理コマンド列について、標準化処理を行う。ここまでの処理で、実行系のコマンドに環境設定コマンドを適用して運用ログを標準化されたコマンド列群への変換を行う。
【００７７】
図５は、解析部１６によるモデル構築処理を示したフロー図である。図５に示した処理は、図３のステップＳ３０４のシステム運用履歴情報に基づく、受理要素操作モデル構築のステップに対応する。
【００７８】
解析部１６は、標準化部１４で標準変換されたコマンド列群を読み込む（ステップＳ５０）。ステップＳ５０３では、読み込んだコマンド列群から実行コマンドを抽出し、コマンド列の実行順となるグラフ（図８、９参照）を作成する。つまり、読込んだコマンド列群から実行コマンドを抽出し、各々のコマンドを実行ノードとし、コマンド列の実行順に接続されたグラフを作成する。
【００７９】
ステップＳ５０４では、コマンド列群の環境設定コマンドについて、直後の実行コマンドに関連付けられるようにしてグラフにノードを追加する。つまり、コマンド列群の環境設定コマンドについて当該ノードを環境設定ノードとして、コマンド列で直後となる実行コマンドに対応する実行ノードに接続する。
【００８０】
ステップＳ５０５では、ステップＳ５０３で作成したグラフにＳ５０４で環境設定コマンドを追加したグラフに等価なグラフが記憶部１７に存在するか、つまり、等価なグラフが記憶されているか判定する。存在する場合には、ステップＳ５０６に移動し、当該グラフをモデルとして新たに記憶する。これにより、運用実績のあるモデル数をモデルとして増やすことができる。
【００８１】
次に、ステップＳ５０７では、運用ログ情報に基づき、記憶部１７にモデルとして記憶されたグラフにメタ情報を追記する。このように、実行ノードに対して、直前に実行される環境設定ノードと、実行結果のログ情報からメタ情報とを関連付けて、コマンド列をグラフ化してモデルとして記憶する。
【００８２】
ステップＳ５０８では、当該グラフ化されたコマンド列群に先行するコマンド列群が存在するか判定し、存在する場合ステップＳ５０９に、存在しない場合ステップＳ５１０に移動する。ステップＳ５０９では、先行するコマンド列群に相当するグラフを当該グラフの前提操作グラフとして記憶する。
【００８３】
ステップＳ５１０では、未処理コマンド列群が存在するか判定し、存在する場合には、ステップＳ５０２に戻り、同様の処理を実行する。存在しない場合には、処理を終了する。
【００８４】
上記した処理により、自動化された運用のログを正常系操作の学習データに用いることで、モデル学習(教示データ)の数を増やすことができ、システム異常判定の精度を向上させることができる。
【００８５】
＜操作検証＞
図６は、入力部１９、標準化部１４、解析部１６、検査部１８、フィードバック生成部２０で実行されるシステム運用操作列の検証フローを示した図である。
【００８６】
ステップＳ６０２で、入力部１９は、操作者２１のコマンド操作を受け付ける。
【００８７】
ステップＳ６０３、ステップＳ６０６で、入力部１９は入力された操作コマンドが、環境設定操作、参照操作であるかを判定する。環境操作であった場合、コマンド操作をバッファリングし(ステップＳ６０４)、バッファリングされたコマンドを実行計算機で実行する(ステップＳ６０５)。ステップＳ６０６で参照操作と判定された場合、ステップＳ６０５に移動し、参照コマンドを実行計算機で実行する。
【００８８】
ステップＳ６０３、Ｓ６０６の判定結果が、入力されたコマンドが環境設定操作や参照操作でない場合、実行操作であると判定し（ステップＳ６０７）、運用操作列（コマンド列）をバッファリングしているコマンド操作バッファから読込む（ステップＳ６０８）。
【００８９】
次に、運用操作列の標準化変換を実行する(ステップＳ６０９)。この処理は、図４に記載した標準化変換の処理に対応するが、図４が過去の運用ログを標準化変換の対象としているのに対し、この処理では、操作者から入力されるシステム運用操作を行うコマンド操作が標準化変換の対象となっている。
【００９０】
ステップＳ６１０では、検査部１８が標準化された運用操作のコマンド列の検査を行う。この処理は、図１０を用いて詳細に説明する。
【００９１】
ステップＳ６１０の検査の結果、検査に成功した場合は、ステップＳ６０５に移動し、運用操作のコマンド列を実行する。検査に失敗した場合、フィードバック生成部２０はフィードバックの生成と提示を行う。この処理は、図１１を用いて、その詳細を後述する。
【００９２】
ステップＳ６１３では、操作者２１によりコマンド操作が継続しているか否かを判定し、継続している場合には、ステップＳ６０２に戻り、同様の処理を実行する。継続していない場合には、処理を終了する。
【００９３】
図７は、コマンド種別定義を示した図である。このコマンド種別定義は、図１のコマンド種別定義１５に格納されており、図４のステップＳ４１０の処理に用いられる。ＩＤはコマンドを一意に特定する識別子であり、コマンドはコマンド内容、種別はコマンドの種別が、環境設定、参照、実行の何れかを示す。実行基盤は例えば、ＬＩＮＵＸ（登録商標（Linux Foundationの商標））やＷｉｎｄｏｗｓ（マイクロソフト社の商標）等を示す。影響環境は、コマンドを実行した際に影響を受ける環境を示す。
【００９４】
＜グラフ化＞
図８は、運用操作列のグラフの一例を示した図である。前述した収集部１１によって取集される自動化スクリプト１２と運用ログ１３と、コマンド種別定義１５を参照して標準化部１４により標準化変換し、標準化されたコマンド列を解析部１６で解析することにより生成され、モデルとして記憶部１７に記憶される。実行ノードは上から下に実行順に接続されている。環境設定ノードは、直後に実行される実行ノードと関連付けられ、実行ノードを実行した結果のメタ情報も実行ノードに接続されて関連付けられている。
【００９５】
コマンド列をノードに纏めてグラフとしてモデルにすることで、操作者２１から運用操作列が入力された際に、モデルとの一致或いは不一致の判定処理を高速に行うことができる。また、モデルのグラフに含まれるノード（コマンド列）と運用操作列とが、どの部分で不一致が発生したかを把握することにより、操作者に対するフィードバックの内容を適切な内容にすることができる。
【００９６】
図９は、運用履歴のコマンド列群をまとめたグラフを示した図である。図８が単一のコマンド列を示したものであるのに対し、図９は、複数のコマンド列をコマンド列群としてグラフ化した一例を示したものである。尚、図９においては、メタ情報は存在するが図を簡素化するため図示していない。
【００９７】
＜検査処理＞
図１０は、検査部１８で実行される検査処理を示したフロー図である。この処理は、図４のステップＳ４１０のシステム運用操作列の検査に対応する。
【００９８】
ステップＳ１００２で操作者２１によって入力された実行計算機に対する運用操作列を記憶部１７に記憶されているモデルから検索する。つまり、入力された運用操作列に含まれる実行コマンドについて、対応する実行ノードが記憶部１７に記憶されているモデルから検索する。この比較は、運用操作列を標準化変換して記憶部１７に記憶されたモデルのグラフと行う。
【００９９】
ステップＳ１００３において、検索できなかった場合には、ステップ１０１２に移動し、運用操作検査失敗とする。検索できた場合は、検索できたモデルを検索モデルとして、ステップＳ１００４に移動し、運用操作列の実行ノードを検索モデルのグラフに含まれる実行ノードに対応させ、グラフを逆順に探索し、モデルの実行ノードを辿ることで先頭ノードまで辿り着くグラフがあるかを検索する。例えば、図９の運用操作列の実行ノードがモデルの実行ノード９４から、実行ノード９３、実行ノード９２を辿り、先頭ノード９１にたどり着けるか否かを検索する。
【０１００】
ステップＳ１００５では、ステップＳ１００４の検索が成功したかを判定し、検索が失敗した場合には、ステップＳ１０１２に移動し、運用操作検索失敗とする。検索が成功した場合には、ステップＳ１００６に移動し、運用操作列としてバッファに格納されている環境設定ノードと検索グラフの実行ノードに関連する環境設定ノードとを比較する(ステップＳ１００６)。つまり、バッファに格納されている環境設定コマンド群をノード形式とし、検索モデルの実行ノードに関連付けられている環境設定ノードと比較する。
【０１０１】
ステップＳ１００７ではステップＳ１００６の比較結果、環境設定ノードが同一である場合、環境設定ノード群を満たすと判断し、ステップＳ１００８に移動する。同一でない場合には、ステップ１０１２に移動し、運用操作検査失敗とする。
【０１０２】
ステップＳ１００８では、運用操作列の実行ノードのメタ情報と検索モデルのメタ情報とを比較する。つまり、入力された運用列に基づく実行ノードの各種メタ情報と、モデル上の実行ノードのメタ情報を比較し、条件を満たすか検査する。
【０１０３】
ステップＳ１００９では、ステップＳ１００８の比較結果、同一のメタ情報であれば、検査成功と判定し、ステップＳ１０１０で運用操作検査成功とする。ステップＳ１００９で比較結果、同一のメタ情報でない場合（検査部によって検索されたモデルのメタ情報と、標準化された操作コマンドの実行時のメタ情報とが異なる場合）、ステップ１０１２に移動し、運用操作検査失敗とする。このように運用操作列を標準化変換し、記憶部１７に記憶されたモデルのグラフと比較することで、グラフのどの部分で不一致が生じたかを把握することができる。
【０１０４】
図１１は、フィードバック生成部２０の処理を示したフロー図である。この処理は、図４のステップＳ４１２のフィードバックの生成と提示に対応する。
【０１０５】
このフローは、運用操作検査の失敗理由を判断するもので、失敗の原因に応じて、通知内容を変更することで、操作者に操作コマンドの内容の再考を促すことができる。ステップＳ１１０３では、図１０のステップＳ１００２、Ｓ１００３の操作者２１によって入力された実行計算機に対する運用操作列の実行コマンドを記憶部１７に記憶されているモデルから検索実行コマンドから検索する処理に対応し、検索できない場合には、ステップＳ１１０４に移動し、当該実行操作コマンドの実績がないことを通知するフィードバックを生成する。
【０１０６】
ステップＳ１１０３で実行コマンドが検索できた場合、ステップＳ１１０６(図１０のステップＳ１００４、Ｓ１００５に対応)に移動し、先頭ノードに辿り着けるか判定する。辿り着けない場合、ステップＳ１１０７に移動し、前提となる実行コマンドが実行されていないことを通知する。辿り着けない場合に、辿り着いた実行ノード、即ち、探索が失敗した実行ノードに先行する実行ノード（探索が失敗した実行ノードより先頭ノード側）を失敗原因の候補として通知する(ステップＳ１１０８)。
【０１０７】
ここで、ステップS１１０７とステップS１１０８の通知は、一度に操作者に通知してもよいし、異なる通知として別個に通知してもよい。
【０１０８】
ステップＳ１１０６で先頭ノードに辿り着けると判定した場合、ステップＳ１１１０で環境設定を満たすか判定する。つまり、モデルの環境設定ノードと運用操作列の環境設定ノードとが同一であるかを判定する(図１０のステップＳ１００６、Ｓ１００７に対応)。満たさない場合、即ち、異なる場合、ステップＳ１１１１に移動し、環境設定の不備を通知する。そして、満足しない要因となった環境設定ノードに関連する環境設定コマンドを通知する(ステップＳ１１１２)。ここで、ステップS１１１１とステップS１１１２の通知は、一度に操作者に通知してもよいし、異なる通知として別個に通知してもよい。
【０１０９】
ステップＳ１１１０で環境設定を満たすと判定した場合、ステップＳ１１１４(図１０のステップＳ１００８、Ｓ１００９に対応)に移動し、メタ情報の不整合があれば、これを通知する。
【０１１０】
このように、モデル化されたグラフに基づいて、運用操作列の検査を行い、失敗原因に応じたフィードバックを操作者２１に通知することで、操作者にシステム異常の原因となるリスクを効率よく検討させることができる。
【０１１１】
図１２は、システム異常検出装置のハードウェア構成の一例を示した図である。システム異常検出装置１０は、一般のＰＣ（Ｐｅｒｓｏｎａｌ Ｃｏｍｐｕｔｅｒ）の構成を有する。ネットワーク１２０を介して、操作コマンドを実行する実行計算機１２１、操作者がシステム運用操作列２２を入力するための端末１２２と接続されている。
【０１１２】
システム異常検出装置１０は、ネットワーク１２０を介して実行計算機１２１にコマンド列の出力、端末１２２からシステム運用操作列２２の入力などの情報の入出力を行うインタフェース(I/F)１２７、中央処理部（ＣＰＵ）１２３、収取部１１、標準化部１４、解析部１６、検査部１８、フィードバック生成部２０等の各機能を実現するためのプログラム１２５を格納する記憶装置１２４を有する。インタフェース１２７は、システム異常検出装置１０の各部にバスを介して接続される。システム端末(図示せず)から自動化スクリプト情報１２、運用ログ１３の入力も受け付ける。
【０１１３】
記憶装置１２４には、さらに、モデル化されたグラフ、前提環境変数、前提コマンド列等を格納する記憶領域１７の他、コマンド種別定義を格納する記憶領域１５を有する。記憶装置１２４に格納された各種機能を実現するプログラムは、メモリ１２６を一時記憶場所としてロードされ、ＣＰＵ１２３が実行することにより実現される。
【０１１４】
ＣＰＵ１２３は各機能を実現するためのプログラム１２５を実行することで、図１に示した収取部１１、標準化部１４、解析部１６、検査部１８、フィードバック生成部２０等の機能を実現する。そのため、収取部１１、標準化部１４、解析部１６、検査部１８、フィードバック生成部２０の動作を、ＣＰＵ１２３を主語とした動作として説明することができる。
【０１１５】
記憶装置１２４は、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）、フェーズメモリ等の記憶媒体によって構成される。記憶装置１２４には、収取部１１等の各機能を実現するためのプログラム１２５の他、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ）が格納されている。
【０１１６】
ＣＰＵ１２７は、インタフェース１２７から自動化スクリプト情報と運用ログが入力されると、運用ログを自動化スクリプト、コマンド種別定義に基づいて標準化変換する。また、ＣＰＵ１２３は、標準化した運用ログに基づきグラフ化されたモデルを生成する。記憶装置１２４は、ＣＰＵ１２３によって生成されたモデルを記憶する。尚、ＣＰＵ１２３の処理の一部あるいは全部をＡＳＩＣやＦＰＧＡの専用ハードウェアで実現することもできる。
【０１１７】
また、実行計算機１２１と作業端末１２２も、一般のＰＣ（Ｐｅｒｓｏｎａｌ Ｃｏｍｐｕｔｅｒ）の構成で実現できる。各部の詳細は、システム異常検出装置１０の構成と同様である。実行計算機１２１は、システム異常検出装置１０に比べ、一般的により高性能なハードウェアが用いられ、ネットワークで接続された複数の実行計算機を含む大規模なシステムとなる。
【０１１８】
尚、本実施例中の説明において表形式で説明した内容、例えば、図７のようにコマンド種別の管理を表によって説明したが、必ずしも、表形式である必要はなく、対応関係が管理できるデータ構造であれば実現できる。
【０１１９】
コマンド列をグラフとしてモデル化することで、操作者２１から運用操作列が入力された際に、モデルとの一致或いは不一致の判定処理を高速に行うことができる。また、モデルのコマンド列のどの部分で不一致が発生したかにより、操作者に対するフィードバックの内容を変更することができる。
【０１２０】
これにより、操作者２１にとってシステムの運用困難な場面において、試行錯誤を繰り返しながら、問題解決に向けたシステムの運用操作列を入力する際に、操作者に対して過去の事例に基づき適切な運用操作列の入力をサポートすることができる。
【０１２１】
また、コマンドが発行された事前状態を満たしていない場合に、満たしていない条件や原因を、操作者２１に通知することができる。通知を受けた操作者２１は、運用操作列のコマンドを発行した場合のリスクを検討でき、不用意なコマンド操作によりシステム障害を未然に防ぐことができる。
【符号の説明】
【０１２２】
１０：システム異常操作検出装置、１１：収集部、１２：自動化スクリプト情報、１３：運用ログ、１４：標準化部、１５：コマンド種別定義、１６：解析部、１７：記憶部、１８：検査部、２０：フィードバック生成部、２２：システム運用操作列、２３：異常操作判定、１２０：ネットワーク、１２１：実行計算機、１２２：端末、１２３：ＣＰＵ、１２４：記憶装置、１２６：メモリ。
【図１】
2020009207.tif 000003
【図２】
2020009207.tif 000004
【図３】
2020009207.tif 000005
【図４】
2020009207.tif 000006
【図５】
2020009207.tif 000007
【図６】
2020009207.tif 000008
【図７】
2020009207.tif 000009
【図８】
2020009207.tif 000010
【図９】
2020009207.tif 000011
【図１０】
2020009207.tif 000012
【図１１】
2020009207.tif 000013
【図１２】
2020009207.tif 000014