(57)【特許請求の範囲】
【請求項１】
利用者の操作対象が提供するサービスの種別を特定し、特定されたサービスの種別に基づいて、当該操作対象が発揮する機能を特定する特定部と、
特定された機能に応じて、操作対象に対して行われる利用者の操作の組合わせを決定する決定部と、
決定された操作の組合わせを自然言語で表した操作情報を生成する生成部と
を有することを特徴とする生成装置。
【請求項２】
前記特定部は、前記操作対象となるアプリケーションが所定の端末装置に対して表示させる画面に基づいて、当該操作対象が提供するサービスの種別を特定する
ことを特徴とする請求項１に記載の生成装置。  
【請求項３】
前記特定部は、前記画面を介して提供される機能を特定する
ことを特徴とする請求項２に記載の生成装置。  
【請求項４】
前記特定部は、前記アプリケーションが表示される画面上のオブジェクトと、前記アプリケーションが各画面を表示させる順序とに基づいて、当該画面を介して提供される機能を特定する
ことを特徴とする請求項３に記載の生成装置。
【請求項５】
前記特定部は、前記特定されたサービスの種別とあらかじめ紐づけられた機能のうち、前記操作対象が発揮する機能を特定する
ことを特徴とする請求項１〜４のうちいずれか１つに記載の生成装置。  
【請求項６】
前記特定部は、前記操作対象が所定の端末装置に対して表示させる画面に含まれるオブジェクトに基づいて、前記操作対象が提供するサービスの種別を特定する
ことを特徴とする請求項１〜５のうちいずれか１つに記載の生成装置。  
【請求項７】
前記特定部は、前記操作対象が所定の端末装置に対して表示させる画面に含まれるオブジェクトの量に基づいて、前記操作対象が提供するサービスの種別を特定する
ことを特徴とする請求項６に記載の生成装置。  
【請求項８】
前記特定部は、前記オブジェクトとして、前記画面に含まれるテキストに基づいて、前記操作対象が提供するサービスの種別を特定する
ことを特徴とする請求項６または７に記載の生成装置。  
【請求項９】
前記特定部は、前記操作対象が有する特徴と、当該操作対象が発揮する機能との関係性を学習したモデルを用いて、前記操作対象が発揮する機能を特定する
ことを特徴とする請求項１〜８のうちいずれか１つに記載の生成装置。  
【請求項１０】
前記決定部は、前記機能と、前記操作対象に当該機能を発揮させる際に行われる利用者の操作とを対応付けたデータベースを参照し、前記特定部により特定された機能と対応する操作に基づいて、前記組合わせを決定する
ことを特徴とする請求項１〜９のうちいずれか１つに記載の生成装置。  
【請求項１１】
前記決定部は、前記特定部により特定された機能と対応する操作と、当該操作を行う順序とをランダムに組合わせることで、複数の組合わせ候補を決定し、決定した組合わせ候補に基づいて、前記操作対象に対して行われる利用者の操作の組合わせを決定する
ことを特徴とする請求項１０に記載の生成装置。  
【請求項１２】
前記決定部は、前記組合わせ候補ごとに、前記特定部により特定された機能を発揮するか否かを判定し、当該機能を発揮すると判定された組合わせ候補に基づいて、前記組合わせを決定する
ことを特徴とする請求項１１に記載の生成装置。  
【請求項１３】
前記決定部は、前記特定部により特定された機能を発揮すると判定された組合わせ候補に含まれる操作に基づいて、新たな組合わせ候補を生成し、生成した組合わせ候補に基づいて、前記組合わせを決定する
ことを特徴とする請求項１２に記載の生成装置。  
【請求項１４】
前記決定部は、前記特定部により特定された機能を発揮すると判定された組合わせ候補に含まれる操作と、ランダムに選択された操作とに基づいて、前記新たな組合わせ候補を生成する
ことを特徴とする請求項１３に記載の生成装置。  
【請求項１５】
前記決定部は、前記組合わせ候補ごとに、前記特定部により特定された機能を発揮するか否かを判定する処理と、前記機能を発揮すると判定された組合わせ候補に含まれる操作に基づいて、新たな組合わせ候補を生成する処理と、当該新たな組合わせ候補が前記特定部により特定された機能を発揮するか否かを判定する処理とを、所定の条件が満たされるまで繰り返し実行することで、前記組合わせを決定する
ことを特徴とする請求項１２〜１４のうちいずれか１つに記載の生成装置。  
【請求項１６】
前記決定部は、前記組合わせ候補ごとに、前記特定部により特定された機能が発揮されるまでに実行された操作の数を計数し、前記組合わせ候補のうち、計数した行動の数が所定の条件を満たす組合わせ候補を、前記操作対象に対して行われる利用者の操作の組合わせとする
ことを特徴とする請求項１１〜１４のうちいずれか１つに記載の生成装置。  
【請求項１７】
前記決定部は、前記操作の組合わせを前記特定部により特定された機能と対応付けて所定のデータベースに登録する
ことを特徴とする請求項１２〜１６のうちいずれか１つに記載の生成装置。  
【請求項１８】
前記決定部は、前記特定部により特定された機能と対応付けられた操作の組合わせを前記組合わせ候補として前記所定のデータベースから読み出す
ことを特徴とする請求項１７に記載の生成装置。  
【請求項１９】
生成装置が実行する生成方法であって、
試験の対象である操作対象が提供するサービスの種別を特定し、特定されたサービスの種別に基づいて、当該操作対象が発揮する機能を特定する特定工程と、
特定された機能に応じて、実行する試験の内容を決定する決定工程と、
決定された内容を自然言語で表した試験情報を生成する生成工程と
を含むことを特徴とする生成方法。  
【請求項２０】
試験の対象である操作対象が提供するサービスの種別を特定し、特定されたサービスの種別に基づいて、当該操作対象が発揮する機能を特定する特定手順と、
特定された機能に応じて、実行する試験の内容を決定する決定手順と、
決定された内容を自然言語で表した試験情報を生成する生成手順と
をコンピュータに実行させるための生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成装置、生成方法および生成プログラムに関する。
【背景技術】
【０００２】
従来、操作対象の試験に係る手間を削減するための手法が提案されている。このような手法の一例として、結果内容に応じてテストケースを分類し、分類結果に応じてソフトウェアに対する試験の内容を生成する技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第９０３８０２６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、テストケースの内容に基づいて、試験内容を生成しているに過ぎない。このため、上述した従来技術では、操作対象ごとにテストケースを準備する手間がかかる。
【０００５】
また、上述した従来技術では、テスト対象となるアプリケーションごとに、どのような内容のテストを行えばよいかをあらかじめ利用者が準備する必要がある。しかしながら、このように、テストの内容を人手で準備した場合は、テストすべき内容の欠落等といったミスが生じる恐れがある。
【０００６】
本願は、上記に鑑みてなされたものであって、任意の対象に対する試験を容易にすることを目的とする。
【課題を解決するための手段】
【０００７】
本願に係る生成装置は、利用者の操作対象が発揮する機能を特定する特定部と、特定された機能に応じて、操作対象に対して行われる利用者の操作の組合わせを決定する決定部と、決定された操作の組合わせを自然言語で表した操作情報を生成する生成部とを有することを特徴とする。
【発明の効果】
【０００８】
実施形態の一態様によれば、任意の対象に対する試験を容易にすることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態に係る情報提供装置の一例を示す図である。
【図２】図２は、実施形態に係る情報提供装置が実行する生成処理の実装例を示す図である。
【図３】図３は、実施形態に係る情報提供装置が実行する適用処理の実装例を示す図である。
【図４】図４は、実施形態に係る情報提供装置の構成例を示す図である。
【図５】図５は、実施形態に係る操作データベースに登録される情報の一例を示す図である。
【図６】図６は、実施形態に係る組合わせデータベースに登録される情報の一例を示す図である。
【図７】図７は、実施形態に係る生成処理の流れの一例を示すフローチャートである。
【図８】図８は、ハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係る生成装置、生成方法および生成プログラムを実施するための形態（以下、「実施形態」と記載する。）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る生成装置、生成方法および生成プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略する。
【００１１】
[実施形態]
〔１−１．情報提供装置の一例について〕
まず、図１を用いて、実施形態に係る生成装置の一例である情報提供装置１０の一例について説明する。図１は、実施形態に係る情報提供装置の一例を示す図である。なお、図１では、情報提供装置１０が実行する機能の一例として、各種の端末装置にインストールされたアプリケーションのデバッグを行うためにアプリケーションの試験を行うための操作情報を生成する処理の一例について記載した。
【００１２】
図１に示す情報提供装置１０は、生成処理を実行する情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。例えば、情報提供装置１０は、端末装置２０１〜２０３がインストールしたＯＳ（Operating  System）や、ＯＳ上で動作する各種アプリケーション等といった各種ソフトウェアの動作を自動的に試験するための操作情報を生成する。なお、操作情報については、後述する。
【００１３】
また、情報提供装置１０は、上述した生成処理に加え、生成された操作情報に従って、端末装置２０１〜２０３にインストールされたアプリケーションのテストを行う機能を有する。なお、このような機能は、情報提供装置１０自体が実行する必要はなく、例えば、サーバ装置やクラウドシステム等により実現される他の情報処理装置（例えば、適用装置）により実現されてもよい。例えば、情報提供装置１０は、端末装置２０１〜２０３にインストールされた各種ソフトウェアの動作を自動的に試験する。
【００１４】
端末装置２０１〜２０３（以下、「端末装置２００」と総称する場合がある。）は、利用者Ｕ１〜Ｕ３が利用する端末装置であり、例えば、スマートフォン等の情報処理端末である。例えば、端末装置２００は、インターネット等のネットワークＮを介して、情報提供装置１０と通信可能である。なお、端末装置２００は、ＰＣ（Personal  Computer）等の情報処理装置であってもよい。また、図１に示す例では、３つの端末装置２０１〜２０３を図示したが、実施形態は、これに限定されるものではない。後述する説明で明らかとなるように、情報提供装置１０は、任意の数の端末装置２００の試験を同時並列的に行ってよい。なお、図１に示す例では、端末装置２０１は、スマートフォンであり、端末装置２０２は、タブレットであり、端末装置２０３は、ＰＣである。情報提供装置１０は、このような様々な種別の端末装置２００において実行されるソフトウェアの動作を同時に試験することも可能である。
【００１５】
操作者端末３００は、端末装置２００の試験を所望する利用者、若しくは、試験を所望する利用者からの依頼を受けた操作者が利用する端末装置であり、サーバ装置やクラウドシステム、ＰＣ等の情報処理装置により実現される。
【００１６】
〔１−２．適用処理の一例について〕
ここで、情報提供装置１０が実行する生成処理を説明する前に、情報提供装置１０が実行する適用処理について説明する。例えば、各端末装置２００の動作確認や、ソフトウェアのデバッグを行う場合、各端末装置２００に対して様々な処理を様々な順番で繰り返し入力し、誤った動作が行われないかを操作の度に判定することとなる。しかしながら、このような試験を人手で行った場合、手間がかかる。また、人手での試験では、誤った操作が行われてしまい、適切な試験が実現できない恐れがある。
【００１７】
そこで、情報提供装置１０は、以下の適用処理を実行する。まず、情報提供装置１０は、所定の対象に対して行われる利用者の行動、換言すると、アプリケーション等の所定の対象が提供する機能を自然言語で示す操作情報を取得する。例えば、アプリケーションが利用者に対してログインの機能を提供した場合、利用者は、その機能を発揮させることでログインといった行動を行うこととなる。また、アプリケーションが各種の決済機能を発揮するアプリケーションである場合、利用者は、アプリケーションが提供する決済機能を発揮させることで、決済といった行動を行うこととなる。そして、情報提供装置１０は、取得した操作情報から、操作情報が示す行動が行われた際に対象に対して行われる操作を対象に対して適用するための適用情報を生成する。
【００１８】
例えば、情報提供装置１０は、あるソフトウェアのログインが適切に行えるか否かの試験を行う場合、「ログインをする」といった、ログイン時における利用者の動作を自然言語で示す指示を取得する。このような場合、情報提供装置１０は、操作対象となるソフトウェアにおいてログインを行うための操作を特定し、特定した操作をソフトウェア上で実現するための適用情報を生成する。
【００１９】
例えば、情報提供装置１０は、「ログイン」という行動を行うために、「ログインを行うためのログインコンテンツを表示する」操作を行った後で、「ユーザＩＤを入力する」操作と「パスワードを入力する」操作を行い、さらに「ログインを行うためのログインボタンをタップする」操作が必要となる場合は、これら各操作を特定する。なお、このような行動を行うために必要な各種の操作の特定は、操作対象となるアプリケーションごとに生成された辞書データであって、想定される行動と、その行動が行われる際に行われる操作とを対応付けた辞書データを用いて、ルールベースにより特定される。
【００２０】
そして、情報提供装置１０は、特定した各操作を端末装置２００に適用するための適用情報を生成する。例えば、情報提供装置１０は、端末装置２００に対し、各種のタップ操作やテキストの入力操作を端末装置２００上で再現するための各種公知技術（例えば、Ａｐｐｉｕｍといった各種のＵＩ（User  Interface）のテスト自動化フレームワークの技術）を用いて、特定した各操作を端末装置２００に対して行うための適用情報を生成する。
【００２１】
このような処理を行った場合、情報提供装置１０は、テスト自動化フレームワークを利用するための知識を操作者が有しない場合であっても、試験時における利用者の行動を自然言語で記述するだけで、端末装置２００の操作を実現することができる。このため、情報提供装置１０は、端末装置２００の試験を容易にすることができる。
【００２２】
〔１−３．端末装置が複数存在する場合について〕
ここで、操作対象となる端末装置２００が複数存在する場合、各端末装置２００ごとに異なる適用情報が必要となる場合がある。例えば、操作対象となる複数の端末装置２００が、同一種別のスマートフォンである場合だけでなく、スマートフォン、タブレット、およびＰＣといったそれぞれ異なる種別の複数の端末装置２００である場合や、それぞれメーカ、ＯＳ、バージョン等が異なる端末装置２００である場合も考えられる。また、一部複数の端末装置２００の種別が同一であり、他の端末装置２００が異なる種別である場合も考えられる。しかしながら、各端末装置２００で実行されるＯＳやアプリケーションが異なる場合、ＯＳごと、アプリケーションごと、若しくはＯＳやアプリケーションの組合わせごとに、異なる適用情報を生成する手間がかかる。
【００２３】
しかしながら、情報提供装置１０は、各端末装置２００で実行させる操作の内容ではなく、各端末装置２００に対して行われる利用者の行動、すなわち、アプリケーションが利用者に対して提供する機能のうち利用者が利用する機能（例えば、ログイン等）を自然言語で示す指示から、適用情報を生成する。より具体的には、情報提供装置１０は、複数の対象に対して共通して行われる利用者の行動を自然言語で示す操作情報を取得し、取得した操作情報から、対象ごとに、操作情報が示す行動が行われた際に対象に対して行われる操作を対象に再現させるための再現情報を生成する。
【００２４】
換言すると、情報提供装置１０は、それぞれバージョンなどが異なる複数のアプリケーションを試験対象とする場合に、各アプリケーションが共通して提供する機能を自然言語で示す指示、すなわち、各アプリケーションの機能を上位概念化した指示に基づいて、各アプリケーションごとにその機能を発揮させるための操作を特定し、特定した操作を再現させるための再現情報を生成する。
【００２５】
このため、情報提供装置１０は、操作対象となる端末装置２００がそれぞれ異なる種別である場合や、端末装置２００上のアプリケーションやＯＳがそれぞれ異なる場合、端末装置の種別やアプリケーションの組合せが異なる場合であっても、各端末装置２００に対して共通して行われる利用者の行動を示す単一の操作情報から、各端末装置ごとに、操作情報が示す行動が行われる際に端末装置２００に対して行われる操作を行わせるための適用情報を生成することができる。換言すると、端末装置２００は、単一の行動に対応する各端末装置２００ごとに異なる操作を実現する単一のインタフェースとして動作することができる。
【００２６】
〔１−４．生成処理について〕
上述したように、情報提供装置１０は、試験対象の機能を上位概念化した指示、すなわち、アプリケーションに対して行われる利用者の行動や利用者が利用する機能を自然言語で示す指示に基づいて、アプリケーションの試験を行うことができる。このため、操作者は、試験対象としたい利用者の行動や機能を自然言語で表した情報のみで、試験を行うことができる。
【００２７】
しかしながら、係る処理のみでは適切な試験を行うことができるとは言えない。例えば、アプリケーションが提供するログインにおける試験では、ログインが適切に行えたか否かだけではなく、ログインが行われた際にどのような操作でログインができなかったかを知る必要がある。しかしながら、このような詳細な操作内容を人手で設定するのは手間がかかる。また、人手で各種操作内容を設定した場合、人的ミスにより、試行すべき操作内容が設定されず、バグが見逃される恐れがある。
【００２８】
そこで、情報提供装置１０は、以下の生成処理を実行する。まず、情報提供装置１０は、利用者の操作対象が発揮する機能を特定する。続いて、情報提供装置１０は、特定された機能に応じて、操作対象に対して行われる利用者の操作の組合わせを決定する。そして、情報提供装置１０は、決定された操作の組合わせを自然言語で表した操作情報を生成する。
【００２９】
例えば、情報提供装置１０は、利用者の操作対象となるアプリケーションの解析を行い、アプリケーションの各種機能を特定する。例えば、情報提供装置１０は、アプリケーションが提供する機能として、ログイン、ＱＲコード（登録商標）の読み取りや送信といった決済に関する各種の機能、音楽コンテンツや地図コンテンツ等といった各種コンテンツを適用する機能など、アプリケーションが発揮する機能であって、利用者が利用可能な機能を特定する。なお、このような機能の特定については、アプリケーションが有する特徴と、そのアプリケーションが提供する機能との関係性を学習したモデルを用いることで、実現可能である。このようなモデルの詳細については、後述する。
【００３０】
続いて、情報提供装置１０は、特定した機能ごとに、その機能を発揮する際にアプリケーションに対して行われる操作の組合わせを決定する。例えば、情報提供装置１０は、特定した機能が「ログイン」である場合、アプリケーションに対して行われる操作として、「ユーザＩＤの入力」、「パスワードの入力」、「ログインボタンの選択」といった操作を特定する。すなわち、情報提供装置１０は、特定した機能を発揮するための画面内において利用者から受け付け可能な操作（換言すると、利用者が実行可能な操作）を特定する。なお、このような特定処理は、例えば、アプリケーションの機能と、その機能を発揮するための操作とをあらかじめ対応付けたテーブル等を用いることで、実現可能である。
【００３１】
そして、情報提供装置１０は、これら特定した操作を適宜組合わせた操作の組合わせを決定する。例えば、情報提供装置１０は、「ユーザＩＤの入力」、「ユーザＩＤの入力」、「ログインボタンの選択」といった組合わせや、「ユーザＩＤの入力」、「パスワードの入力」、「ユーザＩＤの入力」といった組合わせ等、特定した操作をランダムな数だけランダムな順序で並べた組合わせを所定数生成する。また、情報提供装置１０は、後述する処理により、生成した組合わせの中から、実際にアプリケーションに対して適用する操作の組合わせを決定する。
【００３２】
そして、情報提供装置１０は、決定した操作の組合わせを自然言語で表した操作情報、すなわち、操作のシナリオ（換言すると、試験のシナリオ）を操作情報として生成する。例えば、情報提供装置１０は、「ログイン」の機能について、「ユーザＩＤの入力」、「ユーザＩＤの入力」、「ログインボタンの選択」といった操作の組合わせを決定した場合、「ログイン画面において、ユーザＩＤを入力し、続いて、ユーザＩＤを入力し、その後、ログインボタンをタップする」といった操作情報を生成する。
【００３３】
このような処理の結果、情報提供装置１０は、アプリケーションの動作を確認するために実行すべき各種の操作の組合わせを、自動的に決定し、決定した組合わせを自然言語で示す操作情報を提供することができる。換言すると、情報提供装置１０は、動作確認の対象となる操作の組合わせ、すなわち、テストケースを自動的に決定することができる。この結果、情報提供装置１０は、アプリケーションの動作確認に要する手間を削減することができる。
【００３４】
従来、テストケースの決定においては、動作確認を行うアプリケーション等といった操作対象の動作を熟知する操作者や経験を有する操作者により、テストケースの内容を示すフローやダイアグラムが作成され、このようなフローやダイアグラムに従って、適用情報の作成が行われていた。しかしながら、このような手法では、操作者が操作対象を熟知していない場合や、経験が浅い場合に、適切な動作確認を行うことができず、アプリケーションのバージョン等といった仕様ごとに、フローやダイアグラムを作成する手間がかかる。
【００３５】
しかしながら、情報提供装置１０は、動作確認を行う操作対象を分析することで、操作対象が発揮する機能を特定し、特定した機能に基づいて、自動的にテストケースを決定する。そして、情報提供装置１０は、決定したテストケースを自然言語で示す操作情報、すなわち、バージョン等といった仕様によらず、操作対象に対する操作内容を示すことができる操作情報を生成する。このため、情報提供装置１０は、テストケースの作成の手間を削減することができる。
【００３６】
〔１−５．生成処理の一例について〕
以下、図１を用いて、情報提供装置１０が実行する生成処理の流れ、および情報提供装置１０が実行する適用処理の流れの一例について説明する。例えば、操作者は、各端末装置２００に対して、操作対象となるアプリケーションをインストールする（ステップＳ１）。ここで、各端末装置２００に対してインストールされるアプリケーションは、それぞれ異なるバージョンのアプリケーションであってもよい。また、各端末装置２００に対してインストールされるアプリケーションは、それぞれ個別のＯＳ上で動作するアプリケーションであってもよく、それぞれ異なるサービスを提供するためのアプリケーションであってもよい。また、各端末装置２００は、それぞれ異なる種別のハードウェアであってもよい。すなわち、試験対象となる端末装置２００とは、ハードウェアとソフトウェアとの組み合わせがそれぞれ異なるものであってもよい。
【００３７】
続いて、情報提供装置１０は、操作者端末３００から、試験対象となるアプリケーションを受け付ける（ステップＳ２）。すなわち、情報提供装置１０は、ＡＵＴ(Application  Under  Test)を受け付ける。例えば、情報提供装置１０は、各端末装置２００にインストールされたアプリケーションのデータを受け付ける。なお、情報提供装置１０は、各端末装置２００にインストールされたアプリケーションのうちいずれかのアプリケーションのみを受け付けてもよい。以下の説明で明らかとなるように、情報提供装置１０は、バージョンが異なる複数のアプリケーションであっても、同一のサービスを提供するアプリケーションであれば、任意のバージョンのアプリケーションから、各アプリケーションが提供する機能を試験するための適用情報を生成することができる。
【００３８】
続いて、情報提供装置１０は、アプリケーションが提供するサービスをドメインとして特定する（ステップＳ３）。上述したように、情報提供装置１０は、操作対象となるアプリケーションの機能に基づいて操作内容の組合わせを決定するが、このようなアプリケーションの機能は、アプリケーションが提供するサービスによって異なる。例えば、決済を行うアプリケーションは、ログインの機能が必須であると考えらえるが、フォトビュワー等のアプリケーションは、ログインの機能を提供しない場合が多いと考えられる。このように、操作対象が提供するサービスの種別に応じて、操作対象が発揮する機能は、変化すると考えられる。
【００３９】
そこで、情報提供装置１０は、操作対象となるアプリケーションが提供するサービスをドメインとして特定する。例えば、アプリケーションが画面上に表示するテキストの内容は、アプリケーションが提供するサービスのドメインを精度よく示す指標となり得る。例えば、「再生」といったテキストを表示するアプリケーションは、音楽等の各種コンテンツを再生するサービスを提供するアプリケーションであると推定される。また、「支払」といったテキストを表示するアプリケーションは、各種支払サービスを提供するアプリケーションであると推定される。そこで、情報提供装置１０は、コンテンツが画面上に表示するテキストに基づいて、操作対象が提供するサービスの種別を特定する。
【００４０】
なお、情報提供装置１０は、アプリケーションが画面上に表示するテキストの量に基づいて、アプリケーションが提供するサービスのドメインを推定してもよい。例えば、情報提供装置１０は、「再生」といったテキストよりも、「支払」といったテキストを多く表示するアプリケーションについては、決済サービスを提供するアプリケーションであると特定してもよい。
【００４１】
なお、情報提供装置１０は、アプリケーションが提供するテキストから、アプリケーションが提供するサービスのドメイン（以下、「アプリケーションのドメイン」と記載する場合がある。）をルールベースで特定してもよい。しかしながら、本実施形態において、情報提供装置１０は、アプリケーションが提供するテキストと、そのアプリケーションが提供するサービスのドメインとの間の関係性を学習したドメインモデルを用いて、アプリケーションが提供するサービスのドメインを特定する。
【００４２】
例えば、情報提供装置１０は、各種のアプリケーションが提供するテキストと、そのアプリケーションが提供するサービスのドメインとの組を学習データとして取得する。そして、情報提供装置１０は、各テキストを入力した際に、そのテキストを提供するアプリケーションのドメインを示す情報を出力するようにドメインモデルの学習を行う。なお、このようなモデルの学習処理は、例えば、ＤＮＮ（Deep  Neural  Network）等の各種ニューラルネットワーク等をバックプロパゲーション等による学習を行うことで、実現可能である。
【００４３】
また、情報提供装置１０は、自装置でドメインモデルの学習を行わずとも、任意の学習装置により学習が行われたドメインモデルを用いてもよい。そして、情報提供装置１０は、学習済みのドメインモデルに対し、操作対象となるアプリケーションが提供するテキストを入力することで、アプリケーションが提供するサービスのドメインを推定する。このような処理の結果、情報提供装置１０は、アプリケーションが提供するサービスのドメインを適切に推定することができる。
【００４４】
続いて、情報提供装置１０は、ドメインに応じて、アプリケーションの各画面上で提供される機能を特定する（ステップＳ４）。例えば、情報提供装置１０は、ログイン等、アプリケーションを介して提供されるサービスを構成する構成サービスを機能として特定する。なお、以下の説明では、このような構成サービスを、アプリケーションの「機能」と表現する場合がある。上述したように、情報提供装置１０は、操作対象となるアプリケーションの機能に基づいて操作内容の組合わせを決定するが、このようなアプリケーションの機能は、アプリケーションのドメイン、すなわち、アプリケーションが提供するサービスによって異なる。例えば、決済を行うアプリケーションは、ログインの機能が必須であると考えらえるが、フォトビュワー等のアプリケーションは、ログインの機能を提供しない場合が多いと考えられる。このように、操作対象が提供するサービスの種別に応じて、操作対象が発揮する機能は、変化すると考えられる。
【００４５】
そこで、情報提供装置１０は、アプリケーションのドメインとあらかじめ対応付けられる機能の中から、アプリケーションの各画面上で提供される機能を特定する。例えば、アプリケーションは、ログインや決済等の機能を発揮する場合には、画面上に画像やテキスト、テキストを入力するためのテキストボックスや各種のボタン等といったオブジェクトを配置して表示させることとなる。また、画面上に表示されるオブジェクトは、アプリケーションが提供するサービスの内容に応じて、適宜変化する。例えば、決済サービスを提供するアプリケーションは、決済額を入力するためのオブジェクトやＱＲコード（登録商標）を撮影するためのオブジェクト等を表示する場合がある。一方、音楽コンテンツを提供するアプリケーションは、再生ボタンや一時停止ボタン等のオブジェクトを表示する場合がある。このように、各種のアプリケーションは、発揮する機能に応じて異なるオブジェクトを画面上に表示することとなる。
【００４６】
このため、情報提供装置１０は、操作対象が所定の端末装置に対して表示させる画面に含まれるオブジェクトに基づいて、その画面においてアプリケーションが提供する機能を特定する。例えば、情報提供装置１０は、アプリケーションを解析し、各画面画面上に表示される各種のオブジェクトを特定する。そして、情報提供装置１０は、オブジェクトの種別や量に応じて、アプリケーションが各画面を介して提供する機能を特定する。
【００４７】
例えば、情報提供装置１０は、ドメインが「決済サービス」であるアプリケーションについて、ある画面上に、テキストボックスが２つ含まれている場合は、この画面上で提供される機能が「ログイン」であると判定する。また、情報提供装置１０は、ドメインが「ＳＮＳ（Social  Networking  Service）」であるアプリケーションについて、ある画面上に、テキストボックスが２つ含まれている場合は、この画面上で提供される機能が「投稿」であると判定する。
【００４８】
なお、情報提供装置１０は、画面上におけるオブジェクトの種類や内容のみならず、例えば、画面上でスクロールが可能か否かや、画面上で利用者が可能な各種の操作を特定し、特定結果に応じて、画面上で提供される機能を判定してもよい。すなわち、情報提供装置１０は、画面上に配置された各種のオブジェクトや画面上で実行可能な各種操作等といったアプリケーションが提供する画面の特徴、すなわち、アプリケーションの特徴に基づいて、アプリケーションが提供する機能を判定することとなる。
【００４９】
なお、情報提供装置１０は、画面上に配置されるオブジェクトの種別や数と、アプリケーションのドメインとの組合わせからその機能をルールベースで特定してもよい。しかしながら、本実施形態において、情報提供装置１０は、アプリケーションが提供する画面上のオブジェクトと、その画面上で提供される機能との間の関係性を学習したスクリーンモデルを用いて、アプリケーションが提供する機能を特定する。
【００５０】
例えば、情報提供装置１０は、あるドメインに属するアプリケーションの画面に含まれるオブジェクトの種別や数等を示す情報を入力した際に、その画面を介して提供される機能を示す情報を出力するようにスクリーンモデルの学習を行う。このような学習処理をドメインごとに実行することで、情報提供装置１０は、所定のドメインに属するアプリケーションの画面に含まれるオブジェクトから、機能を推定するモデルをドメインごとに生成することができる。なお、情報提供装置１０は、自装置でスクリーンモデルの学習を行わずとも、任意の学習装置により学習が行われたスクリーンモデルを用いてもよい。そして、情報提供装置１０は、学習済みのスクリーンモデルに対し、操作対象となるアプリケーションが提供る画面内のオブジェクトの情報を入力することで、アプリケーションが提供する機能を推定する。このような処理の結果、情報提供装置１０は、アプリケーションが提供する機能を適切に推定することができる。
【００５１】
上述した処理の結果、情報提供装置１０は、アプリケーションが表示する画面ごとに、その画面を介して提供される機能を特定することとなる。そこで、情報提供装置１０は、特定した機能を発揮させるための操作の組合わせを決定する（ステップＳ５）。例えば、情報提供装置１０は、特定した機能とあらかじめ対応付けられた操作を特定し、特定した操作をランダムな数だけ、ランダムな順番で組合わせた操作の組合わせの候補を生成する。そして、情報提供装置１０は、生成した組合わせの候補の中から、試験の対象として適切であると推定される組合わせの候補を特定する。なお、このような操作の組合わせを決定する処理の詳細については、後述する。
【００５２】
続いて、情報提供装置１０は、決定した操作の組合わせを自然言語で示した操作情報を生成する（ステップＳ６）。例えば、情報提供装置１０は、各操作と、その操作を示す自然言語とを対応付けた辞書データを参照し、決定した操作内容を自然言語で示した操作情報を生成する。例えば、情報提供装置１０は、操作の組合わせが「テキストボックスにユーザＩＤを入力」、「ボタンをクリック」である場合、「テキストボックスにユーザＩＤを入力した後にボタンをクリックする」というように、各操作内容と、各操作を実行する順序とを自然言語で示す操作内容を生成する。なお、このような操作情報は、例えば、テストケース、テストシナリオ、シナリオアウトライン、特徴ファイル、もしくはユーザフロー等と表現される場合がある。すなわち、情報提供装置１０は、構成サービスが提供される際に利用者が入力しうる操作を自然言語で示す操作情報を生成する。
【００５３】
〔１−６．適用処理の一例について〕
続いて、情報提供装置１０が実行する提供処理の一例を説明する。まず、情報提供装置１０は、操作情報が示す操作を各端末装置２００に提供させるための適用情報を生成する（ステップＳ７）。例えば、情報提供装置１０は、各端末装置２００において実行されているＯＳやログイン対象となるソフトウェアごとに、操作情報から操作内容を特定する。続いて、情報提供装置１０は、特定した操作を各端末装置２００に適用されるための適用情報を生成する。例えば、情報提供装置１０は、端末装置２００ごとに、特定した操作を実行させるためのテストコードを生成する。換言すると、情報提供装置１０は、各端末装置２００に対して、特定した操作を仮想的に入力させるための各種スクリプトを適用情報として生成する。
【００５４】
そして、情報提供装置１０は、各端末装置２００ごとに生成した適用情報を各端末装置２００に対して出力する（ステップＳ８）。例えば、情報提供装置１０は、操作情報が、ログインを行う画面上でのテストケースを示す場合、各テストケースにおける操作を端末装置２０１に対して適用するための適用情報を端末装置２０１に配信する。同様に、情報提供装置１０は、各テストケースにおける操作を端末装置２０２、２０３に対して適用するための適用情報を端末装置２０２、２０３に配信する。
【００５５】
このような場合、各端末装置２００は、情報提供装置１０から受付けた適用情報に従った操作が行われたものとして、それぞれアプリケーションを動作させる（ステップＳ９）。例えば、各端末装置２００には、適用情報に従って操作を仮想的に入力させるための各種のスクリプトが配信されている。そして、各端末装置２００は、情報提供装置１０から受付けた適用情報が示す操作が入力されたものとして、アプリケーションを動作させることで、それぞれ個別にアプリケーションのログインを行うこととなる。
【００５６】
ここで、情報提供装置１０から出力される適用情報には、操作が適用された結果を各端末装置２００に収集させるための情報が含まれている。この結果、端末装置２００は、操作の適用結果を収集し、収集した適用結果を情報提供装置１０へと送信する（ステップＳ１０）。このような場合、情報提供装置１０は、適用結果のレポートを生成し、生成したレポートを操作者端末３００に提供する（ステップＳ１１）。例えば、情報提供装置１０は、各端末装置２００において実行されているＯＳやアプリケーションの種別とともに、どの端末装置２００においてログインが成功若しくは失敗したか、いくつの端末装置２００でログインが成功若しくは失敗したかといったレポートを提供する。このような処理の結果、情報提供装置１０は、デバッグ等の試験結果の容易な理解を促進することができる。
【００５７】
〔１−７．生成処理の実装例について〕
上述したように、情報提供装置１０は、アプリケーションの解析結果に基づいて、アプリケーションを試験するためのテストケースを生成する。換言すると、情報提供装置１０は、操作対象に対して行われる利用者の操作の組合わせを自然言語で示した操作情報を生成する。このような生成処理において、情報提供装置１０は、ＩＡＧＡ（Improved  Adaptive  Genetic  Algorithm）を改良した手法により、操作情報の生成を行う。
【００５８】
以下、図２を用いて、情報提供装置１０が実行する生成処理の実装例について説明する。図２は、実施形態に係る情報提供装置が実行する生成処理の実装例を示す図である。図２においては、情報提供装置１０が操作情報を生成する処理の流れの一例について記載したが、実施形態は、これに限定されるものではない。情報提供装置１０は、図２に示す処理以外にも、アプリケーションの解析結果、例えば、アプリケーションが有する各種の特徴に基づいて操作情報を生成するのであれば、任意の処理により、操作情報の生成を行ってよい。
【００５９】
例えば、図２に示す例では、情報提供装置１０は、操作データベースおよび組合わせデータベースに登録された情報を用いて、操作情報の生成を行う。操作データベースは、利用者が操作対象となるアプリケーションに対して行うことができるすべての操作内容（例えば、インスタラクション）、および、各操作内容を自然言語で示した情報が対応付けて登録されている。なお、操作データベースは、ユーザアクションデータベースと換言される場合がある。
【００６０】
組合わせデータベースは、アプリケーションに対して適用される利用者の操作の組合わせが登録される。ここで、組合わせデータベースには、例えば、アプリケーションが提供する機能を適切に発揮させるための操作の組合わせだけではなく、機能を適切に発揮させることができない操作の組合わせについても登録されることとなる。すなわち、組合わせデータベースには、アプリケーションの試験時に適用される操作の組合わせ、換言すると、テストシナリオを示す情報が登録される。なお、組合わせデータベースは、ポピュレーションデータベースと換言される場合がある。
【００６１】
なお、以下の説明では、利用者の操作の組合わせを組合わせ情報と総称する場合がある。また、組合わせデータベースには、初期状態において、組合わせ情報がすでに登録されていてもよく、登録されていなくともよい。
【００６２】
まず、情報提供装置１０は、アプリケーションからテキストを抽出する。例えば、情報提供装置１０は、試験対象となるアプリケーションのコードを解析し、アプリケーションが画面上に表示するすべてのテキストを抽出する。そして、情報提供装置１０は、抽出したテキストに基づいてアプリケーションのドメインを特定する。例えば、情報提供装置１０は、ドメインモデルを用いて、アプリケーションが表示するテキストから、アプリケーションが提供する機能のドメインを特定する。
【００６３】
続いて、情報提供装置１０は、アプリケーションが表示する画面をすべて特定する。例えば、情報提供装置１０は、アプリケーションのコードを解析し、アプリケーションが表示させるすべての画面をそれぞれ特定する。なお、情報提供装置１０は、以下に説明する処理を、特定した画面ごとに実行することとなる。
【００６４】
続いて、情報提供装置１０は、特定した画面を介して適用される機能を特定する。例えば、情報提供装置１０は、特定した画面ごとに、その画面上に配置されたオブジェクトの種別や画面上において適用可能な操作の内容に基づいて、その画面で提供される機能の特定を行う。ここで、各画面で提供される機能の特定を行う場合、情報提供装置１０は、スクリーンモデルを用いて、アプリケーションのドメインと、各画面の特徴とに基づいて、アプリケーションが提供する機能の特定を行う。
【００６５】
例えば、情報提供装置１０は、アプリケーションのドメインと、そのアプリケーションが表示する画面のうちある画面の特徴（例えば、オブジェクトの種類、数、外観、その画面で実行可能な各種の操作等）とを示す情報を入力した際い、その画面で提供される機能を示す情報を出力するように学習が行われたモデルをスクリーンモデルとして保持する。そして、情報提供装置１０は、スクリーンモデルに、試験対象となるアプリケーションのドメインと、アプリケーションが表示する画面の特徴とを示す情報を入力することで、その画面で提供される機能を特定（推定）する。
【００６６】
続いて、情報提供装置１０は、操作データベースと組合わせデータベースとを参照し、特定した機能を発揮させるための操作を組合わせた組合わせ候補を生成・取得する。例えば、操作データベースには、アプリケーションが発揮する機能と、その機能を発揮させるために利用者が行う１つ又は複数の操作とが対応付けて登録されている。情報提供装置１０は、操作データベースを参照し、特定した機能と対応付けられた操作を特定する。そして、情報提供装置１０は、特定した操作をランダムな順序でランダムな数だけ組合わせた組合わせ候補を所定の数だけ生成する。
【００６７】
例えば、操作データベースには、「ログイン」という機能に対して、「ユーザＩＤの入力」、「パスワードの入力」、「ログインボタンをクリック」といった３つの操作が対応付けて操作データベースに登録されているものとする。このような場合、情報提供装置１０は、「ログイン」に対応する組合わせ候補として、「ユーザＩＤの入力」、「ユーザＩＤの入力」、「ユーザＩＤの入力」というように同一の操作を所定の数だけ繰り返す組合わせ候補や、「ユーザＩＤの入力」、「ログインボタンをクリック」というように、一部の操作を行わない組合わせの候補、その他実行する順番を変更した組合わせの候補や、実行する操作の数が異なる複数の組合わせの候補等を生成する。なお、情報提供装置１０は、例えば、ランダムに１０個以内の操作を組合わせた組合わせの候補を生成してもよい。
【００６８】
また、組合わせデータベースには、後述する処理により生成された組合わせ情報が機能と対応付けて登録されている。情報提供装置１０は、組合わせデータベースを参照し、試験対象となるアプリケーションが発揮する機能として特定した機能と対応付けられた組合わせ情報を組合わせ候補として取得する。
【００６９】
続いて、情報提供装置１０は、組合わせ候補ごとに、機能が発揮されるまでのステップ数を計数する。例えば、情報提供装置１０は、試験対象となる画面において、各組合わせ候補に含まれる操作を実行し、画面が他の画面に遷移するまでに機能が適切に発揮されたか否かを判定するとともに、画面が他の画面に遷移するまでに実行された操作の数をステップ数として係数する。なお、かかるステップ数の係数は、フィットネスカリキュレーションと換言される場合がある。
【００７０】
続いて、情報提供装置１０は、所定の回数処理をループしたか否かを判定する。そして、情報提供装置１０は、所定の回数処理をループしていない場合、機能が発揮されたと判定した組合わせ候補の中から親となる組合わせ候補の組を選択する。そして、情報提供装置１０は、親として選択された組合わせ候補に含まれる操作をランダムに組合わせた新たな組合わせ候補を生成する。また、情報提供装置１０は、新たに生成した組合わせ候補に対して、ランダムに操作を追加もしくは変更した新な組合わせ候補を生成する。そして、情報提供装置１０は、組合わせ候補ごとに機能が適切に発揮されたか否か、機能が発揮されるまでのステップ数の係数を再度実行する。
【００７１】
すなわち、情報提供装置１０は、組合わせ候補ごとに、機能が発揮されるまでのステップの係数、操作をクロスオーバーさせた新たな組合わせ候補の生成、および、操作をミューテーションさせた組合わせ候補の生成を繰り返し実行する。このような処理を行うことで、情報提供装置１０は、試験対象となるアプリケーションの画面ごとに、様々な操作を組合わせた組合わせ候補を生成することができる。
【００７２】
また、情報提供装置１０は、処理を所定の回数ループさせた場合、ステップ数が所定の条件を満たす組合わせ候補を組合わせ情報として組合わせデータベースに登録する。例えば、情報提供装置１０は、各組合わせ候補に含まれる操作を実行した際に機能を発揮するまでのステップ数の分布を特定し、特定した分布に基づいて、ステップ数が所定の条件を満たす組合わせ候補を登録対象とする。この際、情報提供装置１０は、ステップ数が少ない組合わせ候補を優先して選択するのではなく、ある程度ステップ数が多い組合わせ候補を選択するようにしてもよい。
【００７３】
そして、情報提供装置１０は、組合わせデータベースに登録された組合わせ情報から、操作の内容を自然言語で示した操作情報を生成する。例えば、情報提供装置１０は、組合わせ情報に含まれる各操作を特定し、特定した操作を示す自然言語を操作データベースから特定する。そして、情報提供装置１０は、特定した自然言語に基づいて、操作情報が示す操作の組合わせを自然言語で示した操作情報を生成する。
【００７４】
〔１−８．適用処理の流れの一例について〕
続いて、図３を用いて、情報提供装置１０が実行する適用処理の実装例について説明する。図３は、実施形態に係る情報提供装置が実行する適用処理の実装例を示す図である。ここで、情報提供装置１０は、情報提供装置１０が提供する操作情報以外にも、アプリケーションが発揮する機能のうち、試験対象となる機能を自然言語で示す情報から、適用情報を生成する機能を有する。そこで、図３に示す例では、試験対象となる機能を自然言語で示す情報から、適用情報を生成する機能の流れについて記載した。情報提供装置１０は、このような機能の一部を用いて、操作情報から適用情報を生成し、試験を実行することとなる。
【００７５】
例えば、情報提供装置１０は、操作情報となる自然言語を操作者端末３００から取得する。例えば、情報提供装置１０は、「ログインをしたらトップ画面が表示される」といった試験におけるアプリケーションの機能や、その機能が提供された際における結果を示す情報を取得する。
【００７６】
ここで、「ログイン」とは、例えば、ＳＮＳ等、端末装置２００や端末装置２００が実行するアプリケーションを介して提供されるサービスを構成するサービス、すなわち、構成サービスであって、利用者が所定の操作を行った際に提供されるサービスであるといえる。このような構成サービスには、例えば、「ログイン」のみならず、利用者が投稿する各種投稿情報の受付や、ＱＲコードを用いた支払においてＱＲコードを撮影するための機能等が含まれることとなる。
【００７７】
このような場合、情報提供装置１０は、抽出ユニットを用いて、自然言語に含まれる単語のうち、端末装置２００において行われる行動や、その行動が行われた際に生じる結果を示す単語を抽出し、抽出した単語をまとめた特徴情報を生成する。すなわち、情報提供装置１０は、操作情報から、利用者の行動を示す単語を行動ごとに抽出する。
【００７８】
例えば、情報提供装置１０は、「ログインをしたらトップコンテンツが表示される」といった操作情報から「ログイン」といった利用者の行動（すなわち、操作対象となる行動）や、「トップコンテンツが表示」といった、行動が行われた際における端末装置２００の状態（すなわち、行動が行われた結果）を示す単語を抽出する。そして、情報提供装置１０は、抽出した単語を示す特徴情報を生成する。なお、このような処理は、例えば、ＣｕｃｕｍｂｅｒやＴｕｒｎｉｐといったＧｈｅｒｋｉｎと呼ばれるテスト記述言語フォーマットに関する各種の技術が採用可能である。
【００７９】
続いて、情報提供装置１０は、ドライバユニットを用いて、自然言語をデバイス用コマンドに変換するために使用されるステップ情報（ステップ関数）と、コマンドの送信前に対象をポーリングすることにより、ステップ関数をサポートするために使用されるアシスタント情報（アシスタント関数）とを生成する。
【００８０】
例えば、情報提供装置１０は、ステップ情報を生成する場合、特徴情報から、端末装置２００において生じる操作の内容や操作の順番、操作が行われた際の結果等を特定する。換言すると、情報提供装置１０は、利用者の行動を、操作対象となる端末装置２００等のハードウェアや、ハードウェアにおいて各種実行させているソフトウェアに対する操作へと翻訳する処理を実行する。
【００８１】
例えば、情報提供装置１０は、特徴情報が「ログイン」という行動を示す場合、１番目に実行する「ログインコンテンツの表示」、２番目に実行する「ユーザＩＤの入力」、３番目に実行する「パスワードの入力」、および４番目に実行する「ログインボタンの押下」といった複数の操作と各操作の順番とを示すステップ情報（ステップ関数）を生成する。すなわち、情報提供装置１０は、「ログイン」単語が示す行動が行われる場合に端末装置２００に対して行われる各種操作や各操作が行われる順序を特定し、特定した操作や順序を示すステップ情報を生成する。
【００８２】
また、情報提供装置１０は、特徴情報に「トップコンテンツが表示」といった行動の結果が含まれている場合、このような結果が生じたか否かを判定するためのアシスタント情報（アシスタント関数）を生成する。例えば、情報提供装置１０は、「トップ画面が表示」といった行動の結果が含まれる場合、「トップコンテンツが表示されたか否かを判定する」といった処理を示すアシスタント情報を生成する。なお、情報提供装置１０は、例えば、ステップ情報が示す各種操作が行われた際に生じる所定の結果が生じているか否かを判定するためのアシスタント情報を生成してもよい。例えば、情報提供装置１０は、ステップ情報が「ログインコンテンツの表示」といった操作を含む場合は、「ログインコンテンツが表示されたか否かを判定する」といった処理を示すアシスタント情報を生成してもよい。
【００８３】
すなわち、情報提供装置１０は、自然言語で記述された操作情報に基づいて、操作情報が示す行動を実現するための各種の操作や操作の順序を示すステップ情報を生成する。また、情報提供装置１０は、各ステップ情報が示す操作が行われた際に生じる結果が実際に生じているか否かを判定するために行われる処理の内容を示すアシスタント情報を生成する。
【００８４】
なお、ステップ情報やアシスタント情報は、対象となる端末装置２００が実行するＯＳの種別やアプリケーションの種別、若しくはこれらの組合わせごとに生成される。このため、ドライバユニットは、操作情報から生成された特徴情報が示すユーザアクション（行動）において生じる各種の入力を取得するとともに、ユーザアクションの対象となるデバイスやアプリケーション、操作対象となる要素の識別を行う。そして、ドライバユニットは、識別結果に基づいて、ステップ情報の生成を行う。
【００８５】
同様に、情報提供装置１０は、ステップ情報が示す各操作が行われたことを確実にするために定期的な間隔で、対象の状態を収集する（ポーリングおよびクエリする）ためのアシスタント情報を生成する。より詳細には、情報提供装置１０は、各対象ごとに、ステップ情報が示す操作が行われた際に生じる対象の状態を収集し、収集した状態が所定の条件を満たすか否かを判定するためのアシスタント情報を生成する。換言すると、アシスタント情報は、ステップ情報が示すある操作が行われた結果が適正であるかを判定し、適正であると判定された場合に、ステップ情報が示す次の操作を行わせるための条件情報と見做すことができる。
【００８６】
続いて、情報提供装置１０は、生成ユニットを用いて、ステップ情報およびアシスタント情報が示す操作や各種の判定を対象に行わせるための適用情報を生成する。換言すると、情報提供装置１０は、抽出ユニットにより抽出された単語が示す行動が行われる場合に端末装置２００に対して行われる操作を適用するための適用情報を生成する。
【００８７】
このような生成ユニットは、例えば、アッピウム等、各種の端末装置２００やアプリケーションの自動テストを行うための各種フレームワークにより実現可能である。より具体的には、情報提供装置１０は、ステップ情報が示す各操作をステップ情報が示す順番で対象に適用するとともに、アシスタント情報が示す条件に従って各操作の結果が適切であるかを判定させるためのスクリプトを生成する。
【００８８】
このようにして生成されたスクリプトは、「ログイン」等の構成サービスを提供する際に行われうる利用者の行動、すなわち、構成サービスと対応する操作を端末装置２００に適用させるためのスクリプトである。このように、情報提供装置１０は、所定の対象が提供するサービスを構成する構成サービスであって、利用者が所定の操作を行った際に提供される構成サービスを自然言語で示す行動情報を取得すると、取得した行動情報から、行動情報が示す構成サービスと対応する所定の操作を前記対象に対して適用するための適用情報を生成することとなる。
【００８９】
そして、情報提供装置１０は、適用情報を、対象となる端末装置２００へと出力する。例えば、情報提供装置１０は、所定の情報処理装置内で再現された仮想的な端末装置ＥＴや、スマートフォン等の端末装置ＲＴ、クラウド上に存在する各種の端末装置ＣＴに対して、各端末装置２００ごとに生成された適用情報を送信する。この結果、情報提供装置１０は、自然言語で記述された操作情報が示す行動が行われた場合の、端末装置２００の動作を試験することができる。
【００９０】
なお、上述した例において、ドライバユニットは、抽出ユニットと生成ユニットとの組合わせごとにされればよい。例えば、ドライバユニットは、実装された抽出ユニットが採用するフォーマットのテスト記述言語から、生成ユニットが識別可能な形式のステップ情報やアシスタント情報を生成すればよい。このようなドライバユニットは、例えば、抽出ユニットにより生成されるテスト記述言語が示す行動と、その行動を実現するための操作内容や操作順序とを対応付けた辞書データや、各操作と、各操作が行われた結果が適正であるかを判定するための条件とを対応付けた辞書データにより、ルールベースで動作する任意のプログラムが採用可能である。
【００９１】
例えば、ドライバユニットは、特徴情報が「ログイン」を示す場合、辞書データを参照し、「ログイン」と対応付けられた各操作「ログインコンテンツの表示」、「ユーザＩＤの入力」、「パスワードの入力」、および「ログインボタンの押下」を特定する。そして、ドライバユニットは、特定した各処理を端末装置２００に実行させるための適用情報を生成ユニットに生成させるためのステップ情報を生成すればよい。また、ドライバユニットは、辞書データを参照し、特定した各操作と対応付けられた条件を特定する。そして、ドライバユニットは、特定した条件を満たすか否かを端末装置２００に実行させるための適用情報を生成ユニットに生成させるためのアシスタント情報を生成すればよい。このような処理を行うプログラムであれば、情報提供装置１０は、任意のプログラムをドライバユニットとして採用可能である。
【００９２】
なお、情報提供装置１０は、操作情報を受け付けた場合、ドライバユニットを用いて、操作情報が自然言語で示す各操作を示すステップ情報やアシスタント情報の生成を行う。そして、情報提供装置１０は、生成したステップ情報やアシスタント情報から、生成ユニットを用いて、適用情報の生成を行う。このような処理の結果、情報提供装置１０は、様々な操作内容をテストケースとして、各端末装置２００に適用することができる。
【００９３】
〔１−９．生成処理のバリエーションについて〕
上述した説明では、情報提供装置１０が実行する生成処理の一例について記載した。しかしながら、実施形態は、これに限定されるものではない。以下、情報提供装置１０が実行する生成処理のバリエーションについて説明する。
【００９４】
〔１−９−１．スクリーンモデルのバリエーションについて〕
上述した例では、情報提供装置１０は、ドメインモデルを用いてアプリケーションのドメインを特定し、特定したドメインと画面の特徴とに基づいて、その画面で提供される機能をスクリーンモデルにより特定した。しかしながら、実施形態は、これに限定されるものではない。
【００９５】
例えば、情報提供装置１０は、ドメインの推定を行わずともよい。例えば、情報提供装置１０は、画面上に表示される各種テキストの内容やアプリケーションが適用するすべてのテキストの内容、および、画面上に表示されるオブジェクトの各種特徴から、直接的に機能の特定を行ってもよい。また、情報提供装置１０は、オブジェクトの位置や色彩といった表示時における外観の特徴に基づいて、アプリケーションがある画面上で提供する機能の特定を行ってもよい。なお、このような処理は、例えば、各種テキストやオブジェクトの外観を示す情報等を入力情報としてスクリーンモデルに特徴を学習させることで実現可能である。
【００９６】
また、情報提供装置１０は、例えば、画面そのもの（例えば、画面をキャプチャした各種の画像データ）や、画面を構成するコード等から、その画面で提供される機能を特定してもよい。このような処理は、例えば、画像データやコードを入力情報としてスクリーンモデルに特徴を学習させることで実現可能である。
【００９７】
また、情報提供装置１０は、画面上に表示されるテキストの内容や、画面として表示されるコンテンツのタイトル、コードに含まれる非表示のテキスト等に基づいて、その画面を介して提供される機能の特定を行ってもよい。
【００９８】
また、情報提供装置１０は、アプリケーションが各画面を表示させる順序に基づいて、アプリケーションが発揮する機能を特定してもよい。例えば、情報提供装置１０は、ある画面がアプリケーションの起動時に表示される画面であり、かつ、アプリケーションのドメインが認証を要するサービスのドメインである場合、かかる画面で提供される機能がログインであると推定してもよい。このような処理を実行する場合、例えば、情報提供装置１０は、画面が表示される順序を示す情報を入力情報としてスクリーンモデルに特徴を学習させることで実現可能である。
【００９９】
〔１−９−２．ドメインモデルのバリエーションについて〕
上述した例では、情報提供装置１０は、アプリケーションが表示させるテキストの内容に基づいて、アプリケーションのドメインを特定した。しかしながら、実施形態は、これに限定されるものではない。
【０１００】
例えば、決済サービスを提供するアプリケーションは、決済額を入力するためのコンテンツやＱＲコードを撮影するためのコンテンツ等を表示する場合がある。一方、音楽コンテンツを提供するアプリケーションは、再生ボタンや一時停止ボタン等のコンテンツを表示する場合がある。このように、各種のアプリケーションは、ドメインに応じて異なるコンテンツを画面上に表示することとなる。
【０１０１】
このため、情報提供装置１０は、操作対象が所定の端末装置に対して表示させる画面に含まれるオブジェクトに基づいて、操作対象が提供するサービスの種別、すなわちドメインを特定してもよい。例えば、情報提供装置１０は、アプリケーションを解析し、画面上に表示される各種のオブジェクトに基づいて、アプリケーションがどのドメインに属するアプリケーションであるかを特定してもよい。
【０１０２】
より具体的には、情報提供装置１０は、各画像におけるテキストの内容、テキスト等の各種オブジェクトの量、オブジェクトの種類等に基づいて、操作対象が提供するサービスの種別を特定する。例えば、情報提供装置１０は、あるアプリケーションが表示するコンテンツのうち、音楽再生に関するオブジェクトよりも、支払に関するオブジェクトの量の方が多い場合は、アプリケーションが決済サービスを提供するアプリケーションであると特定してもよい。
【０１０３】
すなわち、情報提供装置１０は、アプリケーションが提供する各画面の各種特徴から、そのアプリケーションのドメインを特定するとともに、特定したドメインと所定の画面上における特徴とに基づいて、その画面上で提供される機能を特定するのであれば、任意の特徴に基づいて、ドメインの特定や機能の特定を行ってよい。
【０１０４】
〔１−９−３．複数サービスを提供するアプリケーションについて〕
ここで、スーパーアプリ等と呼ばれるアプリケーションは、単一のサービスのみならず、複数のサービスを提供する場合がある。しかしながら、このようなアプリケーションは、単一のアプリケーションプログラムによりサービスを提供するのではなく、主となるアプリケーションがミニアプリと呼ばれる複数のアプリケーションを呼び出して、各種サービスを提供する場合が多い。そこで、情報提供装置１０は、スーパーアプリの動作確認を行う場合、スーパーアプリを構成するミニアプリごとに、アプリケーションが提供するサービスのドメインを特定することとなる。
【０１０５】
なお、情報提供装置１０は、ドメインと対応するテキストやオブジェクトの量に基づいて、アプリケーションのドメインを特定した場合、どのアプリケーションが提供する複数のサービスのうち主となるサービスのドメインを特定することができる。
【０１０６】
〔１−９−４．操作内容について〕
上述した例では、ログインが行われた場合の操作内容の一例について記載した。しかしながら、実施形態は、これに限定されるものではない。例えば、情報提供装置１０は、アプリケーションに対して適用可能な操作であれば、任意の操作を端末装置２００に適用するための適用情報を生成してもよい。
【０１０７】
例えば、情報提供装置１０は、ユーザＩＤの入力やパスワード等、各種のテキストを入力させるための適用情報を生成してもよい。このような入力は、例えば、「「ユーザＩＤ」というテキストが配置された入力フォームを選択」する操作、および「選択した入力フォームに「ＡＡＡＡＡＡ」を入力する」操作（「ＡＡＡＡＡＡ」は、予め設定された文字列）により実現される。ドライバユニットは、このような操作が予め登録された辞書データを用いることで、ユーザＩＤやパスワードといったテキストの入力を実現することができる。なお、このような入力する文字列は、情報提供装置１０が設定してもよく、情報提供装置１０が設定してもよい。例えば、情報提供装置１０は、「ＡＡＡＡＡＡ」を入力する操作を含む操作情報を提供してもよい。
【０１０８】
なお、入力対象は、文字列に限定されるものではない。例えば、情報提供装置１０は、文字列以外にも、音声や画像等、任意の種別の情報を入力させるための適用情報を生成してもよい。また、情報提供装置１０も、音声や画像等、任意の種別の情報を入力させるための操作情報を生成してもよい。
【０１０９】
また、情報提供装置１０は、情報の入力のみならず、任意の操作を適用するための操作情報を生成してもよい。例えば、情報提供装置１０は、対象がスマートフォンである場合、タップ、ピンチイン、ピンチアウト、若しくはスライドといった各種の操作を適用するための操作情報を生成してもよい。例えば、情報提供装置１０は、「画面を上方向にスライドさせる」といった操作内容を示す操作情報を生成してもよい。また、情報提供装置１０は、対象がＰＣである場合、マウスのクリック、ダブルクリック、ドラッグ、ドロップ、キーボードの操作等を適用するための操作情報を生成してもよい。また、情報提供装置１０は、端末装置２００の傾きの変更や振動等といった端末装置２００に関する各種物理的な操作を示す操作情報を生成してもよく、時刻や明るさを変化させる操作を示す操作情報を生成してもよい。
【０１１０】
また、情報提供装置１０は、端末装置２００が実行するソフトウェアにより表示される画面の中から、操作対象となるオブジェクトを特定し、特定したオブジェクトに対する操作を示す操作情報を生成してもよい。例えば、情報提供装置１０は、端末装置２００が表示したログインコンテンツに配置されたオブジェクトの中から、ユーザＩＤを入力するための入力フォームを特定する操作を行わせ、その後、特定した入力フォームに所定のユーザＩＤを入力させるための操作を示す操作情報を生成してもよい。
【０１１１】
上述した操作以外にも、情報提供装置１０は、任意の操作を適用するための操作情報を生成してもよい。このような操作の具体的な内容は、操作内容が操作データベースに機能と対応付けられて登録されているのであれば、任意の内容の操作が可能である。
【０１１２】
〔１−９−５．条件について〕
また、情報提供装置１０は、ステップ情報が示す操作が行われたか否かを適切に判定することができるのであれば、任意の内容の条件が満たされたか否かを判定させるための適用情報を生成してよい。例えば、情報提供装置１０は、コンテンツが変化したか否か、所定のウェブコンテンツが表示されたか否か、ウェブページのステータス、画面上に表示された内容、端末装置２００が有するバイブレーションユニットが変化したか否か、音が出力されたか否か等、任意の内容の条件が満たされたか否かを判定されるための適用情報を生成してよい。
【０１１３】
〔１−９−６．操作情報の言語について〕
ここで、情報提供装置１０は、情報提供装置１０が識別可能であり、かつ、ドライバユニットが用いる辞書データに登録がなされている言語であれば、任意の自然言語により生成された操作情報の生成を行ってよい。例えば、情報提供装置１０は、日本語、英語、ドイツ語、フランス語、中国語等、任意の言語で記述された操作情報を生成してもよい。
【０１１４】
なお、例えば、情報提供装置１０は、端末装置２００で用いられる言語とは異なる言語により記述された操作情報から、適用情報の生成を行ってもよい。例えば、情報提供装置１０は、端末装置２０１が日本語のコンテンツを表示し、端末装置２０２が英語のコンテンツを表示し、端末装置２０３がドイツ語のコンテンツを表示する際に、日本語で「ログインする」といった内容の操作情報を受付けたものとする。このような場合、情報提供装置１０は、「ログイン」という行動を実現するために必要な操作であって、各端末装置２００が基準として用いる言語に対応する内容の操作を端末装置２００ごとに特定し、特定した操作を適用するための適用情報を生成すればよい。
【０１１５】
例えば、情報提供装置１０は、端末装置２０１に対しては、日本語で「ユーザＩＤ」と表示された入力フォームを選択してユーザＩＤを入力させる適用情報を生成し、端末装置２０２に対しては、英語で「ユーザＩＤ」と表示された入力フォームを選択してユーザＩＤを入力させる適用情報を生成し、端末装置２０３に対しては、ドイツ語で「ユーザＩＤ」と表示された入力フォームを選択してユーザＩＤを入力させる適用情報を生成すればよい。
【０１１６】
〔１−９−７．対象について〕
ここで、情報提供装置１０は、スマートフォン等の端末装置２００以外にも、クラウド上の端末装置ＣＴや所定の情報処理装置上でエミュレートされる端末装置ＥＴ以外にも、任意の対象に対し、適用される操作の組合わせを示す操作情報を生成してよい。例えば、情報提供装置１０は、ＰＣやサーバ装置、各種センサやデジタルサイネージといった実態を有する装置（所謂ハードウェア）を対象とし、これら対象に対して利用者が所定の行動を行う際に入力される操作をしめす操作情報を生成してよい。また、情報提供装置１０は、各種の仮想マシンやＰＣ上で実行されるＯＳやアプリケーション等、各種のソフトウェアに対する操作を示す操作情報を生成してよい。また、情報提供装置１０は、仮想的な端末装置ＥＴが現実に存在していた場合に、その端末装置ＥＴに対して利用者が行動を行う際に入力される操作を示す操作情報を生成してよい。
【０１１７】
また、対象となるアプリケーションは、同種のアプリケーションであってもよく、異なるアプリケーションであってもよい。例えば、端末装置２０１は、対象としてＳＮＳのサービスを受けるための第１アプリケーションを実行し、端末装置２０２は、第１アプリケーションとは異なるサービスを受けるための第２アプリケーションを実行し、端末装置２０３は、端末装置２０３を介して各種の代金を決済するための第３アプリケーションを実行しているものとする。また、第１アプリケーション〜第３アプリケーションは、それぞれ表示態様や機能が異なるものの、「ログインを行う」という利用者の行動を受付けることができるものであるものとする。
【０１１８】
このように、各端末装置２００が実行するアプリケーションの種別が異なるものであっても、操作情報が示す行動が、各アプリケーションにおいて実行可能な利用者の行動を示す場合、情報提供装置１０は、自然言語で操作を示す操作情報を生成することで、同時に各端末装置２００のアプリケーションをテストすることができる。また、情報提供装置１０は、各端末装置２００の種別がそれぞれ異なる場合であっても、各アプリケーションが提供する構成サービスの提供時に実行可能な利用者の行動を示す操作情報を生成する。このため、情報提供装置１０は、端末装置２００の種別や台数に依存せず、１以上の異なる種別の端末や、１以上の異なる種別のアプリケーションが任意に組み合わせられている場合であっても、同時に試験を実現することができる。
【０１１９】
より詳細な例について説明する。例えば、情報提供装置１０は、「ユーザＩＤとパスワードとを入力し、ログインボタンを押下する」という操作情報を生成する。ここで、第１アプリケーションにおいて利用者がログインする際に、異なる画面上でユーザＩＤとパスワードとを入力する場合、情報提供装置１０は、第１アプリケーションにおいてログインを行うための操作として、「ログイン画面の表示」、「ユーザＩＤの入力」、「パスワード入力ボタンの押下」、「パスワードの入力」、「ログインボタンの押下」といった操作を特定する。一方、第２アプリケーションにおいて利用者がログインする際に、同一画面上でユーザＩＤとパスワードとを入力することができる場合、情報提供装置１０は、第２アプリケーションにおいてログインを行うための操作として、「ログイン画面の表示」、「ユーザＩＤの入力」、「パスワードの入力」、「ログインボタンの押下」といった操作を特定する。また、第３アプリケーションにおいて利用者がログインする際に、ＦＩＤＯ（Fast  Identity  Online）等を用いたログインが可能である場合、情報提供装置１０は、第３アプリケーションにおいてログインを行うための操作として、「ログインボタンの押下」といった操作を特定する。そして、情報提供装置１０は、各操作を適用するための適用情報を各アプリケーションごとに生成し、生成した適用情報を出力すればよい。
【０１２０】
また、情報提供装置１０は、各アプリケーションごとに異なる順序で操作を適用させる適用情報を生成してもよく、アプリケーションごとに異なるアシスタント情報を生成してもよい。すなわち、情報提供装置１０は、それぞれ異なるアプリケーション等の対象について、利用者が共通してある行動を行った際に適用される操作の内容や順序、それら操作の結果を特定し、特定した内容の操作を特定した順番で適用するとともに、これらの操作が適切に行うかを判定させる適用情報を生成するのであれば、任意の内容の適用情報を生成してよい。
【０１２１】
なお、このようなアプリケーションの種別は、単に異なる機能を有するアプリケーションのみならず、バージョン違いのアプリケーションや、同一のサービスを提供するものの異なるＯＳ上で動作するアプリケーション、言語が異なるアプリケーション等を含む概念である。すなわち、情報提供装置１０は、対象ごとに異なる操作を適用するための提供情報を生成すればよい。また、情報提供装置１０は、複数の対象に、同一種別のアプリケーションが含まれる場合は、これら同一種別のアプリケーションに対して同一の適用情報を出力してもよい。
【０１２２】
〔１−１０．実施形態の効果の一例について〕
上述したように、情報提供装置１０は、各種のアプリケーション等、利用者の操作対象が発揮する機能を特定する。そして、情報提供装置１０は、特定された機能に応じて、操作対象に対して行われる利用者の操作の組合わせを決定し、決定された操作の組合わせを自然言語で表した操作情報を生成する。このような処理の結果、情報提供装置１０は、アプリケーションが発揮する機能に応じて、その機能の試験や確認を行う際の操作内容、すなわち、テストケースを自動的に生成することができる。このため、情報提供装置１０は、操作対象の試験等を容易にすることができる。
【０１２３】
また、情報提供装置１０は、自然言語で操作内容を示した操作情報を生成するので、例えば、試験対象となるアプリケーションにバージョンが複数存在する場合であっても、これらアプリケーションに対して行うべき操作の組合わせを共通して示す操作情報を生成することができる。例えば、情報提供装置１０は、アプリケーションのバージョンごとに操作情報を生成せずとも、バージョンが異なるが同一のサービスを提供するアプリケーションの試験内容を共通して示す単一の操作情報を生成することができる。また、情報提供装置１０は、自然言語で操作内容を示す操作情報を生成するので、どのような操作においてアプリケーションが適切に機能を発揮できないかを容易に識別させることができる。
【０１２４】
また、情報提供装置１０は、アプリケーションのドメインや機能に応じて、操作情報を画面ごとに生成するので、アプリケーションが新規なアプリケーションである場合や、アプリケーションに新規な画面が追加される場合、アプリケーションの画面レイアウトに変更があった場合にも、適切なテストケースを示す操作情報を生成することができる。また、情報提供装置１０は、自然言語でテストケースを自動的に生成するので、例えば、想定していなかった利用者の操作を容易に識別させることができ、このような操作に対する対応を実現させることができる。また、情報提供装置１０は、人手を介さずに、操作情報を生成することができるので、人手により生じるミスを防ぐことができる。
【０１２５】
〔２．情報提供装置の構成〕
以下、上記した情報提供装置１０が有する機能構成の一例について説明する。図４は、実施形態に係る情報提供装置の構成例を示す図である。図４に示すように、情報提供装置１０は、通信部２０、記憶部３０、および制御部４０を有する。
【０１２６】
通信部２０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。そして、通信部２０は、ネットワークＮと有線または無線で接続され、情報提供装置１０、端末装置２００、および操作者端末３００との間で情報の送受信を行う。
【０１２７】
記憶部３０は、例えば、ＲＡＭ（Random  Access  Memory)、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部３０は、操作データベース３１および組合わせデータベース３２を記憶する。
【０１２８】
操作データベース３１には、操作対象が発揮する各種の機能と、その機能を発揮させるために行われる利用者の操作とが対応付けて登録されている。例えば、図５は、実施形態に係る操作データベースに登録される情報の一例を示す図である。図５に示す例では、操作データベース３１には、ドメイン、対応機能、操作内容、および自然言語表現といった項目を有する情報が登録されている。なお、図５に示す情報以外にも、操作データベース３１には、操作対象に対して適用可能な利用者の操作に関する情報が登録されていてもよい。
【０１２９】
例えば、ドメインとは、操作対象が利用者に対して提供するサービスの種別を示す情報である。また、対応機能とは、対応付けられたドメインに属する操作対象が提供する機能であって、所定の画面を介して提供される機能を示す情報である。また、操作内容とは、対応付けられた機能を発揮する画面において利用者が行うことができる操作の内容を示す情報である。また、自然言語表現とは、対応付けられた操作を自然言語で示す情報である。
【０１３０】
例えば、図５に示す例では、ドメイン「決済」、対応機能「ログイン」、操作内容「操作＃１−１」、および自然言語表現「クリック」が対応付けて登録されている。このような情報は、提供するサービスが「決済」である操作対象が、ある画面において「ログイン」の機能を発揮しており、かかる画面において利用者が行うことができる操作が「操作＃１−１」であり、かかる操作の自然言語表現が「クリック」である旨を示す。なお、図５に示す例では、対応機能「ログイン」に対し、「操作＃１−１」や「操作＃１−２」といった複数の操作が対応付けられている。かかる情報は、「ログイン」を行う画面において、「操作＃１−１」（例えば、クリック）や「操作＃１−２」（例えば、ユーザＩＤ入力）といった複数の操作をおこなうことができる旨を示す。
【０１３１】
なお、図５に示す例では「操作＃１−１」といった概念的な値を記載したが、実際には、操作内容を示す各種の情報（例えば、インスタンス等）が登録されることとなる。また、操作データベース３１には、例えば、スクロール量やクリックの回数、ユーザＩＤやパスワードを構成する文字列等がさらに登録されていてもよい。
【０１３２】
組合わせデータベース３２には、操作の組合わせを示す情報、すなわち操作情報が登録される。例えば、図６は、実施形態に係る組合わせデータベースに登録される情報の一例を示す図である。図６に示す例では、組合わせデータベース３２には、対応ドメイン、対応機能および操作組合わせが対応付けて登録されている。なお、組合わせデータベース３２には、図６に示す情報以外にも、操作の組合わせに関する各種の情報が登録されていてもよい。
【０１３３】
ここで、操作組合わせとは、操作対象の機能に応じて決定された複数の操作を示す情報である。また、対応機能とは、操作組合わせが示す操作が、どの機能に対するテストケースであるかを示す情報である。また、対応ドメインとは、対応付けられた操作組合わせがどのドメインに属する操作対象のテストケースであるかを示す情報である。
【０１３４】
例えば、図６に示す例では、対応ドメイン「決済」、対応機能「ログイン」および操作組合わせ「組合わせ＃１」、「組合わせ＃２」等が対応付けて登録されている。かかる情報は、「決済」に関するサービスを提供する操作対象の、「ログイン」の機能を提供する画面において行われるテストケースが「組合わせ＃１」や「組合わせ＃２」等が示す操作である旨を示す。なお、図６に示す例では、「組合わせ＃１」といった概念的な値を記載したが、実際には、複数の操作や各操作を行う順序を示す情報（例えば、インスタンス等）が登録されることとなる。
【０１３５】
図４に戻り、説明を続ける。制御部４０は、例えば、コントローラ（controller）であり、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、情報提供装置１０内部の記憶装置に記憶されている各種プログラム（通知プログラムの一例に相当）がＲＡＭを作業領域として実行されることにより実現される。また、制御部４０は、コントローラであり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現される。
【０１３６】
図４に示すように、制御部４０は、特定部４１、決定部４２、生成部４３、および適用部４４を有する。
【０１３７】
特定部４１は、利用者の操作対象が発揮する機能を特定する。例えば、特定部４１は、操作対象となるアプリケーションが所定の端末装置に対して表示させる画面に基づいて、その操作対象が発揮する機能を特定する。すなわち、特定部４１は、画面を介して提供される機能を特定する。例えば、特定部４１は、操作対象が提供するサービスの種別、すなわち、ドメインを特定する。そして、特定部４１は、特定したドメインと、操作対象が提供する各画面上のオブジェクトに基づいて、操作対象が各画面上で提供する機能を画面ごとに特定する。
【０１３８】
例えば、特定部４１は、操作対象が提供する各画面を特定し、特定した各画面上に配置された各種のオブジェクトを特定する。より具体的な例を挙げると、特定部４１は、操作対象が提供するテキストを特定する。そして、特定部４１は、テキストに含まれる各種の文言や各文言の量に基づいて、操作対象のドメインを特定する。例えば、特定部４１は、「決済」に関する文言の量が他のドメインに関する文言の量よりも多い場合は、操作対象が属するドメインを「決済」であると特定する。
【０１３９】
続いて、特定部４１は、各画面ごとに、画面に含まれる各種のオブジェクトの種別や量等、画面の特徴を特定する。そして、特定部４１は、画面の特徴と、特定したドメインとに基づいて、操作対象がその画面上で提供する機能を特定する。例えば、特定部４１は、ユーザＩＤを入力するウインドウやパスワードを入力するウインドウが画面上に配置されている場合、かかる画面で提供される機能が「ログイン」であると特定する。なお、特定部４１は、画面の特徴とドメインとの関係性を学習したドメインモデル、および、画面の特徴とその画面上で提供される機能との関係性を学習したスクリーンモデルを用いて、上述した各種の機能を発揮してもよい。また、特定部４１は、各画面が表示される順番に基づいて、その画面上で提供される機能を特定してもよい。
【０１４０】
決定部４２は、特定された機能に応じて、操作対象に対して行われる利用者の操作の組合わせを決定する。例えば、決定部４２は、機能と、操作対象にその機能を発揮させる際に行われる利用者の操作とを対応付けた操作データベース３１を参照し、特定部４１により特定された機能と対応する操作に基づいて、組合わせを決定する。
【０１４１】
例えば、決定部４２は、操作データベース３１を参照し、特定部４１により特定されたドメインおよび機能と対応付けられた操作内容を特定する。そして、決定部４２は、特定した各操作をランダムに組合わせた複数の組合わせ候補を決定する。例えば、決定部４２は、特定部４１によりドメイン「決済」と機能「ログイン」とが特定された場合、ドメイン「決済」および機能「ログイン」と対応付けられた操作内容「操作＃１−１」、「操作＃１−２」等を特定する。そして、決定部４２は、「操作＃１−１」や「操作＃１−２」をランダムな数だけランダムな順序で組合わせた組合わせ候補を決定する。
【０１４２】
さらに、決定部４２は、組合わせデータベース３２を参照し、特定部４１により特定されたドメイン「決済」と機能「ログイン」とに対応付けられた操作組合わせを組合わせ候補として取得する。そして、決定部４２は、各組合わせ候補に基づいて、操作対象に対して行われる利用者の操作の組合わせを決定する。
【０１４３】
例えば、決定部４２は、組合わせ候補ごとに、特定部４１により特定された機能を発揮するか否かを判定し、機能を発揮するまでのステップ数を計数する。続いて、決定部４２は、例えば、計数してステップ数が所定の条件を満たす組合わせ候補（例えば、ステップ数が最も少ない候補等）を親となる組合わせ候補として選択し、選択した組合わせ候補に含まれる操作を入れ替えた組合わせ候補を新たに決定する。なお、決定部４２は、ランダムに親となる組合わせ候補を選択してもよい。さらに、決定部４２は、ランダムに選択された組合わせ候補に含まれる操作のうちランダムに選択された操作をランダムに他の操作へと変更した組合わせ候補を新たに生成する。なお、決定部４２は、例えば、ステップ数が所定の条件を満たす組合わせ候補に含まれる操作のうちランダムに選択された操作をランダムに他の操作へと変更した組合わせ候補を新たに生成してもよい。
【０１４４】
そして、決定部４２は、各組合わせ候補が特定部４１により特定された機能を発揮するか否かを判定し、機能を発揮するまでのステップ数を計数する。このような一連の処理を所定の条件が満たされるまで（例えば、所定回数、もしくは、各組合わせ候補のステップ数の分布が所定の条件を満たす迄）繰り返し実行することで、決定部４２は、テストケースとして適切な操作の組合わせ候補を自動的に生成することができる。そして、決定部４２は、生成した組合わせ候補を組合わせデータベース３２に登録する。
【０１４５】
生成部４３は、決定された操作の組合わせを自然言語で表した操作情報を生成する。例えば、生成部４３は、操作対象が提供する画面ごとに、操作情報を生成する。例えば、生成部４３は、操作情報の生成対象となる画面において提供される機能と、操作対象のドメインとに対応付けられた操作組合わせを組合わせデータベース３２から取得する。続いて、生成部４３は、各操作組合わせに含まれる各操作を示す自然言語表現を操作データベース３１から取得する。そして、生成部４３は、取得した自然言語表現と、操作組合わせに含まれる操作の順序とに応じて、操作組合わせが示す操作内容を自然言語で示す操作情報を操作組合わせごとに生成する。このような処理の結果、情報提供装置１０は、テストケースとなる操作情報を自動的に生成することができる。
【０１４６】
適用部４４は、生成部４３によって生成された操作情報に従って、対象の試験を行う。例えば、適用部４４は、操作情報を取得すると、図３に例示した処理を実行することで、操作情報と対象との組み合わせごとに適用情報を生成し、生成した適用情報を端末装置２００に適用することで、試験を実現する。なお、適用部４４が実行する適用処理については、上述した各種の処理が適用可能であるものとし、詳細な説明を省略する。
【０１４７】
〔３．処理手順〕
次に、図７を用いて、実施形態に係る情報提供装置１０による生成処理の手順について説明する。図７は、実施形態に係る生成処理の流れの一例を示すフローチャートである。
【０１４８】
例えば、情報提供装置１０は、操作対象となるアプリケーションを受付けたか否かを判定する（ステップＳ１０１）。そして、情報提供装置１０は、アプリケーションを受付けていない場合は（ステップＳ１０１：Ｎｏ）、受付けるまで待機する（ステップＳ１０１）。一方、情報提供装置１０は、アプリケーションを受付けた場合は（ステップＳ１０１：Ｙｅｓ）、アプリケーションが発揮する機能を特定する（ステップＳ１０２）。
【０１４９】
また、情報提供装置１０は、特定した機能に基づいて、アプリケーションに対して行われる利用者の操作の組合わせを決定する（ステップＳ１０３）。そして、情報提供装置１０は、決定した組合わせを自然言語で示す操作情報を生成し（ステップＳ１０４）、処理を終了する。
【０１５０】
〔４．変形例〕
上述した情報提供装置１０は、上記実施形態以外にも種々の異なる形態にて実施されてもよい。そこで、以下では、情報提供装置１０の他の実施形態について説明する。
【０１５１】
〔４−１．操作について〕
上述した例では、情報提供装置１０は、ログインを受付けるアプリケーションの試験を行うための適用情報を生成した。しかしながら、実施形態は、これに限定されるものではない。
【０１５２】
例えば、情報提供装置１０は、対象となる端末装置２００やソフトウェアと関連する利用者の行動であれば、任意の行動が行われる際に入力される操作を特定し、特定した操作を組合わせた操作情報を生成してよい。例えば、情報提供装置１０は、ＳＮＳ等に対する所定の文字列や写真といったコンテンツの投稿や、ゲーム等に対する入力、動画の閲覧といった任意の行動が行われた際における操作について、操作情報の生成を受付けてもよい。また、情報提供装置１０は、例えば、端末装置２００の向きを変更する、端末装置２００を振る、音量を変更する等、音声による各種操作の入力といったハードウェアに依存する各種の行動が行われる際の操作を示す操作情報の生成を行ってもよい。
【０１５３】
また、情報提供装置１０は、任意のアプリケーションについての操作情報を生成してよい。例えば、情報提供装置１０は、端末装置２００を用いた各種の決済サービスを提供するアプリケーションについて、操作情報の生成を行ってもよい。例えば、決済サービスには、店舗に設置されたＱＲコード（登録商標）を読み取るとともに、決済額の入力を受付け、ＱＲコードと対応する店舗の口座に対し、受付けた決済額の電子マネーを利用者の口座から送金するといったサービスが存在する。また、決済サービスには、利用者の口座やクレジットカードを識別するバーコードを表示し、表示したバーコードを店舗の端末が読み取ることで、利用者に対する課金を実現するものが存在する。
【０１５４】
情報提供装置１０は、このような各種決済サービスに関するアプリケーションについて、操作情報の生成を行ってもよい。例えば、情報提供装置１０は、「店舗＃Ａに対して１００円支払う」といった操作情報を生成してもよい。また、情報提供装置１０は、「店舗＃ＡのＱＲコードを読み取る」操作、「決済額として１００円」を入力する操作、および「支払ボタンを押下する操作」を組合わせた操作情報を生成してもよい。また、情報提供装置１０は、決済額を様々な額に設定した操作情報を生成してもよい。すなわち、情報提供装置１０は、操作そのものだけではなく、操作の内容を示すパラメータ（例えば、スクロール量や入力するテキストの内容、ＱＲコードの内容や決済額等）を適宜変更した複数の操作情報を生成してもよい。
【０１５５】
また、情報提供装置１０は、各利用者に対して発光される各種請求書に対応する支払を行わせるための操作を示す操作情報を生成してもよい。例えば、端末装置２００にインストールされたアプリケーションには、請求書等に印刷されたバーコードをカメラで読み取ると、バーコードが示す支払先および支払額を特定し、特定した支払先の口座へ、特定した支払額を利用者の口座から送金する機能を有する場合がある。このような場合、情報提供装置１０は、所定のバーコードの画像を生成し、「バーコードの画像を撮影した画像として読み出す」、「読み出した画像に撮影されているバーコードを識別する（スキャンする）」、「識別したバーコードが示す情報に基づいて、送金を行う」といった操作を実行させるための操作情報を生成してもよい。
【０１５６】
また、情報提供装置１０は、「識別したバーコードから、送金金額と請求者とを検証する」といった操作を行わせるための操作情報を生成してもよい。例えば、情報提供装置１０は、バーコードが示す支払先や額を示す文字列とバーコードとを配置した画像（すなわち、仮想的な請求書の画像）を生成し、「バーコードの画像を撮影した画像として読み出す」、「読み出した画像に撮影されているバーコードと、文字列と識別する」、「識別したバーコードが示す支払額と支払先とを識別する」、「識別した文字列が示す支払額と支払先とを識別する」、「バーコードが示す支払額および支払先と、文字列が示す支払額および支払先とが一致するか否かを判定する」、「各支払額および支払先が一致すると判定された場合に、送金を行う」といった一連の処理を実行させるための操作情報や、これらの操作をランダムに組合わせた操作情報を生成してもよい。
【０１５７】
また、情報提供装置１０は、アプリケーションが、電子的な請求書に従った支払を実現することができる場合、このような機能を用いた支払の検証を行わせるための操作情報を生成してもよい。例えば、情報提供装置１０は、「支払対象となる電子的な請求書のリストを表示させる」、「リストの中から支払対象となる請求書を選択する」、「選択した請求書に従って、送金を行う」といった操作を実行させるための操作情報等を生成してもよい。
【０１５８】
また、情報提供装置１０は、各種権限の設定を行う操作や電話等の発信操作等を含む操作情報を生成してよい。このように、情報提供装置１０は、対象において入力可能な操作であれば、任意の操作を行わせるための操作情報を生成してよい。さらに、情報提供装置１０は、例えば、端末装置２００とブルートゥース（登録商標）等で接続されたイヤホンや各種のウェアラブルデバイス等を制御するための操作を適用するための操作情報を生成してもよい。すなわち、情報提供装置１０は、試験などの対象から操作可能な他の対象に対する操作を含む操作情報を生成してよい。
【０１５９】
〔４−２．目的について〕
ここで、情報提供装置１０は、対象の試験以外にも、任意の目的で上述した操作情報の生成を行ってよい。例えば、各種の提携作業をソフトウェア型のロボットやＡＩ（Artificial  Intelligence）が代行、自動化するＲＰＡ（Robotic  Process  Automation）の技術が知られている。情報提供装置１０は、このようなＲＰＡの技術において、上述した生成処理を適用してもよい。また、情報提供装置１０は、ＱＡＡＳ(Quality  Assurance  as  a  Service)を試験するために、各種ソフトウェアに対する操作情報を生成してもよい。より具体的には、情報提供装置１０は、対象となるソフトウェアに対して行われる利用者の行動を示す操作情報を、各ソフトウェアが利用者に対して機能を提供するための画面や、機能を提供するフェーズごとに生成してもよい。すなわち、情報提供装置１０は、ソフトウェアが機能を提供するフェーズごとに、提供される機能を特定し、特定した機能と対応する操作を組合わせた組合わせ情報を生成すればよい。
【０１６０】
例えば、情報提供装置１０は、対象となる各ソフトウェアにおいて適用可能な操作（例えば、データ入力や関数入力、各種の操作等）を特定し、特定した操作を組合わせた操作情報を、対象となるソフトウェアごとに生成してもよい。また、情報提供装置１０は、ある１つの行動を行わせるために複数のソフトウェアを強調させる必要がある場合、ソフトウェアごとに必要な操作を特定し、特定した操作を各ソフトウェアに対して適用させる操作情報を生成してもよい。
【０１６１】
例えば、情報提供装置１０は、第１ソフトウェアに所定の操作を入力することで、第１データを作成させる操作情報を生成するとともに、第２ソフトウェアに対して第１データを読み込ませ、さらに第１データを用いた所定の処理を実行させるための操作を第２ソフトウェアに適用するための操作情報を生成してもよい。そして、情報提供装置１０は、生成した操作情報を第１ソフトウェアや第２ソフトウェアに対して順に適用すればよい。
【０１６２】
このように、情報提供装置１０は、対象における試験のみならず、対象に任意の処理を行わせるための操作を含む操作情報を生成してよい。また、情報提供装置１０は、上述した目的以外にも、対象に対する操作をを示す操作情報を生成するのであれば、任意の目的について、適用情報を生成してよい。
【０１６３】
〔４−３．処理態様について〕
上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、逆に、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【０１６４】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１６５】
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組合わせることが可能である。
【０１６６】
〔４−４．プログラム〕
また、上述した実施形態に係る情報提供装置１０は、例えば図８に示すような構成のコンピュータ１０００によって実現される。図８は、ハードウェア構成の一例を示す図である。コンピュータ１０００は、出力装置１０１０、入力装置１０２０と接続され、演算装置１０３０、一次記憶装置１０４０、二次記憶装置１０５０、出力ＩＦ（Interface）１０６０、入力ＩＦ１０７０、ネットワークＩＦ１０８０がバス１０９０により接続された形態を有する。
【０１６７】
演算装置１０３０は、一次記憶装置１０４０や二次記憶装置１０５０に格納されたプログラムや入力装置１０２０から読み出したプログラム等に基づいて動作し、各種の処理を実行する。一次記憶装置１０４０は、ＲＡＭ等、演算装置１０３０が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置１０５０は、演算装置１０３０が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ＲＯＭ(Read  Only  Memory)、ＨＤＤ（Hard  Disk  Drive）、フラッシュメモリ等により実現される。
【０１６８】
出力ＩＦ１０６０は、モニタやプリンタといった各種の情報を出力する出力装置１０１０に対し、出力対象となる情報を送信するためのインタフェースであり、例えば、ＵＳＢ（Universal  Serial  Bus）やＤＶＩ（Digital  Visual  Interface）、ＨＤＭＩ（登録商標）（High  Definition  Multimedia  Interface）といった規格のコネクタにより実現される。また、入力ＩＦ１０７０は、マウス、キーボード、およびスキャナ等といった各種の入力装置１０２０から情報を受信するためのインタフェースであり、例えば、ＵＳＢ等により実現される。
【０１６９】
なお、入力装置１０２０は、例えば、ＣＤ（Compact  Disc）、ＤＶＤ（Digital  Versatile  Disc）、ＰＤ（Phase  change  rewritable  Disk）等の光学記録媒体、ＭＯ（Magneto-Optical  disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等から情報を読み出す装置であってもよい。また、入力装置１０２０は、ＵＳＢメモリ等の外付け記憶媒体であってもよい。
【０１７０】
ネットワークＩＦ１０８０は、ネットワークＮを介して他の機器からデータを受信して演算装置１０３０へ送り、また、ネットワークＮを介して演算装置１０３０が生成したデータを他の機器へ送信する。
【０１７１】
演算装置１０３０は、出力ＩＦ１０６０や入力ＩＦ１０７０を介して、出力装置１０１０や入力装置１０２０の制御を行う。例えば、演算装置１０３０は、入力装置１０２０や二次記憶装置１０５０からプログラムを一次記憶装置１０４０上にロードし、ロードしたプログラムを実行する。
【０１７２】
例えば、コンピュータ１０００が情報提供装置１０として機能する場合、コンピュータ１０００の演算装置１０３０は、一次記憶装置１０４０上にロードされたプログラムを実行することにより、制御部４０の機能を実現する。
【０１７３】
〔５．効果〕
上述したように、情報提供装置１０は、利用者の操作対象が発揮する機能を特定する。そして、情報提供装置１０は、特定された機能に応じて、操作対象に対して行われる利用者の操作の組合わせを決定し、決定された操作の組合わせを自然言語で表した操作情報を生成する。このような処理の結果、情報提供装置１０は、操作対象のテストケースを自動的に生成することができるので、任意の対象に対する試験を容易にすることができる。
【０１７４】
また、情報提供装置１０は、操作対象となるアプリケーションが所定の端末装置に対して表示させる画面に基づいて、その操作対象が発揮する機能を特定する。すなわち、情報提供装置１０は、画面を介して提供される機能を特定する。このため、情報提供装置１０は、各画面ごとに提供される機能を試験するためのテストケースを自動的に生成することができる。
【０１７５】
例えば、情報提供装置１０は、アプリケーションが各画面を表示させる順序に基づいて、そのアプリケーションが発揮する機能を特定する。また、情報提供装置１０は、操作対象が提供するサービスの種別を特定し、特定されたサービスの種別に基づいて、その操作対象が発揮する機能を特定する。また、情報提供装置１０は、特定されたサービスの種別とあらかじめ紐づけられた機能のうち、操作対象が発揮する機能を特定する。
【０１７６】
例えば、情報提供装置１０は、操作対象が所定の端末装置に対して表示させる画面に含まれるオブジェクトに基づいて、操作対象が提供するサービスの種別を特定する。また、情報提供装置１０は、操作対象が所定の端末装置に対して表示させる画面に含まれるオブジェクトの量に基づいて、操作対象が提供するサービスの種別を特定する。また、情報提供装置１０は、オブジェクトとして、画面に含まれるテキストに基づいて、操作対象が提供するサービスの種別を特定する。このような処理の結果、情報提供装置１０は、適切に操作対象が提供するサービスを特定するとともに、特定したサービスに基づいて、操作対象が発揮する機能を特定することができるので、適切にテストケースを生成することができる。
【０１７７】
また、情報提供装置１０は、操作対象が有する特徴と、その操作対象が発揮する機能との関係性を学習したモデルを用いて、操作対象が発揮する機能を特定する。このため、情報提供装置１０は、操作対象が新規なアプリケーション等であっても、その操作対象の機能を適切に特定することができる。
【０１７８】
また、情報提供装置１０は、機能と、操作対象にその機能を発揮させる際に行われる利用者の操作とを対応付けたデータベースを参照し、特定された機能と対応する操作に基づいて、組合わせを決定する。例えば、情報提供装置１０は、特定された機能と対応する操作と、その操作を行う順序とをランダムに組合わせることで、複数の組合わせ候補を決定し、決定した組合わせ候補に基づいて、操作対象に対して行われる利用者の操作の組合わせを決定する。また、情報提供装置１０は、組合わせ候補ごとに、特定された機能を発揮するか否かを判定し、その機能を発揮すると判定された組合わせ候補に基づいて、組合わせを決定する。また、情報提供装置１０は、特定された機能を発揮すると判定された組合わせ候補に含まれる操作に基づいて、新たな組合わせ候補を生成し、生成した組合わせ候補に基づいて、組合わせを決定する。また、情報提供装置１０は、特定された機能を発揮すると判定された組合わせ候補に含まれる操作と、ランダムに選択された操作とに基づいて、新たな組合わせ候補を生成する。また、情報提供装置１０は、組合わせ候補ごとに、特定部により特定された機能を発揮するか否かを判定する処理と、機能を発揮すると判定された組合わせ候補に含まれる操作に基づいて、新たな組合わせ候補を生成する処理と、その新たな組合わせ候補が特定部により特定された機能を発揮するか否かを判定する処理とを、所定の条件が満たされるまで繰り返し実行することで、組合わせを決定する。このような処理の結果、情報提供装置１０は、様々な内容のテストケースを自動的に生成することができる。
【０１７９】
また、情報提供装置１０は、組合わせ候補ごとに、特定部により特定された機能が発揮されるまでに実行された操作の数を計数し、組合わせ候補のうち、計数した行動の数が所定の条件を満たす組合わせ候補を、操作対象に対して行われる利用者の操作の組合わせとする。このため、情報提供装置１０は、試験対象として最適な内容の操作の組わせをテストケースとすることができる。
【０１８０】
また、情報提供装置１０は、操作の組合わせを特定部により特定された機能と対応付けて所定のデータベースに登録する。また、情報提供装置１０は、特定された機能と対応付けられた操作の組合わせを組合わせ候補として所定のデータベースから読み出す。このような処理の結果、情報提供装置１０は、類似する操作対象のテストケースが生成済みである場合、かかるテストケースを流用することができる。
【０１８１】
以上、本願の実施形態を図面に基づいて詳細に説明したが、これは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０１８２】
また、上述してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【０１８３】
１０  情報提供装置
２０  通信部
３０  記憶部
３１  操作データベース
３２  組合わせデータベース
４０  制御部
４１  特定部
４２  決定部
４３  生成部
４４  適用部
２００  端末装置
３００  操作者端末
【要約】
【課題】任意の対象に対する試験を容易にする。
【解決手段】本願に係る生成装置は、利用者の操作対象が発揮する機能を特定する特定部と、特定された機能に応じて、操作対象に対して行われる利用者の操作の組合わせを決定する決定部と、決定された操作の組合わせを自然言語で表した操作情報を生成する生成部とを有することを特徴とする。
【選択図】図１【図１】
0006861880.tif 000002
【図２】
0006861880.tif 000003
【図３】
0006861880.tif 000004
【図４】
0006861880.tif 000005
【図５】
0006861880.tif 000006
【図６】
0006861880.tif 000007
【図７】
0006861880.tif 000008
【図８】
0006861880.tif 000009