JP2020160854A - コード管理システム、及びコード管理方法 - Google Patents

コード管理システム、及びコード管理方法 Download PDF

Info

Publication number
JP2020160854A
JP2020160854A JP2019060359A JP2019060359A JP2020160854A JP 2020160854 A JP2020160854 A JP 2020160854A JP 2019060359 A JP2019060359 A JP 2019060359A JP 2019060359 A JP2019060359 A JP 2019060359A JP 2020160854 A JP2020160854 A JP 2020160854A
Authority
JP
Japan
Prior art keywords
code
change degree
management system
code management
change
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019060359A
Other languages
English (en)
Inventor
晶 田中
Akira Tanaka
晶 田中
寿雄 西田
Toshio Nishida
寿雄 西田
恵介 畑崎
Keisuke Hatasaki
恵介 畑崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2019060359A priority Critical patent/JP2020160854A/ja
Priority to US16/566,981 priority patent/US11061664B2/en
Publication of JP2020160854A publication Critical patent/JP2020160854A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

【課題】ビジュアルプログラミングを用いて編集されたフローを再利用するユーザにフローの変更に関する有用な情報を提供する。【解決手段】コード管理システムは、ビジュアルプログラミングによってユーザが編集するフローの編集前後におけるコードを、バージョン管理が可能なコード管理ツールに管理し、コードの変更前後の差分のうちロジックに関する差分についての変更の度合いを示す指標であるロジック変更度と、コードの変更前後の差分のうちレイアウトに関する差分についての変更の度合いを示す指標であるレイアウト変更度とを求め、ロジック変更度及びレイアウト変更度に基づく情報を出力する。【選択図】図1

Description

