IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立システムズの特許一覧

特許7502216プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム
<>
  • 特許-プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム 図1
  • 特許-プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム 図2
  • 特許-プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム 図3
  • 特許-プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム 図4
  • 特許-プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム 図5
  • 特許-プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム 図6
  • 特許-プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム 図7
  • 特許-プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム 図8
  • 特許-プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム 図9
  • 特許-プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-10
(45)【発行日】2024-06-18
(54)【発明の名称】プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム
(51)【国際特許分類】
   G06F 8/38 20180101AFI20240611BHJP
【FI】
G06F8/38
【請求項の数】 11
(21)【出願番号】P 2021026677
(22)【出願日】2021-02-22
(65)【公開番号】P2022128247
(43)【公開日】2022-09-01
【審査請求日】2023-05-25
(73)【特許権者】
【識別番号】000233491
【氏名又は名称】株式会社日立システムズ
(74)【代理人】
【識別番号】110000279
【氏名又は名称】弁理士法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】是木 玄太
(72)【発明者】
【氏名】河合 克己
(72)【発明者】
【氏名】前岡 淳
(72)【発明者】
【氏名】芳ケ迫 仁
【審査官】円子 英紀
(56)【参考文献】
【文献】特開2013-073246(JP,A)
【文献】特開2013-025457(JP,A)
【文献】特開2019-204373(JP,A)
【文献】特表2021-532490(JP,A)
【文献】特表2021-501382(JP,A)
【文献】米国特許出願公開第2018/0174288(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/38
(57)【特許請求の範囲】
【請求項1】
画面に表示する複数の画面部品を含むソースコードに基づいて、関連する画面部品のグループを判定するプログラム生成支援装置であって、
前記プログラム生成支援装置は、プロセッサを含み、
前記プロセッサは、
前記ソースコードから複数の画面部品を特定し、
前記ソースコードに基づいて、特定された画面部品間の関連度を算出し、
前記画面部品間の関連度に基づいて、関連する画面部品のグループを特定する
プログラム生成支援装置。
【請求項2】
前記プロセッサは、
(A)画面部品間での同一のモデルやハンドラの共有有無
(B)画面部品間での同一のモデルやハンドラの共有数
(C)画面部品間でのモデルやハンドラを介したホップ数
(D)画面部品間でのソースコードの同一構造内への属否
(E)画面部品間でのソースコード内でのコード行距離
(F)ソースコード内における画面部品と同じ画面部品の設定内容
(G)他のソースコード内おける画面部品間の存在有無
の少なくとも1つに基づいて関連度を算出する
請求項1に記載のプログラム生成支援装置。
【請求項3】
前記プロセッサは、
前記(A)及び前記(D)に基づいて、又は、前記(A)、前記(D)、及び前記(E)に基づいて、前記関連度を算出する
請求項2に記載のプログラム生成支援装置。
【請求項4】
前記プロセッサは、
前記ソースコードの開発時におけるコミットデータを取得し、
前記コミットデータに基づいて、前記関連度を算出する
請求項1に記載のプログラム生成支援装置。
【請求項5】
前記プロセッサは、
前記コミットデータに基づいて、前記画面部品がコミットされた日時を特定し、前記画面部品のコミットされた日時に基づいて前記関連度を算出する
請求項4に記載のプログラム生成支援装置。
【請求項6】
前記プロセッサは、
前記ソースコードに、前記ソースコードに基づく表示画面に対して前記画面部品をユーザが利用した場合の利用ログを出力するログ出力コードを埋め込む
請求項1に記載のプログラム生成支援装置。
【請求項7】
前記プロセッサは、
前記ソースコードの中の所定の関連度以上の画面部品に対して、前記ログ出力コードを埋め込む
請求項6に記載のプログラム生成支援装置。
【請求項8】
前記プロセッサは、
前記画面部品に対する利用ログを取得し、
前記利用ログに基づいて、前記画面部品間の前記関連度を算出する
請求項6に記載のプログラム生成支援装置。
【請求項9】
前記プロセッサは、
前記関連する画面部品のグループに属する各画面部品に関するソースコードの記述をまとめたグループコードを作成して所定の記憶装置に格納させる
請求項1に記載のプログラム生成支援装置。
【請求項10】
画面に表示する複数の画面部品を含むソースコードに基づいて、関連する画面部品のグループを判定するプログラム生成支援装置によるプログラム生成支援方法であって、
前記プログラム生成支援装置は、
前記ソースコードから複数の画面部品を特定し、
前記ソースコードに基づいて、特定された画面部品間の関連度を算出し、
前記画面部品間の関連度に基づいて、関連する画面部品のグループを特定する
プログラム生成支援方法。
【請求項11】
画面に表示する複数の画面部品を含むソースコードに基づいて、関連する画面部品のグループを判定する処理をコンピュータに実行させるプログラム生成支援プログラムであって、
前記コンピュータに、
前記ソースコードから複数の画面部品を特定させ、
前記ソースコードに基づいて特定された画面部品間の関連度を算出させ、
前記画面部品間の関連度に基づいて、関連する画面部品のグループを特定させる処理を実行させる
プログラム生成支援プログラム。


【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画面部品を表示するためのソースコードを解析して、プログラムの生成を支援するため技術に関する。
【背景技術】
【0002】
従来、Webアプリ(アプリケーション:プログラムの一例)の開発を行う場合には、Webアプリによるサービスを提供するサーバ側のF層(Function層)のアプリの開発を行い、F層のアプリの動作を確認し、その後、Webアプリのサービスを受けるユーザの端末(例えば、スマートフォン等)側のP層(Presntation層)のアプリの開発を行い、P層のアプリの動作を確認することが多かった。
【0003】
しかしながら、近年では、ユーザ側のP層のアプリの重要性を考慮して、P層のアプリの開発が先に行われるようになってきている。
【0004】
例えば、P層のアプリの開発においては、開発効率化のために画面に表示させる複数の画面部品をグループ化して利用するようにすることがある。
【0005】
例えば、特許文献1においては、グループ化すべき画面部品、モデル、ハンドラをスキーマ(グループ化の機構)で手動定義して、グループ化を実現する技術が開示されている。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2010-277602号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、特許文献1に開示された技術では、グループ化すべき画面部品を手動で設定等する必要があり、グループ化すべき画面部品をユーザが特定しておかなければならず、更には、設定に手間がかかるという問題がある。
【0008】
本発明は、上記事情に鑑みなされたものであり、その目的は、画面に表示するための関連する画面部品のグループを容易且つ適切に得ることのできる技術を提供することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するため、一観点に係るプログラム生成支援装置は、画面に表示する複数の画面部品を含むソースコードに基づいて、関連する画面部品のグループを判定するプログラム生成支援装置であって、前記プログラム生成支援装置は、プロセッサを含み、前記プロセッサは、前記ソースコードから複数の画面部品を特定し、前記ソースコードに基づいて、特定された画面部品間の関連度を算出し、前記画面部品間の関連度に基づいて、関連する画面部品のグループを特定する。
【発明の効果】
【0010】
本発明によれば、関連する画面部品のグループを容易且つ適切に得ることができる。
【図面の簡単な説明】
【0011】
図1図1は、一実施形態に係る計算機システムの全体構成図である。
図2図2は、一実施形態に係る計算機システムの機能構成図である。
図3図3は、一実施形態に係る関連判定項目表の構成図である。
図4図4は、一実施形態に係る非関連判定項目表の構成図である。
図5図5は、一実施形態に係る画面部品関連度表の構成図である。
図6図6は、一実施形態に係るブラウザでの表示画面の構成図である。
図7図7は、一実施形態に係る画面部品のソースコードの例を示す図である。
図8図8は、一実施形態に係る画面部品グループ化処理のフローチャートである。
図9図9は、一実施形態に係る関連度算出処理のフローチャートである。
図10図10は、一実施形態に非関連度算出処理のフローチャートである。
【発明を実施するための形態】
【0012】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0013】
以下の説明では、「AAA表」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAA表」を「AAA情報」と呼ぶことができる。
【0014】
また、以下の説明において、「モデル」とは、変数を意味する。また、以下の説明においては、「ハンドラ」とは、例えば、メソッド、関数と呼ばれることもあり、或るイベントが起こったときに起動される処理を意味する。また、以下の説明において、「スキーマ」とは、変数がどう使われるかの設定ファイル(コンフィグファイル)を意味する。
【0015】
本実施形態に係る計算機システムでは、画面やそのデザインに関するソースコードの解析を行い、グループ化すべき関連する複数の画面部品を抽出する。なお、本実施形態では、ソースコードとして、HTML(登録商標)、CSS(登録商標)、及びJavaScripy(登録商標:JSともいう)を例に挙げているが、本発明は特定の言語に依存するものではなく、開発に利用するフレームワークも特定のフレームワークに依存するものではない。
【0016】
図1は、一実施形態に係る計算機システムの全体構成図である。
【0017】
計算機システム10は、プログラム生成支援装置の一例としての情報処理装置100と、情報装置110とを備える。情報処理装置100と、情報装置110とは、例えば、インターネット等の通信ネットワーク120を介して接続されている。
【0018】
情報処理装置100は、例えば、PC(Personal Computer)等の計算機で構成され、各種処理を実行する。情報処理装置100は、プロセッサの一例として中央処理装置(CPU:Central Processing Unit)101、入力装置102、二次記憶装置103、主記憶装置104、表示装置105、及び通信装置106を有する。これら各装置は、バス107を介して各装置間で相互にデータの送受信可能に接続されている。
【0019】
通信装置106は、例えば、有線LANカードや無線LANカードなどのインターフェースであり、通信ネットワーク120を介して他の装置(情報装置110等)と通信する。
【0020】
中央処理装置101は、主記憶装置104及び/又は二次記憶装置103に格納されているプログラムに従って各種処理を実行する。
【0021】
主記憶装置104は、例えば、RAM(RANDOM ACCESS MEMORY)であり、中央処理装置101で実行されるプログラムや、必要な情報を記憶する。
【0022】
二次記憶装置103は、例えば、ハードディスクやフラッシュメモリなどであり、中央処理装置101で実行されるプログラムや、中央処理装置101に利用されるデータを記憶する。
【0023】
入力装置102は、例えば、マウス、キーボード等であり、ユーザによる情報の入力を受け付ける。表示装置105は、例えば、ディスプレイであり、各種情報を表示出力する。
【0024】
情報装置110は、例えば、PC等の情報処理装置や、ネットワークストレージ等のストレージ装置で構成され、情報処理装置100で使用される各種データを保存する。
【0025】
図2は、一実施形態に係る計算機システムの機能構成図である。
【0026】
本実施形態においては、情報処理装置100の機能ブロックの全てが中央処理装置101によって実行または操作されるソフトウェアプログラムやデータであるものとして説明するが、機能ブロックの一部または全ては、ハードウェアとして実現されてもよい。また、本来は、情報処理装置100においては、これらの機能ブロックに加え、各機能ブロックの起動や管理等を行うOS(Operating System)や制御プログラム等が存在するが、本実施形態では、これらの機能ブロックの連携動作を適宜説明することとし、OSや制御プログラムが、連携動作に必要となる機能ブロックの起動や動作管理を行うことは自明であるので、これらのOSや制御プログラムについては説明及び記載を省略する。
【0027】
情報処理装置100は、自動生成実行部200と、ソースコード解析部201と、画面部品抽出部202と、関連判定部203と、コミット判定部204と、利用ログ判定部205と、関連判定項目表206と、非関連判定項目表207と、画面部品関連度表208とを有する。自動生成実行部200、ソースコード解析部201、画面部品抽出部202、関連判定部203、コミット判定部204、及び利用ログ判定部205は、中央処理装置101がプログラムを実行することにより構成される。これらの具体的な処理は後述する。また、関連判定項目表206と、非関連判定項目表207と、画面部品関連度表208とは、二次記憶装置103及び/又は主記憶装置104に格納される。関連判定項目表206と、非関連判定項目表207と、画面部品関連度表208との構成については、後述する。
【0028】
情報装置110は、ソースコード230と、修正ソースコード231と、コミットデータ232と、利用ログ233とを格納する。
【0029】
ソースコード230は、例えば、例えば、HTML、CSS、JavaScript等により記述された画面を表示するためのソースコードである。修正ソースコード231は、ソースコード230に格納されたソースコードに対して修正されたソースコードや、ソースコード230中の同一のグループに分類された複数の画面部品に関するソースコードである。修正ソースコード231は、ソースコード230に対して所定の画面部品を利用した場合に、その内容である利用ログを出力するコード(ログ出力コード)を追加したソースコードであってもよい。
【0030】
コミットデータ232は、ソースコード230の開発時等における画面部品のコミットに関するデータである。コミットデータ232は、例えば、Git等のバージョン管理システムにおける編集履歴の情報であってもよい。コミットデータ232は、例えば、所定のバージョンのソースコードの作成者名、メッセージ、作成日等を含み、コミット時点でのソースコードに関連付けられている。
【0031】
利用ログ233は、ソースコードにより表示される画面の画面部品に対する利用ログである。利用ログ233は、例えば、画面部品を利用したユーザ、利用された画面部品、利用された時間等を含んでいる。
【0032】
なお、ソースコード230、修正ソースコード231、コミットデータ232、及び利用ログ233は、必ずしも情報装置110にある必要はなく、情報処理装置100及び情報装置110のいずれに格納されていてもよい。また、修正ソースコード231、コミットデータ232、及び利用ログ233は、必ずしも初期状態から存在しなくてもよい。なお、本実施形態では、ソースコード230及び修正ソースコード231は、HTML、CSS、JavaScriptを例としているが、これに限定されず、例えば、TypeScript(登録商標)としてもよく、どのような形式であってもよい。
【0033】
次に、関連判定項目表206について詳細に説明する。
【0034】
図3は、一実施形態に係る関連判定項目表の構成図である。
【0035】
関連判定項目表206は、関連度を算出する際の判定(関連度を上げる判定)に用いる項目(関連判定項目)毎のエントリを格納する。関連判定項目表206のエントリは、項番(#)206aと、関連判定項目206bと、閾値206cと、関連度206dとのフィールドを含む。
【0036】
項番(#)206aには、関連判定項目についての項番が格納される。関連判定項目206bには、関連判定項目の内容が格納される。閾値206cには、エントリに対応する関連判定項目で閾値を使用する場合におけるこの閾値が格納される。関連度206dには、エントリに対応する関連判定項目に該当する場合における関連度の加算値が格納される。この関連度は、関連する画面部品のグループを抽出する際、例えば、画面部品関連度表208を作成する際に使用される。
【0037】
図3の関連判定項目表206における各関連判定項目は、以下に示すようになっている。#1の関連判定項目は、画面部品間でモデルやハンドラを共有するかであり、判定が真であれば、関連度に3を加算することを示している。#2の関連判定項目は、画面部品間でのモデルやハンドラの共有数が閾値以上かであり、この閾値が3であり、判定が真であれば、関連度に2を加算することを示している。#3の関連判定項目は、画面部品間でのモデルやハンドラを介したホップ数が閾値以下かであり、この閾値が2であり、判定が真であれば、関連度に1を加算することを示している。#4の関連判定項目は、画面部品が同じHTML構造(例えば、HTMLの同一のDiv内)に属するかであり、判定が真であれば、関連度に3を加算することを示している。#5の関連判定項目は、HTML内の画面部品間のコード行距離が閾値以下かであり、この閾値が5であり、判定が真であれば、関連度に1を加算することを示している。#6の関連判定項目は、ソースコード内の複数箇所に存在する同じ画面部品が同じ設定であるかであり、判定が真であれば、関連度に3を加算することを示している。#7の関連判定項目は、画面部品間の関連度が閾値以上の複数の画面部品が、他の画面でも存在するかであり、判定が真であれば、関連度に3を加算することを示している。
【0038】
次に、非関連判定項目表207について詳細に説明する。
【0039】
図4は、一実施形態に係る非関連判定項目表の構成図である。
【0040】
非関連判定項目表207は、関連度を算出する際の判定(関連度を下げる判定)に用いる項目(非関連判定項目)毎のエントリを格納する。非関連判定項目表207のエントリは、項番(#)207aと、非関連判定項目207bと、閾値207cと、非関連度207dとのフィールドを含む。
【0041】
項番(#)207aには、非関連判定項目についての項番が格納される。非関連判定項目207bには、非関連判定項目の内容が格納される。閾値207cには、エントリに対応する非関連判定項目で閾値を使用する場合におけるこの閾値が格納される。非関連度207dには、エントリに対応する非関連判定項目に該当する場合における関連度の減算値(非関連度)が格納される。この非関連度は、関連する画面部品のグループを抽出する際、例えば、画面部品関連度表208を作成する際に使用される。ここで、非関連度と関連度とは、正負の関係にある値であり、例えば、非関連度が5とは、関連度が-5に対応する。したがって、非関連度も関連度も、関連度に関する情報ということができる。このため、非関連判定項目の逆の内容を関連判定項目表206に登録してもよく、その逆に関連判定項目の逆の内容を非関連判定項目表207に登録するようにしてもよく、関連度判定項目表206と、非関連度項目判定表207とをまとめて1つの項目判定表としてもよい。
【0042】
図4の非関連判定項目表207の各非関連判定項目は、以下に示すようになっている。#1の非関連判定項目は、HTML内の画面部品間のコード行距離が閾値を超えるかであり、この閾値が5であり、判定が真であれば、非関連度が5である、すなわち、関連度から5を減算することを示している。#2の非関連判定項目は、画面部品間のコミット日が閾値の日数以上離れているかであり、この閾値が100であり、判定が真であれば、関連度から5を減算することを示している。ここで、各画面部品のコミット日は、コミットデータ232のメッセージ、日付、ソースコードを参照することにより特定することができる。このように、画面部品間のコミット日が閾値の日数以上離れているかを判定項目とするのは、関連する画面部品であれば、コミット日が近いという考えに基づいている。#3の非関連判定項目は、関連度が所定の閾値以上の複数の画面部品のコミット日が、閾値の日数以下の日数が経過しているかであり、この閾値が100であり、判定が真であれば、関連度から5を減算することを示している。
【0043】
#4の非関連判定項目は、画面部品間のそれぞれが一緒に閾値の日数以上利用されていないかであり、この閾値が100であり、判定が真であれば、関連度から5を減算することを示している。ここで、各画面部品が利用されている日付については、利用ログ233を参照することにより特定できる。#5の非関連判定項目は、画面部品間のそれぞれをコミットしたユーザ(レビュア)が異なるかであり、判定が真であれば、関連度から2を減算することを示している。ここで、画面部品をコミットしたレビュアについては、コミットデータ232を参照することにより特定できる。このように、画面部品をコミットしたレビュアが異なるかを判定項目とするのは、関連する画面部品であれば同じレビュアがコミットするであろうという考えに基づいている。
【0044】
次に、画面部品関連度表208について詳細に説明する。
【0045】
図5は、一実施形態に係る画面部品関連度表の構成図である。
【0046】
画面部品関連度表208は、それぞれの画面に対応して設けられており、対応する画面に含まれる画面部品のそれぞれの組合せについての関連度を格納する。具体的には、画面部品関連度表208においては、対応する画面の画面部品のそれぞれを縦軸と横軸とに配置し、画面部品間の関連度を、それらの配置された位置の縦軸及び横軸が交わる領域(対応領域)に格納している。画面部品間の関連度は、後述する関連度算出処理(図9参照)及び非関連度算出処理(図10参照)により算出される。
【0047】
本実施形態では、関度判定部203は、画面部品関連度表208を参照し、所定の閾値(例えば、5)以上の関連度の画面部品を、関連する画面部品のグループと判断している。所定の閾値は、例えば、情報処理装置100において予め保持されていてもよく、ユーザによって予め設定されていてもよい。図5の画面部品関連度表208において、所定の閾値を5とすると、関連判定部203は、例えば、関連度が6であるinput_1、button_1、及びcalendar_1の3つの画面部品が関連するグループとして判定される。
【0048】
次に、ソースコードに基づいてブラウザに表示される表示画面について説明する。
【0049】
図6は、一実施形態に係るブラウザでの表示画面の構成図である。
【0050】
表示画面900は、カレンダ画面部品901と、チェックボックス画面部品911とを含む。カレンダ画面部品901は、日付入力領域902と、ボタン903とを含む。日付入力領域902には、例えば、「日付選択」とのラベルが表示され、日付の入力を受け付ける。ボタン903は、押下されると、カレンダを表示させる。チェックボックス画面部品911には、チェックボックス912が表示される。チャックボックス912にチェックが入力されると所定の処理が実行される。
【0051】
次に、図6に示す表示画面900における画面部品のソースコードについて説明する。
【0052】
図7は、一実施形態に係る画面部品のソースコードの例を示す図である。図7(A)は、カレンダ画面部品901のソースコードの一例を示し、図7(B-1)は、チェックボックス画面部品911のソースコードの第1の例を示し、図7(B-2)は、チェックボックス画面部品911のソースコードの第2の例を示す。
【0053】
カレンダ画面部品901のソースコードでは、図7(A)に示すように、divはHTML内での構造上の区切りを表し、<div>と、</div>」と囲まれた範囲が、同一のHTML構造に含まれる画面部品群を示している。この範囲は、「<label>」で始まるlabel画面部品と、「<input」で始まるinput画面部品と、「<button」で始まるbutton画面部品と、「<calendar」で始まるcalendar画面部品とを含む。
【0054】
このカレンダ画面部品901のソースコードの例では、calendar画面部品の「#picker1」と、input画面部品の「picker1」と、button画面部品の「picker1」とが、これら画面部品がモデルを互いに共有していることを示している。
【0055】
チェックボックス画面部品911のソースコードとしては、例えば、図7(B-1)に示すように、画面部品間でモデルを共有するものと、図7(B-2)に示すように、ハンドラを介してモデルを共有するものとがある。
【0056】
図7(B-1)に示すソースコードでは、<div>と、</div>」と囲まれた範囲に、「<input」で始まるinput画面部品と、「<label」で始まるlabel画面部品とを含む。このソースコードでは、input画面部品の「result」と、label画面部品の「result」とが、これら画面部品がモデルを互いに共有していることを示している。
【0057】
図7(B-2)に示すソースコードでは、<div>と、</div>」と囲まれた範囲に、「<input」で始まるinput画面部品と、「<label」で始まるlabel画面部品とを含む。このソースコードでは、input画面部品のhandlerに設定された「handle」に対応するハンドラ(JSのソースコード)における「result」と、label画面部品の「result」とが、これら画面部品がモデルを互いに共有していることを示している。
【0058】
次に、実施形態に係る計算機システム10における処理動作について説明する。
【0059】
まず、画面部品グループ化処理について説明する。画面部品グループ化処理は、表示画面のソースコード230の解析を行い、表示画面内に含まれる画面部品間の関連度を算出し、画面部品関連度表208を作成した上で、関連度の高い複数の画面部品をグループ化する処理である。
【0060】
図8は、一実施形態に係る画面部品グループ化処理のフローチャートである。
【0061】
ここで、画面部品グループ化処理の開始前において、画面部品が記述された、画面に関するソースコード230が予め作成されているものとする。本説明においては、例えば、図7に示すソースコードが作成されている場合を例に挙げて適宜説明する。
【0062】
ステップ601:ソースコード解析部201は、情報装置110から処理対象とする所定の画面(対象画面)に関するソースコード230を取得して解析する。
【0063】
ステップ602:画面部品抽出部202及び関連判定部203は、対象画面について関連度算出処理(図9参照)を行う。関連度算出処理では、画面部品抽出部202は、ソースコード230の解析結果に基づいて、ソースコード230から画面部品を抽出し、関連判定部203は、対象画面に含まれる画面部品間の関連度を算出し、画面部品関連度表208に格納する。なお、対象画面に対応する画面部品関連度表208が存在しない場合には、対象画面に対応する画面部品関連度表208を作成する。
【0064】
ステップ603:画面部品抽出部202及び関連判定部203は、対象画面について非関連度算出処理(図10参照)を行う。非関連度算出処理では、画面部品抽出部202は、ソースコード230の解析結果に基づいて、ソースコード230から画面部品を抽出し、関連判定部203は、対象画面に含まれる画面部品間の非関連度を算出し、画面部品関連度表208に格納する。なお、対象画面に対応する画面部品関連度表208が存在しない場合には、対象画面に対応する画面部品関連度表208を作成する。
【0065】
ステップ604:自動生成実行部200は、画面部品関連度表208に格納された、画面部品間の関連度に従い、関連する画面部品についてのグループ化を行う。本実施形態では、自動生成実行部200は、画面部品関連度表208の関連度が、所定の閾値以上の画面部品をグループ化する。例えば、画面部品関連度表208が、図5に示す場合であって、閾値が5に設定されている場合には、自動生成実行部200は、input_1、button_1、及びcalendar_1の3つの画面部品をグループ化する。なお、自動生成実行部200は、グループ化した複数の画面部品についてのソースコードをまとめたソースコード(グループ用ソースコード)を修正ソースコード231として情報装置110に格納するようにしてもよい。また、自動生成実行部200は、ソースコード230に対して所定の画面部品(例えば、グループ化した複数の画面部品)を利用した場合に、その内容である利用ログを出力するコード(ログ出力コード)を追加したソースコードを作成して情報装置110に格納するようにしてもよい。
【0066】
ステップ605:自動生成実行部200は、処理対象とすべき次の画面があるか否かを判定する。この判定が真であれば(ステップ605:YES)、自動生成実行部200は、処理をステップ601へ進める一方、判定が偽であれば(ステップ605:NO)、自動生成実行部200は、画面部品グループ化処理を終了する。
【0067】
次に、ステップ602の関連度算出処理について説明する。
【0068】
図9は、一実施形態に係る関連度算出処理のフローチャートである。
【0069】
ステップ701:画面部品抽出部202は、対象画面のソースコード230から画面部品を抽出する。例えば、図7に示すソースコード例では、複数の画面部品を纏められたカレンダ画面部品、またはチェックボックス画面部品を示しているが、実際のソースコードでは、このようなグループ化がされている訳ではない。そこで、本実施形態では、画面部品抽出部202は、例えば、HTMLのソースコードからタグ単位で抽出する。具体的には、図7(A)に示すカレンダ画面部品のソースコードの部分については、label画面部品、input画面部品、button画面部品、及びcalendar画面部品の4つの画面部品を抽出し、図10(B-1)又は図10(B-2)のチェックボックス画面部品のソースコードの部分については、input画面部品、及びlabel画面部品の2つの画面部品を抽出する。ここで、本例では、タグ「div」は、HTMLの構造上の区切りを表すものであるため、画面部品として抽出しない。なお、画面部品を抽出する単位は、タグ単位に限定されるものではない。また、タグ「div」を画面部品として抽出するようにしてもよい。
【0070】
ステップ702:関連判定部203は、ステップ701で抽出された複数の画面部品のそれぞれの画面部品間を対象に画面部品間の関連度を算出する処理を行う。関連判定部203は、関連判定項目表206に含まれる関連判定項目の中の予め設定された1以上の関連判定項目に基づいて関連度を算出する。使用する関連判定項目の設定は、デフォルトとして情報処理装置100に設定されているものであってもよく、ユーザによって指定されたものであってもよい。
【0071】
以下の例では、使用する関連判定項目として、図3に示す関連判定項目表206の#1及び#4の関連判定項目が設定されている場合を例として説明する。なお、使用する関連判定項目としては、関連判定項目表206の1以上の関連判定項目を使用してよく、各関連判定項目のそれぞれについて独立して判定して、それぞれの項目の判定結果により関連度を合計してもよく、複数の関連判定項目を同時に満たすかを判定し、それらを同時に満たす場合に、それらについての関連度の合計を関連度としてもよい。複数の関連判定項目の組合せとしては、例えば、#1、#4、及び#5としてもよい。
【0072】
関連判定部203は、対象とする画面部品間について、関連判定項目表206の#1の関連判定項目、すなわち「モデルやハンドラを共有するか」を判定する(ステップ702a)。ここで、図7(A)のソースコードの例では、calender画面部品の「#picker1」、input画面部品の「picker1」、及びbutton画面部品の「picker1」が共通するので、これらの画面部品間が互いにモデルを共有していると判定される。また、図7(B-1)のソースコードの例では、input画面部品及びlabel画面部品の「result」が共通するので、これらの画面部品間でモデルを共有していると判定される。また、図7(B-2)のソースコード例では、input画面部品のhandlerに対応するハンドラ内に記述された「result」と、label画面部品の「result」とが共通するので、ハンドラを介してモデルを共有していると判定される。
【0073】
ステップ702aでモデルやハンドラを共有すると判定された場合(ステップ702a:YES)は、関連判定部203は、関連度の加算を3とし、処理をステップ702bに進める。一方、モデルやハンドラを共有しないと判定された場合(ステップ702a:NO)は、関連度の加算は0として、関連判定部203は、画面部品関連度表208の画面部品間の対応領域の関連度に加算しない(ステップ704)。
【0074】
ステップ702bでは、関連判定部203は、対象とする画面部品間について関連判定項目表206の#4の関連判定項目、すなわち「同じHTML構造に属するか」を判定する。ここで、図7(A)のソースコードの例では、calender画面部品、input画面部品、button画面部品、及びcalendar画面部品の4つの画面部品は、同じ「div」に属する要素であるので、同じHTML構造に属すると判定される。また、図7(B-1)のソースコードの例では、input画面部品及びlabel画面部品が同じ「div」に属する要素であるので、同じHTML構造に属すると判定される。また、図7(B-2)のソースコード例では、input画面部品及びlaber画面部品が同じ「div」に属する要素であるので、同じHTML構造に属すると判定される。
【0075】
この結果、同じHTML構造に属すると判定された場合(ステップ702b:YES)は、関連判定部203は、関連度の加算を3とし、処理をステップ703に進める。一方、同じHTML構造に属しないと判定された場合(ステップ702b:NO)は、ステップ702aでの加算分をキャンセルし、関連度の加算は0として、関連判定部203は、画面部品関連度表208の画面部品間の対応領域の関連度に加算しない(ステップ704)。
【0076】
ステップ703では、関連判定部203は、画面部品関連度表208の画面部品間の対応領域の関連度に、ステップ702a及び702bによる関連度の加算分の合計(本例では、6)を加算する。ここで、図7(A)のソースコード例では、画面部品関連度表208に既に格納されている値が0の場合、input画面部品、button画面部品、及びcalendar画面部品のそれぞれの画面部品間の関連度は6に設定される。
【0077】
この後、上記したステップ702~704の処理を、対象とする全ての画面部品間に対して実行した後に、関連度算出処理を終了する。
【0078】
次に、ステップ603の非関連度算出処理について説明する。
【0079】
図10は、一実施形態に非関連度算出処理のフローチャートである。
【0080】
ステップ801:画面部品抽出部202は、対象画面のソースコード230から画面部品を抽出する。ステップ801の処理は、ステップ701の処理と同様である。
【0081】
ステップ802:関連判定部203は、ステップ801で抽出された複数の画面部品のそれぞれの部品間を対象に画面部品間の非関連度を算出する処理を行う。関連判定部203は、非関連判定項目表207に含まれる非関連判定項目の中の予め設定された1以上の非関連判定項目に基づいて非関連度を算出する。使用する非関連判定項目の設定は、デフォルトとして情報処理装置100に設定されているものであってもよく、ユーザによって指定されたものであってもよい。
【0082】
以下の例では、使用する非関連判定項目として、図4に示す非関連判定項目表207の#1、#2、及び#4の非関連判定項目が設定されている場合を例として説明する。なお、使用する非関連判定項目としては、非関連判定項目表207の1以上の非関連判定項目を使用してよく、各非関連判定項目のそれぞれについて独立して判定してもよく、複数の非関連判定項目を同時に満たすかを判定してもよい。
【0083】
関連判定部203は、対象とする画面部品間について、非関連判定項目表207の#1の関連判定項目、すなわち「HTMLのソースコード内のコード行距離が閾値を超える」を判定する(ステップ802a)。ここで、図7(A)のソースコード例では、label画面部品、input画面部品、button画面部品、及びcalender画面部品は、最大でコード行距離が3であるので、「HTMLのソースコード内のコード行距離が閾値を超える」ではないと判定される。
【0084】
ステップ802aでHTMLのソースコード内のコード行距離が閾値を超えると判定された場合(ステップ802a:YES)は、関連判定部203は、非関連度を3、すなわち、関連度から3を減算するとし、処理をステップ802bに進める。一方、HTMLのソースコード内のコード行距離が閾値を超えると判定されていない場合(ステップ802a:NO)は、非関連度を0、すなわち、関連度の減算は0として、関連判定部203は、画面部品関連度表208の画面部品間の対応領域の関連度を減算しない(ステップ804)。
【0085】
次いで、関連判定部203は、対象とする画面部品間について、非関連判定項目表207の#2の関連判定項目、すなわち「コミット日が閾値日以上離れているか」を判定する(ステップ802b)。ここで、非関連判定項目表207の#2のエントリでは、閾値を100として設定しているため、ステップ802bでは、コミット日が100日以上離れているかが判定される。例えば、図7(A)のソースコードの場合において、このソースコードのコミットデータ232に基づくと、label画面部品とinput画面部品については、1回目にコミットされ、button画面部品とcalendar画面部品とは、2回目にコミットされ、1回目のコミットの日と、2回目のコミットの日との間隔が10日であるとした場合には、コミット日が100日以上離れていないと判定される。
【0086】
ステップ802bでコミット日が100日以上離れていると判定された場合(ステップ802b:YES)は、関連判定部203は、非関連度を5、すなわち、関連度から5を減算するとし、処理をステップ802cに進める。一方、コミット日が100日以上離れていないと判定された場合(ステップ802b:NO)は、関連判定部203は、非関連度を0、すなわち、関連度の減算は0として、画面部品関連度表208の画面部品間の対応領域の関連度を減算しない(ステップ804)。
【0087】
次いで、関連判定部203は、対象とする画面部品間について、非関連判定項目表207の#4の関連判定項目、すなわち「一緒に閾値日以上利用されていないか」を判定する(ステップ802c)。ここで、非関連判定項目表207の#4のエントリでは、閾値を100として設定しているため、ステップ802cでは、一緒に100日以上利用されていないかが判定される。例えば、図10(A)のソースコードの場合において、このソースコードの利用ログ233に基づくと、label画面部品、input画面部品、button画面部品、及びcalendar画面部品が同時に利用されていない日が0日であるとした場合には、一緒に100日以上利用されていないとは判定されない。
【0088】
ステップ802cで一緒に100日以上利用されていないと判定された場合(ステップ802c:YES)は、関連判定部203は、非関連度を5、すなわち、関連度から5を減算するとし、処理をステップ803に進める。一方、一緒に100日以上利用されていないと判定されなかった、すなわち、100日未満で一緒に利用されたと判定された場合(ステップ802c:NO)は、非関連度を0、すなわち、関連度の減算は0として、関連判定部203は、画面部品関連度表208の画面部品間の対応領域の関連度を減算しない(ステップ804)。
【0089】
ステップ803では、関連判定部203は、画面部品関連度表208の画面部品間の対応領域の関連度から、ステップ802a、802b、及び802cによる非関連度の合計(関連度の減算分の合計)を減算する。
【0090】
この後、上記したステップ802~804の処理を、対象とする全ての画面部品間に対して実行した後に、非関連度算出処理を終了する。ここで、図7(A)のソースコード例では、非関連度算出処理では、関連度の減算を行わないので、画面部品関連度表208は、関連度算出処理で作成された関連度の値から変化しない。すなわち、最終的には、図5に示す状態となる。
【0091】
上記したように本実施形態によると、ソースコードを解析して、スキーマで手動定義することなしに、グループ化すべき画面部品を自動的に判定し、適切に抽出することができる。これにより、関連する画面部品のグループを特定し、例えば、修正ソースコードに格納されている関連する画面部品のグループのソースコードを利用して容易に新たなプログラムのソースコードを作成することができるようになる。
【0092】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【0093】
例えば、上記実施形態では、関連度と、非関連度とは、正負が逆である関係であり、実質的には、関連度を示しているので、関連度算出処理と、非関連度算出処理とを1つの処理にまとめるようにしてもよい。
【0094】
また、上記実施形態において、中央処理装置101が行っていた処理の一部又は全部を、ハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
【符号の説明】
【0095】
10…計算機システム、100…情報処理装置、101…中央処理装置、102…入力装置、103…二次記憶装置、104…主記憶装置、105…表示装置、106…通信装置、107…バス、110…情報装置、120…通信ネットワーク


図1
図2
図3
図4
図5
図6
図7
図8
図9
図10