(57)【要約】【課題】情報を絞り込む作業の効率性を向上させる。【解決手段】取得部１０１は、ソースコード内の複数のスコープ間の包含関係を示す包含関係情報と、１つのスコープの事象数を示す自己事象数及び１つのスコープから遷移した全てのスコープの各自己事象数を合計した合計事象数を含む事象数情報とを取得する。第１の生成部１０２は、事象数情報に基づいて、各スコープの合計事象数を示す第１の階層画像を生成するための第１の表示情報を生成する。選択部１０３は、第１の階層画像からスコープを選択する操作を受け付ける。第２の生成部１０４は、選択されたスコープを示すスコープ選択情報、包含関係情報、及び事象数情報に基づいて、選択されたスコープから遷移した各スコープの自己事象数を示す第２の階層画像を生成するための第２の表示情報を生成する。【選択図】図３
2017173975.tif 000002
【特許請求の範囲】
【請求項１】
ソースコード内の複数のスコープ間の包含関係を示す包含関係情報と、１つの前記スコープの事象数を示す自己事象数及び１つの前記スコープから遷移した全ての前記スコープの前記各自己事象数を合計した合計事象数を含む事象数情報とを取得する取得部と、
前記事象数情報に基づいて、前記各スコープの前記合計事象数を示す第１の階層画像を生成するための第１の表示情報を生成する第１の生成部と、
前記第１の階層画像から前記スコープを選択する操作を受け付ける選択部と、
選択された前記スコープを示すスコープ選択情報、前記包含関係情報、及び前記事象数情報に基づいて、選択された前記スコープから遷移した前記各スコープの前記自己事象数を示す第２の階層画像を生成するための第２の表示情報を生成する第２の生成部と、
を備える情報生成システム。
【請求項２】
前記包含関係において１つの前記スコープが複数の経路で遷移する場合に、
前記第１の生成部は、前記複数の経路で遷移した前記スコープの前記合計事象数が前記各経路における前記各合計事象数の合計となるように前記第１の表示情報を生成し、
前記第２の生成部は、前記複数の経路で遷移した前記スコープから遷移した前記スコープの前記自己事象数が、前記各経路における前記各自己事象数の合計となるように前記第２の表示情報を生成する、
請求項１に記載の情報生成システム。
【請求項３】
前記包含関係において１つの前記スコープが複数の経路で遷移する場合に、
前記第１の生成部は、前記複数の経路で遷移した前記スコープの前記合計事象数が前記経路毎に示されるように前記第１の表示情報を生成し、
前記第２の生成部は、前記複数の経路で遷移した前記スコープから遷移した前記スコープの前記自己事象数が前記経路毎に示されるように前記第２の表示情報を生成する、
請求項１に記載の情報生成システム。
【請求項４】
前記包含関係情報に基づいて、前記包含関係を示す包含関係画像を生成するための第３の表示情報を生成する第３の生成部、
を更に備え、
前記選択部は、前記スコープの選択時に前記包含関係画像を参照できるように構成される、
請求項１〜３のいずれか１項に記載の情報生成システム。
【請求項５】
情報処理端末と、
前記情報処理端末とネットワークを介して接続するサーバと、
を備え、
前記サーバは、前記第１の表示情報又は前記第２の表示情報を生成するための処理の少なくとも一部を行い、
前記第１の階層画像及び前記第２の階層画像は、前記情報処理端末の表示部に表示され、
前記スコープの選択は、前記情報処理端末の入力部を介して行われる、
請求項１〜４のいずれか１項に記載の情報生成システム。
【請求項６】
ソースコード内の複数のスコープ間の包含関係を示す包含関係情報と、１つの前記スコープの事象数を示す自己事象数及び１つの前記スコープから遷移した全ての前記スコープの前記各自己事象数を合計した合計事象数を含む事象数情報とを取得するステップと、
前記事象数情報に基づいて、前記各スコープの前記合計事象数を示す第１の階層画像を生成するための第１の表示情報を生成するステップと、
前記第１の階層画像から前記スコープを選択するステップと、
選択された前記スコープを示すスコープ選択情報、前記包含関係情報、及び前記事象数情報に基づいて、選択された前記スコープから遷移した前記各スコープの前記自己事象数を示す第２の階層画像を生成するための第２の表示情報を生成するステップと、
を含む情報生成方法。
【請求項７】
コンピュータに、
ソースコード内のスコープ間の包含関係を示す包含関係情報と、１つの前記スコープの事象数を示す自己事象数及び１つの前記スコープから遷移した全ての前記スコープの前記各自己事象数を合計した合計事象数を含む事象数情報とを取得する処理と、
前記事象数情報に基づいて、前記各スコープの前記合計事象数を示す第１の階層画像を生成するための第１の表示情報を生成する処理と、
前記第１の階層画像から前記スコープを選択する処理と、
選択された前記スコープを示すスコープ選択情報、前記包含関係情報、及び前記事象数情報に基づいて、選択された前記スコープから遷移した前記各スコープの前記自己事象数を示す第２の階層画像を生成するための第２の表示情報を生成する処理と、
を実行させる情報生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報生成システム、方法、及びプログラムに関する。
【背景技術】
【０００２】
プログラムの開発、検査等を行うために、プログラムの構成を視覚的に表現するシステムが利用される。例えば、関数呼び出し関連図上に各関数の呼び出し回数、実行ステップ数、及びその関数から遷移する全ての関数の実行ステップ数の合計を表示し、関数呼出し関連図上で解析範囲を指定するシステムがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２０３５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記システムのように、関数呼び出し関連図、すなわちソースコード内のスコープ（関数等）の遷移を時系列で示す情報（実行トレース情報）上で解析範囲を指定する構成においては、膨大な実行トレース情報全体を解析対象とする場合等には、情報を絞り込む作業の効率性を向上させることはできない。呼び出し回数、実行ステップ数等の事象数は、絞込作業を行う際に有用な情報となり得るが、単に表示されるだけはユーザにとって十分でない場合がある。
【０００５】
そこで、以下の実施形態では、情報を絞り込む作業の効率性を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
実施形態の情報生成システムは、取得部と、第１の生成部と、選択部と、第２の生成部とを備える。取得部は、ソースコード内の複数のスコープ間の包含関係を示す包含関係情報と、１つのスコープの事象数を示す自己事象数及び１つのスコープから遷移した全てのスコープの各自己事象数を合計した合計事象数を含む事象数情報とを取得する。第１の生成部は、事象数情報に基づいて、各スコープの合計事象数を示す第１の階層画像を生成するための第１の表示情報を生成する。選択部は、第１の階層画像からスコープを選択する操作を受け付ける。第２の生成部は、選択されたスコープを示すスコープ選択情報、包含関係情報、及び事象数情報に基づいて、選択されたスコープから遷移した各スコープの自己事象数を示す第２の階層画像を生成するための第２の表示情報を生成する。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係る情報生成システムのハードウェア構成を例示する図。
【図２】第１の実施形態に係る情報処理端末及びサーバの内部構成を例示する図。
【図３】第１の実施形態に係る情報生成システムの機能的構成を例示する図。
【図４】第１の実施形態に係る情報生成システムによる処理の流れを例示するフローチャート。
【図５】第１の実施形態に係るソースコードとスコープとの関係を例示する図。
【図６】第１の実施形態に係る包含関係情報の概念的構成を例示する図。
【図７】第１の実施形態に係る事象数情報の構成を例示する図。
【図８】第１の実施形態に係る第１の階層画像を例示する図。
【図９】第１の実施形態に係る第１の階層画像からスコープを選択する際の状況を例示する図。
【図１０】第１の実施形態に係る第２の階層画像を例示する図。
【図１１】第２の実施形態に係るソースコードとスコープとの関係を例示する図。
【図１２】第２の実施形態に係る包含関係情報の概念的構成を例示する図。
【図１３】第２の実施形態に係る包含関係情報の具体的なデータ構成の第１の例を例示する図。
【図１４】第２の実施形態に係る包含関係情報の具体的なデータ構成の第２の例を例示する図。
【図１５】第２の実施形態に係る包含関係情報の具体的なデータ構成の第３の例を例示する図。
【図１６】第２の実施形態に係る事象数情報の構成を例示する図。
【図１７】第２の実施形態に係る第１の階層画像を例示する図。
【図１８】第２の実施形態に係る第１の階層画像からスコープを選択する際の状況を例示する図。
【図１９】第２の実施形態に係る第２の階層画像を例示する図。
【図２０】第３の実施形態に係る事象数情報の構成を例示する図。
【図２１】第３の実施形態の第１の例に係る第１の階層画像を例示する図。
【図２２】第３の実施形態の第１の例に係る第１の階層画像からスコープを選択する際の状況を例示する図。
【図２３】第３の実施形態の第１の例に係る第２の階層画像を例示する図。
【図２４】第３の実施形態の第２の例に係る第１の階層画像を例示する図。
【図２５】第３の実施形態の第２の例に係る第２の階層画像を例示する図。
【図２６】第４の実施形態に係る情報生成システムの機能的構成を例示する図。
【図２７】第４の実施形態に係る表示部により表示される第１の例に係る選択画面を例示する図。
【図２８】第４の実施形態に係る表示により表示される第２の例に係る選択画面を例示する図。
【発明を実施するための形態】
【０００８】
（第１の実施形態）
図１は、第１の実施形態に係る情報生成システム１のハードウェア構成を例示する図である。本例の情報生成システム１は、情報処理端末１１、サーバ１２、及びネットワーク１３を含む。情報処理端末１１は、ユーザが使用するＰＣ（Personal  Computer）、タブレット、スマートフォン等であり得る。サーバ１２は、情報生成システム１の管理者が管理するサーバコンピュータ等であり得る。情報処理端末１１とサーバ１２とは、インターネット、ＬＡＮ(Local  Area  Network）等のネットワーク１３を介して接続されている。なお、同図においては、情報処理端末１１及びサーバ１２がそれぞれ１つずつ記載されているが、それらの両方又は一方が複数存在してもよい。
【０００９】
図２は、第１の実施形態に係る情報処理端末１１及びサーバ１２の内部構成を例示する図である。情報処理端末１１及びサーバ１２は、ＣＰＵ（Central  Processing  Unit）２１、ＲＯＭ（Read  Only  Memory）２２、ＲＡＭ（Random  Access  Memory）２３、入力デバイス２４、出力デバイス２５、通信Ｉ／Ｆ（Interface）２６、及びバス２７を含む。ＣＰＵ２１は、ＲＯＭ２２等に記憶された制御プログラムに従ってＲＡＭ２３をワーキングエリアとして所定の演算処理を行う。入力デバイス２４は、外部から情報を入力するためのデバイスであり、例えばキーボード、マウス、タッチパネル等である。出力デバイス２５は、内部で生成した情報を外部に出力するためのデバイスであり、例えばディスプレイ、プリンタ等である。通信Ｉ／Ｆ２６は、ネットワークを介して外部の装置との間で情報の送受信を可能にするデバイスである。
【００１０】
図３は、第１の実施形態に係る情報生成システム１の機能的構成を例示する図である。情報生成システム１は、取得部１０１、第１の生成部１０２、選択部１０３、第２の生成部１０４、及び表示部１０５を含む。
【００１１】
取得部１０１は、包含関係情報及び事象数情報を取得する。
【００１２】
包含関係情報とは、複数のスコープ間の包含関係を示す情報である。スコープとは、ソースコード内の連続区間を示す範囲である。スコープは、例えば、関数単位で区切られた範囲、関数内でループ処理、分岐処理等で区切られた範囲、関数内でループ処理、分岐処理等に含まれない範囲等である。スコープの設定の仕方はこれらに限られるものではなく、ソースコードの形態等に合わせて適宜設定され得るものである。包含関係とは、あるスコープがどのスコープを呼び出すか、又はあるスコープがどのスコープから呼び出されるかを示す関係であり、各スコープが遷移する経路を示すものである。包含関係は、呼び出し関係、親子関係、入れ子関係等と称される場合もある。包含関係情報の取得方法は特に限定されるべきものではないが、例えばソースコード（ソフトウェア）の実行トレース情報等から取得することができる。
【００１３】
事象数情報とは、各スコープの事象数に関する情報であり、各スコープの自己事象数及び合計事象数を示す情報である。事象数とは、ソースコードを実行することで得られる数値、及びソースコードを実行せずに得られる数値を含む。ソースコードを実行することで得られる数値としては、スコープの実行回数、サイクル数、メモリアクセス数、メモリサイズ等が挙げられる。ソースコードを実行せずに得られる数値としては、スコープが示すソースコードの行数、スコープ内で実行される命令数等が挙げられる。自己事象数とは、１つのスコープの事象数を示す値である。合計事象数とは、１つのスコープから遷移した全てのスコープの各自己事象数を合計した値である。事象数は、通常、事象の種類（スコープの実行回数、サイクル数、メモリアクセス数、メモリサイズ、行数、命令数等）毎に異なる。従って、事象の種類毎に複数の事象数情報が生成されてもよい。
【００１４】
取得部１０１は、例えばＣＰＵ２１、ＲＯＭ２２又はＲＡＭ２３に記憶された制御プログラム、ワーキングエリアとして使用されるＲＡＭ２３、ユーザにより操作される入力デバイス２４及び出力デバイス２５等の協働により構成される。ここでの「取得」には、外部からデータを受信すること、及び内部でデータを生成することが含まれる。すなわち、包含関係情報及び事象数情報は、情報生成システム１以外のシステム、装置、又は方法によって生成されてもよいし、情報生成システム１内で生成されてもよい。包含関係情報及び事象数情報の生成方法は特に限定されるものではなく、包含関係情報及び事象数情報は公知又は新規の技術を用いて適宜生成されればよい。例えば、事象数情報は、事象の種類毎に複数生成され、ユーザが指定する事象の種類に対応する事象数情報が選択的に取得されるようになされてもよい。
【００１５】
第１の生成部１０２は、事象数情報に基づいて、各スコープの合計事象数を示す第１の階層画像を生成するための第１の表示情報を生成する。第１の階層画像により、複数のスコープ間における合計事象数の相違が視覚的に把握できるようになる。第１の生成部１０２は、例えばＣＰＵ２１、制御プロプグラム、ＲＡＭ２３等の協働により構成される。
【００１６】
選択部１０３は、第１の階層画像からスコープを選択する操作を受け付ける。例えば、第１の階層画像中に表示されている複数のスコープを示す画像オブジェクトから、所望のスコープに対応する画像オブジェクトを選択する操作等が行われる。スコープの選択操作はこれに限られるものではなく、第１の階層画像の構成、採用されたハードウェア構成等に応じて適宜設計されるべきものである。選択部１０３は、例えばＣＰＵ２１、制御プログラム、ＲＡＭ２３、入力デバイス２４、出力デバイス２５等の協働により構成される。
【００１７】
第２の生成部１０４は、選択部１０３により選択されたスコープを示すスコープ選択情報、包含関係情報、及び事象数情報に基づいて、選択されたスコープから遷移した各スコープの自己事象数を示す第２の階層画像を生成するための第２の表示情報を生成する。第２の階層画像により、選択されたスコープから遷移したスコープの自己事象数が視覚的に把握できるようになる。第２の生成部１０２は、例えばＣＰＵ２１、制御プロプグラム、ＲＡＭ２３等の協働により構成される。
【００１８】
表示部１０５は、第１の生成部１０２により生成された第１の表示情報に基づいて第１の階層画像を表示し、第２の生成部１０４により生成された第２の表示情報に基づいて第２の階層画像を表示する。表示部１０５は、例えばＣＰＵ２１、制御プログラム、ＲＡＭ２３、出力デバイス２５等の協働により構成される。
【００１９】
図４は、第１の実施形態に係る情報生成システム１による処理の流れを例示するフローチャートである。先ず、取得部１０１が包含関係情報及び事象数情報を取得する（Ｓ１０１）。第１の生成部１０２は事象数情報に基づいて第１の表示情報を生成する（Ｓ１０２）。表示部１０５は第１の表示情報に基づいて第１の階層画像を表示する（Ｓ１０３）。その後、選択部１０３により、表示部１０５に表示された第１の階層画像を介してスコープが選択される（Ｓ１０４）。その後、第２の生成部１０４はスコープ選択情報、包含関係情報、及び事象数情報に基づいて第２の表示情報を生成する（Ｓ１０５）。表示部１０５は第２の表示情報に基づいて第２の階層画像を表示する（Ｓ１０６）。
【００２０】
図５は、第１の実施形態に係るソースコード３１とスコープ３２との関係を例示する図である。本例のソースコード３１は、２つの関数Ｆｕｎｃ＿Ａ及びＦｕｎｃ＿Ｃを含む。関数Ｆｕｎｃ＿Ａは、所定の条件を満たす場合に関数Ｆｕｎｃ＿Ｃを呼び出す分岐処理ｉｆ及びｅｌｓｅを含む。関数Ｆｕｎｃ＿Ｃは、関数Ｆｕｎｃ＿Ａにより呼び出された場合に実行される関数であり、ループ処理ｆｏｒを含む。上位スコープ３２Ａ：ＦｕｎｃＡ＿ｔｏｐは、関数Ｆｕｎｃ＿Ａの連続区間に対応する。上位スコープ３２Ａ：ＦｕｎｃＣ＿ｔｏｐは、関数Ｆｕｎｃ＿Ｃの連続区間に対応する。下位スコープ３２Ｂ：ＦｕｎｃＡ＿ｉｆは、関数Ｆｕｎｃ＿Ａ内の分岐処理ｉｆに対応する。下位スコープ３２Ｂ：ＦｕｎｃＡ＿ｅｌｓｅは、関数Ｆｕｎｃ＿Ａ内の分岐処理ｅｌｓｅに対応する。下位スコープ３２Ｂ：ＦｕｎｃＣ＿ｌｏｏｐは、関数Ｆｕｎｃ＿Ｃ内のループ処理ｆｏｒに対応する。下位スコープ３２Ｂは、分岐処理又はループ処理で区切られた範囲に対応する。上位スコープ３２Ａは、関数内の処理で分岐処理又はループ処理に含まれない範囲に対応する。スコープ３２の設定の仕方は本例に限られるものではない。例えば、スコープ３２は、関数より大きい範囲（例えばファイル）を単位として設定されてもよいし、分岐処理等より小さい範囲（例えば行）を単位として設定されてもよい。
【００２１】
図６は、第１の実施形態に係る包含関係情報３５の概念的構成を例示する図である。本例の包含関係情報３５は、図５に示す各スコープ３２の包含関係を示している。本例の包含関係情報３５は、複数のノード３６及び複数のエッジ３７を含むコールツリーの態様を有している。各ノード３６内の文字列は、図５に示す各スコープ３２の名称に対応している。図６中最上位に位置するノード３６内の文字列：ｍａｉｎに対応するスコープ３２は存在しないが、当該ノード３６：ｍａｉｎは関数Ｆｕｎｃ＿Ａ及び関数Ｆｕｎｃ＿Ｃを含むスコープ（例えばファイルに対応するスコープ）に対応するものである。各エッジ３７は、各ノード３６間を連結している。エッジ３７が示す方向は、各ノード３６（スコープ３２）間の包含関係（呼び出し関係、親子関係等とも称される）を示している。各ノード３６及び各エッジ３７により、各スコープ３２の遷移の経路を特定することができる。
【００２２】
例えば、ノード３６Ａ，３６Ｂ，３６Ｅ及びエッジ３７Ａ，３７Ｄは、ＦｕｎｃＡ＿ｔｏｐがＦｕｎｃＡ＿ｉｆ及びＦｕｎｃＡ＿ｅｌｓｅを呼び出すことを示している。ノード３６Ｂ，３６Ｃ，３６Ｄ及びエッジ３７Ｂ，３７Ｃは、ＦｕｎｃＡ＿ｉｆがＦｕｎｃＣ＿ｔｏｐを呼び出し、ＦｕｎｃＣ＿ｔｏｐがＦｕｎｃＣ＿ｌｏｏｐを呼び出すことを示している。
【００２３】
なお、図６は包含関係情報３５の概念的構成を例示するものであり、包含関係情報３５の具体的なデータ構成は、このような概念的構成を客観的に認識できる範囲内において様々な態様を取り得るものである。
【００２４】
図７は、第１の実施形態に係る事象数情報４１の構成を例示する図である。本例の事象数情報４１は図６に示す包含関係情報３５に対応している。事象数情報４１は、スコープ名（Ｓｃｏｐｅ  Ｎａｍｅ）４２、自己事象数（Ｓｅｌｆ  Ｖａｌｕｅ）４３、及び合計事象数（Ｔｏｔａｌ  Ｖａｌｕｅ）４４を対応付けるように構成されている。事象数情報４１は、事象の種類毎に準備されていてもよい。
【００２５】
自己事象数４３は、１つのスコープ３２の事象数を示す値である。合計事象数４４は、１つのスコープ３２から遷移した全てのスコープ３２の各自己事象数４３を合計した値である。「１つのスコープ３２から遷移した全てのスコープ３２の各自己事象数４３」には、自己のスコープ３２の自己事象数４３も含まれる。本例の事象数情報４１において、例えば、スコープＦｕｎｃＡ＿ｉｆの自己事象数４３は「１５」であり、合計事象数４４は「９０」であることが示されている。当該合計事象数４４：「９０」は、スコープＦｕｎｃＡ＿ｉｆの自己事象数４３：「１５」、スコープＦｕｎｃＣ＿ｔｏｐの自己事象数４３：「１５」、及びスコープＦｕｎｃＣ＿ｌｏｏｐの自己事象数４３：「６０」を合算した値である。他の合計事象数４４についても同様である。
【００２６】
図８は、第１の実施形態に係る第１の階層画像４５を例示する図である。第１の階層画像４５は、各スコープ３２の合計事象数４４を視覚的に把握できるようにする画像である。本例の第１の階層画像４５は、図７に示す事象数情報４１に対応している。第１の階層画像４５の横軸はスコープ名４２に対応し、縦軸は合計事象数４４に対応している。本例では、各スコープ３２と各合計事象数４４との関係を示す画像オブジェクトとして棒グラフが用いられているが、これに限られるものではない。第１の階層画像４５は、例えばユーザが使用する情報処理端末１１のディスプレイ等に表示されることが好ましいが、これに限られるものではない。第１の階層画像４５を生成するための第１の表示情報を生成する処理の少なくとも一部はサーバ１２により行われることが好ましいが、これに限られるものではない。事象の種類毎に複数の事象数情報４１が準備されている場合には、事象数情報４１毎に第１の階層画像４５を生成し、任意の第１の階層画像４５を表示できるようになされてもよい。
【００２７】
図９は、第１の実施形態に係る第１の階層画像４５からスコープ３２を選択する際の状況を例示する図である。本例では、第１の階層画像４５から下位スコープ３２Ｂ：ＦｕｎｃＡ＿ｉｆに対応する画像オブジェクトが選択されている。当該選択作業の具体的方法は特に限定されるべきものではないが、例えば情報処理端末１１のポインティングデバイス（マウス、タッチパネル等）、キーボード等を利用して行うことができる。このとき、選択されたスコープ３２に対応する画像オブジェクトの表示方式を他のスコープ３２に対応する画像オブジェクトの表示方式と異ならせることが好ましい。このような第１の階層画像４５を利用することにより、ユーザは合計事象数４４を参照しながらより詳細に検査すべきスコープ３２を判断し、選択することができる。
【００２８】
図１０は、第１の実施形態に係る第２の階層画像４８を例示する図である。第２の階層画像４８は、第１の階層画像４５から選択されたスコープ３２（ＦｕｎｃＡ＿ｉｆ）に含まれる各スコープ３２（ＦｕｎｃＡ＿ｉｆ，ＦｕｎｃＣ＿ｔｏｐ，ＦｕｎｃＣ＿ｌｏｏｐ）の各自己事象数４３を視覚的に把握できるようにする画像である。第２の階層画像４８は、選択されたスコープ３２（ＦｕｎｃＡ＿ｉｆ）を示すスコープ選択情報、包含関係情報３５、及び事象数情報４１に基づいて生成される第２の表示情報に基づいて生成される。すなわち、包含関係情報３５に基づいて、スコープ選択情報により特定されるスコープ３２（ＦｕｎｃＡ＿ｉｆ）から遷移されたスコープ（ＦｕｎｃＡ＿ｉｆ，ＦｕｎｃＣ＿ｔｏｐ，ＦｕｎｃＣ＿ｌｏｏｐ）を特定し、事象数情報４１に基づいて、これらの遷移されたスコープの自己事象数（１５，１５，６０）を特定する。第２の階層画像４８の横軸はスコープ名４２に対応し、縦軸は自己事象数４３に対応している。本例では、各スコープ３２と各自己事象数４３との関係を示す画像オブジェクトとして棒グラフが用いられているが、これに限られるものではない。第２の階層画像４８は、第１の階層画像４５と同様に、情報処理端末１１のディスプレイ等に表示されることが好ましいが、これに限られるものではない。第２の表示情報を生成する処理の少なくとも一部はサーバ１２により行われることが好ましいが、これに限られるものではない。これにより、ユーザは所望のスコープ３２についての詳細な情報を取得することができる。
【００２９】
なお、図１及び図２に示すハードウェア構成は一例であり、情報生成システム１は、様々なハードウェア構成により実現することができる。例えば、情報生成システム１は、単体の汎用コンピュータ、組み込みプロセッサを有する専用装置等により構成されてもよい。
【００３０】
図３には、情報生成システム１の基本的な機能ブロックである取得部１０１、第１の生成部１０２、選択部１０３、第２の生成部１０４、及び表示部１０５を処理の順序例に沿って接続した構成が示されているが、実施形態はこれに限らない。例えば、各機能ブロックが協調しながら並列的に動作を行う構成、機能ブロックの順序を入れ替える構成、１つの機能ブロックを複数の機能ブロックに分割する構成、これら３つの構成を組み合わせた構成等であってもよい。
【００３１】
情報生成システム１の機能を実現させる制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供することができる。また、制御プログラムは、ネットワークに接続された所定の記憶装置から所定のコンピュータにダウンロードすることにより提供されてもよいし、予めＲＯＭ等に組み込まれて所定の情報処理装置に提供されてもよい。また、制御プログラムは、上記取得部１０１、第１の生成部１０２、選択部１０３、第２の生成部１０４、及び表示部１０５の機能を実現する複数のモジュールから構成されてもよい。
【００３２】
本実施形態によれば、ユーザは各スコープ３２の合計事象数４４を示す第１の階層画像４５から所望のスコープ３２を選択することができる。そして、選択したスコープ３２から遷移した各スコープ３２の自己事象数４３を確認することができる。これにより、情報を絞り込む作業の効率性を向上させることが可能となる。
【００３３】
以下に、他の実施形態について図面を参照して説明するが、上記第１の実施形態と同一又は同様の箇所については同一の符号を付してその説明を省略する場合がある。
【００３４】
（第２の実施形態）
図１１は、第２の実施形態に係るソースコード５１とスコープ５２との関係を例示する図である。本例のソースコード５１は、３つの関数Ｆｕｎｃ＿Ａ、Ｆｕｎｃ＿Ｂ、及びＦｕｎｃ＿Ｃを含む。関数Ｆｕｎｃ＿Ａは、所定の条件を満たす場合に関数Ｆｕｎｃ＿Ｃを呼び出す分岐処理ｉｆ及びｅｌｓｅを含む。関数Ｆｕｎｃ＿Ｂは、関数Ｆｕｎｃ＿Ａを呼び出す処理を含む。関数Ｆｕｎｃ＿Ｃは、関数Ｆｕｎｃ＿Ａにより呼び出された場合に実行される関数であり、ループ処理ｆｏｒを含む。上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐは、関数Ｆｕｎｃ＿Ａの連続区間に対応する。上位スコープ５２Ａ：ＦｕｎｃＢ＿ｔｏｐは、関数Ｆｕｎｃ＿Ｂの連続区間に対応する。上位スコープ５２Ａ：ＦｕｎｃＣ＿ｔｏｐは、関数Ｆｕｎｃ＿Ｃの連続区間に対応する。下位スコープ５２Ｂ：ＦｕｎｃＡ＿ｉｆは、関数Ｆｕｎｃ＿Ａ内の分岐処理ｉｆに対応する。下位スコープ５２Ｂ：ＦｕｎｃＡ＿ｅｌｓｅは、関数Ｆｕｎｃ＿Ａ内の分岐処理ｅｌｓｅに対応する。下位スコープ５２Ｂ：ＦｕｎｃＣ＿ｌｏｏｐは、関数Ｆｕｎｃ＿Ｃ内のループ処理ｆｏｒに対応する。
【００３５】
図１２は、第２の実施形態に係る包含関係情報５５の概念的構成を例示する図である。本例の包含関係情報５５は、図１１に示す各スコープ５２の包含関係を示しており、複数のノード５６及び複数のエッジ５７を含むコールツリーの態様を有している。
【００３６】
本実施形態は、１つのスコープ５２が複数の経路で遷移する場合に関するものである。本例の包含関係情報５５には、上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐがｆｉｌｅ（ｍａｉｎ）から遷移する経路と、上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐが上位スコープ５２Ａ：ＦｕｎｃＢ＿ｔｏｐから遷移する経路とが含まれている。これに伴い、下位スコープ５２Ｂ：ＦｕｎｃＡ＿ｅｌｓｅの遷移経路も２つ存在している。本例の包含関係情報５５には、上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐに対応する２つのノード５６Ａ，５６Ｂ、及び下位スコープ５２Ｂ：ＦｕｎｃＡ＿ｅｌｓｅに対応する２つのノード５６Ｃ，５６Ｄが含まれている。
【００３７】
図１３は、第２の実施形態に係る包含関係情報５５の具体的なデータ構成の第１の例を例示する図である。本例の包含関係情報５５Ａは、呼び出し元のスコープ５２を特定する文字列（呼び出し元スコープ）と、呼び出し先のスコープ５２を特定する文字列（呼び出し先スコープ）との対応関係を示すデータである。
【００３８】
図１４は、第２の実施形態に係る包含関係情報５５の具体的なデータ構成の第２の例を例示する図である。本例の包含関係情報５５Ｂは、ノード５６（スコープ５２）を特定する文字列毎に、そのノード５６に至るまでの遷移経路を示す情報が示されたデータである。
【００３９】
図１５は、第２の実施形態に係る包含関係情報５５の具体的なデータ構成の第３の例を例示する図である。本例の包含関係情報５５Ｃは、スコープ名５８、左端座標５９、及び右端座標６０を含む。スコープ名５８は、各スコープ５２を特定する文字列である。左端座標５９は、各スコープ５２の開始位置を示す情報であり、例えば仮想座標５４上の位置を示す値、ソースコード５１の行番号、時間情報等であってもよい。右端座標６０は、各スコープ５２の終了位置を示す情報であり、例えば仮想座標５４上の位置を示す値、ソースコード５１の行番号、時間情報等であってもよい。左端座標５９及び右端座標６０に基づいて、各スコープ５２の入れ子関係を判定することができる。例えば、仮想座標５４上において、スコープ名５８：ＦｕｎｃＢ＿ｔｏｐの範囲が１２〜１７であるという情報と、スコープ名５８：ＦｕｎｃＡ＿ｔｏｐの範囲が１３〜１６であるという情報とから、上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐは上位スコープ５２Ａ：ＦｕｎｃＢ＿ｔｏｐに含まれる（から呼び出された）という関係がわかる。
【００４０】
図１６は、第２の実施形態に係る事象数情報６１の構成を例示する図である。本例の事象数情報６１は図１２に示す包含関係情報５５に対応している。上述したように、本実施形態に係る包含関係情報５５は、上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐに対応する２つのノード５６Ａ，５６Ｂ、及び下位スコープ５２Ｂ：ＦｕｎｃＡ＿ｅｌｓｅに対応する２つのノード５６Ｃ，５６Ｄを含んでいる。
【００４１】
本例の事象数情報６１において、スコープ名６２：ＦｕｎｃＡ＿ｔｏｐの自己事象数６３：「８０」は、一方のノード５６Ａに対応する自己事象数６３：「５０」と、他方のノード５６Ｂに対応する自己事象数６３：「３０」との和である。同様に、スコープ名６２：ＦｕｎｃＡ＿ｅｌｓｅの自己事象数６３：「６５」は、一方のノード５６Ｃに対応する自己事象数６３：「３５」と、他方のノード５６Ｄに対応する自己事象数６３：「３０」との和である。すなわち、本実施形態においては、１つのスコープ５２が複数の経路で遷移する（１つのスコープ５２に対して複数のノード５６が生成される）場合であっても、自己事象数６３は１つの値に纏められる。
【００４２】
また、スコープ名６２：ＦｕｎｃＡ＿ｔｏｐの合計事象数６４：「２３５」は、一方のノード５６Ａに対応する上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐの合計事象数６４（５０＋１５＋１５＋６０＋３５＝１７５）と、他方のノード５６Ｂに対応する上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐの合計事象数６４（３０＋３０＝６０）との和である。換言すれば、２つのノード５６Ａ，５６Ｂから遷移する全てのノード５６Ａ〜５６Ｇに対応する各自己事象数６３の和である。スコープ名６２：ＦｕｎｃＡ＿ｅｌｓｅの合計事象数６４：「６５」は、一方のノード５６Ｃに対応する合計事象数６４（３５）と、他方のノード５６Ｄに対応する合計事象数６４（３０）との合計である。すなわち、本実施形態においては、１つのスコープ５２が複数の経路で遷移する場合であっても、合計事象数６４は１つの値に纏められる。
【００４３】
図１７は、第２の実施形態に係る第１の階層画像６５を例示する図である。本例の第１の階層画像６５は、図１６に示す事象数情報６１に対応している。第１の階層画像６５の横軸はスコープ名６２に対応し、縦軸は合計事象数６４に対応している。本例においては、上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐの合計事象数６４が、２つのノード５６Ａ，５６Ｂのそれぞれに対応する合計事象数６４の値（１７５及び６０）が合算された値「２３５」となっている。同様に、下位スコープ５２Ｂ：ＦｕｎｃＡ＿ｅｌｓｅの合計事象数６４が、２つのノード５６Ｃ，５６Ｄのそれぞれに対応する合計事象数６４の値（３５及び３０）が合算された値「６５」となっている。
【００４４】
図１８は、第２の実施形態に係る第１の階層画像６５からスコープ５２を選択する際の状況を例示する図である。本例では、第１の階層画像６５から上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐに対応する画像オブジェクトが選択されている。
【００４５】
図１９は、第２の実施形態に係る第２の階層画像６８を例示する図である。第２の階層画像６８は、第１の階層画像６５から選択されたスコープ５２（ＦｕｎｃＡ＿ｔｏｐ）から遷移した各スコープ３２（ＦｕｎｃＡ＿ｔｏｐ，ＦｕｎｃＡ＿ｅｌｓｅ，ＦｕｎｃＡ＿ｉｆ，ＦｕｎｃＣ＿ｔｏｐ，ＦｕｎｃＣ＿ｌｏｏｐ）の自己事象数６３を視覚的に把握できるようにする画像である。第２の階層画像６８の横軸はスコープ名６２に対応し、縦軸は自己事象数６３に対応している。
【００４６】
本実施形態によれば、１つのスコープ５２が複数の経路で遷移する場合に、当該スコープ５２の自己事象数６３及び合計事象数６４がそれぞれ１つの値に纏められる。これにより、上記第１の実施形態の効果に加え、１つのスコープ５２が膨大な数の経路で遷移する場合であっても、スコープ５２の特徴を把握しやすくすることが可能となる。
【００４７】
（第３の実施形態）
図２０は、第３の実施形態に係る事象数情報７５の構成を例示する図である。本実施形態に係る事象数情報７５に対応する包含関係情報７１は、第２の実施形態と同様に、図１１に示すソースコード５１及びスコープ５２に対応するものである。すなわち、上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐが２つの経路で遷移し、下位スコープ５２Ｂ：ＦｕｎｃＡ＿ｅｌｓｅが２つの経路で遷移する。
【００４８】
本実施形態と第２の実施形態との相違点は、異なる経路で遷移した１つのスコープ５２の自己事象数７７及び合計事象数７８が、経路毎（ノード７４毎）に算出される点にある。本例の包含関係情報７１は、上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐに対応する第１のノード７４Ａ：ＦｕｎｃＡ＿ｔｏｐ＿１及び第２のノード７４Ｂ：ＦｕｎｃＡ＿ｔｏｐ＿２を含んでいる。また、包含関係情報７１は、下位スコープ５２Ｂ：ＦｕｎｃＡ＿ｅｌｓｅに対応する第１のノード７４Ｃ：ＦｕｎｃＡ＿ｅｌｓｅ＿１及び第２のノード７４Ｄ：ＦｕｎｃＡ＿ｅｌｓｅ＿２を含んでいる。本例の事象数情報７７は、第１のノード７４Ａ：ＦｕｎｃＡ＿ｔｏｐ＿１に対応する自己事象数７７：「５０」及び合計事象数７８：「１７５」を含むと共に、第２のノード７４Ｂ：ＦｕｎｃＡ＿ｔｏｐ＿２に対応する自己事象数７７：「３０」及び合計事象数７８：「６０」を含む。また、事象数情報７７は、第１のノード７４Ｃ：ＦｕｎｃＡ＿ｅｌｓｅ＿１に関する自己事象数７７：「３５」及び合計事象数７８：「３５」を含むと共に、第２のノード７４Ｄ：ＦｕｎｃＡ＿ｅｌｓｅ＿２に関する自己事象数７７：「３０」及び合計事象数７８：「３０」を含む。
【００４９】
図２１は、第３の実施形態の第１の例に係る第１の階層画像８１Ａを例示する図である。本例の第１の階層画像８１Ａは、図２０に示す事象数情報７５に対応している。第１の階層画像８１Ａの横軸はスコープ名７６に対応し、縦軸は合計事象数７８に対応している。本例においては、横軸にＦｕｎｃＡ＿ｔｏｐ＿１，ＦｕｎｃＡ＿ｔｏｐ＿２，ＦｕｎｃＡ＿ｅｌｓｅ＿１，ＦｕｎｃＡ＿ｅｌｓｅ＿２の項目が形成されている。すなわち、１つのスコープ５２が複数の経路で遷移する（１つのスコープ５２に対して複数のノード６５が生成される）場合には、合計事象数７８が経路毎に表示される。
【００５０】
図２２は、第３の実施形態の第１の例に係る第１の階層画像８１Ａからスコープ５２を選択する際の状況を例示する図である。本例では、上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐに対応する２つのノード７４Ａ，７４Ｂのうち、ノード７４Ａ：ＦｕｎｃＡ＿ｔｏｐ＿１に対応する画像オブジェクトが選択されている。
【００５１】
図２３は、第３の実施形態の第１の例に係る第２の階層画像８４Ａを例示する図である。本例の第２の階層画像８４Ａは、第１の階層画像８１Ａから選択されたスコープ５２（ノード７４Ａ：ＦｕｎｃＡ＿ｔｏｐ＿１に対応する経路で遷移した上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐ）から遷移した各スコープ５２（ＦｕｎｃＡ＿ｔｏｐ＿１，ＦｕｎｃＡ＿ｉｆ，ＦｕｎｃＣ＿ｔｏｐ，ＦｕｎｃＡ＿ｅｓｌｅ＿１，ＦｕｎｃＣ＿ｌｏｏｐ）の自己事象数７７を視覚的に把握できるようにする画像である。第２の階層画像８４Ａの横軸はスコープ名７６に対応し、縦軸は自己事象数７７に対応している。
【００５２】
図２４は、第３の実施形態の第２の例に係る第１の階層画像８１Ｂを例示する図である。本例の第１の階層画像８１Ｂの横軸は、図１７に示す第２の実施形態に係る第１の階層画像６５のように、重複するスコープ名が１つに纏められて表示されている。また、画像オブジェクトは、遷移の経路毎に表示方式が異なるように表示されている。区間８２は、ノード７４Ａに対応する経路で遷移した上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐの合計事象数７８：「１７５」を示している。区間８３は、ノード７４Ｂに対応する経路で遷移した上位スコープ５２Ａ：ＦｕｎｃＡ＿ｔｏｐの合計事象数７８：「６０」を示している。横軸「ＦｕｎｃＡ＿ｅｌｓｅ」に対応する画像オブジェクトについても同様である。
【００５３】
図２５は、第３の実施形態の第２の例に係る第２の階層画像８４Ｂを例示する図である。本例の第２の階層画像８４Ｂの横軸は、図１９に示す第２の実施形態に係る第２の階層画像６８のように、重複するスコープ名が１つに纏められて表示されている。また、画像オブジェクトは、遷移の経路毎に表示方式が異なるように表示されている。区間８５は、ノード７４Ｃに対応する経路で遷移した下位スコープ５２Ｂ：ＦｕｎｃＡ＿ｅｌｓｅの自己事象数７７：「３５」を示している。区間８６は、ノード７４Ｄに対応する経路で遷移した下位スコープ５２Ｂ：ＦｕｎｃＡ＿ｅｌｓｅの自己事象数７７：「３０」を示している。横軸「ＦｕｎｃＡ＿ｔｏｐ」に対応する画像オブジェクトも同様に、ノード７４Ａに対応する自己事象数７７：「５０」及びノード７４Ｂに対応する自己事象数７７：「３０」を示している。このような形式であっても、遷移の経路毎の事象数の変化を把握することが可能となる。
【００５４】
本実施形態によれば、１つのスコープ５２が複数の経路で遷移する場合に、当該スコープ５２の自己事象数７７及び合計事象数７８が遷移の経路毎に表示される。これにより、上記第１の実施形態の効果に加え、遷移の経路に応じた事象数の変化を把握することができ、スコープ５２の特徴をより詳細に把握することが可能となる。
【００５５】
（第４の実施形態）
図２６は、第４の実施形態に係る情報生成システム２の機能的構成を例示する図である。本実施形態に係る情報生成システム２は、第１の実施形態に係る情報生成システム１の構成に加え、第３の生成部２０６を含む。
【００５６】
第３の生成部２０６は、取得部１０１が取得した包含関係情報３５，５５に基づいて、各スコープ３２，５２の包含関係を示す包含関係画像を生成するための第３の表示情報を生成する。表示部１０５は、第３の表示情報に基づいて包含関係画像を表示する。包含関係画像は、選択部１０３により所望のスコープが選択される際に表示される。
【００５７】
図２７は、第４の実施形態に係る表示部１０５により表示される第１の例に係る選択画面９１Ａを例示する図である。本例の選択画面９１Ａには、第１の階層画像６５及び包含関係画像９３Ａが含まれている。選択画面９１Ａは、ユーザが第１の階層画像６５からスコープを選択する（所望のスコープに対応する画像オブジェクトを指定する）操作を行う際に表示されるものである。本例の第１の階層画像６５は、図１６に示す第２の実施形態に係る事象数情報６１に対応するものである。包含関係画像９３Ａは、図１２〜図１５に示す第２の実施形態に係る包含関係情報５５，５５Ａ〜５５Ｃに基づいて生成されるものである。本例の包含関係画像９３Ａは、図１２に示す包含関係情報５５のように、コールツリーの態様を有するものであるが、包含関係画像９３Ａの態様はこれに限られるものではない。選択画面９１Ａ中にこのような包含関係画像９３Ａが表示されることにより、ユーザは複数のスコープの包含関係を確認しながら所望のスコープを選択することができる。
【００５８】
図２８は、第４の実施形態に係る表示部１０５により表示される第２の例に係る選択画面９１Ｂを例示する図である。本例の選択画面９１Ｂに含まれる第１の階層画像８１Ａ及び包含関係画像９３Ｂは、図２０に示す第３の実施形態に係る事象数情報７５及び包含関係情報７１に対応するものである。本例の第１の階層画像８１Ａ及び包含関係画像９３Ｂは、第３の実施形態と同様に、異なる経路で遷移したスコープ（ＦｕｎｃＡ＿ｔｏｐ及びＦｕｎｃＡ＿ｅｌｓｅ）が識別可能となるように構成されている。本例の包含関係画像９３Ｂは、図２０に示す包含関係情報７１のように、コールツリーの態様を有するものであるが、包含関係画像９３Ｂの態様はこれに限られるものではない。このような態様の包含関係画像９３Ｂが表示されることにより、ユーザはスコープの遷移の経路を考慮して所望のスコープを選択することができる。
【００５９】
本実施形態によれば、第１の階層画像から所望のスコープを選択する際に、複数のスコープの包含関係を示す包含関係画像が表示される。これにより、情報を絞り込む作業の効率性を更に向上させることが可能となる。
【００６０】
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６１】
１，２  情報生成システム
１１  情報処理端末
１２  サーバ
１３  ネットワーク
２１  ＣＰＵ
２２  ＲＯＭ
２３  ＲＡＭ
２４  入力デバイス
２５  出力デバイス
２６  通信Ｉ／Ｆ
２７  バス
３１，５１  ソースコード
３２，５２  スコープ
３２Ａ，５２Ａ  上位スコープ
３２Ｂ，５２Ｂ  下位スコープ
３５，５５，５５Ａ〜５５Ｃ，７１  包含関係情報
３６，３６Ａ〜３６Ｅ，５６，５６Ａ〜５６Ｇ，７４，７４Ａ〜７４Ｄ  ノード
３７，３７Ａ〜３７Ｄ，５７  エッジ
４１，６１，７５  事象数情報
４２，６２，７６  スコープ名（事象数情報内）
４３，６３，７７  自己事象数
４４，６４，７８  合計事象数
４５，６５，８１Ａ，８１Ｂ  第１の階層画像
４８，６８，８４Ａ，８４Ｂ  第２の階層画像
５８  スコープ名（包含関係情報内）
５９  左端座標
６０  右端座標
８２，８３，８５，８６  区間
９１Ａ，９１Ｂ  選択画面
９３Ａ，９３Ｂ  包含関係画像
１０１  取得部
１０２  第１の生成部
１０３  選択部
１０４  第２の生成部
１０５  表示部
２０６  第３の生成部
【図１】
2017173975.tif 000003
【図２】
2017173975.tif 000004
【図３】
2017173975.tif 000005
【図４】
2017173975.tif 000006
【図５】
2017173975.tif 000007
【図６】
2017173975.tif 000008
【図７】
2017173975.tif 000009
【図８】
2017173975.tif 000010
【図９】
2017173975.tif 000011
【図１０】
2017173975.tif 000012
【図１１】
2017173975.tif 000013
【図１２】
2017173975.tif 000014
【図１３】
2017173975.tif 000015
【図１４】
2017173975.tif 000016
【図１５】
2017173975.tif 000017
【図１６】
2017173975.tif 000018
【図１７】
2017173975.tif 000019
【図１８】
2017173975.tif 000020
【図１９】
2017173975.tif 000021
【図２０】
2017173975.tif 000022
【図２１】
2017173975.tif 000023
【図２２】
2017173975.tif 000024
【図２３】
2017173975.tif 000025
【図２４】
2017173975.tif 000026
【図２５】
2017173975.tif 000027
【図２６】
2017173975.tif 000028
【図２７】
2017173975.tif 000029
【図２８】
2017173975.tif 000030