本発明は、コード管理システム、及びコード管理方法に関する。
非特許文献1には、ファイルの履歴を管理するシステムであるバージョン管理システムについて記載されており、バージョン管理システムが、何らかの作業によって生成されたファイルについての複数の履歴(バージョン)を記憶し、後から古いバージョンの取り出し、差分の参照、ファイルの削除や移動の履歴の確認、ファイルのロック機能、複数の変更を統合するマージ機能等の仕組みを提供するものであることが記載されている。またバージョン管理システムが、個別システムでバージョン管理を行う個別バージョン管理システム、リポジトリをサーバで一元管理し、コミットなどの操作はクライアントから行う集中型バージョン管理システム、リポジトリをクライアントでも管理し、クライアント間でリポジトリを連携する分散型バージョン管理システムに分類されることが記載されている。
岩松 信洋、上川 純一、まえだこうへい、小川 伸一郎著 「Gitによるバージョン管理」、オーム社、2011年
昨今、モデル図を記述することによりソフトウェアの開発が可能な、ビジュアルプログラミングツール(以下、「VPツール」と略記する。)が注目されている。VPツールを用いたソフトウェア開発においては、各種の処理が表現されたノードに、用途や環境、その他の状況に対応した情報を属性値(プロパティ値)として設定し、ノード間を線で繋ぐことにより一連の処理をフローとして記述する。ソフトウェア開発者等のユーザは、VPツールを用いることで、意図した処理を行うソフトウェアを直感的に開発することができる。
ところで、ソフトウェア開発においては、開発効率の向上等を目的として、非特許文献1に開示されているようなコード管理システム(バージョン管理システム)に既存のコードを登録することによりコードの共有が図られる。ユーザは、コード管理システムから任意のコードを取得することにより、既存のコードを再利用して効率よくソフトウェアの開発を進めることができる。そして上記のVPツールを用いた開発においても同様に、コード管理システムを利用することで開発効率の向上を図ることができる。
上記のコード管理ツールにおいては、ソフトウェアの成果物はコード管理ツールが許容する形式のコードとして管理される。例えば、VPツールであるNode−REDで開発した一連のフローは、コード管理ツールにおいてはJavaScript(登録商標)をベースとしたJSON(JavaScript Object Notation)形式のコードで管理される。
ここで上記のJSON形式のコードは、VPツールにおいて、ノードや線の追加や削除といったフローの処理構造(ロジック)に関する情報(以下、「ロジック情報」と称する。)と、ノードの配置場所や表示サイズ等のレイアウトに関する情報(以下、「レイアウト情報」と称する。)を含む。そしてコード管理システムは、フローのロジック情報が変更(バージョンアップ)された場合だけでなく、フローのレイアウト情報が変更された場
合でも、変更前後のコードに差分があるものとしてコードのバージョン管理を行う。
そのため、例えば、変更前のフローを利用しているユーザは、フローの処理構造には影響のない単なるノードの配置位置の変更が行われた場合でも、変更後のフローのコードを解読し、利用中のフローを変更後のフローに更新する必要があるか否かを判断しなければならず、こうした作業はソフトウェア開発において大きなオーバーヘッドとなる。また一方で、レイアウト情報の変更が意図されたものである場合もあり、その場合はユーザに当該変更に関する情報を提供する必要がある。
本発明はこうした背景に鑑みてなされたものであり、ビジュアルプログラミングを用いて編集されたフローの変更に関する有用な情報を提供することが可能な、コード管理システム、及びコード管理方法を提供することを目的とする。
上記目的を達成するための本発明の一つは、コード管理システムであって、情報処理装置を用いて構成され、ビジュアルプログラミングによってユーザが編集するフローの編集前後における各前記コードを、バージョン管理が可能なコード管理ツールに管理するコード管理部、前記コードの変更前後の差分のうちロジックに関する差分についての変更の度合いを示す指標であるロジック変更度を求める処理を行うロジック変更度算出部、前記コードの変更前後の差分のうちレイアウトに関する差分についての変更の度合いを示す指標であるレイアウト変更度を求める処理を行うレイアウト変更度算出部、前記ロジック変更度及び前記レイアウト変更度に基づく情報を出力する変更度出力部、を備える。
その他、本願が開示する課題、及びその解決方法は、発明を実施するための形態の欄、及び図面により明らかにされる。
本発明によれば、ビジュアルプログラミングを用いて編集されたフローの変更に関する有用な情報を提供することができる。
コード管理システムの概略的な構成を示す図である。 コード管理システムを構成する情報処理装置のハードウェア構成の一例である。 フロー編集画面の一例である。 図4(a)はフローのロジックが変更された場合のフローの編集の例であり、図4(b)はフローのレイアウトが変更された場合のフローの編集の例である。 JSON形式で記述されたコードの例である。 変更度算出処理を説明するフローチャートの例である。 変更度テーブルの一例である。 変更度出力処理を説明するフローチャートの例である。 変更度表示画面の一例である。 変更度遷移グラフの一例である。
以下、発明を実施するための形態について図面を用いて詳細に説明する。
図1に一実施形態として示すコード管理システム100の概略的な構成を示している。同図に示すように、コード管理システム100は、ユーザ装置200と通信ネットワーク5を介して通信可能に接続されている。通信ネットワーク5は、無線方式又は有線方式の
通信手段であり、例えば、LAN(Local Area Network)、WAN(Wide Area Network
)、インターネット、専用線、各種公衆通信網等である。
同図に示すように、コード管理システム100は、フロー生成部110、コード管理部120、連携制御部130、変更度算出部140、及び変更度出力部150の各機能を備える。フロー生成部110は、ビジュアルプログラミングによるフローの編集環境をユーザ装置200に提供する。コード管理部120は、フローの編集前後における各コードを、バージョン管理が可能なコード管理ツールに管理する。変更度算出部140は、コードの変更前後の差異を示す情報(以下、「差分」と称する。)のうち、ロジックに関する差分についての変更の度合いを示す指標であるロジック変更度と、上記差分のうち、レイアウトに関する差分についての変更の度合いを示す指標であるレイアウト変更度とを求める。連携制御部130は、編集されたフローのコードがコード管理ツールに登録された場合に、変更度算出部140に、ロジック変更度を求める上記処理、及びレイアウト変更度を求める上記処理を開始させる。変更度出力部150は、ロジック変更度とレイアウト変更度に基づく情報をユーザ装置200に提供する。
図2にコード管理システム100やユーザ装置200の実現に用いられる情報処理装置のハードウェア構成の一例を示す。同図に示すように、例示する情報処理装置10は、プロセッサ11、主記憶装置12、補助記憶装置13、入力装置14、出力装置15、及び通信装置16を備える。これらは図示しないバス等の通信手段を介して互いに通信可能に接続されている。
情報処理装置10は、例えば、パーソナルコンピュータ(デスクトップ型又はノートブック型)、オフィスコンピュータ、メインフレーム、スマートフォン、タブレット等である。情報処理装置10は、例えば、クラウドシステムにより提供されるクラウドサーバのように仮想的な情報処理資源を用いて実現されるものであってもよい。コード管理システム100が備える各機能は、夫々を独立した情報処理装置10により実現してもよいし、2つ以上の機能を共通の情報処理装置10により実現してもよい。上記の各機能は互いに通信可能に接続されている。
プロセッサ11は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)、AI(Artificial Intelligence)チップ、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)等を用いて構成されている。
主記憶装置12は、プログラムやデータを記憶する装置であり、例えば、ROM(Read
Only Memory)、RAM(Random Access Memory)、不揮発性メモリ(NVRAM(Non Volatile RAM))等である。
補助記憶装置13は、例えば、ハードディスクドライブ、SSD(Solid State Drive
)、光学式記憶装置(CD(Compact Disc)、DVD(Digital Versatile Disc)等)、ストレージシステム、ICカード、SDカードや光学式記録媒体等の記録媒体の読取/書込装置、クラウドサーバの記憶領域等である。補助記憶装置13には、記録媒体の読取装置や通信装置16を介してプログラムやデータを読み込むことができる。補助記憶装置13に格納(記憶)されているプログラムやデータは主記憶装置12に随時読み込まれる。
入力装置14は、外部からの入力を受け付けるインタフェースであり、例えば、キーボード、マウス、タッチパネル、カードリーダ、音声入力装置等である。
出力装置15は、処理経過や処理結果等の各種情報を出力するインタフェースである。
出力装置15は、例えば、上記の各種情報を可視化する表示装置(液晶モニタ、LCD(Liquid Crystal Display)、グラフィックカード等)、上記の各種情報を音声化する装置(音声出力装置(スピーカ等))、上記の各種情報を文字化する装置(印字装置等)である。尚、例えば、情報処理装置10が通信装置16を介して他の装置との間で情報の入力や出力を行う構成としてもよい。
通信装置16は、他の装置との間の通信を実現する装置である。通信装置16は、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット等の通信手
段を介した他の装置との間の通信を実現する有線方式又は無線方式の通信インタフェースであり、例えば、NIC(Network Interface Card)、無線通信モジュール、USB(Universal Serial Bus)モジュール、シリアル通信モジュール等である。
コード管理システム100やユーザ装置200の機能は、情報処理装置10のプロセッサ11が、情報処理装置10の主記憶装置12に格納されているプログラムを読み出して実行することにより、もしくは、情報処理装置10のハードウェア(AIチップ、FPGA、ASIC等)によって実現される。尚、コード管理システム100やユーザ装置200を構成する情報処理装置10は、オペレーティングシステム、デバイスドライバ、ファイルシステム、DBMS(DataBase Management System)等の機能を備えていてもよい。
図1に示すように、フロー生成部110は、フロー生成処理部111、フロー記憶部112、フロー/コード変換部113、コード送信部114、コード取得部115、及びコード/フロー変換部116の各機能を有する。フロー生成部110の機能は、例えば、ビジュアルプログラミングツール(以下、「VPツール」と称する。)により提供される。尚、以下では、VPツールがNode−REDである場合を例として説明するが、VPツールの種類は必ずしも限定されない。
上記機能のうち、フロー生成処理部111は、ユーザ装置200にソフトウェア(以下、「フロー」と称する。)の編集環境を提供する。ユーザ装置20は、例えば、Webブラウザを介して上記編集環境にアクセスする。フロー記憶部112は、フロー生成処理部111により生成されたフローに関する情報を記憶する。
フロー/コード変換部113は、フロー生成処理部111により生成されたフローをコード(VPツールがNode−REDである場合はJSON(JavaScript Object Notation)形式のコード)に変換する。コード送信部114は、上記変換により得られたコードをコード管理部120に送信する。
コード取得部115は、コードをコード管理部120から取得する。コード/フロー変換部116は、コード取得部115が取得したコードをフローに変換してVPツールに提供する。これによりユーザ3は、コード管理部120が管理する既存のコードを再利用してフローを編集することができる。
コード管理部120は、コード管理処理部121及びリポジトリ122の各機能を有する。コード管理部120の機能は、例えば、コード管理ツール(例えば、GitHub(登録商標)やGitLab(登録商標))を用いて実現される。
コード管理処理部121は、フロー生成部110からコードを受信し、受信したコードをリポジトリ122に登録する。またコード管理処理部121は、フロー生成部110から指定されたバージョンのコードをリポジトリ122から取得し、取得したコードをフロー生成部110に送信する。
連携制御部131は、新たなバージョンのコードがコード管理部120のリポジトリ122に登録されたことを契機として、当該コードについての変更前のコードに対する変更の重要性を示す指標である変更度(前述したロジック変更度とレイアウト変更度)の算出処理を変更度算出部140に開始させる。尚、こうした連携制御部131の機能は、例えば、CI(Continuous Integration)ツールを用いて実現される。CIツールは、継続的インテグレーションを実現するツールであり、例えば、Jenkins(登録商標)やDrone等がある。GitLab(登録商標)ではCIツールを追加機能としてインストールすることができる。GitLab(登録商標)は、各種イベントを通知する機能を有しており、例えば、事前に「Webhook」の機能を設定しておくことで、GitLab(登録商標)にコードが登録されたことを外部に通知することができる。連携制御部130は、例えば、上記通知をフックし、変更度算出部140の機能を実現するスクリプトを起動させる。
変更度算出部140は、変更度(ロジック変更度、レイアウト変更度)を算出する。同図に示すように、変更度算出部140は、コード取得部141、ロジック変更度算出部142、レイアウト変更度算出部143、及び変更度登録部144の各機能を有する。これらの機能は、例えば、CIツールがスクリプトを実行することにより実現される。
上記機能のうちコード取得部141は、コード管理部120から、リポジトリ122に登録されているコードを取得する。ロジック変更度算出部142は、ロジック変更度を求める。レイアウト変更度算出部143は、レイアウト変更度を求める。変更度登録部144は、コード管理部120の上記コードに対応づけて、ロジック変更度とレイアウト変更度をリポジトリ122に登録する。
図1に示す変更度出力部150は、変更度に関する情報をユーザ3に提供する。同図に示すように、変更度出力部150は、変更度取得部151及び変更度出力処理部152を有する。変更度取得部151は、コード管理部120のリポジトリ122から、コードに関する情報と変更度に関する情報を取得する。変更度出力処理部152は、コードに関する情報や変更度に関する情報をユーザ装置200に提供する。尚、変更度出力部150の機能は、例えば、GitLab(登録商標)等の機能を用いて実現することもできる。
図3にVPツールがユーザ装置200に提供する画面(以下、「フロー編集画面210」と称する。)の一例を示す。ユーザ3は、ユーザ装置200において動作するWebブラウザ等を利用してフロー編集画面210を参照しつつ、フローの編集(フローを新規に作成する場合も含む)を行う。
例示するフロー編集画面210は、フロー編集領域211とパレット領域212とを有する。このうちパレット領域212には、機能(データ入力機能、データ出力機能、外部サービス機能等)ごとに用意された複数の部品(以下、「ノード213」と称する。)が表示される。ユーザ3は、パレット領域212でノード213を選択してフロー編集領域211にドラッグアンドドロップすることによりフローの編集を行う。ユーザ3は、ノード213同士をワイヤー215で結線することによりノード213の実行順序を定義することができる。あるノード213の右側と他のノード213の左側とをワイヤー215で結んだ場合、あるノード213の処理が終了した後に他のノード213の処理が実行されるように実行順序が定義される。
図4にフローの編集の例を示す。図4(a)は、フローのロジックが変更された場合の例である。同図に示す変更前のフロー401では、「入力ノード1」と「呼出ノードA」、「呼出ノードA」と「呼出ノードB」、「呼出ノードB」と「出力ノード2」が順にワイヤー215で結成されており、「入力ノード1」、「呼出ノードA」、「呼出ノードB
」、「出力ノード2」の順に処理が実行される。一方、同図に示す変更後のフロー402では、「入力ノード1」と「呼出ノードB」、「呼出ノードB」と「呼出ノードA」、「呼出ノードA」と「出力ノード2」が順にワイヤー215で結成されており、「入力ノード1」、「呼出ノードB」、「呼出ノードA」、「出力ノード2」の順に処理が実行される。この場合は編集の前後で「呼出ノードA」と「呼出ノードB」の実行順序が変更されており、フローのロジックが変更されている。
図4(b)は、フローのレイアウトが変更された場合の例である。同図に示す変更前のフロー411では、「入力ノード1」と「呼出ノードA」、「呼出ノードA」と「呼出ノードB」、「呼出ノードB」と「出力ノード2」が順にワイヤー215で結成されており、「入力ノード1」、「呼出ノードA」、「呼出ノードB」、「出力ノード2」の順に処理が実行される。一方、同図に示す変更後のフロー412では、「入力ノード1」と「呼出ノードA」、「呼出ノードA」と「呼出ノードZ」、「呼出ノードZ」と「出力ノード2」が順にワイヤー215で結成されており、「入力ノード1」、「呼出ノードA」、「呼出ノードZ」、「出力ノード2」の順に処理が実行される。この場合は、編集により「呼出ノードB」のラベルが「呼出ノードZ」に変更され、また「出力ノード2」の配置位置が上に移動され、それに伴い「呼出ノードB」(「呼出ノードZ」)と「出力ノード2」を結ぶワイヤー215の位置も移動されている。しかしノード213間の結線は変更されていないためロジックの変更はなく、レイアウトの変更のみが行われている。
図5にフローに基づきフロー/コード変換部113が生成する、JSON形式で記述されたコードの例を示す。同図に示すコード510の符号511で示す記述は、「入力ノード1」という名称のノードのレイアウトに関する記述であり、該当ノードのフロー編集画面210における配置場所の座標である「x」項目、「y」項目、「z」項目、ノードの名前として表示される「name」項目を定義している。またコード510の符号512で示す記述は、「入力ノードA」という名称のノードのロジックに関する記述であり、該当ノードの線の繋ぎ先となるノードの識別子のリストを定義している(「wires」という項目の値)。
また同図に示すコード520の符号521で示す記述は、ノードのレイアウトに関する記述であり、該当ノードのフロー編集画面210における配置場所の座標である「x」項目、「y」項目、「z」項目、ノードの名前として表示される「name」項目を定義している。またコード520の符号522で示す記述はロジックに関する記述であり、ノードの線の繋ぎ先ノードのリスト(「wires」項目)と、ノードの動作に関係する属性値(プロパティ値)の定義(「rules」という項目の値)とを含む。
続いて、以上の構成からなるコード管理システム100において行われる処理について説明する。
図6は、フローの編集に際してコード管理システム100において行われる処理(以下、「変更度算出処理S600」と称する。)を説明するフローチャートである。以下、同図とともに変更度算出処理S600について説明する。
まずユーザ3が、ユーザ装置200においてWebブラウザ等を利用してフロー生成処理部111が提供するフロー編集画面210にアクセスし、フローの編集を行う(S611)。
ユーザ3がフローの編集を終了し、フロー編集画面210に対してファイルの保存操作を行うと(例えば、図3に示すデプロイボタン220の操作もしくはリポジトリ122への保存操作(メニュー操作等)を行うと)、フロー記憶部112が編集されたフローの情
報を記憶する。またフロー/コード変換部113が、編集されたフローをコードに変換し、得られたコードをコード送信部114がコード管理部120に送信する(S612)。
コード管理処理部121は、上記コードを受信すると、受信したコードをリポジトリ122に登録する(S613)。
連携制御部130は、コードがリポジトリ122に登録されたことを検知すると、変更度を算出する処理を変更度算出部140に開始させる(S614)。
上記処理において、まず変更度算出部140のコード取得部141が、登録されたコードをリポジトリ122から取得する(S615)。
続いて、変更度算出部140が、S617からのループ処理における初期設定として、変更度を求める対象となるコード(以下、「対象コード」と称する。)を、S615においてリポジトリ122から取得したコード(以下、「登録コード」と称する。)に設定する。
S617からの処理は、変更度算出部140が、登録コードの各バージョン間の変更度(ロジック変更度、レイアウト変更度)を求めるループ処理である。
上記ループ処理では、まず変更度算出部140が、対象コードよりも旧いバージョンのコードがリポジトリ122に存在するか否かを判定する(S617)。例えば、変更度算出部140は、GitLab(登録商標)が管理するコードの変更履歴に基づき上記判定を行う。対象コードよりも旧いバージョンのコードがリポジトリ122に存在しない場合(S617:NO)、変更度算出処理S600は終了する。一方、対象コードよりも旧いバージョンのコードがリポジトリ122に存在する場合(S617:YES)、処理はS618に進む。
S618では、変更度算出部140が、コード管理部120のリポジトリ122から対象コードの直前のバージョンのコードを取得する。
続いて、ロジック変更度算出部142は、対象コードと直前のバージョンのコードについてロジック変更度を求める(S619)。尚、ロジック変更度の求め方の詳細については後述する。
続いて、レイアウト変更度算出部143は、対象コードと当該対象コードの直前のバージョンのコードについてレイアウト変更度を求める(S620)。尚、レイアウト変更度の求め方の詳細については後述する。
続いて、変更度算出部140が、S619で求めたロジック変更度とS620で求めたレイアウト変更度を記憶する(S621)。本例では、ロジック変更度及びレイアウト変更度はテーブル(以下、「変更度テーブル700」と称する。)に記憶されるものとする。
図7に変更度テーブル700の一例を示す。同図に示すように、変更度テーブル700は、変更後コードID711、変更前コードID712、ロジック変更度713、及びレイアウト変更度714の各項目を有する一つ以上のレコードで構成される。このうち変更後コードID711には、変更前後のコードのうち変更後のコードの識別子(以下、「コードID」と称する。)が設定される。尚、コードIDは、例えば、コードのバージョン番号である。変更前コードID712には、変更前後のコードのうち変更前のコードのコ
ードIDが設定される。ロジック変更度713には、当該変更前後のコードについてS619で求めたロジック変更度が設定される。レイアウト変更度714には、当該変更前後のコードについてS620で求めたレイアウト変更度が設定される。
図6に戻り、続いて、変更度算出部140は、対象コードを当該対象コードの直前のバージョンのコードに設定する(S622)。その後、処理はS616に戻る。
以上のループ処理(S617〜S622)によれば、最新のフローが変更されたタイミングで、過去のバージョンに遡って当該フローのコードの各バージョン間の変更度が算出される。尚、過去に当該フローの変更が行われており、既に旧いバージョン間の変更度が算出済である場合は、旧いバージョン間の変更度を算出する処理については省略してもよい。
S623では、変更度登録部144が、登録コードに対応づけて変更度テーブル700の内容をリポジトリ122に登録する。尚、変更度テーブル700の内容は、例えば、CSV(comma-separated values)形式のファイルやDBMSの所定形式のデータ管理ファイル等のファイルとしてリポジトリ122に登録される。以上で変更度算出処理S600は終了する。
続いて、図6のS619におけるロジック変更度の算出方法について具体的に説明する。まずロジック変更度算出部142は、変更前後のコードの差分から、変更前後のフロー間のノードの増減数を取得する。またロジック変更度算出部142は、変更前後のコードから、各ノードのロジックに関する情報(以下、「ロジック情報」と称する。)を抽出し、ロジックに着目した差分を取得する。尚、ロジック変更度算出部142は、ロジック情報を、例えば、GitLab(登録商標)から取得されるJSON形式のファイルから取得する。図5の例では、例えば、コード510の符号512やコード520の符号522の記述がロジック情報である。
そしてロジック変更度算出部142は、例えば、ノードの増減数やノードのロジック情報について差分があった内容について、内容に応じて重み付けした値を加算して求めた値をロジック変更度として求める。例えば、変更前後のフローの差分がノードの増減(ノードの追加か削除)を含む場合、ロジック変更度算出部142は、ロジック変更度にノードの増減数を3倍の重みで加算する。またノード間を接続する線に変更があった場合、ロジック変更度算出部142は、ロジック変更度に線の変更数を3倍の重みで加算する。また処理内容としてJavaScript(登録商標)コードを記述可能なFunctionノードの内容について差分があった場合、ロジック変更度算出部142は、その変更数を2倍の重みでロジック変更度に加算する。またノードの属性値(プロパティ値)に差分があった場合、ロジック変更度算出部142は、変更数をそのまま(重みを1として)ロジック変更度に加算する。
続いて、図6のS620におけるレイアウト変更度の算出方法について具体的に説明する。まずレイアウト変更度算出部143は、変更前後のコードから、各ノードのレイアウトに関する情報(以下、「レイアウト情報」と称する。)を取得し、レイアウトに着目した差分を取得する。尚、レイアウト変更度算出部143は、レイアウト情報を、例えば、GitLab(登録商標)から取得される、フローについてのJSON形式のファイルから取得する。図5の例では、例えば、コード510の符号511やコード520の符号521の記述がレイアウト情報である。
そしてレイアウト変更度算出部143は、例えば、レイアウト情報ついて差分があった内容について、内容に応じて重み付けした値を加算することにより求めた値をレイアウト
変更度とする。例えば、レイアウト変更度算出部143は、ノードが配置される座標に差分があった、即ち、配置位置が移動されたノードの数について重み付けした値を加算する、座標の差分から計算した配置位置の移動距離について重み付けした値を加算する等、差分の内容に応じて重み付けした値を加算した結果をレイアウト変更度として求める。
尚、VPツールを用いたコードの編集に際しては、ユーザ3の操作ミス等によりノードが移動した場合もあるため、軽微なレイアウトの変更によるレイアウト変更度への影響を抑えるようにしてもよい。具体的には、例えば、移動距離の絶対値に基づきレイアウト変更度を求めるのではなく、フロー編集画面210のフロー編集領域211に表示されるフロー全体のサイズに対する移動距離の比率に基づきレイアウト変更度を求めるようにする。また例えば、移動距離の絶対値や上記比率について閾値を設定し、移動距離の絶対値や上記比率が閾値以下である場合はレイアウト変更度への影響度合いを抑えるようにする。
尚、ロジック変更度又はレイアウト変更度のいずれを算出する場合においても、重み付けの係数は固定値としてもよいし、コード管理システム100に重み付けの設定を受け付けるユーザインタフェースを設けて重み値をユーザ3等が設定可能な状態で管理し、管理されている重み値を変更度算出部140が適宜参照するようにしてもよい。
図8は、コードの変更度に関する情報をユーザ3に提示する際にコード管理システム100において行われる処理(以下、「変更度出力処理S800」と称する。)を説明するフローチャートである。ユーザ3は、例えば、リポジトリ122に登録されているコードを再利用する際にコードの変更度に関する情報を参照する。以下、同図とともに変更度出力処理S800について説明する。
まずユーザ3が、ユーザ装置200のWebブラウザ等を利用して変更度出力部150が提供する画面(以下、「変更度表示画面900」と称する。)にアクセスし、フローを指定(例えば、ファイル名、GitLab(登録商標)プロジェクト等を指定)する(S811)。
続いて、変更度取得部151が、コード管理部120のリポジトリ122から、ユーザが指定したフロー(コード)の変更履歴(バージョンリスト)と、当該フロー(コード)に対応づけてリポジトリ122に登録されている変更度テーブル700の内容を取得する(S812)。
続いて、変更度出力処理部152が、S814からのループ処理における初期設定として、上記ループ処理において対象とするバージョン(以下、「対象バージョン」と称する。)に、ユーザが指定したフローの最新バージョンを設定する(S813)。
S814からの処理は、変更度出力処理部152が、S811で指定されたフローの各バージョン間の変更度を順次表示するループ処理である。
まずS814では、変更度出力処理部152が、対象バージョンよりも旧いバージョンのコードがリポジトリ122に存在するか否かを判定する。変更度出力処理部152は、例えば、GitLab(登録商標)が管理するコードの変更履歴に基づき上記判定を行う。対象バージョンよりも旧いバージョンのコードがリポジトリ122に存在しない場合(S814:NO)、変更度出力処理S800は終了する。一方、対象バージョンよりも旧いバージョンのコードがリポジトリ122に存在する場合(S814:YES)、処理はS815に進む。
S815では、変更度出力処理部152が、コード管理部120から対象バージョンの
コードのコードIDと、対象バージョンの直前のバージョンのコードのコードIDを取得する。
続いて、変更度出力処理部152が、対象バージョンのコードのコードIDと直前のバージョンのコードのコードIDとをキーとして変更度テーブル700を検索し、キーに対応するロジック変更度及びレイアウト変更度を取得する(S816)。
続いて、変更度出力処理部152が、コード管理部120のリポジトリ122から、フローのプレビュー画像を取得する(S817)。尚、プレビュー画像は、例えば、フロー編集画面210のフロー編集領域211に表示されるフロー全体を画面キャプチャした画像である。
続いて、変更度出力処理部152が、対象バージョンに関する情報(対象バージョンのロジック変更度、レイアウト変更度、及び上記のプレビュー画像を含む。以下、「コード情報」と称する。)を記載した変更度表示画面900を生成してユーザ装置200に送信する(S818)。
続いて、変更度出力処理部152が、対象バージョンを直前のバージョンに設定する(S819)。その後、処理はS814に戻る。
図9に、S818において変更度出力処理部152がユーザ装置200に表示する変更度表示画面900の一例を示す。同図に示すように、変更度表示画面900は、フィルタ条件設定領域911と、コードのバージョンごとに設けられる一つ以上のコード情報表示領域912とを有する。尚、例示する変更度表示画面900は、「Project#Flow#A」という名称のプロジェクトで作成されたフローのコードを対象としている。
フィルタ条件設定領域911には、表示するコード情報表示領域912の数を絞り込む(フィルタリングする)ための条件設定欄9111が表示される。例示する変更度表示画面900の場合、ユーザ3は、コード情報表示領域912の表示対象とするバージョンのロジック変更度の下限閾値とレイアウト変更度の下限閾値を設定することができる。尚、条件の設定方法は必ずしも限定されない。また予め設定された固定数やユーザ3が指定した数のバージョンの情報のみを表示するようにしてもよい。
コード情報表示領域912には、当該コードのバージョン9121、ロジック変更度9122、レイアウト変更度9123、及び当該コードのプレビュー画像9124が表示される。このように、変更度表示画面900には、コードの変更の経緯とともに変更度が提示されるので、コードを再利用しようとするユーザ3に有用な情報を提供することができ、提供された情報に基づきユーザ3は効率よくコードを再利用することができる。
図8に戻り、続いて、変更度出力処理部152は、変更度(ロジック変更度、レイアウト変更度)の遷移をグラフで表した画像(以下、「変更度遷移グラフ1000」と称する。)を生成してユーザ装置200に表示する(S820)。
図10に変更度遷移グラフ1000の一例を示す。尚、例示する変更度遷移グラフ1000は、「Project#Flow#A」という名称のプロジェクトで作成されたフローのコードを対象としている。同図に示すように、例示する変更度遷移グラフ1000は、横軸をロジック変更度の累積値1011とし、縦軸をレイアウト変更度の累積値1012として、フローの各バージョンの変更度をプロットしたものである。同図において、原点Oからプロットされた符号r1、r2、・・・、r7で示す各点は、夫々、各バージョンのコードに対応している。これら各点を結ぶ符号l1、l2、・・・、l6で示す線分は、変更度の累
積値(ロジック変更度及びレイアウト変更度の累積値)の遷移を示す。ユーザ3は、変更度遷移グラフ1000から、変更度の遷移を視覚的に把握することができ、例えば、利用中のフローのバージョンアップの必要性等を直感的に判断することができる(例えば、ロジック変更度の累積値が大きい場合はバージョンアップが必要であると判断し、レイアウト変更度の累積値のみが大きい場合はバージョンアップが不要であると判断する等)。以上で変更度出力処理S800は終了する。
以上に説明したように、本実施形態のコード管理システム100によれば、ビジュアルプログラミングを用いて編集されたフローの変更に関して、ロジック及びレイアウトの夫々の観点に基づく有用な情報を提供することができる。そのため、ユーザ3は既存のコードを効率よく再利用することができる。
尚、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶部、又は、ICカード、SDカード、DVD、BD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
3 ユーザ、5 通信ネットワーク、100 コード管理システム、110 フロー生成部、111 フロー生成処理部、112 フロー記憶部、113 フロー/コード変換部、114 コード送信部、115 コード取得部、116 コード/フロー変換部、120 コード管理部、121 コード管理処理部、122 リポジトリ、130 連携制御部、140 変更度算出部、141 コード取得部、142 ロジック変更度算出部、143 レイアウト変更度算出部、144 変更度登録部、150 変更度出力部、151
変更度取得部、152 変更度出力処理部、200 ユーザ装置、210 フロー編集画面、700 変更度テーブル、900 変更度表示画面、1000 変更度遷移グラフ、S600 変更度算出処理、S800 変更度出力処理

