(57)【要約】【課題】プログラムの実行状況を示す画像の視認性を向上させる。【解決手段】プログラム情報生成システム１は、プログラム情報と処理情報とを取得する取得部１１と、プログラム情報に基づいてプログラムの構造を示す第１の表示画像を生成するための第１の表示情報を生成し、処理情報に基づいて処理の構造を示す第２の表示画像を生成するための第２の表示情報を生成する生成部１２と、第１の表示画像及び第２の表示画像が表示されるように表示部を制御する表示制御部１３とを備え、プログラム情報はプログラムに含まれる区間のプログラム内における位置を特定する区間情報を含み、処理情報は処理に対応する区間を特定する区間特定情報を含み、生成部１２は区間情報及び区間特定情報に基づいて区間と処理との対応関係が識別可能となるように第１の表示情報及び第２の表示情報を生成する。【選択図】図３
2016062490.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの構造を示すプログラム情報と、前記プログラムの実行により発生する処理の構造を示す処理情報とを取得する取得部と、
前記プログラム情報に基づいて前記プログラムの構造を示す第１の表示画像を生成するための第１の表示情報を生成し、前記処理情報に基づいて前記処理の構造を示す第２の表示画像を生成するための第２の表示情報を生成する生成部と、
前記第１の表示情報に基づいて前記第１の表示画像が表示されるように、且つ前記第２の表示情報に基づいて前記第２の表示画像が表示されるように表示部を制御する表示制御部とを備え、
前記プログラム情報は、前記プログラムに含まれる１つ以上の区間の前記プログラム内における位置を特定する区間情報を含み、
前記処理情報は、前記処理に対応する前記区間を特定する区間特定情報を含み、
前記生成部は、前記区間情報及び前記区間特定情報に基づいて、前記区間と前記処理との対応関係が識別可能となるように前記第１の表示情報及び前記第２の表示情報を生成する
プログラム情報生成システム。
【請求項２】
前記取得部は、１つ以上の前記処理から選択された処理を特定する選択情報を更に取得し、
前記生成部は、前記選択情報により特定される前記処理と前記区間との対応関係が識別可能となるように前記第１の表示情報及び前記第２の表示情報を生成する
請求項１に記載のプログラム情報生成システム。
【請求項３】
前記処理情報から前記区間特定情報を抽出する抽出部と、
抽出された前記区間特定情報により特定される前記処理に対応する前記区間が特定可能となるように前記プログラム情報を再構成する再構成部と
を更に備える請求項１又は２に記載のプログラム情報生成システム。
【請求項４】
前記生成部は、前記プログラムの実行状態を示す特徴量情報に基づいて、所定の状態にある前記処理又はこれに対応する前記区間が識別可能となるように前記第１の表示情報又は前記第２の表示情報を生成する
請求項１〜３のいずれか１項に記載のプログラム情報生成システム。
【請求項５】
前記特徴量情報は、前記プログラムの実行時間に基づいて検出されるレイテンシである
請求項４に記載のプログラム情報生成システム。
【請求項６】
前記第１の表示画像は、前記区間に対応する区間オブジェクトを含み、
前記第２の表示画像は、前記処理に対応する処理オブジェクトを含み、
前記生成部は、識別可能にされる前記区間オブジェクト又は前記処理オブジェクトを他の前記区間オブジェクト又は前記処理オブジェクトとは異なる表示方式で表示するように前記第１の表示情報又は前記第２の表示情報を生成する
請求項１〜５のいずれか１項に記載のプログラム情報生成システム。
【請求項７】
ユーザが使用する情報処理端末と、前記情報処理端末とネットワークを介して接続されたサーバとを備え、
前記第１の表示情報及び前記第２の表示情報の少なくとも一方を生成するための処理の少なくとも一部が前記サーバにより行われ、
前記第１の表示画像及び前記第２の表示画像が前記情報処理端末の前記表示部に表示される
請求項１〜６のいずれか１項に記載のプログラム情報生成システム。
【請求項８】
コンピュータを利用してプログラムの実行状況を示す情報を生成する方法であって、
プログラムの構造を示すプログラム情報を取得する工程と、
前記プログラムの実行により発生する処理の構造を示す処理情報を取得する工程と、
前記プログラム情報に基づいて前記プログラムの構造を示す第１の表示画像を生成するための第１の表示情報を生成する工程と、
前記処理情報に基づいて前記処理の構造を示す第２の表示画像を生成するための第２の表示情報を生成する工程と、
前記第１の表示情報に基づいて前記第１の表示画像が表示されるように表示部を制御する工程と、
前記第２の表示情報に基づいて前記第２の表示画像が表示されるように前記表示部を制御する工程とを備え、
前記プログラム情報は、前記プログラムに含まれる１つ以上の区間の前記プログラム内における位置を特定する区間情報を含み、
前記処理情報は、前記処理に対応する前記区間を特定する区間特定情報を含み、
前記第１の表示情報及び前記第２の表示情報は、前記区間情報及び前記区間特定情報に基づいて、前記区間と前記処理との対応関係が識別可能となるように生成される
プログラム情報生成方法。
【請求項９】
コンピュータに、
プログラムの構造を示すプログラム情報を取得する処理と、
前記プログラムの実行により発生する処理の構造を示す処理情報を取得する処理と、
前記プログラム情報に基づいて前記プログラムの構造を示す第１の表示画像を生成するための第１の表示情報を生成する処理と、
前記処理情報に基づいて前記処理の構造を示す第２の表示画像を生成するための第２の表示情報を生成する処理と、
前記第１の表示情報に基づいて前記第１の表示画像が表示されるように表示部を制御する処理と、
前記第２の表示情報に基づいて前記第２の表示画像が表示されるように前記表示部を制御する処理とを実行させるためのプログラム情報生成プログラムであって、
前記プログラム情報は、前記プログラムに含まれる１つ以上の区間の前記プログラム内における位置を特定する区間情報を含み、
前記処理情報は、前記処理に対応する前記区間を特定する区間特定情報を含み、
前記第１の表示情報及び前記第２の表示情報は、前記区間情報及び前記区間特定情報に基づいて、前記区間と前記処理との対応関係が識別可能となるように生成される
プログラム情報生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プログラムの実行状況を示す情報を生成するプログラム情報生成システム、方法、及びプログラムに関する。
【背景技術】
【０００２】
プログラムの開発等において、プログラムの実行状況を客観的に把握できるようにする支援ツールが利用されている。例えば、プログラムの実行状況を示す画像を生成し、これをコンピュータのディスプレイ等を通してユーザに提供する装置がある。このような装置では、例えば、プログラムの全実行状況のアクティビティを示す領域と、特定範囲の詳細な実行状況を示す領域とを表示し、ユーザが全実行状況を示す領域から特定範囲を指定できるようにする装置がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７６９８６８６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記のような従来の支援ツールでは、例えばプログラムの実行により大量の処理が発生する場合に、実行状況を示す画像が煩雑となり、当該画像から必要な情報を得ることが困難となる場合がある。
【０００５】
そこで、以下の実施形態では、プログラムの実行状況を示す画像の視認性を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
実施形態のプログラム情報生成システムは、取得部と生成部と表示制御部とを含む。取得部は、プログラムの構造を示すプログラム情報と、前記プログラムの実行により発生する処理の構造を示す処理情報とを取得する。生成部は、前記プログラム情報に基づいて前記プログラムの構造を示す第１の表示画像を生成するための第１の表示情報を生成し、前記処理情報に基づいて前記処理の構造を示す第２の表示画像を生成するための第２の表示情報を生成する。表示制御部は、前記第１の表示情報に基づいて前記第１の表示画像が表示されるように、且つ前記第２の表示情報に基づいて前記第２の表示画像が表示されるように表示部を制御する。前記プログラム情報は、前記プログラムに含まれる１つ以上の区間の前記プログラム内における位置を特定する区間情報を含む。前記処理情報は、前記処理に対応する前記区間を特定する区間特定情報を含む。前記生成部は、前記区間情報及び前記区間特定情報に基づいて、前記区間と前記処理との対応関係が識別可能となるように前記第１の表示情報及び前記第２の表示情報を生成する。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態にかかるプログラム情報生成システムの構成を例示する図。
【図２】情報処理端末及びサーバのハードウェア構成を例示する図。
【図３】プログラム情報生成システムの機能的な構成を示す図。
【図４】第１のソースコードを例示する図。
【図５】第２のソースコードを例示する図。
【図６】第１のソースコード全体の区間情報を例示する図。
【図７】第２のソースコード全体の区間情報を例示する図。
【図８】第１のソースコードにおける１つの区間の区間情報を例示する図。
【図９】第１のソースコードにおける１つの区間の区間情報を例示する図。
【図１０】第２のソースコードにおける１つの区間の区間情報を例示する図。
【図１１】第２のソースコードにおける１つの区間の区間情報を例示する図。
【図１２】第２のソースコードにおける１つの区間の区間情報を例示する図。
【図１３】第１のソースコードにおける１つの区間の区間情報を例示する図。
【図１４】第１のソースコードにおける１つの区間の区間情報を例示する図。
【図１５】第１のソースコードにおける１つの区間の区間情報を例示する図。
【図１６】第２のソースコードにおける１つの区間の区間情報を例示する図。
【図１７】第２のソースコードにおける１つの区間の区間情報を例示する図。
【図１８】第２のソースコードにおける１つの区間の区間情報を例示する図。
【図１９】第２のソースコードにおける１つの区間の区間情報を例示する図。
【図２０】第１の表示方式情報を例示する図。
【図２１】処理情報を例示する図。
【図２２】処理情報を例示する図。
【図２３】処理情報を例示する図。
【図２４】処理情報を例示する図。
【図２５】処理情報を例示する図。
【図２６】処理情報を例示する図。
【図２７】処理情報を例示する図。
【図２８】処理情報を例示する図。
【図２９】処理情報を例示する図。
【図３０】処理情報を例示する図。
【図３１】処理情報を例示する図。
【図３２】処理情報を例示する図。
【図３３】処理情報を例示する図。
【図３４】処理情報を例示する図。
【図３５】処理情報を例示する図。
【図３６】処理情報を例示する図。
【図３７】第２の表示方式情報を例示する図。
【図３８】第１の表示画像を例示する図。
【図３９】第１の表示画像を表示する処理の流れを例示するフローチャート。
【図４０】第１の表示画像と第２の表示画像とが表示された画像を例示する図。
【図４１】第１の表示画像と第２の表示画像とが表示された画像を例示する図。
【図４２】第１の実施形態にかかるプログラム情報生成システムの具体例を示す図。
【図４３】第１の実施形態の具体例において第１及び第２の表示画像を表示する処理の流れを例示するフローチャート。
【図４４】第２の実施形態にかかるプログラム情報生成システムの機能的な構成を示す図。
【図４５】第２の実施形態の第１の表示例における選択情報を示す図。
【図４６】第２の実施形態の第１の表示例における区間特定情報を示す図。
【図４７】第２の実施形態の第１の表示例における第１の表示方式情報を示す図。
【図４８】第２の実施形態の第１の表示例における第１の表示画像及び第２の表示画像を例示する図。
【図４９】第２の実施形態の第２の表示例における第１の表示方式情報を示す図。
【図５０】第２の実施形態の第２の表示例における第１の表示画像及び第２の表示画像を例示する図。
【図５１】第２の実施形態の第３の表示例における選択情報を示す図。
【図５２】第２の実施形態の第３の表示例における区間特定情報を示す図。
【図５３】第２の実施形態の第３の表示例における第１の表示方式情報を示す図。
【図５４】第２の実施形態の第３の表示例における第１の表示画像及び第２の表示画像を示す図。
【図５５】第２の実施形態の第４の表示例における第１の表示方式情報を示す図。
【図５６】第２の実施形態の第４の表示例における第１の表示画像及び第２の表示画像を示す図。
【図５７】第２の実施形態の第５の表示例における第２の表示方式情報を示す図。
【図５８】第２の実施形態の第５の表示例における第１の表示画像及び第２の表示画像を示す図。
【図５９】第２の実施形態において第１及び第２の表示画像を表示する処理の流れを例示するフローチャート。
【図６０】第３の実施形態にかかるプログラム情報生成システムの機能的な構成を示す図。
【図６１】第３の実施形態における特徴量情報を生成するための式を例示する図。
【図６２】第３の実施形態における第１の表示方式情報を例示する図。
【図６３】第３の実施形態における特徴量情報を含む区間特定情報を例示する図。
【図６４】第３の実施形態における第１の表示画像及び第２の表示画像を例示する図。
【図６５】第３の実施形態において第１及び第２の表示画像を表示する処理の流れを示すフローチャート。
【図６６】第４の実施形態におけるプログラム情報生成システムの機能的な構成を示す図。
【図６７】第４の実施形態の第１の表示例における第２の表示方式情報を示す図。
【図６８】第４の実施形態の第１の表示例における第１の表示画像及び第２の表示画像を示す図。
【図６９】第４の実施形態の第２の表示例における第２の表示方式情報を示す図。
【図７０】第４の実施形態の第２の表示例における第１の表示画像及び第２の表示画像を示す図。
【図７１】第４の実施形態の第３の表示例における第２の表示方式情報を示す図。
【図７２】第４の実施形態の第３の表示例における第１の表示画像及び第２の表示画像を示す図。
【図７３】第４の実施形態において第１及び第２の表示画像を表示する処理の流れを示すフローチャート。
【図７４】第５の実施形態におけるプログラム情報生成システムの機能的な構成を示す図。
【図７５】第５の実施形態における第２の表示方式情報を例示する図。
【図７６】第５の実施形態における第１の表示画像及び第２の表示画像を例示する図。
【図７７】第５の実施形態において第１及び第２の表示画像を表示する処理の流れを示すフローチャート。
【発明を実施するための形態】
【０００８】
（第１の実施形態）
図１は、第１の実施形態にかかるプログラム情報生成システム１の構成を例示する図である。プログラム情報生成システム１は、情報処理端末２及びサーバ３を含む。情報処理端末２とサーバ３とはインターネット等のネットワーク４を介して接続されている。情報処理端末２は、ユーザが操作可能な情報処理装置であり、例えばパーソナルコンピュータ、タブレット等である。サーバ３は、情報処理端末２の表示部に表示される画像を生成するための処理の少なくとも一部を行う。なお、同図においては情報処理端末２及びサーバ３がそれぞれ１つずつ描かれているが、情報処理端末２及びサーバ３はそれぞれ複数であってもよい。
【０００９】
図２は、情報処理端末２及びサーバ３のハードウェア構成を例示する図である。情報処理端末２及びサーバ３は、通常のコンピュータに用いられる構成を有し、ＣＰＵ（Central  Processing  Unit）５、ＲＯＭ（Read  Only  Memory）６、ＲＡＭ（Random  Access  Memory）７、入力デバイス８、出力デバイス９、及び通信Ｉ／Ｆ１０を含む。ＣＰＵ５は、ＲＯＭ６等に記憶された制御プログラムに従ってＲＡＭ７をワーキングエリアとして所定の演算処理を行う。入力デバイス８は、外部から情報を入力するためのデバイスであり、例えばキーボード、マウス、タッチパネル等である。出力デバイス９は、内部で生成した情報を外部に出力するためのデバイスであり、例えばディスプレイ、プリンタ等である。通信Ｉ／Ｆ１０は、ネットワーク４を介して外部の装置との間で情報の送受信を可能にするデバイスである。
【００１０】
図３は、プログラム情報生成システム１の機能的な構成を示す図である。プログラム情報生成システム１は、取得部１１、生成部１２、及び表示制御部１３を含む。
【００１１】
取得部１１は、プログラムの実行状況を示す画像を生成するために必要な情報を取得する。当該プログラムは、検査対象となるプログラムを意味し、上記ＣＰＵ５を制御するための制御プログラムとは異なる。以下、単に「プログラム」と表記した場合は、検査対象となるプログラムを表すものとする。取得部１１は、情報処理端末２又はサーバ３のＣＰＵ５、ＲＯＭ６、ＲＡＭ７、入力デバイス８等を利用して構成される。
【００１２】
プログラムは、情報処理装置に対する命令を記述したものであり、例えばＣ言語、ＪＡＶＡ（登録商標）言語等のプログラミング言語により記述されたソースコード等である。プログラムが実行されることにより各種の処理が発生する。処理としては、例えば、制御、フィルタ、メモリアクセス等が挙げられる。処理は、イベント、タスク等と称される場合がある。また、１つの処理が複数の処理を包含してもよい。例えば、関数の１回の実行を表す「処理１」がその実行内にメモリアクセス、命令実行等の複数の処理を含む場合がある。
【００１３】
取得部１１は、プログラム情報、処理情報、及び表示方式情報を取得する。プログラム情報は、プログラムの構造に関する情報であり、区間情報を含む。区間情報とは、プログラムに含まれる１つ以上の区間のプログラム内における位置を示す情報である。区間とは、ソースコードにおいて機能の属性、目的等の観点から１つのまとまりとして分割できる連続領域である。
【００１４】
処理情報は、処理の属性等を示す情報であって、区間特定情報を含む。区間特定情報とは、処理に対応する区間を特定する情報、すなわち、各処理がどの区間の実行により発生するのかを特定する情報である。この区間特定情報によれば、ある処理を指定（選択）するとこれに対応する区間を特定することができ、逆にある区間を指定するとこれに対応する処理を特定することができる。
【００１５】
表示方式情報は、プログラムの実行状況を示す画像の表示方式を設定する情報である。この表示方式情報により、例えばプログラムの構造、処理の構造、区間と処理との対応関係、所定の条件に適合する区間又は処理等を示す画像オブジェクトの表示方式（字体、色彩、輝度、形状等）が設定される。
【００１６】
図４及び図５は、プログラム情報の元となるプログラムの第１のソースコード２１及び第２のソースコード３１を例示する図である。本例におけるプログラムは、ファイル名が“ｈｏｇｅ１．ｃ”のファイル（図４）と、ファイル名が“ｈｏｇｅ２．ｃ”のファイル（図５）の２つのファイルより成り立っている。第１及び第２のソースコード２１，３１の左側に記載されている数字は行番号を示している。この行番号は本実施形態の説明のために記載されたものであり、実際のソースコードには明示的に記載されない。
【００１７】
第１のソースコード２１は、区間２０１と区間２０２とを含んでいる。区間２０１は区間２１１を含んでおり、区間２１１は区間２２１及び区間２２２を含んでいる。同様に、第２のソースコード３１は、区間３０１と区間３０２と区間３０３とを含んでいる。区間３０１は区間３１１及び区間３１２を含み、区間３１１は更に区間３２１を含んでいる。また、区間３０３は区間３１３を含んでいる。また、第１及び第２のソースコード２１，３１自体もそれぞれ１つの区間として扱うことができる。
【００１８】
以上のように、第１及び第２のソースコード２１，３１は、１つ以上の区間が階層的に配置されるように記述されている。そこで、以下の説明では、第１及び第２のソースコード２１，３１自体をそれぞれ第１層とし、区間２０１、２０２、３０１、３０２及び３０３を第２層とし、区間２１１、３１１、３１２及び３１３を第３層とし、区間２２１、２２２及び３２１を第４層とする。第１及び第２のソースコード２１，３１（第１層）から数えてｎ（ｎは正の整数）番目の層を第ｎ層という。このように、ソースコード２１，３１の階層と各区間２０１，２０２，２１１，２２１，２２２，３０１，３０２，３０３，３１１，３１２，３１３，３２１とは対応付けられている。
【００１９】
図６〜図１９は、区間情報４１〜５４を例示している。区間情報４１〜５４は、ソースコード位置情報“Ｐｏｓｉｔｉｏｎ”、親子関係情報“Ｐａｒｅｎｔ”，“Ｃｈｉｌｄｒｅｎ”、及びパラメータ情報“Ｐａｒａｍｅｔｅｒ”を含んでいる。ソースコード位置情報は、区間がソースコード２１，３１中のどこに位置するかを示す。親子関係情報は、区間同士の親子関係を示す。パラメータ情報は、ソースコード位置情報が示す区間内で取得可能な情報であり、当該区間又はこれに対応する処理の実行状態を示す情報である。
【００２０】
区間同士の親子関係とは、上下階層との関係を示す情報である。たとえば２つの区間情報があったときに、第１の区間情報により示される第１の区間が第２の区間情報により示される第２の区間を包含している場合には、第１の区間は第２の区間の親であり、第２の区間は第１の区間の子である。同様に、第１の区間情報により示される第１の区間が第３の区間情報により示される第３の区間に包含されている場合には、第１の区間は第３の区間の子であり、第３の区間は第１の区間の親である。
【００２１】
親子関係情報は、このような親子関係（又は包含関係ともいう）を特定するために用いられる。親子関係情報は、親子関係を有する区間が存在するか否かを示す情報（存否情報）、及びこれが存在する場合には親子関係を有する区間を特定するための情報（親特定情報及び子特定情報）を含む。子特定情報は、例えば上述した第１〜第３の区間情報の例を用いて説明すると、第２の区間が包含する区間を特定するための情報を含まない。また、親特定情報は、第３の区間を包含する区間を特定するための情報を含まない。
【００２２】
なお、親子関係を有する区間情報の存在の有無を示す情報には、独立の情報だけでなく、例えば親子関係を有する区間情報を特定するための情報と空データ（ｎｕｌｌ等）との組み合わせ等を用いることができる。
【００２３】
パラメータ情報は、ソースコード位置情報が示す区間の実行中に取得可能な内部状態を示す情報、ソースコード位置情報が示す区間のソースコードから取得できる情報等を示す。前者には、例えば、ソースコード位置情報が示す区間の実行時間が含まれ得る。この実行時間に基づいて当該区間又はこれに対応する処理におけるレイテンシを検出することができる。後者には、例えば、ソースコード位置情報が示す領域内のソースコードの行数が含まれ得る。
【００２４】
図６〜図１９は、図４又は図５に示す各区間（第１及び第２のソースコード２１，３１自体も含む）についての区間情報４１〜５４を例示する図である。図６は、第１のソースコード２１全体の区間情報４１を例示する図である。図７は、第２のソースコード３１全体の区間情報４２を例示する図である。図８は、第１のソースコード２１における区間２０１の区間情報４３を例示する図である。図９は、第１のソースコード２１における区間２０２の区間情報４４を例示する図である。図１０は、第２のソースコード３１における区間３０１の区間情報４５を例示する図である。図１１は、第２のソースコード３１における区間３０２の区間情報４６を例示する図である。図１２は、第２のソースコード３１における区間３０３の区間情報４７を例示する図である。図１３は、第１のソースコード２１における区間２１１の区間情報４８を例示する図である。図１４は、第１のソースコード２１における区間２２１の区間情報４９を例示する図である。図１５は、第１のソースコード２１における区間２２２の区間情報５０を例示する図である。図１６は、第２のソースコード３１における区間３１１の区間情報５１を例示する図である。図１７は、第２のソースコード３１における区間３１２の区間情報５２を例示する図である。図１８は、第２のソースコード３１における区間３１３の区間情報５３を例示する図である。図１９は、第２のソースコード３１における区間３２１の区間情報５４を例示する図である。図６〜図１９に示す例において、左側に記載されている数字は、各情報の行番号を示している。この行番号は本実施形態の説明のために記載したものであり、実際の情報には明示的に記載されない。
【００２５】
図６〜図１９に示す例では、１行目がソースコード位置情報“Ｐｏｓｉｔｉｏｎ”を示し、２行目が親子関係情報のうち親情報“Ｐａｒｅｎｔ”を示し、３行目が親子関係情報のうち子情報“Ｃｈｉｌｄｒｅｎ”を示し、４行目以降（たとえば図６〜１２までは４〜７行目、図１３〜１９では４〜６行目まで）がパラメータ情報“Ｐａｒａｍｅｔｅｒ”を示している。
【００２６】
図６に示す第１のソースコード２１全体に対応する区間情報４１の例を用いてより詳細に説明する。１行目のソースコード位置情報は、当該区間が“ｈｏｇｅ１．ｃ”という名前のファイル（第１のソースコード２１）の１行目から３００行目までの区間に対応していることを示している。２行目の親情報は、親の区間情報がないことを示している。３行目の子情報は、ファイル“ｈｏｇｅ１．ｃ”の１行目から１００行目に対応する区間と、ファイル“ｈｏｇｅ１．ｃ”の１０２行目から３００行目までに対応する区間とが子であることを示している。
【００２７】
第１のソースコード２１に記載されている区間を参照すると、１行目から３００行目までの中に、１行目から１００行目までに対応する区間２０１と１０２行目から３００行目までに対応する区間２０２とが存在している。また、区間２０１を示す図８の区間情報４３の２行目の親情報は、“ｈｏｇｅ１．ｃ”の１行目から３００行目までに対応する区間情報が親であることが示されている。また、区間情報４１の４行目は、ファイル、関数等の名前を示す“ｎａｍｅ”が“ｈｏｇｅ１．ｃ”であることを示している。５行目は、区間情報の種類（属性）を示す“ｔｙｐｅ”が“ｆｉｌｅ”であることを示している。６行目は、当該区間がソースコードの何行分に対応しているのかを示す“ｌｉｎｅ”が３００行であることを示している。７行目は、当該区間の時間実行を示す“ｔｉｍｅ”が１０００ミリ秒であったことを示している。
【００２８】
図８〜図１２に示す区間情報４３〜４７の５行目は、当該区間の種類が関数“ｆｕｎｃｔｉｏｎ”であることを示している。図１３、図１８及び図１９に示す区間情報４８，５３，５４の４行目は、当該区間の種類が繰り返し“ｌｏｏｐ”であることを示している。図１４〜図１７に示す区間情報４９〜５２の４行目は、当該区間の種類が条件分岐“ｃｏｎｄｉｔｉｏｎ”であることを示している。
【００２９】
“ｌｏｏｐ”と“ｃｏｎｄｉｔｉｏｎ”の２種類の区間情報４８〜５４については、第１及び第２のソースコード２１，３１を参照すると分かるように、明示的な名称が付与されていない。そのため、区間情報４８〜５４には“ｎａｍｅ”が含まれていない。
【００３０】
上記のように、図４及び図５に示す第１及び第２ソースコード２１，３１を対象とするプログラム情報は、図６〜図１９に示すような区間情報４１〜５４を含む。上記のように、区間と各種パラメータ情報とを対応付けることで、プログラムの実行状態と各区間とを関連付けて抽象化することが可能となる。その結果、第１及び第２のソースコード２１，３１上の各区間がどのような状態になっているかを辿ることができる。
【００３１】
また、各区間情報４１〜５４が親子関係を持つことで、下層の区間から上層の区間までの親子関係を管理することが可能となる。そのため、下層の区間の情報を上層の区間の情報によって抽象化することが可能となる。例えば、ループが多重に入り組んだ構造を表示する場合、最上位のループの情報に下層の区間の情報もまとめて表示することで、より見やすく表示することができる。逆に、上層の区間の情報を下層の区間の情報によって詳細化することもできる。
【００３２】
図２０は、プログラムの構造を示す画像（後述する第１の表示画像１０１）の表示方式を決定する第１の表示方式情報５７を例示する図である。第１の表示方式情報５７の１行目は、“ｎａｍｅ”の内容をテキスト形式で表示することを示している。また、２行目は、区間情報４１〜５４が“ｎａｍｅ”を含まない場合には“ｔｙｐｅ”の内容を表示することを示している。
【００３３】
また、第１の表示方式情報５７は、上記の他にも、ソースコード位置情報に対して同じ親を持ち且つ同じ深さの区間を昇順に表示することを示す“ｐｏｓｉｔｉｏｎ：ｏｒｄｅｒ”、区間を示すオブジェクト（後述する区間オブジェクト１１１）の長さを“ｔｉｍｅ”の値に応じて変化させることを示す“ｔｉｍｅ：ｌｅｎｇｔｈ”等を含んでもよい。例えば、“ｐｏｓｉｔｉｏｎ：ｏｒｄｅｒ”は、ソースコード位置情報が示す開始位置に基づいて昇順にソートすることを示す。ソースコード位置情報は、テキスト情報のファイル名と行数とを含んでいる。そこで、例えば当該テキスト情報に基づいてアルファベット順にソートし、同じファイル名のものは更に行数でソートしてもよい。
【００３４】
また、“ｔｉｍｅ：ｌｅｎｇｔｈ”が含まれる場合には、例えば同じ親を持ち且つ同じ深さの区間に対応するオブジェクトを並べて表示する際に、“ｔｉｍｅ”の値に応じて当該オブジェクトの長さを変化させてもよい。
【００３５】
図２１〜図３６は、処理情報６１〜７６を例示する図である。本例においては、上記図４及び図５に示す第１及び第２のソースコード２１，３１の実行により発生する１６個の処理が示されている。図２１〜図３６に示す各処理情報６１〜７６には、“ＩＤ”、“Ｃａｔｅｇｏｒｙ”、“ＳｔａｒｔＴｉｍｅ”、“ＥｎｄＴｉｍｅ”、“ＴｈｒｅａｄＩＤ”、及び“Ｐｏｓｉｔｉｏｎ”で示される情報（Ｐａｒａｍｅｔｅｒ）が含まれている。ＩＤは処理単位で付された識別番号である。Ｃａｔｅｇｏｒｙは処理の内容を表す情報であり、ここでは“Ｃｏｎｔｒｏｌ”、“Ｆｉｌｔｅｒ”、及び“Ｏｔｈｅｒ”の３種類が例示されている。ＳｔａｒｔＴｉｍｅは処理が開始した時刻を示す情報である。ＥｎｄＴｉｍｅは処理が終了した時刻を示す情報である。ＴｈｒｅａｄＩＤは例えば当該処理を実行するＣＰＵのコア番号等を示す情報である。“Ｐｏｓｉｔｉｏｎ”は区間特定情報であり、処理が第１及び第２のソースコード２１，３１内のどの区間２０１〜２２２，３０１〜３２１に対応しているかを示している。
【００３６】
例えば、図２３に示す処理情報６３は、ＩＤとして「３」が割り当てられた処理は「制御」に属するものであり、時刻「５０」から開始して時刻「６０」に終了し、コア番号「２」が割り当てられたＣＰＵにより実行され、第２のソースコード３１の全体（１−３５０）、区間３０１（１−１６０）、及び区間３１２（１２１−１５０）の実行に対応することを示している。
【００３７】
図３７は、処理の構造を示す画像（後述する第２の表示画像１０２）の表示方式を決定する第２の表示方式情報７９を例示する図である。本例の第２の表示方式情報７９は、処理の構造をリスト形式で表示することを示している。リスト形式とは、ＩＤを昇順で表示する形式である。
【００３８】
上述したような区間情報４１〜５４を含むプログラム情報、処理情報６１〜７６、表示方式情報５７，７９等の情報は、情報処理端末２、サーバ３、又は他の情報処理装置の機能を利用して取得、生成、及び記憶される。当該情報の取得、生成、及び記憶の方式は、使用される装置及びネットワークの形態、機能等に応じて適宜設計されるべきものである。例えば、プログラムは、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリ等の可搬記憶媒体から取得されてもよいし、ネットワーク４を介して取得されてもよい。また、当該情報は、ユーザの入力作業により入力されてもよいし、ネットワーク４に接続された所定の記憶装置に予め記憶されている情報を読み出してもよいし、プログラムの内容を自動的に解析するシステムを利用して生成してもよい。このように、取得部１１は、必要な情報を後述する生成部１２に受け渡すことができれば、様々な形態で構成できるものである。
【００３９】
生成部１２は、上記区間情報４１〜５４を含むプログラム情報と第１の表示方式情報５７とに基づいて、プログラムの構造を示す第１の表示画像１０１を表示するための第１の表示情報を生成する。また、生成部１２は、上記処理情報６１〜７６と第２の表示方式情報７９とに基づいて、処理の構造を示す第２の表示画像１０２を表示するための第２の表示情報を生成する。表示制御部１３は、第１の表示情報と第２の表示情報とに基づいて、第１の表示画像１０１と第２の表示画像１０２とが表示されるように、所定の表示部を制御する。所定の表示部とは、例えばユーザが使用する情報処理端末２のディスプレイ等である。図３８は、第１の表示画像１０１を例示する図である。図４０及び図４１は、第１の表示画像１０１と第２の表示画像１０２とを並べて表示した画像を例示する図である。
【００４０】
図３８に示すように、第１の表示画像１０１は複数の区間オブジェクト１１１を含んでいる。区間オブジェクト１１１とは、プログラムに含まれる各区間（区間ｈｏｇｅ１．ｃ，ｈｏｇｅ２．ｃ，２０１，２０２，２１１，２２１，２２２，３０１，３０２，３０３，３１１，３１２，３１３，３２１）のそれぞれに対応する画像オブジェクトである。各区間オブジェクト１１１の表示方式は、対応する各区間の位置（階層）、親子関係、実行時間、属性（種類名）等に応じてそれぞれ異なっている。表示方式とは、区間オブジェクト１１１の配置位置、形状、大きさ、字体、色彩、輝度等である。なお、本例の第１の表示画像１０１に記載されている括弧内の数字は、図４及び図５との対応を把握しやすいように便宜上記載したものであって、実際の画面に表示されるものではない。
【００４１】
配置位置の決定方法としては、例えば、横軸が起点区間からの深さを示し縦軸がソースコード２１，３１上の位置関係を示す座標系に区間オブジェクト１１１を配置する方法が挙げられる。起点区間とは、区間オブジェクト１１１を表示する範囲を設定するために起点となる区間であり、基準区間からの深さが同一である１つ以上の区間である。基準区間とは、例えば親を持たない区間である。
【００４２】
図６〜図１９の区間情報４１〜５４の中で基準区間となるのは、第１及び第２のソースコード２１，３１全体である。図６及び図７において、区間情報４１，４２における親情報が“ｎｏｎｅ”となっており、これらの親となる区間が存在しないことが示されている。
【００４３】
基準区間からの深さとは、ある区間から親をたどっていった結果、基準区間に至るまでの間に存在する親の数、又は基準区間からある区間まで子をたどっていった結果、ある区間に至るまでの間に存在する子の数である。ここでは、親をたどっていく場合について説明する。
【００４４】
例えば、図１４に示す区間情報４９の場合では、親情報が“ｈｏｇｅ１．ｃ  １０−８０”となっているので、区間情報４９に対応する区間２２１の親は、図１３に示す区間情報４８に対応する区間２１１であることがわかる。同様に、図１３の区間情報４８の親は、図８に示す区間情報４３に対応する区間２０１であることがわかる。また、図８の区間情報４３の親は、図６に示す区間情報４１に対応する第１のソースコード２１自体であることがわかる。第１のソースコード２１自体は基準区間であるため、図１４の区間情報４９に対応する区間２２１から基準区間までの親の数は３つとなる。よって、区間２２１の基準区間からの深さは３となる。なお、基準区間の深さは０である。
【００４５】
起点区間からの深さは、上記した基準区間からの深さの算出方式において、基準区間の替わりに起点区間を用いたものである。ただし、起点区間の選択によっては親をたどっても起点区間に到達しないものや、子をたどっても各区間情報に到達しないものもあり得る。このような区間は深さを持たないこととし、表示対象から除外してもよい。
【００４６】
以下の説明では、基準区間（第１及び第２のソースコード２１，３１自体）を起点区間と設定したと仮定する。本例では、横軸に起点区間からの深さをとるため、全ての区間情報４１〜５４について起点区間からの深さを算出する必要がある。
【００４７】
上述した図１４の区間情報４９に対応する区間２２１の深さ「３」を算出した場合と同様に他の区間の深さを算出すると、第１及び第２のソースコード２１，３１の深さは「０」、図８の区間情報４３に対応する区間２０１の深さは「１」、図９の区間情報４４に対応する区間２０２の深さは「１」、図１０の区間情報４５に対応する区間３０１の深さは「１」、図１１の区間情報４６に対応する区間３０２の深さは「１」、図１２の区間情報４７に対応する区間３０３の深さは「１」、図１３の区間情報４８に対応する区間２１１の深さは「２」、図１４の区間情報４９に対応する区間２２１の深さは「３」、図１５の区間情報５０に対応する区間２２２の深さは「３」、図１６の区間情報５１に対応する区間３１１の深さは「２」、図１７の区間情報５２に対応する区間３１２の深さは「２」、図１８の区間情報５３に対応する区間３１３の深さは「２」、図１９の区間情報５４に対応する区間３２１の深さは「３」となる。
【００４８】
上記起点区間からの深さを示す情報に基づいて、全ての区間オブジェクト１１１を横軸方向に深さ順に並べる。この段階では、同じ深さを持つ区間オブジェクト１１１は同じ場所に配置される。
【００４９】
次に、親子関係に基づく縦軸方向の配置について説明する。各区間オブジェクト１１１を長方形の領域に配置する場合、親子関係を示すために、親の区間オブジェクト１１１の縦軸方向の長さは、全ての子の区間オブジェクト１１１の縦軸の長さの和以上に設定される。全ての子の区間オブジェクト１１１は親の区間オブジェクト１１１の縦軸の範囲内に収められる。これにより、ソースコード全体の親子関係を容易に把握できるようになる。
【００５０】
次に、区間オブジェクト１１１内の表示について説明する。当該表示の方式は第１の表示方式情報５７に基づいて設定される。“ｎａｍｅ”を含む区間情報４１〜４７については、対応する区間オブジェクト１１１内に“ｎａｍｅ”の後に記載されている情報をテキストとして表示する。例えば、図６に示す区間情報４１の場合、“ｈｏｇｅ１．ｃ”をテキストとして区間オブジェクト１１１内に表示する。一方、“ｎａｍｅ”を含まない区間情報４８〜５４については、対応する区間オブジェクト１１１内に“ｔｙｐｅ”の後に記載されている情報をテキストとして表示する。例えば、図１３に示す区間情報４８の場合、“ｌｏｏｐ”をテキストとして区間オブジェクト１１１内に表示する。なお、必ずしもこのような単一的な表示方式に限定される必要はなく、様々な表示方式を組み合わせてもよい。
【００５１】
次に、同じ親を持ち且つ同じ深さの区間情報をソースコード位置情報（Ｐｏｓｉｔｉｏｎ）に含まれる開始位置に基づいて縦軸方向に並べる。ここで、深さ０の区間情報４１，４２については、両方ともソースコード２１，３１自体に対応するものであるため、開始位置の比較では縦方向の配置を決定することができない。このような場合には、“ｎａｍｅ”の“ｈｏｇｅ１．ｃ”と“ｈｏｇｅ２．ｃ”をアルファベット順にソートした結果等を利用することができる。この場合、区間情報４１（ｈｏｇｅ１．ｃ）が上に配置され、区間情報４２（ｈｏｇｅ２．ｃ）が下に配置される。なお、このような決定方法だけでなく、様々な方法が適用できる。例えば、ここでは予め表示方式が決められている場合を示したが、上記“ｐｏｓｉｔｉｏｎ：ｏｒｄｅｒ”のような記述を利用することで、第１の表示方式情報５７を参照して当該縦方向の配置を決めることも可能である。
【００５２】
図８〜図１２に示す区間情報４３〜４７に対応する区間２０１，２０２，３０１，３０２，３０３の深さは全て１である。区間情報４３，４４に対応する区間２０１，２０２の親は図６に示す区間情報４１に対応する区間（第１のソースコード２１自体：ｈｏｇｅ１．ｃ）である。区間情報４５〜４７に対応する区間３０１，３０２，３０３の親は図７に示す区間情報４２に対応する区間（第２のソースコード３１自体：ｈｏｇｅ２．ｃ）である。親の区間オブジェクト１１１の縦軸の長さの中に全ての子の区間オブジェクト１１１を入れるために、区間情報４１に対応する区間オブジェクト１１１（ｈｏｇｅ１．ｃ）と区間情報４２に対応する区間オブジェクト１１１（ｈｏｇｅ２．ｃ）との位置関係に従って、区間情報４３，４４に対応する区間オブジェクト１１１（２０１，２０２）が上に配置され、区間情報４５〜４７に対応する区間オブジェクト１１１（３０１，３０２，３０３）が下に配置される。
【００５３】
図８及び図９に示すように、区間情報４３に対応する区間２０１の開始位置は１行目であり、区間情報４４に対応する区間２０２の開始位置は１０２行目である。図３８に示すように、区間２０１，２０２は共に区間ｈｏｇｅ１．ｃの子として表示されるが、本例ではこれらの縦軸方向の配置は上記開始位置が昇順になるように設定される。すなわち、開始位置が１行目である区間２０１が上に配置され、開始位置が１０２行目である区間２０２は下に配置される。同様に、図１０〜図１２の区間情報４５〜４７に対応する区間３０１〜３０３は全て区間ｈｏｇｅ２．ｃの子であり、それぞれの開始位置は１行目、１６２行目、及び２５２行目である。そのため、区間３０１〜３０３の縦軸方向の配置は、区間ｈｏｇｅ２．ｃの縦方向の長さの範囲内において、上から区間３０１，３０２，３０３の順番で設定される。深さが２以上の区間２１１，２２１，２２２，３１１，３１２，３１３，３２１についても同様である。
【００５４】
次に、各区間情報４１〜５４に含まれる“ｔｉｍｅ”に基づいて、各区間オブジェクト１１１の縦軸の長さを変化させる。例えば、同じ親を持ち且つ同じ深さの区間の縦軸の長さを“ｔｉｍｅ”の比率に合わせて変化させる。具体的には、深さ０の区間情報４１，４２の“ｔｉｍｅ”の値はそれぞれ１０００、９０００であるため、区間ｈｏｇｅ１．ｃと区間ｈｏｇｅ２．ｃとに対応する区間オブジェクト１１１の縦軸の長さの比を１：９に設定する。なお、本例では予め表示方式が決められているが、上記“ｔｉｍｅ：ｌｅｎｇｔｈ”のような記述を利用して表示方式を決めることも可能である。
【００５５】
図８及び図９に示すように、区間ｈｏｇｅ１．ｃの子である区間２０１，２０２の“ｔｉｍｅ”の値はそれぞれ８００，２００である。そのため、区間２０１，２０２の区間オブジェクト１１１の縦軸方向の長さの比は、区間ｈｏｇｅ１．ｃの区間オブジェクト１１１の縦軸の長さの範囲内において、４：１となるように設定される。同様に、図１０〜１２に示すように、区間ｈｏｇｅ２．ｃの子である区間３０１〜３０３の“ｔｉｍｅ”の値はそれぞれ２０００，１０００，６０００である。そのため、区間３０１，３０２，３０３の区間オブジェクト１１１の縦軸方向の長さの比は、区間ｈｏｇｅ２．ｃの区間オブジェクト１１１の縦軸の長さの範囲内において、２：１：６となるように設定される。深さが２以上の区間２１１，２２１，２２２，３１１，３１２，３１３，３２１についても同様である。
【００５６】
図３９は、第１の表示画像１０１を表示する処理の流れを例示するフローチャートである。先ず、生成部１２は取得部１１から上記区間情報４１〜５４を含むプログラム情報と第１の表示方式情報５７とを取得する（Ｓ１）。次いで、生成部１２は各区間２０１〜２２２，３０１〜３２１の基準区間ｈｏｇｅ１．ｃ，ｈｏｇｅ２．ｃからの深さに基づいて各区間オブジェクト１１１の横軸上の位置を決定する（Ｓ２）。次いで、生成部１２は区間情報４１〜５４に含まれる親子関係情報“Ｐａｒｅｎｔ”，“Ｃｈｉｌｄｒｅｎ”に基づいて各区間オブジェクト１１１の縦軸上の位置を決定する（Ｓ３）。次いで、生成部１２は第１の表示方式情報５７に基づいて各区間オブジェクト１１１内の表示方式を決定する（Ｓ４）。すなわち、区間オブジェクト１１１内に表示されるテキストの字体、区間オブジェクト１１１の枠の線種、色彩、輝度、模様、形状等を決定する。ついで、生成部１２は上記ステップＳ２〜Ｓ４の内容を含む第１の表示情報を生成し、表示制御部１３はこの第１の表示情報に基づいて第１の表示画像１０１が表示されるように表示部を制御する（Ｓ５）。
【００５７】
本実施形態においては、図４０及び図４１に示すように、第１の表示画像１０１の隣に第２の表示画像１０２が表示されている。第２の表示画像１０２は１つ以上の処理オブジェクト１１２を含んでいる。処理オブジェクト１１２とは、プログラム（図４及び図５に示す第１及び第２のソースコード２１，２２）の実行により発生する各処理（図２１〜図３６の処理情報６１〜７６が示す処理）に対応する画像オブジェクトである。各処理オブジェクト１１２に付されている１〜１６の数字は、図２１〜図３６の処理情報６１〜７６に含まれる“Ｐａｒａｍｅｔｅｒ：ＩＤ”の数字に対応している。このように、第１の表示画像１０１と第２の表示画像１０２とを並べて表示することにより、プログラムの構造と処理の構造とを同時に確認することができる。
【００５８】
また、図４１において、一部の処理オブジェクト１１２Ａが他の処理オブジェクト１１２とは異なる表示方式で表示され、一部の区間オブジェクト１１１Ａ（ｈｏｇｅ２．ｃ，ｆｕｎｃＢ，ｃｏｎｄｉｔｉｏｎ，ｌｏｏｐ）が他の区間オブジェクト１１１とは異なる表示方式で表示されていることが示されている。例えば、処理オブジェクト１１２Ａの枠内が他の処理オブジェクト１１２とは異なる色彩、輝度等で表示され、区間オブジェクト１１１Ａ内のテキストが他の区間オブジェクト１１１内のテキストとは異なる自体（太字等）で表示される。
【００５９】
上記処理オブジェクト１１２Ａと区間オブジェクト１１１Ａとは対応関係を有している。すなわち、処理オブジェクト１１２Ａに対応する処理（図２５に示す処理情報６５に対応する処理）は、区間オブジェクト１１１Ａに対応する区間（図７，図１０，図１６，及び図１９に示す区間情報４２，４５，５１，５４に対応する区間ｈｏｇｅ２．ｃ，３０１，３１１，３２１）が実行されることにより発生するという対応関係が存在する。このような処理と区間との対応関係は、処理情報６１〜７６に含まれる区間特定情報“Ｐａｒａｍｅｔｅｒ：Ｐｏｓｉｔｉｏｎ”と、区間情報４１〜５４に含まれるソースコード位置情報“Ｐｏｓｉｔｉｏｎ”とに基づいて判定することができる。このように、処理と区間との対応関係を識別可能に表示することにより、プログラムの実行状況を視覚的に正確に把握することが可能となる。
【００６０】
なお、図１には、情報処理端末２とサーバ３とがネットワーク４を介して接続された構成が示されているが、プログラム情報生成システム１の実施形態はこれに限られない。例えば、インターネット等のネットワーク４を含まない構成であっても、単数又は複数のコンピュータを所定の制御プログラムにより制御することにより、上記取得部１１、生成部１２、及び表示制御部１３を実現してもよい。すなわち、プログラム情報生成システム１は、単体のハードウェアにより構成されてもよい。また、第１の表示画像１０１及び第２の表示画像１０２を表示する表示部は、様々な形態のものであってよく、必ずしも本プログラム情報生成システム１内に含まれていなくてもよい。表示部としては、例えばパーソナルコンピュータ、タブレット、スマートフォン等の任意の情報処理端末のディスプレイ、印刷装置等を利用することができる。表示制御部１３は、このような表示部に上記第１の表示情報及び第２の表示情報を出力することにより、任意の表示部に第１の表示画像１０１及び第２の表示画像１０２を表示させることができる。
【００６１】
（具体例）
図４２は、本実施形態にかかるプログラム情報生成システムの具体例を示す図である。本具体例は、上記図４１に示すような処理と区間との対応関係を示す画像を表示するための一例である。本例にかかるプログラム情報生成システム１１５は、第１の取得部１２１、第２の取得部１２２、第１の生成部１２５、第２の生成部１２６、表示制御部１２７、抽出部１３１、及び再構成部１３２を備える。
【００６２】
第１の取得部１２１は上記区間情報４１〜５４を含むプログラム情報を取得する。第２の取得部１２２は、上記処理情報６１〜７６を取得する。
【００６３】
抽出部１３１は、処理情報６１〜７６から区間特定情報“Ｐａｒａｍｅｔｅｒ：Ｐｏｓｉｔｉｏｎ”を抽出する。再構成部１３２は、抽出された区間特定情報と一致するソースコード位置情報“Ｐｏｓｉｔｉｏｎ”を有する区間の特定が可能となるように、第１の取得部１２１により取得されたプログラム情報を再構成する。
【００６４】
例えば、図２５に示すＩＤ５の処理情報６５の区間特定情報は、６〜９行目に記述されているように、“ｈｏｇｅ２．ｃ  １−３５０”、“ｈｏｇｅ２．ｃ  １−１６０”、“ｈｏｇｅ２．ｃ  ２０−１２０”、及び“ｈｏｇｅ２．ｃ  ５０−１００”である。これらの区間特定情報と一致するソースコード位置情報“Ｐｏｓｉｔｉｏｎ”を有するのは、図７，図１０，図１６，及び図１９に示す区間情報４２，４５，５１，５４に対応する区間（“ｎａｍｅ：ｈｏｇｅ２．ｃ”，“ｎａｍｅ：ｆｕｎｃＢ”，“ｔｙｐｅ：ｃｏｎｄｉｔｉｏｎ”，“ｔｙｐｅ：ｌｏｏｐ”）である。再構成部１３２は、このようにして特定された区間の区間情報にフラグを立てたり、当該区間情報を抜き出して新たな情報を生成したりする。
【００６５】
第１の生成部１２５は、再構成部１３２により再構成されたプログラム情報と第１の表示方式情報５７とに基づいて、図４１に示すような第１の表示画像１０１を表示するための第１の表示情報を生成する。第２の生成部１２６は、第２の取得部１２２により取得された処理情報６１〜７６と第２の表示方式情報７９とに基づいて、図４１に示すような第２の表示画像１０２を表示するための第２の表示情報を生成する。表示制御部１２７は、第１及び第２の表示情報に基づいて第１及び第２の表示画像１０１，１０２が表示されるように表示部を制御する。
【００６６】
図４３は、本具体例において第１及び第２の表示画像１０１，１０２を表示する処理の流れを例示するフローチャートである。第１及び第２の取得部１２１，１２２は、区間情報４１〜５４を含むプログラム情報と処理情報６１〜７６とを取得する（Ｓ１１）。抽出部１３１は、処理情報６１〜７６から区間特定情報を抽出する（Ｓ１２）。再構成部１３２は、抽出された区間特定情報に基づいて、所定の処理に対応する区間を特定できるようにプログラム情報を再構成する（Ｓ１３）。第１の生成部１２５は、再構成されたプログラム情報と第１の表示方式情報５７とに基づいて第１の表示画像１０１を表示するための第１の表示情報を生成する（Ｓ１４）。表示制御部１２７は、第１の表示情報に基づいて表示部に第１の表示画像１０１を表示する（Ｓ１５）。一方、第２の生成部１２６は、処理情報６１〜７６と第２の表示方式情報７９とに基づいて第２の表示画像１０２を表示するための第２の表示情報を生成する（Ｓ１６）。表示制御部１２７は、第２の表示情報に基づいて表示部に第２の表示画像１０２を表示する（Ｓ１７）。
【００６７】
（第２の実施形態）
以下、他の実施形態について図面を参照して説明するが、既に説明した実施形態と同一又は同様の作用効果を奏する箇所については同一の符号を付してその説明を省略する場合がある。
【００６８】
図４４は、第２の実施形態にかかるプログラム情報生成システム１４１の機能的な構成を示す図である。本実施形態にかかるプログラム情報生成システム１４１は、上記図４２に示す第１の実施形態の具体例に係るプログラム情報生成システム１１５との比較において、第３の取得部１４２と選択部１４３とを備える点で相違する。
【００６９】
第３の取得部１４２は、選択情報を取得する。選択情報とは、１つ以上の処理の中から選択された処理を特定するための情報である。選択情報としては、例えば処理情報６１〜７６に含まれるＩＤの番号を列挙したもの、正規表現形式による情報、ＸＭＬ言語におけるノード選択構文ＸＰａｔｈで記述された情報等が想定されるが、これに限られるものではない。
【００７０】
選択部１４３は、選択情報に基づいて選択された処理に対応する処理情報６１〜７６を第２の生成部１２６及び抽出部１３１に出力する。このとき、選択された処理に関する情報のみを出力してもよいし、選択された処理を特定できるようにフラグを立てて全て又は一部の処理情報６１〜７６を出力してもよい。なお、選択情報によっては１つも処理情報を選択できない場合もあり得る。そのような場合には、例えば警告情報を表示部に表示させる等の応答を行うことが好ましい。
【００７１】
（第１の表示例）
図４５は、第１の表示例における選択情報４０１を示す図である。本例の選択情報４０１はＩＤが５である処理を選択することを示している。このような選択は、例えばユーザがマウス、タッチパネル、キーボード等を用いて画面上で行うことが可能であるが、これに限られるものではない。例えば、所定の条件を満たした処理を自動的に選択するソフトウェア等を利用してもよい。
【００７２】
図４６は、第１の表示例における区間特定情報４０２を示す図である。図４７は、第１の表示例における第１の表示方式情報４０３を示す図である。図４８は、第１の表示例における第１の表示画像１０１及び第２の表示画像１０２を示す図である。本例における第１の表示方式情報４０３は、選択された処理に対応する区間を識別可能に表示するための表示方式を設定するものであり、選択された処理（処理オブジェクト１１２Ａ）に対応する区間の区間オブジェクト１１１Ａ内の文字を太字で表示するように設定するものである。図４８において、ＩＤ５の処理オブジェクト１１２Ａに対応する区間オブジェクト１１１Ａが太字で表示されている。
【００７３】
（第２の表示例）
図４９は、第２の表示例における第１の表示方式情報４０４を示す図である。図５０は、第２の表示例における第１の表示画像１０１及び第２の表示画像１０２を示す図である。本例における第１の表示方式情報４０４は、選択された処理に対応する区間の区間オブジェクト１１１Ａを第１の表示画像１０１全体から切り出して表示するように設定するものである。図５０に示す第１の表示画像１０１において、ＩＤ５の処理オブジェクト１１２Ａに対応する区間オブジェクト１１１Ａのみが表示されている。
【００７４】
（第３の表示例）
図５１は、第３の表示例における選択情報４０５を示す図である。図５２は、第３の表示例における区間特定情報４０６を示す図である。図５３は、第３の表示例における第１の表示方式情報４０７を示す図である。図５４は、第３の表示例における第１の表示画像１０１及び第２の表示画像１０２を示す図である。
【００７５】
本例の選択情報４０５は、“ＴｈｒｅａｄＩＤ”が“２”且つ“Ｃａｔｅｇｏｒｙ”が“Ｃｏｎｔｒｏｌ”である処理情報６３，６５，７２を選択することを示している。本例の第１の表示方式情報４０７は、選択された処理のいずれか１つに関係する区間を切り出して表示するように設定するものである。図５４に示す第２の表示画像１０２において、選択された３つの処理（ＩＤ３，５，１２）に対応する処理オブジェクト１１２Ｂの表示方式が他の処理オブジェクト１１２と異なっている。また、同図の第１の表示画像１０１において、処理オブジェクト１１２Ｂのうち１つにでも関係する区間に対応する区間オブジェクト１１１Ｂが切り出されて表示されている。
【００７６】
（第４の表示例）
図５５は、第４の表示例における第１の表示方式情報４０８を示す図である。図５６は、第４の表示例における第１の表示画像１０１及び第２の表示画像１０２を示す図である。本例の第１の表示方式情報４０８は、選択された処理の全てに関係する区間を切り出して表示するように設定するものである。図５６に示す第１の表示画像１０１において、選択された３つの処理（ＩＤ３，５，１２）に対応する処理オブジェクト１１２Ｂの全てに関係する区間に対応する区間オブジェクト１１１Ｃが切り出されて表示されている。
【００７７】
（第５の表示例）
図５７は、第５の表示例における第２の表示方式情報４０９を示す図である。図５８は、第５の表示例における第１の表示画像１０１及び第２の表示画像１０２を示す図である。本例の第２の表示方式情報４０９は、処理の構造を“ＴｈｒｅａｄＩＤ”，“Ｃａｔｅｇｏｒｙ”，および“ＩＤ”に基づいて階層化して表示するように設定するものである。各処理オブジェクト１１２は、ＴｈｒｅａｄＩＤが階層レベル３、Ｃａｔｅｇｏｒｙが階層レベル２、ＩＤが最下層となるように、且つＴｈｒｅａｄＩＤ，Ｃａｔｅｇｏｒｙ，及びＩＤのそれぞれが昇順となるように配置されている。また、選択された処理に対応する処理オブジェクト１１２Ｃが他の処理オブジェクト１１２と表示方式が異なるよう表示され、処理オブジェクト１１２Ｃに対応する区間に対応する区間オブジェクト１１１Ｄが他の区間オブジェクト１１１と表示方式が異なるように表示されている。
【００７８】
図５９は、本実施形態において第１及び第２の表示画像１０１，１０２を表示する処理の流れを例示するフローチャートである。第１の取得部１２１、第２の取得部１２２、及び第３の取得部１４２は、それぞれプログラム情報、処理情報６１〜７６、及び選択情報４０１，４０５を取得する（Ｓ２１）。選択部１４３は、選択情報４０１，４０５に基づいて選択された処理に対応する処理情報６１〜７６を選択する（Ｓ２２）。抽出部１３１は、選択部１４３により選択された処理情報６１〜７６から区間特定情報を抽出する（Ｓ２３）。第２の生成部１２６は、選択部１４３により選択された処理情報６１〜７６と第２の表示方式情報４０９に基づいて第２の表示情報を生成する（Ｓ２６）。その他のステップについては上記第１の実施形態と同様である。
【００７９】
（第３の実施形態）
図６０は、第３の実施形態にかかるプログラム情報生成システム１５１の機能的な構成を示す図である。本実施形態にかかるプログラム情報生成システム１５１は、上記図４２に示す第１の実施形態の具体例に係るプログラム情報生成システム１１５との比較において、第４の取得部１５２及び抽出生成部１５３を備え、再構成部１５４が区間特定情報と後述する特徴量情報とに基づいてプログラム情報を再構成する点で相違する。
【００８０】
第４の取得部１５２は、特徴基礎情報を取得する。特徴基礎情報とは、特徴量情報の生成の基礎となる情報であり、例えばプログラムの実行により取得される情報である。特徴基礎情報は、例えば処理の実行時間に関する情報等であり、具体的には各処理の実行時間、平均実行時間等である。このような特徴基礎情報は、処理情報６１〜７６に含まれる“Ｐａｒａｍｅｔｅｒ：ＳｔａｒｔＴｉｍｅ”，“Ｐａｒａｍｅｔｅｒ：ＥｎｄＴｉｍｅ”等に基づいて取得することができる。なお、特徴基礎情報の取得方法はこれに限られるものではない。例えば、ユーザによる手動入力、所定の記憶装置に記憶された情報の読み出し等を利用してもよい。
【００８１】
抽出生成部１５３は、処理情報６１〜７６から上記区間特定情報を抽出すると共に、特徴基礎情報に基づいて特徴量情報を生成する。特徴量情報とは、プログラムの実行状態を示す情報であり、例えばレイテンシ等である。例えば、ある処理について予定されていた実行時間と実際に計測された実行時間との差の大きさに基づいて、当該処理又はこれに対応する処理についてのレイテンシを検出することができる。抽出生成部１５３により生成された区間特定情報と特徴量情報は再構成部１５４へ出力される。
【００８２】
図６１は、特徴量情報を生成するための式４１０を例示する図である。本例の特徴量情報は、処理情報６１〜７６に含まれる“ＥｎｄＴｉｍｅ”と“ＳｔａｒｔＴｉｍｅ”との差をレイテンシとし、これを特徴量情報とする。図６２は、本実施形態における第１の表示方式情報４１１を例示する図である。本例の第１の表示方式情報４１１は、レイテンシの値に応じて区間オブジェクト１１１の色調を変化させる。
【００８３】
図６３は、特徴量情報を含む区間特定情報４１２を例示する図である。例えば、同図の２行目において“ｈｏｇｅ１．ｃ  １−３００”で示される区間のレイテンシは“６０”であることが示されている。
【００８４】
図６４は、本実施形態における第１の表示画像１０１及び第２の表示画像１０２を例示する図である。本例の第１の表示画像１０１において、第１の色調の区間オブジェクト１１１Ｅ、第２の色調の区間オブジェクト１１１Ｆ、及び第３の色調の区間オブジェクト１１１Ｇが示されている。このような色調の違いは、レイテンシの値に応じて決定される。本例においては、レイテンシが比較的大きい３つの区間“ｈｏｇｅ２．ｃ  １−３５０，５８０”，“ｈｏｇｅ２．ｃ  ２５２−３５０，５００”，“ｈｏｇｅ２．ｃ  ２６０−３２０，５００”に対応する区間オブジェクト１１１Ｇに最も濃い第３の色調が割り当てられている。
【００８５】
図６５は、本実施形態において第１及び第２の表示画像１０１，１０２を表示する処理の流れを示すフローチャートである。第１の取得部１２１、第２の取得部１２２、及び第４の取得部１５２は、それぞれプログラム情報、処理情報６１〜７６、及び特徴基礎情報を取得する（Ｓ３１）。抽出生成部１５３は、処理情報６１〜７６に基づいて区間特定情報を抽出すると共に、特徴基礎情報に基づいて特徴量情報を生成する（Ｓ３２）。再構成部１５４は、区間特定情報と特徴量情報とに基づいて、プログラム情報を再構成する（Ｓ３３）。その他のステップについては、図４２に示すフローチャートと同様である。
【００８６】
（第４の実施形態）
図６６は、第４の実施形態におけるプログラム情報生成システム１６１の機能的な構成を示す図である。本実施形態におけるプログラム情報生成システム１６１は、図６０に示す第３の実施形態にかかるプログラム情報生成システム１５１との比較において、抽出生成部１６３が特徴量情報を第２の生成部１６６へ出力し、第２の生成部１６６が処理情報６１〜７６と特徴量情報と第２の表示方式情報とに基づいて第２の表示情報を生成する点で相違する。
【００８７】
図６７は、本実施形態の第１の表示例における第２の表示方式情報４１３を示す図である。本例の第２の表示方式情報４１３は、第２の表示画像１０２を、横軸をＩＤとし縦軸をレイテンシとする散布図として表示させることを示している。図６８は、本実施形態の第１の表示例における第１の表示画像１０１及び第２の表示画像１０２を示す図である。本例の第２の表示画像１０２において、例えばＩＤ１０の処理のレイテンシが１５０であり、他のＩＤの処理よりも突出して大きいことが視覚的に表現されている。
【００８８】
図６９は、本実施形態の第２の表示例における第２の表示方式情報４１４を示す図である。本例の第２の表示方式情報４１４は、カテゴリ毎にレイテンシを集計した円グラフとして第２の表示画像１０２を表示させることを示している。図７０は、本実施形態の第２の表示例における第１の表示画像１０１及び第２の表示画像１０２を示す図である。本例の第２の表示画像１０２において、全体のレイテンシに対するカテゴリ毎のレイテンシの割合が示されている。本例では、Ｃｏｎｔｒｏｌに属する処理のレイテンシの割合が１１％であり、Ｆｉｌｔｅｒに属するレイテンシの割合が７８％であり、その他のカテゴリに属する処理のレイテンシの割合が１１％であることが示されている。このような円グラフから、例えばプログラムの遅延の主な原因がフィルタに属する処理にあることを推測することができる。
【００８９】
図７１は、本実施形態の第３の表示例における第２の表示方式情報４１５を示す図である。図７２は、本実施形態の第３の表示例における第１の表示画像１０１及び第２の表示画像１０２を示す図である。本例の第２の表示方式情報４１５は、図５７に示す第２の実施形態の第５の表示例における第２の表示方式情報４０９と同様に、処理の構造を“ＴｈｒｅａｄＩＤ”，“Ｃａｔｅｇｏｒｙ”，および“ＩＤ”に基づいて階層化して表示するものであり、更にレイテンシに応じて各処理オブジェクト１１２の色調を変化させるものである。本例では、レイテンシが大きいほど濃い色調となるように各処理オブジェクト１１２の表示方式が設定されている。
【００９０】
図７３は、本実施形態において第１及び第２の表示画像１０１，１０２を表示する処理の流れを示すフローチャートである。第２の生成部１６６は、処理情報６１〜７６と特徴量情報と第２の表示方式情報４１３〜４１５とに基づいて第２の表示情報を生成する（Ｓ３６）。その他のステップについては図６５に示す第３の実施形態におけるフローチャートと同様である。
【００９１】
（第５の実施形態）
図７４は、第５の実施形態におけるプログラム情報生成システム１７１の機能的な構成を示す図である。本実施形態のプログラム情報生成システム１７１は、図６６に示す第４の実施形態におけるプログラム情報生成システム１６１との比較において、第３の取得部１４２と選択部１７３とを備える点で相違する。第３の取得部１４２は、上記第２の実施形態における第３の取得部１４２と同様に、１つ以上の処理の中から選択された処理を特定する選択情報を取得する。
【００９２】
本実施形態における抽出生成部１７２は、上記第３，４の実施形態と同様に生成した特徴情報を選択部１７３に出力する。選択部１７３は、処理情報６１〜７６と選択情報と特徴量情報とに基づいて、第２の生成部１２６に出力する処理情報６１〜７６を選択する。
【００９３】
図７５は、本実施形態における第２の表示方式情報４１６を例示する図である。図７６は、本実施形態における第１の表示画像１０１及び第２の表示画像１０２を例示する図である。本例の第２の表示方式情報４１６は、レイテンシが大きい順に８つ処理を選択することを示している。本例の第２の表示画像１０２において、レイテンシが大きい順に処理オブジェクト１１２がソートされ、上位８つの処理オブジェクト１１２Ｄが他の処理オブジェクト１１２とは異なる表示方式で表示された状態が示されている。これにより、レイテンシが大きい処理を容易に認識することが可能となる。
【００９４】
図７７は、本実施形態において第１及び第２の表示画像１０１，１０２を表示する処理の流れを示すフローチャートである。第１の取得部１２１、第２の取得部１２２、第３の取得部１４２、及び第４の取得部１５２は、それぞれプログラム情報、処理情報６１〜７６、選択情報、及び基礎量情報を取得する（Ｓ４１）。抽出生成部１７２は、特徴基礎情報に基づいて特徴量情報を生成する（Ｓ４２）。選択部１７３は、処理情報６１〜７６と選択情報と特徴量情報とに基づいて処理情報を選択する（Ｓ４３）。第２の生成部１２６は、ステップＳ４３において特徴量情報を考慮して選択された処理情報６１〜７６と第２の表示方式情報４１６とに基づいて第２の表示情報を生成する（Ｓ２６）。その他のステップについては図５９に示す第２の実施形態におけるフローチャートと同様である。
【００９５】
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００９６】
上記プログラム情報生成システムの機能を実現させる制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供することができる。また、制御プログラムは、ネットワークに接続された所定の記憶装置から所定の情報処理装置にダウンロードすることにより提供されてもよいし、予めＲＯＭ等に組み込まれて所定の情報処理装置に提供されてもよい。また、制御プログラムは、上記各部の機能を実現する複数のモジュールから構成されてもよい。
【００９７】
また、上記各部の機能は、ＣＰＵ５に制御プログラムを実行させることにより実現されてもよいし、ＩＣ（Integrated  Circuit）等のハードウェアの作用により実現されてもよいし、これらの併用により実現されてもよい。
【００９８】
上記実施形態にかかるプログラム情報生成システムによれば、プログラムの構造を示す第１の表示画像１０１と処理の構造を示す第２の表示画像１０２とが並んで表示されるので、プログラムの実行状況を正確に把握することが可能となる。また、プログラム内の区間と処理との対応関係が識別可能となるような表示形式で表示を行うことにより、区間及び処理の数が多い場合であってもプログラムの実行状況を正確に把握することが可能となる。また、区間と処理との対応関係だけでなく、所定の特徴量情報（例えば、レイテンシ等）に基づく表示形式の変更を行うことにより、問題点の発見等、プログラムの実行状況の把握をより正確に行うことが可能となる。
【符号の説明】
【００９９】
１，１１５，１４１，１５１，１６１，１７１  プログラム情報生成システム
２  情報処理端末
３  サーバ
４  ネットワーク
５  ＣＰＵ
１１  取得部
１２  生成部
１３  表示制御部
２１  第１のソースコード
３１  第２のソースコード
４１〜５４，４０２，４０６，４１２  区間特定情報
５７，４０４，４０７，４０８，４１１  第１の表情方式情報
６１〜７６  処理情報
７９，４０９，４１３〜４１５  第２の表示方式情報
１０１，４０３  第１の表示画像
１０２  第２の表示画像
１１１，１１１Ａ〜１１１Ｇ  区間オブジェクト
１１２，１１２Ａ〜１１２Ｄ  処理オブジェクト
１２１  第１の取得部
１２２  第２の取得部
１２５  第１の生成部
１２６，１６６  第２の生成部
１２７  表示制御部
１３１  抽出部
１３２，１５４  再構成部
１４２  第３の取得部
１４３，１７３  選択部
１５２  第４の取得部
１５３，１６３，１７２  抽出生成部
４０１，４０５，４１６  選択情報
４１０  式
【図１】
2016062490.tif 000003
【図２】
2016062490.tif 000004
【図３】
2016062490.tif 000005
【図４】
2016062490.tif 000006
【図５】
2016062490.tif 000007
【図６】
2016062490.tif 000008
【図７】
2016062490.tif 000009
【図８】
2016062490.tif 000010
【図９】
2016062490.tif 000011
【図１０】
2016062490.tif 000012
【図１１】
2016062490.tif 000013
【図１２】
2016062490.tif 000014
【図１３】
2016062490.tif 000015
【図１４】
2016062490.tif 000016
【図１５】
2016062490.tif 000017
【図１６】
2016062490.tif 000018
【図１７】
2016062490.tif 000019
【図１８】
2016062490.tif 000020
【図１９】
2016062490.tif 000021
【図２０】
2016062490.tif 000022
【図２１】
2016062490.tif 000023
【図２２】
2016062490.tif 000024
【図２３】
2016062490.tif 000025
【図２４】
2016062490.tif 000026
【図２５】
2016062490.tif 000027
【図２６】
2016062490.tif 000028
【図２７】
2016062490.tif 000029
【図２８】
2016062490.tif 000030
【図２９】
2016062490.tif 000031
【図３０】
2016062490.tif 000032
【図３１】
2016062490.tif 000033
【図３２】
2016062490.tif 000034
【図３３】
2016062490.tif 000035
【図３４】
2016062490.tif 000036
【図３５】
2016062490.tif 000037
【図３６】
2016062490.tif 000038
【図３７】
2016062490.tif 000039
【図３８】
2016062490.tif 000040
【図３９】
2016062490.tif 000041
【図４０】
2016062490.tif 000042
【図４１】
2016062490.tif 000043
【図４２】
2016062490.tif 000044
【図４３】
2016062490.tif 000045
【図４４】
2016062490.tif 000046
【図４５】
2016062490.tif 000047
【図４６】
2016062490.tif 000048
【図４７】
2016062490.tif 000049
【図４８】
2016062490.tif 000050
【図４９】
2016062490.tif 000051
【図５０】
2016062490.tif 000052
【図５１】
2016062490.tif 000053
【図５２】
2016062490.tif 000054
【図５３】
2016062490.tif 000055
【図５４】
2016062490.tif 000056
【図５５】
2016062490.tif 000057
【図５６】
2016062490.tif 000058
【図５７】
2016062490.tif 000059
【図５８】
2016062490.tif 000060
【図５９】
2016062490.tif 000061
【図６０】
2016062490.tif 000062
【図６１】
2016062490.tif 000063
【図６２】
2016062490.tif 000064
【図６３】
2016062490.tif 000065
【図６４】
2016062490.tif 000066
【図６５】
2016062490.tif 000067
【図６６】
2016062490.tif 000068
【図６７】
2016062490.tif 000069
【図６８】
2016062490.tif 000070
【図６９】
2016062490.tif 000071
【図７０】
2016062490.tif 000072
【図７１】
2016062490.tif 000073
【図７２】
2016062490.tif 000074
【図７３】
2016062490.tif 000075
【図７４】
2016062490.tif 000076
【図７５】
2016062490.tif 000077
【図７６】
2016062490.tif 000078
【図７７】
2016062490.tif 000079