(57)【要約】【課題】第１モジュールと、第１モジュールを呼び出した第２モジュールとの組み合わせごとに、第１モジュールおよび第２モジュールを呼び出すアプリケーションプログラムの実行状況を解析する。【解決手段】取得部１１１は、複数の端末で実行されるアプリケーションプログラムにおいて呼び出されたモジュールの履歴を少なくとも含む履歴情報を取得する。算出部１１２は、取得部１１１により取得された履歴情報に基づいて、第１モジュールにより消費された電力量を、この第１モジュールを呼び出した第２モジュールごとに算出する。集計部１１３は、第１モジュールが呼び出された回数を、第２モジュール、およびこの第２モジュールの呼び出しの種類ごとに集計する。出力部１１４は、算出部１１２により算出された電力量と、集計部１１３により集計された回数とを、第１モジュールおよび第２モジュールの組み合わせごとにそれぞれ出力する。【選択図】図６
2015106268.tif 000002
【特許請求の範囲】
【請求項１】
複数の端末で実行されるアプリケーションプログラムにおいて呼び出されたモジュールの履歴を少なくとも含む履歴情報を取得する取得手段と、
前記取得手段により取得された履歴情報に基づいて、第１モジュールにより消費された電力量を、当該第１モジュールを呼び出した第２モジュールごとに算出する算出手段と、
前記取得手段により取得された履歴情報に基づいて、前記第１モジュールが呼び出された回数を、前記第２モジュール、および当該第２モジュールの呼び出しの種類ごとに集計する集計手段と、
前記算出手段により算出された電力量と、前記集計手段により集計された回数とを、前記第１モジュールおよび前記第２モジュールの組み合わせごとにそれぞれ出力する出力手段と
を有することを特徴とする解析装置。
【請求項２】
前記取得手段により取得された履歴情報を複数のグループに分類する分類手段を有し、
前記算出手段は、前記第１モジュールにより消費される電力量を、前記グループごとに算出し、
前記集計手段は、前記第１モジュールが呼び出された回数を、当該第１モジュールを呼び出した前記第２モジュール、当該第２モジュールの呼び出しの種類、および前記グループごとに集計する
ことを特徴とする請求項１に記載の解析装置。
【請求項３】
前記分類手段は、所定期間内における前記アプリケーションプログラムの実行時間に基づいて、前記端末のユーザが共通する前記履歴情報を前記複数のグループに分類する
ことを特徴とする請求項２に記載の解析装置。
【請求項４】
前記分類手段は、前記アプリケーションプログラムに使用される資源の種類に基づいて、前記履歴情報を前記複数のグループに分類する
ことを特徴とする請求項２または３に記載の解析装置。
【請求項５】
前記分類手段は、前記アプリケーションプログラムが実行される環境に基づいて、前記履歴情報を前記複数のグループに分類する
ことを特徴とする請求項２から４のいずれか１項に記載の解析装置。
【請求項６】
前記分類手段は、前記端末で実行されるアプリケーションプログラムの設定に基づいて、前記履歴情報を前記複数のグループに分類する
ことを特徴とする請求項２から５のいずれか１項に記載の解析装置。
【請求項７】
前記出力手段は、前記第１モジュールを呼び出した前記第２モジュール、および当該第２モジュールを呼び出した１以上の第３モジュールによる呼び出しの順序ごとに、前記電力量と前記回数とを出力する
ことを特徴とする請求項１から６のいずれか１項に記載の解析装置。
【請求項８】
請求項１から７のいずれか１項に記載の解析装置と、
前記解析装置が出力する出力内容に基づいて、前記第１モジュールおよび前記第２モジュールの組み合わせに応じた電力量および回数を有向グラフにより表示する表示装置と
を有する解析システム。
【請求項９】
コンピュータを、
複数の端末で実行されるアプリケーションプログラムにおいて呼び出されたモジュールの履歴を少なくとも含む履歴情報を取得する取得手段と、
前記取得手段により取得された履歴情報に基づいて、第１モジュールにより消費された電力量を、当該第１モジュールを呼び出した第２モジュールごとに算出する算出手段と、
前記取得手段により取得された履歴情報に基づいて、前記第１モジュールが呼び出された回数を、前記第２モジュール、および当該第２モジュールの呼び出しの種類ごとに集計する集計手段と、
前記算出手段により算出された電力量と、前記集計手段により集計された回数とを、前記第１モジュールおよび前記第２モジュールの組み合わせごとにそれぞれ出力する出力手段
として機能させるためのプログラム。
【請求項１０】
取得手段が、複数の端末で実行されるアプリケーションプログラムにおいて呼び出されたモジュールの履歴を少なくとも含む履歴情報を取得する取得ステップと、
算出手段が、前記取得ステップにおいて取得された履歴情報に基づいて、第１モジュールにより消費された電力量を、当該第１モジュールを呼び出した第２モジュールごとに算出する算出ステップと、
集計手段が、前記取得ステップにおいて取得された履歴情報に基づいて、前記第１モジュールが呼び出された回数を、前記第２モジュール、および当該第２モジュールの呼び出しの種類ごとに集計する集計ステップと、
出力手段が、前記算出ステップにおいて算出された電力量と、前記集計ステップにおいて集計された回数とを、前記第１モジュールおよび前記第２モジュールの組み合わせごとにそれぞれ出力する出力ステップと
を有することを特徴とする解析装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末で実行されるアプリケーションプログラムの開発支援に関するものである。
【背景技術】
【０００２】
近年、スマートフォンに代表される携帯端末の多機能化が進み、携帯端末において実行されるアプリケーションプログラムの開発作業は複雑化している。また、アプリケーションプログラムが端末においてどのように使用されるかを開発段階において開発者が予想することは困難になっており、その使用態様は、実際にユーザにそのアプリケーションプログラムが使用されてはじめて分かることが多い。そしてその使用態様によっては、不要な処理が増加して、例えば消費電力量が多くなるなど不具合が生じることがある。
【０００３】
そこで、アプリケーションプログラムが実際に使用されたときの状況を記憶して、アプリケーションプログラムの開発に利用する試みが行われている。
特許文献１の請求項１および段落４５には、モジュールごとの消費電力を算出するモジュール消費電力算出手段と、メソッドの「呼び出し回数」に基づいてメソッドごとにリソース消費割合を算出する第一の算出方法とが記載されている。特許文献２には「状態遷移事象」が記載されている。特許文献３の段落８０には、「モジュール間の呼び出し関係を用いるプログラム評価装置」が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１９０４４７号公報
【特許文献２】特開２００６−１７８７８５号公報
【特許文献３】特開２００８−１８６１６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、特許文献１の図７や図１３に示すように、トレースログに基づいたコールツリーにおいてモジュール（子メソッド）を呼び出すアプリケーションプログラム等（親メソッド）は予め決められている。つまり、特許文献１に記載された技術では、１つのモジュール（子メソッド）を呼び出す呼び出し側のモジュール、またはアプリケーションプログラム（親メソッド）は必ず１つであり、複数ではない。
また、特許文献２に記載された技術は、計算機システムの現在の状態に対して事象発生後にどの状態に遷移するかということに着目したものであるが、その確率構造は記憶装置に予め記憶されており、これを使って電力見積りを生成するだけに過ぎない。つまり、特許文献２に記載された技術では、実際に人にアプリケーションを使わせたときの履歴からどの状態遷移が頻繁に起きていて電力が使われるかを調べることはできない。
また、特許文献３に記載された技術は、対象モジュールとそれに呼び出される下位階層モジュールとを含む対象モジュール全体の消費電力を算出すると共に、対象モジュールだけの消費電力、下位階層モジュールだけの消費電力を算出する（段落９１）というものである。つまり特許文献３に記載された技術では、特許文献１と同様、１つのモジュールを呼び出す呼び出し側のモジュールは必ず１つであり、複数ではない。
このように先行する技術において、呼び出し側モジュールと呼び出し先モジュールとの組み合わせごとに呼び出し回数や消費された電力量を特定することはできなかった。
【０００６】
本発明は、第１モジュールと、第１モジュールを呼び出した第２モジュールとの組み合わせごとに、第１モジュールおよび第２モジュールを呼び出すアプリケーションプログラムの実行状況を解析することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決するため、本発明に係る解析装置は、複数の端末で実行されるアプリケーションプログラムにおいて呼び出されたモジュールの履歴を少なくとも含む履歴情報を取得する取得手段と、前記取得手段により取得された履歴情報に基づいて、第１モジュールにより消費された電力量を、当該第１モジュールを呼び出した第２モジュールごとに算出する算出手段と、前記第１モジュールが呼び出された回数を、前記第２モジュール、および当該第２モジュールの呼び出しの種類ごとに集計する集計手段と、前記算出手段により算出された電力量と、前記集計手段により集計された回数とを、前記第１モジュールおよび前記第２モジュールの組み合わせごとにそれぞれ出力する出力手段とを有することを特徴とする。
【０００８】
好ましくは、前記取得手段により取得された履歴情報を複数のグループに分類する分類手段を有し、前記算出手段は、前記第１モジュールにより消費される電力量を、前記グループごとに算出し、前記集計手段は、前記第１モジュールが呼び出された回数を、当該第１モジュールを呼び出した前記第２モジュール、当該第２モジュールの呼び出しの種類、および前記グループごとに集計するとよい。
【０００９】
また、好ましくは、前記分類手段は、所定期間内における前記アプリケーションプログラムの実行時間に基づいて、前記端末のユーザが共通する前記履歴情報を前記複数のグループに分類するとよい。
【００１０】
また、好ましくは、前記分類手段は、前記アプリケーションプログラムに使用される資源の種類に基づいて、前記履歴情報を前記複数のグループに分類するとよい。
【００１１】
また、好ましくは、前記分類手段は、前記アプリケーションプログラムが実行される環境に基づいて、前記履歴情報を前記複数のグループに分類するとよい。
【００１２】
また、好ましくは、前記分類手段は、前記端末で実行されるアプリケーションプログラムの設定に基づいて、前記履歴情報を前記複数のグループに分類するとよい。
【００１３】
また、好ましくは、前記出力手段は、前記第１モジュールを呼び出した前記第２モジュール、および当該第２モジュールを呼び出した１以上の第３モジュールによる呼び出しの順序ごとに、前記電力量と前記回数とを出力するとよい。
【００１４】
また、本発明に係る解析システムは、上述の解析装置と、前記解析装置が出力する出力内容に基づいて、前記第１モジュールおよび前記第２モジュールの組み合わせに応じた電力量および回数を有向グラフにより表示する表示装置とを有することを特徴とする。
【００１５】
また、本発明に係るプログラムは、コンピュータを、複数の端末で実行されるアプリケーションプログラムにおいて呼び出されたモジュールの履歴を少なくとも含む履歴情報を取得する取得手段と、前記取得手段により取得された履歴情報に基づいて、第１モジュールにより消費された電力量を、当該第１モジュールを呼び出した第２モジュールごとに算出する算出手段と、前記取得手段により取得された履歴情報に基づいて、前記第１モジュールが呼び出された回数を、前記第２モジュール、および当該第２モジュールの呼び出しの種類ごとに集計する集計手段と、前記算出手段により算出された電力量と、前記集計手段により集計された回数とを、前記第１モジュールおよび前記第２モジュールの組み合わせごとにそれぞれ出力する出力手段として機能させるためのプログラムである。
【００１６】
また、本発明に係る解析装置の制御方法は、取得手段が、複数の端末で実行されるアプリケーションプログラムにおいて呼び出されたモジュールの履歴を少なくとも含む履歴情報を取得する取得ステップと、算出手段が、前記取得ステップにおいて取得された履歴情報に基づいて、第１モジュールにより消費された電力量を、当該第１モジュールを呼び出した第２モジュールごとに算出する算出ステップと、集計手段が、前記取得ステップにおいて取得された履歴情報に基づいて、前記第１モジュールが呼び出された回数を、前記第２モジュール、および当該第２モジュールの呼び出しの種類ごとに集計する集計ステップと、出力手段が、前記算出ステップにおいて算出された電力量と、前記集計ステップにおいて集計された回数とを、前記第１モジュールおよび前記第２モジュールの組み合わせごとにそれぞれ出力する出力ステップとを有することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、第１モジュールと、第１モジュールを呼び出した第２モジュールとの組み合わせごとに、第１モジュールおよび第２モジュールを呼び出すアプリケーションプログラムの実行状況を解析することができる。
【図面の簡単な説明】
【００１８】
【図１】解析システムの構成を示す図。
【図２】端末の構成を示す図。
【図３】アプリの実行によって生成される履歴情報を説明するための概略図。
【図４】生成された履歴情報を示す図。
【図５】解析装置の構成を示す図。
【図６】解析装置の機能的構成を示す図。
【図７】履歴データベースを示す図。
【図８】分類情報の例を示す図。
【図９】グラフデータ記述言語に従った文字列で出力された出力結果の例を示す図。
【図１０】開発装置において描画された有向グラフの例を示す図。
【発明を実施するための形態】
【００１９】
１．実施形態
１−１．解析システムの構成
図１は、解析システム９の構成を示す図である。通信回線３は、解析装置１、開発装置４、およびサーバ装置５を接続する回線であり、これら各装置間の情報の遣り取りを仲介する。また、通信回線３は、これらの各装置と、移動通信網６を介して端末２との情報の遣り取りを仲介する。通信回線３は、例えばインターネットである。移動通信網６は、例えば、ＬＴＥ（Long Term Evolution）やいわゆる３Ｇなどに準拠したネットワークである。移動通信網６は、通信回線３と接続されており、解析装置１など通信回線３に接続された装置と端末２との間の通信を仲介する。移動通信網６は、複数の基地局や図示せぬ交換局などの通信設備を有しており、これらを介して複数の端末２に通信サービスを提供する。
【００２０】
開発装置４は、端末２で実行されるアプリケーションプログラム（以下、アプリという）の開発をするための装置であり、例えばパーソナルコンピュータである。また、開発装置４は、解析装置１によって出力される解析結果を取得してその解析結果に応じた表現をする機能、例えば状態遷移図を描画するといった機能を有する。
【００２１】
サーバ装置５は、開発装置４で開発されたアプリを登録するための装置である。サーバ装置５は、端末２の要求に応じて登録されたアプリを端末２にダウンロードさせる。端末２は、サーバ装置５にアプリを要求してそのアプリを取得し実行する情報処理装置であり、例えば、スマートフォンなどの携帯電話機である。解析システム９には、複数の端末２が含まれる。解析装置１は、端末２がアプリを実行したときに記憶される履歴情報を取得して、その内容を解析する装置である。解析装置１は、例えばコンピュータであり、履歴情報の解析結果を開発装置４に向けて出力する。
【００２２】
１−２．端末の構成
図２は、端末２の構成を示す図である。制御部２１は、端末２の各部の動作を制御する手段である。制御部２１は、ＣＰＵ（Central Processing Unit）などの演算処理装置や、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）などの記憶装置を備え、これら記憶装置に記憶されたプログラムを実行する。通信部２３は、通信回線３を介して解析装置１やサーバ装置５などと、アプリや履歴情報などを通信するインターフェイスであり、例えばＩＭＴ−２０００やＩＭＴ−Ａｄｖａｎｃｅｄなどに準拠した無線通信回路である。
【００２３】
表示部２４は、液晶などを使用したディスプレイ装置であり、制御部２１からの指示に応じて画像を表示する。操作部２５は各種の指示を入力するためのタッチパネルやボタンなどを有しており、ユーザによる操作を受け付けてその操作内容に応じた信号を制御部２１に供給する。測位部２６は、ＧＰＳ（Global Positioning System）測位方式に基づいて端末２の位置を測定（測位）する。撮像部２７は、端末２の周囲を撮像する構成であり、例えばレンズなどの光学系とＣＭＯＳ（Complementary Metal Oxide Semiconductor）イメージセンサなどの撮像素子とを有する。
【００２４】
記憶部２２はフラッシュメモリなどの大容量の記憶手段であり、制御部２１に読み込まれるプログラムを記憶する。なお、記憶部２２は、いわゆるリムーバブルディスク、すなわち着脱可能な記録媒体を含んでもよい。また、記憶部２２は、制御部２１がアプリを実行する際に、そのアプリの実行に関する情報を履歴情報２２１として記憶する。
【００２５】
１−３．履歴情報の構成
図３は、アプリの実行によって生成される履歴情報２２１を説明するための概略図である。また、図４は、生成された履歴情報２２１を示す図である。端末２の制御部２１は、アプリを実行することにより複数のモジュールを呼び出して実行する。そして、呼び出されたモジュールは、さらに他のモジュールを呼び出して実行する。これにより、複数のモジュールが並行して起動され、制御部２１の制御状態は或るモジュールから他のモジュールへと遷移する。
【００２６】
例えば、図３に示したように、モジュールＭａが実行されているとき、制御部２１は、「onResume()」というメソッドが実行されたことを契機として、このモジュールの名前であるモジュール名「Ｍａ」とメソッドの名前であるメソッド名「onResume()」とを履歴情報２２１に記憶する。また、ユーザが、例えば表示部２４に表示されている仮想的なボタンを押下する操作を操作部２５に対して行うと、制御部２１はこの操作を取得し、「onKeyDown()」というメソッドを実行する。この押下されたボタンが「バックボタン」であることを識別すると、制御部２１は、モジュールＭａの直前に表示部２４による表示の占有権を有していたモジュールＭｂにその占有権を返す。
【００２７】
このとき、制御部２１は、インテントを送信したモジュールのモジュール名「Ｍａ」と、送信したメソッドのメソッド名「onKeyDown()」と、その契機となったイベント「バックボタンの押下」と、インテントを受信したモジュールのモジュール名「Ｍｂ」と、受信したメソッドのメソッド名「onResume()」を履歴情報２２１に記憶する。
【００２８】
制御部２１は、モジュールの呼び出しをその呼び出しを行ったモジュール、およびその呼び出しの種類ごとに区別して履歴情報２２１に記憶する。例えば制御部２１は、モジュールが上述したように通常起動により起動される場合と、遠隔手続呼び出し（ＲＰＣ：remote procedure call）により起動される場合とを区別して履歴情報２２１に記憶する。遠隔手続呼び出しとは、端末２のアプリが使用するアドレス空間とは異なるアドレス空間からの機能呼び出しであり、例えば、別々のプロセス空間にあるモジュール間で機能が呼び出されることなどである。
【００２９】
また、端末２におけるシステム管理機能の一つであるアラームマネージャを経由してタイマー駆動でモジュールが起動された場合も、制御部２１は、他のモジュールから起動された通常起動の場合と区別して履歴情報２２１に記憶する。インテントの送受信に関して引数が引き渡されたり、返り値が供給されたりした場合には、制御部２１は、それらの値を履歴情報２２１に記憶する。
【００３０】
このように制御部２１は、インテントの送受信などによる状態遷移の際に、その遷移に関わったモジュールやメソッドの名称を時刻とともに履歴情報２２１に記憶する。アプリが終了するときに、制御部２１は、そのアプリが動作した総期間（アプリ動作期間という）を算出する。そして、制御部２１は、そのアプリの名称であるアプリ名と、そのアプリを端末２に実行させたユーザの名前であるユーザ名とともに、算出したアプリ動作期間を履歴情報２２１のヘッダ部に記憶する。制御部２１は、アプリ動作期間に加えて、アプリの開始時刻と終了時刻とを記憶してもよく、また、制御部２１は、ユーザの操作が行われた時間（操作時間という）と、ユーザの操作が行われなかった時間（非操作時間という）とを区別して記憶してもよい。アプリ動作期間に加えて、制御部２１は、モジュールごとの動作期間を記憶してもよい。なお、上述した操作時間とはアプリの画面が表示される時間の合計である。
【００３１】
制御部２１は、履歴情報２２１をモジュールごとの動作情報に区分けして記憶する。図３に示す例では、アプリの実行によって、１からＮまでのＮ個のモジュールが起動され、その各動作を示す情報（モジュール動作情報という）がそれぞれ履歴情報２２１に記憶される。モジュール動作情報には、そのモジュール名、モジュールの種別、モジュールの開始時刻と終了時刻、他のモジュールへの遷移時刻、起動の契機となったイベントの種別、モジュールの実行に伴って使用される資源の消費量、および消費電力量が含まれる。ここで、資源とは、例えば、制御部２１のＣＰＵや記憶部２２、通信部２３、測位部２６、および撮像部２７など、端末２においてアプリに使用される資源をいう。
【００３２】
１−４．解析装置の構成
図５は、解析装置１の構成を示す図である。制御部１１は、解析装置１の各部の動作を制御する手段である。制御部１１は、ＣＰＵなどの演算処理装置や、ＲＯＭ、ＲＡＭなどの記憶装置を備え、これら記憶装置に記憶されたプログラムを実行する。通信部１３は、通信回線３との間で情報を通信するインターフェイスであり、例えば各種のモデムや無線通信回路、あるいは、ＵＳＢ（Universal Serial Bus）規格に準拠したシリアルインターフェースや、ＩｒＤＡ（Infrared Data Association）などに準拠した無線インターフェイスなどである。
【００３３】
記憶部１２はハードディスク、フラッシュメモリなどの大容量の記憶手段であり、制御部１１に読み込まれるプログラムを記憶する。なお、記憶部１２は、いわゆるリムーバブルディスク、すなわち着脱可能な記録媒体を含んでもよい。また、記憶部１２は、履歴データベース（以下、図において「データベース」を「ＤＢ」と表記する）１２１と、分類情報１２２とを記憶する。
【００３４】
１−５．解析装置の機能的構成
図６は、解析装置１の機能的構成を示す図である。解析装置１の制御部１１は、取得部１１１、算出部１１２、集計部１１３、出力部１１４、および分類部１１５として機能する。
【００３５】
取得部１１１は、通信部１３を介して複数の端末２から履歴情報２２１の複製を取得し、これらを履歴データベース１２１に記憶する。図７は、履歴データベース１２１を示す図である。各端末２から取得した履歴情報２２１の複製は、履歴データベース１２１に含まれる履歴情報１２１１としてそれぞれ記憶される。
【００３６】
分類部１１５は、履歴データベース１２１に含まれる複数の履歴情報１２１１をグループに分類し、分類した結果を分類情報１２２として記憶部１２に記憶させる。図８は、分類情報１２２の例を示す図である。分類部１１５は、履歴情報１２１１に記述されたアプリ名、ユーザ名、アプリ動作期間を参照し、それらに基づいて各履歴情報１２１１を予め決められた区分に従って所定数（例えば３つ）のグループに分類する。具体的には、アプリ名、ユーザ名が共通する履歴情報１２１１を履歴データベース１２１から抽出し、抽出された履歴情報１２１１に含まれるアプリ動作期間をその日付ごとに合算することで、当該ユーザの当該アプリに対する一日あたりの動作期間を算出する。その上で、当該アプリの一日当たりの動作期間が長いユーザ（ヘビーユーザ）、短いユーザ（ライトユーザ）、その他のユーザ（通常ユーザ）の３つのグループを規定し、履歴情報１２１１を対応するユーザが属するグループに分類する。例えば、図８に示すように、共通するアプリ名およびユーザ名が記述された履歴情報１２１１は、対応するユーザの一日あたりのアプリ動作期間の合計が２０分未満のグループと、２０分以上１２０分未満のグループと、１２０分以上のグループとに分類される。
【００３７】
なお、アプリ動作期間は、アプリが実行される期間であるから、この場合の分類部１１５は、アプリが実行される期間ごとに履歴情報１２１１を分類する分類手段の一例である。
また、分類部１１５は、特定のアプリ名が記述された履歴情報１２１１を、それらに記述されたユーザ名ごとに区分けせずに、上述したアプリ動作期間に基づいて複数のグループに分類してもよい。この場合、対応するユーザの一日あたりのアプリ動作期間の合計ごとに履歴情報１２１１を分類するのではなく、履歴情報１２１１に記述されたアプリ動作期間そのものに応じてその履歴情報１２１１を複数のグループに分類すればよい。また、分類に用いられるアプリ動作期間は、履歴情報１２１１に含まれるその他のどの時間情報（例えば操作時間）であってもよい。履歴情報１２１１が分類されるグループは３つに限られず、２つでも４つ以上でもよい。
【００３８】
算出部１１２は、取得部１１１により取得された履歴データベース１２１に基づいて、実行されたモジュール（第１モジュールという）により消費された電力量を、その第１モジュールを呼び出したモジュール（第２モジュールという）ごとに算出する。具体的には、履歴データベース１２１に含まれる複数の履歴情報１２１１から、モジュールの実行に伴って使用される資源の消費量、および消費電力量を抽出して、上述した電力量を算出する。なお、この算出部１１２は、分類部１１５により分類されたグループごとに、この算出を行ってもよい。
【００３９】
集計部１１３は、第１モジュールが呼び出された回数を、第２モジュール、およびこの第２モジュールの呼び出しの種類ごとに集計する。すなわち、集計部１１３は、履歴データベース１２１を参照して、例えばモジュールＭａが通常起動により起動された回数と、遠隔手続呼び出しにより起動された回数と、アラームマネージャにより起動された回数とをそれぞれ集計する。なお、この集計部１１３は、分類部１１５により分類されたグループごとに、この集計を行ってもよい。
【００４０】
出力部１１４は、算出部１１２により算出された電力量と、集計部１１３により集計された回数とを、第１モジュールおよび第２モジュールの組み合わせ、および分類部１１５により分類されたグループごとにそれぞれ出力する。例えば、モジュールＭａ、モジュールＭｂおよびモジュールＭｃがそれぞれ実行されるアプリにおいて、モジュールＭａが、モジュールＭｂから呼び出される場合と、モジュールＭｃから呼び出される場合とがあるとき、算出部１１２は、第１モジュールとしてのモジュールＭａにより消費された電力量を、第２モジュールとしてのモジュールＭｂおよびモジュールＭｃごとにそれぞれ算出する。
【００４１】
つまり、算出部１１２は、モジュールＭｂがモジュールＭａを呼び出した場合（Ｍｂ→Ｍａ）に消費された電力量と、モジュールＭｃがモジュールＭａを呼び出した場合（Ｍｃ→Ｍａ）に消費された電力量とをそれぞれ区別して算出する。同様に、集計部１１３は、モジュールＭｂがモジュールＭａを（Ｍｂ→Ｍａ）呼び出した回数と、モジュールＭｃがモジュールＭａを（Ｍｃ→Ｍａ）呼び出した回数とをそれぞれ区別して集計する。そして、出力部１１４は、Ｍｂ→Ｍａの電力量と回数、Ｍｃ→Ｍａの電力量と回数をそれぞれ出力する。
【００４２】
なお、出力部１１４は、電力量と回数について、その実際のデータを出力してもよいが、実際のデータに応じた情報を出力してもよい。例えば、出力部１１４は、算出部１１２により算出された電力量と、集計部１１３により集計された回数とに応じた情報を、グラフのデータを記述するグラフデータ記述言語に従った文字列により出力してもよい。図９は、グラフデータ記述言語に従った文字列で出力された出力結果の例を示す図である。図９に示す文字列は、有向グラフを示すデータを記述するグラフデータ記述言語の規則にしたがっている。
【００４３】
例えば変数「ａ」は１行目に「Ａｃｔ．Ｍａ」という文字列が、２行目に「５０ｍＡｈ」という文字列がそれぞれラベルとして図形内に記述されるブロックを表しており、その色は青に設定されている。また、変数「ａ」から変数「ｂ」に引く矢印は、太さが「２ｍｍ」に、色が黄色に、それぞれ設定されている。すなわち、この文字列によれば、線の太さや色の設定によって、第１モジュールおよび第２モジュールの組み合わせごとの電力量や呼び出し回数が表現される。そして、出力部１１４が出力する文字列は、例えば、呼び出し回数が多くなるほど、線が太くなるように構成されたグラフを表現してもよいし、電力量が大きくなるほど、線の色が明るくなるように構成されたグラフを表現してもよい。なお、上述したラベルは、モジュール名およびそのモジュールにおいて消費された総電力量に応じて決められてもよい。
【００４４】
出力部１１４が出力した文字列は、通信部１３を介して開発装置４に送信される。開発装置４は、上述したグラフデータ記述言語に従って書かれた文字列を解釈して、その内容に応じた有向グラフを描画する機能を有する。図１０は、開発装置４において描画された有向グラフの例を示す図である。図１０に示す有向グラフは、各モジュール間の呼び出しの回数とそれによって消費された電力量とが、モジュール間を結ぶ矢印線の太さや色により表現されているため、アプリの開発者は、実際に端末２においてアプリが実行される場合に、ユーザの操作に応じて、どのモジュール間の呼び出し回数が多くなり消費電力量が大きくなるかについて、把握し易くなる。その結果、アプリの開発者はアプリをどのように修正するべきかに関する示唆を得ることができる。
【００４５】
また、解析装置１は、履歴データベース１２１に含まれる複数の履歴情報１２１１を、複数のグループに分類し、このグループごとに電力量と回数とを出力するので、アプリの開発者は、各グループに固有の不具合に気付き易い。例えば、上述した分類部１１５は、対応するユーザの一日あたりのアプリ動作期間の合計に応じて複数の履歴情報１２１１を複数のグループに分類するので、アプリの開発者は、アプリ動作期間が長い場合にユーザに生じる不具合や、アプリ動作期間が短い場合にユーザに生じる不具合をそれぞれ気付き易い。
【００４６】
２．変形例
以上が実施形態の説明であるが、この実施形態の内容は以下のように変形し得る。また、以下の変形例を組み合わせてもよい。
【００４７】
２−１．変形例１
上述した実施形態において、解析装置１の制御部１１は、分類部１１５として機能していたが、この機能を有していなくてもよい。この場合、取得部１１１は、予め決められた１つのアプリについて記憶された履歴情報２２１の複製を、複数の端末２から取得すればよい。この構成であっても、解析装置１は、第１モジュールと、第１モジュールを呼び出した第２モジュールとの組み合わせごとに、第２モジュールが第１モジュールを呼び出した回数および呼び出した第１モジュールにより消費された電力量をユーザに知らせることができる。
【００４８】
２−２．変形例２
上述した実施形態において、解析装置１の制御部１１は、履歴データベース１２１に含まれる複数の履歴情報１２１１を対応するユーザの一日あたりのアプリ動作期間の合計ごとにグループに分類していたが、アプリ動作期間に代えてまたは加えて、アプリに使用される資源の種類ごとに履歴情報１２１１を分類してもよい。例えば、アプリがＣＰＵ、記憶部２２、通信部２３、測位部２６、および撮像部２７のうちいずれか複数の資源を使用する場合、制御部１１は、これらの使用量（例えば使用時間や使用回数）を多変量解析して各履歴情報１２１１を複数のグループに分類してもよい。具体的には、ｋ平均法などのアルゴリズムに従ってクラスタリングし履歴情報１２１１に反映された傾向ごとに、履歴情報１２１１を分類してもよい。すなわち、この場合、制御部１１は、アプリケーションプログラムに使用される資源の種類ごとに履歴を複数のグループに分類する分類部１１５として機能する。なお、履歴情報１２１１ごとに、アプリ動作期間は異なるので、制御部１１は、上記資源の使用量をアプリ動作期間で除した単位時間当たりの使用量を基に分類することとしてもよい。
【００４９】
２−３．変形例３
また、解析装置１の制御部１１は、アプリ動作期間などに代えてまたは加えて、アプリが実行される環境ごとに履歴情報１２１１を分類してもよい。例えば、電車などに乗って移動するユーザに端末２が操作されているとき、端末２が通信部２３を用いて通信を行うと、ユーザが静止しているときに比べて頻繁に基地局の接続切り替えが発生する。接続が切り替えられる度に、それを検知した端末２は新たな通信経路を探索する処理をバックグラウンドプロセスで実行するため、モジュールの呼び出しが行われる。したがって、接続切り替えの頻度に応じて履歴情報１２１１は異なった内容となる。この場合、制御部１１は、接続切り替えの頻度を特定し、これらの履歴情報１２１１を、特定した頻度に応じて複数のグループに分類すればよい。例えば、単位時間当たりの接続切り替え回数が所定数より多い高速移動中、単位時間当たりの切り替え回数が所定数より少ない低速移動中、単位時間当たりの切り替えが発生しない静止中の３つのグループに分類する。すなわち、この場合、制御部１１は、アプリケーションプログラムが実行される環境ごとに履歴を複数のグループに分類する分類部１１５として機能する。この構成によれば、履歴データベース１２１に含まれる複数の履歴情報１２１１は、高速又は低速で移動しながらアプリを実行させた場合の履歴と、移動せずにアプリを実行させた履歴とに分類されるので、アプリの開発者は、それぞれの使用環境に応じた不具合に気付き易くなる。
【００５０】
２−４．変形例４
また、解析装置１の制御部１１は、アプリ動作期間などに代えてまたは加えて、アプリの設定ごとに履歴情報１２１１を分類してもよい。アプリの設定とは、例えば、通信ネットワークとして、ＬＴＥと３Ｇの２方式のどちらの方式を優先させるかについての設定などである。設定データは、１つ以上の設定項目名と設定値の組からなり、上記の例では、設定項目名は「通信ネットワーク」、設定値は例えばＬＴＥの場合は「１」、３Ｇの場合は「０」となる。これらの設定が複数ある場合には、複数の設定項目に対応する設定値を多変量解析して各履歴情報１２１１を複数のグループに分類してもよい。具体的には、ｋ平均法などのアルゴリズムに従ってクラスタリングし履歴情報１２１１に反映された傾向ごとに、履歴情報１２１１を分類してもよい。すなわち、この場合、制御部１１は、端末で実行されるアプリケーションプログラムの設定ごとに、履歴を複数のグループに分類する分類部１１５として機能する。この構成によれば、例えば複数の端末２において、各ユーザの設定に応じてその端末２で記憶される履歴を分類するので、アプリの開発者は、各ユーザの設定の好みに応じた不具合に気付き易くなる。
【００５１】
２−５．変形例５
上述した実施形態において、解析装置１の制御部１１は、算出された電力量と、集計された回数とを、第１モジュールおよび第２モジュールの組み合わせごとにそれぞれ出力する出力部１１４として機能していたが、第１モジュールを呼び出した第２モジュール、およびこの第２モジュールを呼び出した１以上の第３モジュールによる呼び出しの順序ごとに、消費された電力量と呼び出しの回数とを出力する出力部１１４として機能してもよい。
【００５２】
例えば、モジュールＭａ、モジュールＭｂ、およびモジュールＭｃが呼び出されるアプリの開発者が、モジュールＭａからモジュールＭｃを直接呼び出す必要がないと考えたとする。この場合、アプリの開発者は、モジュールＭａにモジュールＭｂを呼び出す機能を設け、かつ、モジュールＭｂにモジュールＭｃを呼び出す機能を設けるが、モジュールＭａにモジュールＭｃを呼び出す機能を設けない。
【００５３】
一方、実際のユーザがモジュールＭａをアクティブにしているときにモジュールＭｃを起動させたいと思うことが多かったとすると、モジュールＭａが表示の占有権を有しているときに、モジュールＭｃを直接呼び出せないため、ユーザは、いったんモジュールＭｂを起動し、このモジュールＭｂを経由してモジュールＭｃを起動する操作を頻繁に行うようになる。このようにアプリが設計されていると、ユーザが起動することを必要としていないモジュールＭｂの起動が頻繁に行われるため、無駄な電力が消費され、無駄な資源が使用されることとなる。しかし、このような実際のユーザによる使用態様が分からないため、アプリの開発者は、こういった設計の無駄に気付かない場合がある。
【００５４】
制御部１１が、上述した呼び出しの順序ごとに、消費された電力量と呼び出しの回数とを出力する出力部１１４として機能することにより、モジュールＭａ→モジュールＭｂ→モジュールＭｃという順序での起動が頻繁に行われていることが分かると、アプリの開発者は、モジュールＭｂがモジュールＭｃの起動のためだけに起動されていることに気付くことができる。そして、この場合、アプリの開発者は、モジュールＭａにモジュールＭｃを直接呼び出す機能を設けることでこの不具合は解消する。すなわち、この構成によれば、ユーザが現状の機能の制約から仕方なく編み出した複雑な操作手順にアプリの開発者が気付くことができ、それを簡素なものに変える設計変更をし易くなる。なお、上述した例において、制御部１１は、３つのモジュールが呼び出された順序ごとに出力を行ったが、４つ以上のモジュールの呼び出し順序ごとに出力を行ってもよい。また、制御部１１が監視する順序は、決められた時間内に生じる呼び出しに限ってもよい。
【００５５】
２−６．変形例６
上述した実施形態において、測位部２６は、ＧＰＳによって端末２の位置を測定していたが、端末２の位置を、いわゆる位置登録を行うロケーションレジスタへの問い合わせによって特定してもよい。ここでいうロケーションレジスタは、無線機器である端末２が、移動通信網６に接続されたどの無線基地局のセル（通信圏内）にあるかを記憶する装置である。
【００５６】
２−７．変形例７
解析装置１の制御部１１によって実行されるプログラムは、磁気テープや磁気ディスクなどの磁気記録媒体、光ディスクなどの光記録媒体、光磁気記録媒体、半導体メモリなどの、コンピュータ装置が読み取り可能な記録媒体に記憶された状態で提供し得る。また、このプログラムを、インターネットのようなネットワーク経由でダウンロードさせることも可能である。なお、上記の制御部１１によって例示した制御手段としてはＣＰＵ以外にも種々の装置が適用される場合があり、例えば、専用のプロセッサなどが用いられる。
【００５７】
２−８．変形例８
上述した実施形態において、制御部１１により実現する算出部１１２は、取得部１１１により取得された履歴データベース１２１に基づいて、実行された第１モジュールにより消費された電力量を、その第１モジュールを呼び出した第２モジュールごとに算出していたが、電力量を算出し得る数値を特定するだけでもよい。すなわち、電力量を算出するとは、電力量を算出し得る数値を特定することを含む。例えば、携帯電話機のような端末２に供給される電圧が一定であると見なせる場合、制御部１１は、電流を特定することにより、電力量を算出し得る。したがって、制御部１１は、電力量に代えて第１モジュールにより使われた電流を、その第１モジュールを呼び出した第２モジュールごとに算出してもよい。
【符号の説明】
【００５８】
１…解析装置、１１…制御部、１１１…取得部、１１２…算出部、１１３…集計部、１１４…出力部、１１５…分類部、１２…記憶部、１２１…履歴データベース、１２１１…履歴情報、１２２…分類情報、１３…通信部、２…端末、２１…制御部、２２…記憶部、２２１…履歴情報、２３…通信部、２４…表示部、２５…操作部、２６…測位部、２７…撮像部、３…通信回線、４…開発装置、５…サーバ装置、６…移動通信網、９…解析システム。
【図１】
2015106268.tif 000003
【図２】
2015106268.tif 000004
【図３】
2015106268.tif 000005
【図４】
2015106268.tif 000006
【図５】
2015106268.tif 000007
【図６】
2015106268.tif 000008
【図７】
2015106268.tif 000009
【図８】
2015106268.tif 000010
【図９】
2015106268.tif 000011
【図１０】
2015106268.tif 000012