Claims (15)

  1. 情報処理装置を用いて構成され、
    ビジュアルプログラミングによってユーザが編集するフローの編集前後におけるコードを、バージョン管理が可能なコード管理ツールに管理するコード管理部、
    前記コードの変更前後の差分のうちロジックに関する差分についての変更の度合いを示す指標であるロジック変更度を求める処理と、前記コードの変更前後の差分のうちレイアウトに関する差分についての変更の度合いを示す指標であるレイアウト変更度を求める処理と、を行う変更度算出部、
    前記ロジック変更度及び前記レイアウト変更度に基づく情報を出力する変更度出力部、
    を備える、コード管理システム。
  2. 請求項1に記載のコード管理システムであって、
    前記ビジュアルプログラミングは、前記ユーザに前記フローの編集画面を提示し、前記編集画面に処理を表すノードを複数配置し、前記ノードの処理の実行順序を表す線で結ぶことにより前記フローを作成するユーザインタフェースを提供するツールを用いて行われる、
    コード管理システム。
  3. 請求項2に記載のコード管理システムであって、
    前記ロジックに関する差分は、前記ノードの追加又は削除によって生じた差分、前記ノードの実行順序の変更によって生じた差分、前記ノードの処理内容の変更によって生じた差分、及び前記ノードの属性値(プロパティ値)の変更によって生じた差分、のうちの少なくともいずれかを含む、
    コード管理システム。
  4. 請求項2に記載のコード管理システムであって、
    前記レイアウトに関する差分は、前記ノードの前記編集画面における前記ノードの配置位置の変更によって生じた差分を含む、
    コード管理システム。
  5. 請求項1に記載のコード管理システムであって、
    前記変更度算出部は、前記差分の内容に応じて重み付けを行うことにより前記ロジック変更度又は前記レイアウト変更度を求める、
    コード管理システム。
  6. 請求項5に記載のコード管理システムであって、
    前記重み付けの設定を受け付けるユーザインタフェースを更に備える、
    コード管理システム。
  7. 請求項1に記載のコード管理システムであって、
    前記変更度算出部は、前記レイアウトに関する差分のうち大きさが予め設定された閾値以下である差分については当該差分による前記レイアウト変更度への影響度合いを抑制する、
    コード管理システム。
  8. 請求項1に記載のコード管理システムであって、
    前記変更度出力部は、前記コードのバージョンごとに、前記ロジック変更度及び前記レイアウト変更度を示す情報を出力する、
    コード管理システム。
  9. 請求項8に記載のコード管理システムであって、
    前記変更度出力部は、前記ロジック変更度又は前記レイアウト変更度が夫々について設定された閾値未満であるバージョンの前記コードについての前記情報の出力を制限するフィルタリング機能を有する、
    コード管理システム。
  10. 請求項1に記載のコード管理システムであって、
    前記変更度出力部は、各バージョンの前記コードの前記ロジック変更度及び前記レイアウト変更度の遷移を、前記ロジック変更度の累積値を横軸とし、前記レイアウト変更度の累積値を縦軸とするグラフで表した情報を出力する、
    コード管理システム。
  11. 請求項1に記載のコード管理システムであって、
    編集された前記フローの前記コードが前記コード管理ツールに登録されたことを契機として、前記ロジック変更度及び前記レイアウト変更度を求める処理を開始させる連携制御部を更に備える、
    コード管理システム。
  12. 請求項11に記載のコード管理システムであって、
    前記連携制御部は、CI(Continuous Integration)ツールを用いて実現される、
    コード管理システム。
  13. 請求項1に記載のコード管理システムであって、
    前記コード管理ツールは、GitHub(登録商標)又はGitLab(登録商標)である、
    コード管理システム。
  14. 請求項2に記載のコード管理システムであって、
    前記ビジュアルプログラミングによる前記フローの編集はNode−REDを用いて行われ、前記コードはJSON(JavaScript Object Notation)形式のコードである、
    コード管理システム。
  15. 情報処理装置が、
    ビジュアルプログラミングによってユーザが編集するフローの編集前後におけるコードを、バージョン管理が可能なコード管理ツールに管理するステップ、
    前記コードの変更前後の差分のうちロジックに関する差分についての変更の度合いを示す指標であるロジック変更度と、前記コードの変更前後の差分のうちレイアウトに関する差分についての変更の度合いを示す指標であるレイアウト変更度と、を求めるステップ、
    及び、
    前記ロジック変更度及び前記レイアウト変更度に基づく情報を出力するステップ、
    を実行する、コード管理方法。
JP2019060359A 2019-03-27 2019-03-27 コード管理システム、及びコード管理方法 Pending JP2020160854A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019060359A JP2020160854A (ja) 2019-03-27 2019-03-27 コード管理システム、及びコード管理方法
US16/566,981 US11061664B2 (en) 2019-03-27 2019-09-11 Code management system and code management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019060359A JP2020160854A (ja) 2019-03-27 2019-03-27 コード管理システム、及びコード管理方法

Publications (1)

Publication Number Publication Date
JP2020160854A true JP2020160854A (ja) 2020-10-01

Family

ID=72608003

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019060359A Pending JP2020160854A (ja) 2019-03-27 2019-03-27 コード管理システム、及びコード管理方法

Country Status (2)

Country Link
US (1) US11061664B2 (ja)
JP (1) JP2020160854A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240021493A (ko) * 2022-08-10 2024-02-19 쿠팡 주식회사 전자 장치 및 그의 정보 제공 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7428726B1 (en) * 2000-04-12 2008-09-23 Compuware Corporation Techniques for software configuration tracking
JP2009017505A (ja) * 2007-07-09 2009-01-22 Toshiba Corp 画像圧縮装置、画像伸張装置及び画像処理装置
US9141346B2 (en) * 2011-05-12 2015-09-22 Google Inc. Layout management in a rapid application development tool
US10303757B2 (en) * 2016-08-19 2019-05-28 Cognex Corporation Apparatuses, systems, and methods for providing a visual program for machine vision systems
US10031835B2 (en) * 2016-09-28 2018-07-24 Sap Se Code block rating for guilty changelist identification and test script suggestion
US10802945B2 (en) * 2016-12-07 2020-10-13 Ab Initio Technology Llc Differencing of executable dataflow graphs
US10318411B2 (en) * 2017-04-25 2019-06-11 International Business Machines Corporation Disruptiveness based testing of a web page
US11281436B2 (en) * 2017-06-30 2022-03-22 Ashish Belagali System for creating one or more deployable applications and source code thereof using reusable components and method therefor
US10606583B2 (en) * 2017-12-08 2020-03-31 International Business Machines Corporation Software change tracking and management
US11055420B2 (en) * 2018-02-05 2021-07-06 International Business Machines Corporation Controlling access to data requested from an electronic information system
US20200019583A1 (en) * 2018-07-11 2020-01-16 University Of Southern California Systems and methods for automated repair of webpages

Also Published As

Publication number Publication date
US11061664B2 (en) 2021-07-13
US20200310787A1 (en) 2020-10-01

Similar Documents

Publication Publication Date Title
US10318628B2 (en) System and method for creation of templates
JP5238937B2 (ja) セグメンテーション定義の作成
JP2016224923A (ja) ユーザフォームインタフェースの自動生成の方法およびシステム
US20210208854A1 (en) System and method for enhancing component based development models with auto-wiring
KR101355273B1 (ko) 컴퓨팅 시스템 및 그 실행 제어 방법과, 그 실행 제어 프로그램을 기록한 기록 매체
US11150879B2 (en) Method and system for configuring processes of software applications using activity fragments
RU2679971C2 (ru) Осуществление доступа к семантическому контенту в системе разработки
JP2020160854A (ja) コード管理システム、及びコード管理方法
JP2020123175A (ja) コード管理システムおよびコード管理方法
CN115629763A (zh) 目标代码的生成方法、npu指令的显示方法及装置
JP2019197405A (ja) プロジェクト状況管理装置、プロジェクト状況管理プログラム及びプロジェクト状況管理方法
US11029980B2 (en) Customizable animations
JP7381290B2 (ja) 計算機システム及びデータの管理方法
JP6552162B2 (ja) 情報処理装置、情報処理方法、およびプログラム
KR101949337B1 (ko) RIA를 이용한 클라우드 기반 aPaaS 제공 방법
TW201606547A (zh) 用戶定義的動態事件
US10515330B2 (en) Real time visibility of process lifecycle
US20120198373A1 (en) Focus-Driven User Interface
US11921688B2 (en) Environment construction support device and environment construction support method
US11816424B2 (en) Conditional save of draft enabled business objects
JP6339932B2 (ja) データ管理装置、データ管理方法及びデータ管理プログラム
JP6497087B2 (ja) 情報処理装置及び情報処理プログラム
EP4345609A1 (en) System and method for decomposing monolith applications into software services
JP2019101829A (ja) ソフトウェア部品管理システム、計算機および方法
WO2023223424A1 (ja) ドキュメント生成装置、プログラム及びドキュメント生成方法