JP7113765B2 - コード管理システムおよびコード管理方法 - Google Patents

コード管理システムおよびコード管理方法 Download PDF

Info

Publication number
JP7113765B2
JP7113765B2 JP2019014910A JP2019014910A JP7113765B2 JP 7113765 B2 JP7113765 B2 JP 7113765B2 JP 2019014910 A JP2019014910 A JP 2019014910A JP 2019014910 A JP2019014910 A JP 2019014910A JP 7113765 B2 JP7113765 B2 JP 7113765B2
Authority
JP
Japan
Prior art keywords
code
flow
unit
processing
management system
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.)
Active
Application number
JP2019014910A
Other languages
English (en)
Other versions
JP2020123175A (ja
Inventor
寿雄 西田
順史 木下
恵介 畑崎
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 JP2019014910A priority Critical patent/JP7113765B2/ja
Priority to US16/574,833 priority patent/US10884711B2/en
Publication of JP2020123175A publication Critical patent/JP2020123175A/ja
Application granted granted Critical
Publication of JP7113765B2 publication Critical patent/JP7113765B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、コード管理システムおよびコード管理方法に関する。
プログラミングツールには、ソースコードを記述することなく、モデル図を記述することによりソフトウェア開発が可能なビジュアルプログラミングツールがある。その一例として、Node-RED(https://nodered.org/)が挙げられる。ビジュアルプログラミングツールを用いたソフトウェア開発では、各種処理が表現されたノードに対して、用途や環境、その他の状況に対応した情報を属性値(プロパティ)として設定し、ノード間を線で繋ぐごとで一連の処理をフローとして記述する。ソフトウェア開発者は、このようなビジュアルプログラミングツールを用いることで、ソフトウェア開発に関する知識が十分になくとも、直感的に意図した処理を行うソフトウェアを開発することができる。
また、ソフトウェア開発の分野では、しばしばコードの再利用を行うことで、開発期間の短縮を図ることがある。このような場合、再利用を行うコードは、GitHub(https://github.com/)やGitLab(https://gitlab.com/)など、コード管理ツールと呼ばれるツールを利用することでコード共有を行う。ソフトウェア開発者は、コード管理ツールから任意のコードを取得することにより、既存コードを再利用したソフトウェア開発を行うことができる。
このように、ソフトウェア開発者は、コード管理ツールなどで共有されたコードを再利用することによって、ゼロからソフトウェアを開発する必要がなくなり、効率よくソフトウェア開発を行うことができるようになる。これは、ビジュアルプログラミングツールを用いた開発においても同じである。
しかし、ビジュアルプログラミングツールで開発したソフトウェアであっても、コード管理ツール上では、ソースコードとして登録、管理される。例えば、Node-REDで開発した一連のフローは、JSON(JavaScript(登録商標) Object Notation)と呼ばれるJavaScript(登録商標)プログラミング言語をベースとした形式のコードで管理される。従って、ビジュアルプログラミングツールを用いた開発であっても、既存のコードを再利用して開発を行う場合には、再利用のために登録されたJSON形式のコードを理解し、自身のソフトウェア開発の効率化を図ることのできるものを探す必要がある。これは、ソフトウェア開発に関する知識が十分にない開発者にとっては困難な作業である。また、ソフトウェア開発を熟知した開発者においても、コードを読み、再利用するコードを探す工程は、ソフトウェア開発における大きなオーバーヘッドとなる。
ここで、特許文献1には、プログラムの論理情報を解析し、フローチャートとして出力することにより、プログラム言語を知らない場合でもプログラムの仕様を容易に把握できる方法について記載されている。
特開平5-119989号公報
Node-REDを始めとしたビジュアルプログラミングツールにおいては、各種処理を表現したノードを配置、ノード間を線で繋ぐごとで一連の処理を記述していくため、見やすさの観点などから、各ノードの配置場所も重要な情報となる。しかしながら、特許文献1に示された方法では、このような情報が欠落してしまい、ビジュアルプログラミングツールで生成したソフトウェアの再利用の利便性を損ねてしまう。
そこで、本発明は、以上の点を考慮してなされたもので、ビジュアルプログラミングツールで生成したソフトウェアの再利用の利便性をより高めることを目的とする。
かかる課題を解決するため本発明においては、例えば、処理を表すノードを結線することで処理フローを作成するビジュアルプログラミングツールを含むコード管理システムにおいて、ユーザ操作に基づいて処理フローを作成し、作成された処理フローに基づくコードを生成するフロー生成部と、前記フロー生成部により生成されたコードを保存するフロー管理部と、前記フロー管理部にコードが保存されたことを契機として該コードを取得するコード取得部と、前記コード取得部により取得されたコードを処理フロー図へ変換するコード変換部と、前記コード変換部により変換された処理フロー図のフロー画像を生成するフロー画像生成部と、前記フロー画像生成部により生成されたフロー画像を、前記コード変換部により該当の処理フロー図に変換される前のコードと対応付けて前記フロー管理部に登録するフロー画像登録部とを有することを特徴とする。
本発明によれば、ビジュアルプログラミングツールで生成したソフトウェアの再利用の利便性をより高めることができる。
上記以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。
実施例1におけるコード管理システムの構成例を示す図である。 実施例1におけるコード管理システムの構成を具体化した例を示す図である。 実施例1におけるビジュアルプログラミングツールの画面の例を示す図である。 実施例1におけるフロー管理リポジトリに登録されたコード情報を示す画面の例を示す図である。 実施例1におけるフロー管理リポジトリへのコード情報の登録形態の例を示す図である。 実施例1におけるコード管理システムの処理の流れを示すフローチャートの例である。 実施例1における複数のフローが存在する場合のビジュアルプログラミングツールの画面の例を示す図である。 実施例1におけるフロー管理リポジトリに登録されたコードの一部の例を示す図である。 実施例2におけるコード管理システムの処理で、複数のフローが存在する場合に、フロー画像として保存するフローの選定を含んだ処理の流れを示すフローチャートの例である。 実施例3におけるコード管理システムの処理で、フロー管理リポジトリに複数のフロー画像が存在する場合に、コードと共に表示するフロー画像の選定を含んだ処理の流れを示すフローチャートの例を示す図である。 実施例4におけるコード管理システムを実現するコンピュータの例を示す図である。
以下図面に基づき、本発明の実施形態に含まれる実施例を詳述する。以下の実施例を説明するための各図面において、同一参照番号は、同一あるいは類似の構成または処理を示し、後出の説明が省略される。後出の実施例の説明では、前出の実施例の説明との差分のみを説明する。また。各実施例および各変形例は、本発明の技術思想の範囲かつ整合する範囲で一部または全部を組合せることができる。
本実施例では、ビジュアルプログラミングツールで生成したソフトウェアのソースコード(以下、コードと呼ぶ)をコード管理ツールに登録、再利用可能にするシステムにおいて、ビジュアルプログラミングツール上で表示したコードのフロー画像をこのコードに紐付け、共に管理ツールに登録することにより、再利用するコードを選択する際の情報として活用する方法を示す。
<実施例1のコード管理システムの構成>
まず、本実施例におけるコード管理システムの構成例について図1を用いて説明する。図1は、実施例1におけるコード管理システムの構成例を示す図である。
図1に示すように、本実施例におけるコード管理システム1Sは、ユーザ操作部100、フロー生成部101、フロー管理部102、外部ツール実行部103、およびフロー画像生成ツール群104を含む。また、フロー画像生成ツール群104は、コード取得部1041、コード変換部1042、フロー画像生成部1043、およびフロー画像登録部1044を含む。
コード管理システム1Sのユーザであるソフトウェア開発者は、ユーザ操作部100を操作し、フロー生成部101にアクセスして、ビジュアルプログラミングツールを用いたフロー開発を実施する。ソフトウェア開発者は、フロー生成部101を使用して開発したフローを、フロー管理部102に登録しておく。
なお、フロー管理部102に登録されるのは、ソフトウェア開発者がビジュアルプログラミングツール上で開発したフローをコードに変換したものになる。一般的に、この変換処理は、ビジュアルプログラミングツールの機能として提供される。
ソフトウェア開発者は、ユーザ操作部100を操作してフロー管理部102にアクセスし、フロー管理部102に格納されている既存のコードを読み込み、フロー生成部101に取り込む。コードは、フロー生成部101に取り込まれることで再利用可能になる。
なお、フロー生成部101に取り込まれたコードは、ビジュアルプログラミングツールの機能によりフローに変換される。ソフトウェア開発者は、コードから変換された処理フローを編集する形でコード編集が可能になる。
外部ツール実行部103は、フロー管理部102にコードが登録されたことを検知すると、フロー画像生成ツール群104を制御することにより、登録を検知したコードをビジュアルプログラミングツール上で表示したときのフロー画像を取得する。
具体的には、外部ツール実行部103は、コード取得部1041により、フロー管理部102にアクセスし、登録を検知したコードの取得を行う。次に、外部ツール実行部103は、コード変換部1042により、取得したコードをフローに変換する。次に、外部ツール実行部103は、フロー画像生成部1043により、変換したフローのフロー画像を生成する。最後に、外部ツール実行部103は、フロー画像登録部1044により、生成したフロー画像を、該当するコードに紐付けて、フロー管理部102に登録する。
これにより、フロー管理部102では、コードと、そのコードをビジュアルプログラミングツール上で表示したときのフロー画像を紐付けて管理することができるようになるため、ソフトウェア開発者がフロー画像を参考に再利用するコードを探すことが可能になる。
ここで、コード管理システムの構成を具体化した例について、図2を用いて説明する。図2は、実施例1におけるコード管理システムの構成を具体化した例を示す図である。
ユーザ端末200は、ユーザ操作部100に相当し、例えばPC(Personal Computer)である。
フロー生成ツール201は、フロー生成部101に相当し、ビジュアルプログラミングツールである。本実施例では、フロー生成ツール201をNode-RED(登録商標、以下同様)として説明を行う。
フロー管理リポジトリ202は、フロー管理部102に相当し、コード管理ツールである。本実施例では、フロー管理リポジトリ202をGitLab(登録商標、以下同様)として説明を行う。
CI(Continuous Integration)ツール203は、外部ツール実行部103に相当し、継続的インテグレーションを実現するツールである。一般的に知られたCIツールには、JenkinsやDroneなどがある。CIツールは、実行したい処理が予めスクリプトとして記述されており、スクリプトで記述された任意の処理の実行を自動化することができるものである。なお、スクリプトの処理実行のタイミングについては、CIツール203が特定のイベント通知をフックしたタイミング等に設定することができる。
ユーザ端末200、フロー生成ツール201、フロー管理リポジトリ202、およびCIツール203は、ネットワーク205を介して通信可能に接続されている。本実施例では、フロー生成ツール201、フロー管理リポジトリ202、CIツール203が、各々独立したサーバ上で動作しているとするが、これらが動作するサーバは適宜分散または統合されてもよい。例えば、フロー管理リポジトリ202およびCIツール203が、一体のサーバ上で動作してもよい。
フロー画像生成スクリプト204は、フロー画像生成ツール群104に相当し、CIツール203が実行するスクリプト群である。スクリプトとしては、コード取得処理2041、コード変換処理2042、フロー画像生成処理2043、およびフロー画像登録処理2044を備えている。
コード取得処理2041は、コード取得部1041に相当する。コード変換処理2042は、コード変換部1042に相当する。フロー画像生成処理2043は、フロー画像生成部1043に相当する。フロー画像登録処理2044は、フロー画像登録部1044に相当する。
本実施例では、フロー管理リポジトリ202へのコード登録(新規作成または更新)を契機に、CIツール203がフロー画像生成スクリプト204を自動実行することで、フロー管理リポジトリ202に登録されたコードをもとに、フロー生成ツール201上で表示したときのフロー画像を生成し、フロー管理リポジトリ202に登録されているコードと紐付けて共に保存しておく。
続いて、システムを構成する各ツールについて説明する。図3は、実施例1におけるビジュアルプログラミングツールの画面の例を示す図である。図3は、Node-RED(フロー生成ツール201)におけるフロー生成画面の例を模式的に示したものである。
ソフトウェア開発者は、ユーザ端末200で動作するウェブブラウザから、フローエディタGUI300にアクセスし、フロー編集画面3001で処理フローの作成を行う。パレット3002には、入力や出力、外部サービス等の機能別に、各種処理の実行プログラムがノード3003として準備されている。
ソフトウェア開発者は、パレット3002から任意のノード3003をフロー編集画面3001にドラッグアンドドロップすることで、ノードを利用することができる。また、ソフトウェア開発者は、ノード3003同士を、ワイヤー3004で結線することで、ノードの処理順序を定義することができる。図3の例では、ノード3003(入力ノード1)の処理が終了すると、ノード3003(入力ノード1)の右側から出たワイヤー3004で結線されたノード3003(呼出しノードA)の処理が実行される。
ソフトウェア開発者は、フローエディタGUI300において“デプロイ”と表示されるボタンを押下することで、フロー編集画面3001上に表示されている処理フローからコードが生成される。生成されたコードは、フロー編集画面3001における所定操作によりフロー管理リポジトリ202に保存できる。
<実施例1のコード情報を示す画面>
図4は、実施例1におけるフロー管理リポジトリに登録されたコード情報を示す画面の例を示す図である。図4は、GitLab(フロー管理リポジトリ202)に登録されているコード情報を示す画面の例を模式的に示したものである。図5は、実施例1におけるフロー管理リポジトリへのコード情報の登録形態の例を示す図である。図5は、GitLab(フロー管理リポジトリ202)におけるコード情報の登録形態の例を示したものである。
ソフトウェア開発者は、ユーザ端末200で動作するウェブブラウザから、コード管理GUI400にアクセスすることで、フロー管理リポジトリ202に登録されているコードを確認することができる。フロー管理リポジトリ202では、プロジェクトという単位でコード管理を行う。図4は、Project_1という名前のプロジェクト情報を閲覧した場合の例を示しており、プロジェクトに属するファイル一覧4001が表示されている。
図4では、プロジェクト情報がProject_1のプロジェクトには、flow.json、flow_image.jpg、README.mdの3つのファイルが登録されている例を示す。Node-RED(フロー生成ツール201)で生成したフローは、Node-REDのプロジェクト機能を用いることにより、ネットワーク205で繋がっているGitLabを始めとしたフロー管理リポジトリ202などのコード管理ツールに、JSON形式のファイルとして登録される。flow.jsonはその一例である。また、flow_image.jpgは、コード(本実施例ではflow.json)に紐付けて登録するフロー画像のファイルの一例である。そして、README.mdは、プロジェクトの説明を記載するファイルであり、マークダウンと呼ばれる形式のものである。
GitLabでは、README.mdに記載した情報が、プレビュー画面4002として表示されるようになっている。マークダウンファイルでは、テキストおよびテキストの装飾の他、画像ファイルの埋め込みが可能であり、図4は、「フロー図」というタイトル文字、および、flow_image.jpgを埋め込むことで、「フロー画像」を、プレビュー画面4002に表示させた例を示す。
なお、図5に例示すように、フロー管理リポジトリ202では、各プロジェクトに対応するJSONファイル、1または複数のJPGファイル、マークダウンファイル、その他のファイルを、プロジェクトごとにまとめて格納している。
このように、本実施例では、ソフトウェア開発者がコード管理GUI400にアクセスし、再利用したいフロー(コード)を検索する際、ファイル一覧4001だけでなく、Node-RED上でフローとして表示したときのフロー画像を合わせてプレビュー画面4002に表示する。あるいは、コードと、対応するフロー画像とを、対照可能に(あるいは同時に)プレビュー画面4002に表示する。これにより、ソフトウェア開発者は、再利用するフロー(コード)を探す際の参考情報として、プレビュー画面4002の表示を活用することができる。
<実施例1のコード管理システムの処理>
次に、本実施例におけるコード管理システムの処理の流れの一例について、図6のフローチャートを用いて示す。図6は、実施例1におけるコード管理システムの処理の流れを示すフローチャートの例である。実施例1におけるコード管理システムの処理は、フロー管理リポジトリ202へのコード登録(新規作成もしくは更新)を契機として実行される。以下では、CIツール203が各ステップの処理を行うとして説明するが、CIツール203はスクリプトを実行するCPUで実現されるので、実際には、CPUもしくはCPUで実現される機能部が各ステップの処理を行うものである。
まず、ステップS501では、CIツール203は、ソフトウェア開発者により作成された処理フローがフロー管理部102に保存されたことを検知したか否かを判定する。例えばGitLabは、GitLabにおける各種イベントを通知する機能を有しており、例えば、事前にWebhook機能を設定しておくことで、GitLabにコードが登録されたことを外部に通知することができる。
CIツール203は、処理フローの登録を検知した場合(ステップS501YES)、ステップS502に処理を移し、処理フローの登録を検知していない場合(ステップS501NO)、ステップS501の処理を繰り返す。
ステップS502では、CIツール203は、コード登録の通知をフックし、コード取得処理2041のスクリプトを実行することで、フロー管理リポジトリ202(GitLab)に登録された処理フロー(実態はJSON形式のファイル)を取得する。
次に、ステップS503では、CIツール203は、コード変換処理2042のスクリプトを実行することで、フロー管理リポジトリ202(GitLab)から取得したコードをフロー生成ツール201(Node-RED)で読み込み、処理の流れを表すフロー図の形態に変換を行う。変換されたフロー図は、フロー生成ツール201(Node-RED)のフローエディタGUI300上に表示される。
ここで、ステップS503の処理を実現する手段の一例を示す。GitLabから取得したコードをNode-REDで読み込むためには、ウェブブラウザからフローエディタGUI300にアクセスし、Node-REDのプロジェクト機能を利用してコードの取り込みを行う方法が挙げられる。一方で、CIツール203による処理は、ソフトウェア開発者の操作とは関係なく、バックグラウンドで実行されるものである。そこで、GUIのないブラウザであるヘッドレスブラウザを利用する。例えば、Google Chrome(登録商標、以下同様)が提供するヘッドレスモードを利用することで、CLI(Command Line Interface)からNode-REDにアクセスし、Node-RED上にコードを取り込むことで、コードをフロー図の形態に変換することができる。
次に、ステップS504では、CIツール203は、フロー画像生成処理2043のスクリプトを実行することで、フロー生成ツール201(Node-RED)のフローエディタGUI300上に表示された処理フロー図をフロー画像として取得する。ステップS504の処理についても、Google Chromeが提供するヘッドレスモードを利用することで実現できる。具体的には、画面のスクリーンショットを取得するコマンドが用意されているため、これをCLIから実行することでNode-RED上に表示したフローを画像として取得することが可能になる。
なお、処理フローなどのオブジェクトの画像取得は、Node-REDにおけるスクリーンショット取得に限られるものではない。
ここで、Node-RED上でフローを表示した場合に、複数のフローが存在する場合のNode-REDの画面の一例を図7に示す。図7は、実施例1における複数のフローが存在する場合のビジュアルプログラミングツールの画面の例を示す図である。
図7に示すように、フロー編集画面3001では、フロー選択タブ601により、複数のフローを切り替え表示できるようになっている。なお、フロー選択タブ601の情報は、GitLabから取得したフローの元ファイル(JSONファイル)を参照することで取得できる。JSONファイルに記述されているコードの一部を一例として図8に示す。図8は、実施例1におけるフロー管理リポジトリに登録されたコードの一部の例を示す図である。
JSONファイルの冒頭には、フロー選択タブ601の定義が記載されており、「type」という項目の値が「tab」になっているものが、フロー選択タブ601に関する定義である。また、「label」という項目の値が、フロー選択タブ601の名前である。従って、JSONファイルの記述を上記キーワードでパースすることにより、フロー選択タブ601で切り替え表示可能なフローの存在情報を取得することができる。この情報をもとに、CLIからフロー選択タブ601の名前を指定し、表示するフローの切り替えを行う。このようにして、複数のフローを順に切り替えて表示することで、複数のフローを画像として取得することができる(ステップS504、S505)。
次に、ステップS505では、CIツール203は、全てのフローのフロー画像を取得済か否かを判定する。CIツール203は、全てのフローのフロー画像を取得済の場合(ステップS505YES)、ステップS506に処理を移す。一方、CIツール203は、フロー画像を取得済でないフローがある場合(ステップS505NO)、ステップS5046に処理を戻す。
ステップS506では、CIツール203は、フロー画像登録処理2044のスクリプトを実行し、フロー管理リポジトリ202(GitLab)において、登録されているフローの元ファイル(JSONファイル)に紐付けて、取得したフロー画像の登録を行う。さらに、ステップS506では、CIツール203は、コード管理GUI400上でコードと共にフロー画像が表示されるように設定する。
具体的には、ステップS506の処理におけるフロー画像の登録先は、フローの元ファイル(JSONファイル)が登録されているプロジェクトとし、フロー画像のファイル名は同一プロジェクト内で一意とする。また、同プロジェクト内に存在するREADME.mdを編集し、登録したフロー画像を埋め込むことにより、プレビュー画面4002にフロー画像が表示されるようにする。以上の処理を実施した場合のコード管理GUI400におけるコード情報の表示例が先に示した図4である。
<実施例1の効果>
本実施例によれば、ビジュアルプログラミングツールで生成したソフトウェアをコード管理ツールに登録、再利用可能にするシステムにおいて、ビジュアルプログラミングツール上で表示したコードのフロー画像をコードに紐付け、共に管理ツールに登録することにより、再利用するコードを選択する際の情報としてフローの画像を活用することができる。よって、ソフトウェア開発者は、フロー画像を確認することで、コードの内容を確認せずとも、再利用したいコードをより容易に識別できるため、効率的にソフトウェア開発を行うことができる。
また、本実施例では、ビジュアルプログラミングツールで生成された処理フローのフロー画像の取得および管理を、フロー生成ツール201およびフロー管理リポジトリ202を利用し、目的の処理がスクリプトで記述されたCIツール203を実行することで実現する。よって、目的の機能を、既存構成を用いて、容易に達成することができる。
図4に示すように、コードの付加情報としてフローの画像を表示する際、複数のフローが存在する場合に、代表的なフローだけを表示したい場合もある。例えば、フローが入れ子になっており、最上位のメインフローだけを表示したい場合などがある。以下、最上位のメインフローだけの表示を実現する実施例2について、図9のフローチャートを用いて説明する。図9は、実施例2におけるコード管理システムの処理で、複数のフローが存在する場合に、フロー画像として保存するフローの選定を含んだ処理の流れを示すフローチャートの例である。
<実施例2のコード管理システムの処理>
図9に示す実施例2におけるコード管理システムの処理は、実施例1におけるコード管理システムの処理と比較して、ステップS503とステップS504の間にステップS5031およびステップS5032が実行される点が異なり、その他は同一である。図9の説明において、図6のフローチャートの説明と重複する部分については、説明を省略する。
ステップS503に続くステップS5031では、CIツール203は、ステップS503で変換されたフロー図が複数存在するか否かを判定する。CIツール203は、複数のフロー図が存在する場合(ステップS5031YES)、ステップS5032に処理を移す。一方、CIツール203は、フロー図が1つのみ存在する場合(ステップS5031NO)、ステップS504に処理を移す。
ステップS5031YESにおけるフロー生成ツール201(Node-RED)の画面の例が図7である。この例では、複数のフロー選択タブ601で各フローを切り替え表示できるようになっている。ここで、ステップS5032では、CIツール203は、コード管理GUI400上でコードと共に表示するフローを選定する。例えば、最上位のメインフローを記載したフロー編集画面のフロー選択タブ601の名称を「Main Flow」とする、というルールを決めておくことにより、メインフローが記載されたフロー選択タブ601が一意に決まる。該当するフロー選択タブ601を選択し、画面のスクリーンショットを取得することで、メインフローを画像として取得することができる(ステップS504)。メインフロー以外にもコード管理GUI400上に表示させたいフロー画像がある場合には(ステップS505NO)、該当するフロー画像の取得を行う(ステップS504)。CIツール203は、必要なフロー画像の取得が完了した後(ステップS505YES)、フロー画像登録処理2044のスクリプトを実行し、GitLabに登録されているフローの元ファイル(JSONファイル)に紐付けて、取得したフロー画像の登録を行い、コード管理GUI400上でコードと共にフロー画像が表示されるように設定する(ステップS506)。
<実施例2の効果>
本実施例によれば、フロー管理リポジトリ202(GitLab)に登録するフロー画像を選定することができるため、コード管理GUI400上に代表的なフロー画像だけをコードの付加情報として表示することが可能になり、処理フローの全体俯瞰の利便性が高まる。例えば、ソフトウェア開発者は、代表的なフロー画像に基づいてソフトウェア全体を俯瞰し、再利用したいコードを適切かつ効率的に選択することができる。
代表的なフロー画像だけをコードの付加情報として表示する手段としては、実施例2の図9のフローチャートで示したように、フロー画像のスクリーンショットを取得するステップS503の次のステップで対象フローを選定する方法に限られない。以下、対象フローを選定する他の方法を実施例3として、図10のフローチャートを用いて説明する。図10は、実施例3におけるコード管理システムの処理で、フロー管理リポジトリに複数のフロー画像が存在する場合に、コードと共に表示するフロー画像の選定を含んだ処理の流れを示すフローチャートの例を示す図である。
<実施例3のコード管理システムの処理>
図10に示す実施例3におけるコード管理システムの処理は、実施例1におけるコード管理システムの処理と比較して、ステップS505に続いてステップS5051~S5054が実行され、ステップS5054の終了に伴いコード管理システムの処理が終了する点が異なり、その他は同一である。図10の説明において、図6のフローチャートの説明と重複する部分については、説明を省略する。
ステップS504では、CIツール203は、フロー画像生成処理2043のスクリプトを実行することで、Node-RED上に表示されたフローを画像として取得する。図7に示すように、Node-RED上でフローを表示した際に複数のフローが存在する場合、フロー選択タブ601で複数のフローを順に切り替えて表示させ、全てのフローを画像として取得する(ステップS504、S505)。全フロー画像を取得済み(ステップS505YES)の場合に続くステップS5051では、CIツール203は、ステップS505でフロー画像の取得が完了した後、フロー画像登録処理2044のスクリプトを実行し、フロー管理リポジトリ202(GitLab)において、登録されているフローの元ファイル(JSONファイル)に紐付けて、取得したフロー画像の登録を行う。
具体的には、ステップS5051の処理におけるフロー画像の登録先は、フローの元ファイル(JSONファイル)が登録されているプロジェクトとする。また、登録するフロー画像の名前は、フロー画像を取得する際に選択したフロー選択タブ601の名前にしておく。例えば、図7に示したNode-RED画面の場合、フロー選択タブ601は「Main Flow」、「Sub Flow1」、「Sub Flow2」の3つが存在しており、各々のタブを選択したときに取得したフロー画像の名前を「Main Flow.jpg」、「Sub Flow1.jpg」、「Sub Flow2.jpg」のようにしておく。
続いてステップS5052では、CIツール203は、ステップS5051で複数のフロー画像が登録されたか否かを判定する。CIツール203は、ステップS5051で複数のフロー画像が登録された場合(ステップS5052YES)、ステップS5053に処理を移す。一方、CIツール203は、ステップS5051で1つのフロー画像のみが登録された場合(ステップS5052NO)、ステップS5054に処理を移す。
ステップS5053では、CIツール203は、コード管理GUI400上でコードと共に表示するフローを選定する。例えば、最上位のメインフローだけを選定する場合、GitLabに登録された複数のフロー画像の中から「Main Flow」の名前がついた画像を選択すればよい。
ステップS5054では、CIツール203は、コード管理GUI400上でコードと共にフロー画像が表示されるように設定を行う。ステップS5053が終了すると、CIツール203は、実施例3のコード管理システムの処理を終了する。
<実施例3の効果>
本実施例によれば、フロー管理リポジトリ202(GitLab)に登録するフロー画像を選定することができるため、コード管理GUI400上に代表的なフロー画像だけをコードの付加情報として表示することが可能になり、処理フローの全体の俯瞰の利便性が高まる。加えて、取得したフローが複数である場合に、全てのフロー図のフロー画像を取得した上で、コードと同時表示するフロー画像を選択するので、ステップS5054の表示設定を変更するだけで、コードと同時表示するフロー画像を切り替えることもできる。全てのフロー図のフロー画像が取得されているので、例えば、ユーザがメインの処理フローを確認している際、さらに詳細なサブの処理フローを確認したいときでも、目的のフロー画像を表示させて確認することができる。
上記の実施例1~3の各構成、機能、処理部、処理手段等は、プロセッサがそれぞれの機能を実現するプログラムを解釈して実行することにより、ソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶部、または、ICカード、SDカード、DVD(Digital Video Disk)、BD(Blu-ray(登録商標) Disk)等の記録媒体に置くことができる。以下、コード管理システムをソフトウェアで実現する実施例4について説明する。
<実施例4のコード管理システムを実現するコンピュータ>
図11は、実施例4におけるコード管理システムを実現するコンピュータの例を示す図である。コンピュータ5000では、CPU(Central Processing Unit)に代表される演算装置5300、RAM(Random Access Memory)等のメモリ5400、入力装置5600(例えばキーボード、マウス、タッチパネル等)、および出力装置5700(例えば外部ディスプレイモニタに接続されたビデオグラフィックカード)が、メモリコントローラ5500を通して相互接続されている。
コード管理システム1Sのユーザ端末200、フロー生成ツール201、フロー管理リポジトリ202、CIツール203を実現するための各プログラムが、I/O(Input/Output)コントローラ5200を介してSSDやHDD等の外部記憶装置5800から読み出されて、CPU5300およびメモリ5400の協働により実行される。
あるいは、コード管理システム1Sのユーザ端末200、フロー生成ツール201、フロー管理リポジトリ202、CIツール203を実現するための各プログラムは、ネットワークインターフェース5100を介した通信により、外部のコンピュータから取得されてもよい。
また、上記の実施例1~3における各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現されてもよい。
<その他の実施例>
なお、既述の通り、フロー生成ツール201、フロー管理リポジトリ202、CIツール203が動作するサーバは、各々独立したサーバであっても、適宜分散または統合されたサーバであっても何れでもよい。
すなわち、上記の実施例1~3では、コード管理システムの構成を具体化した例を図2に示した。その説明において、フロー生成ツール201、フロー管理リポジトリ202、CIツール203は各々独立したサーバ上で動作すると仮定したが、一部あるいは全てを同一サーバで動作させる構成にしてもよい。また、フロー管理リポジトリ202(GitLab)とCIツール203を分ける構成を示したが、GitLabでは、GitLab CIというツールを追加インストールすることにより、GitLabでのCI実行が可能になるため、GitLabがCIツールを内包するような構成にしてもよい。
また、フロー画像生成スクリプト204は、コード取得処理2041、コード変換処理2042、フロー画像生成処理2043、フロー画像登録処理2044から成ることを示したが、これらのスクリプトは分ける必要はなく、一部あるいは全てを1つのスクリプトに纏めて記述してもよい。
また、上記の実施例1~3では、コード管理ツールにコードが保存されたことを契機として該コードを処理フロー図に変換、処理フロー図を生成する例を示したが、処理フロー図を生成するタイミングはこの限りではい。例えば、コード管理ツールにおいて、該コード情報を表示する際に処理フロー図を生成する構成にしてもよい。さらに、処理フロー図の生成については、コード管理ツールが実施する形態であってもよいし、コード管理ツールの情報を利用者に提示するブラウザ等の表示ツールが実施する形態であってもよい。
また、上記の実施例1~3では、GitLabの画面上でコードの付加情報としてフロー画像を表示する例を示したが、GitHub等、別のコード管理ツール上で表示する構成にしてもよい。また、コード管理ツールに限らず、管理されているコード情報を提示する機能を有するツール画面上に表示する構成にしてもよい。さらに、上記の実施例で示したフロー画像は、Node-RED上に表示される処理フロー図のスクリーンショット画像であるが、コードからUML(Unified Modeling Language)を生成可能なPlantUMLを利用して生成したUMLダイアグラムなどを画像として保存し、コードを共に管理する構成にしてもよい。
本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記した実施例において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
1S:コード管理システム、100:ユーザ操作部、101:フロー生成部、102:フロー管理部、103:外部ツール実行部、104:フロー画像生成ツール群、200:ユーザ端末、201:フロー生成ツール、201:フロー生成ツール、202:フロー管理リポジトリ、203:CIツール、204:フロー画像生成スクリプト、300:フローエディタGUI、400:コード管理GUI601:フロー選択タブ、1041:コード取得部、1042:コード変換部、1043:フロー画像生成部、1044:フロー画像登録部、2041:コード取得処理、2042:コード変換処理、2043:フロー画像生成処理、2044:フロー画像登録処理、3001:フロー編集画面、3002:パレット、3003:ノード、3004:ワイヤー、4001:ファイル一覧、4002:プレビュー画面、5000:コンピュータ、5100:ネットワークインターフェース、5200:コントローラ、5300:演算装置、5400:メモリ、5500:メモリコントローラ、5600:入力装置、5700:出力装置、5800:外部記憶装置

Claims (6)

  1. 処理を表すノードを結線することで処理フローを作成するビジュアルプログラミングツールを含むコード管理システムにおいて、
    ユーザ操作に基づいて処理フローを作成し、作成された処理フローに基づくコードを生成するフロー生成部と、
    前記フロー生成部により生成されたコードを保存するフロー管理部と、
    前記フロー管理部にコードが保存されたことを契機として該コードを取得するコード取得部と、
    前記コード取得部により取得されたコードを処理フロー図へ変換するコード変換部と、
    前記コード変換部により変換された処理フロー図のフロー画像を生成するフロー画像生成部と、
    前記フロー画像生成部により生成されたフロー画像を、前記コード変換部により該当の処理フロー図に変換される前のコードと対応付けて前記フロー管理部に登録するフロー画像登録部と
    を有することを特徴とするコード管理システム。
  2. スクリプトを実行する実行部をさらに有し、
    前記コード取得部、前記コード変換部、前記フロー画像生成部、および前記フロー画像登録部は、各処理内容がスクリプトで記述され、
    前記実行部は、前記フロー管理部にコードが保存されたことを検知すると、前記コード取得部、前記コード変換部、前記フロー画像生成部、および前記フロー画像登録部の各スクリプトを実行する
    ことを特徴とする請求項1に記載のコード管理システム。
  3. 前記コード変換部によりコードを処理フロー図に変換する処理が行われた結果、複数の処理フロー図が存在する場合には、該コードに対応付けて前記フロー管理部にフロー画像を登録する処理フロー図を、該コードに記載されている情報に基づいて選択する
    ことを特徴とする請求項1に記載のコード管理システム。
  4. 前記コードに対応付けられて前記フロー管理部にて管理されているフロー画像が複数存在する場合には、該コードと共に表示する処理フロー画像を、前記コードに記載されている情報に基づいて選択する
    ことを特徴とする請求項1に記載のコード管理システム。
  5. 前記コードと、該コードに対応付けられて前記フロー管理部にて管理されているフロー画像と、を表示装置に対照可能に表示する
    ことを特徴とする請求項3または4に記載のコード管理システム。
  6. 処理を表すノードを結線することで処理フローを作成するビジュアルプログラミングツールを含むコード管理システムにおけるコード管理方法であって、
    前記コード管理システムのフロー生成部が、ユーザ操作に基づいて処理フローを作成し、作成された処理フローに基づくコードを生成し、
    前記コード管理システムのフロー管理部が、前記フロー生成部により生成されたコードを保存し、
    前記コード管理システムのコード取得部が、前記フロー管理部にコードが保存されたことを契機として該コードを取得し、
    前記コード管理システムのコード変換部が、前記コード取得部により取得されたコードを処理フロー図へ変換し、
    前記コード管理システムのフロー画像生成部が、前記コード変換部により変換された処理フロー図のフロー画像を生成し、
    前記コード管理システムのフロー画像登録部が、前記フロー画像生成部により生成されたフロー画像を、前記コード変換部により該当の処理フロー図に変換される前のコードと対応付けて前記フロー管理部に登録する
    各処理を含んだことを特徴とするコード管理方法。
JP2019014910A 2019-01-30 2019-01-30 コード管理システムおよびコード管理方法 Active JP7113765B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019014910A JP7113765B2 (ja) 2019-01-30 2019-01-30 コード管理システムおよびコード管理方法
US16/574,833 US10884711B2 (en) 2019-01-30 2019-09-18 Code management system and code management method using a visual programming tool

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019014910A JP7113765B2 (ja) 2019-01-30 2019-01-30 コード管理システムおよびコード管理方法

Publications (2)

Publication Number Publication Date
JP2020123175A JP2020123175A (ja) 2020-08-13
JP7113765B2 true JP7113765B2 (ja) 2022-08-05

Family

ID=71733613

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019014910A Active JP7113765B2 (ja) 2019-01-30 2019-01-30 コード管理システムおよびコード管理方法

Country Status (2)

Country Link
US (1) US10884711B2 (ja)
JP (1) JP7113765B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112052012B (zh) * 2020-08-31 2022-11-11 烽火通信科技股份有限公司 基于xslt和xsd的代码自动生成方法和设备
CN115905272B (zh) * 2023-01-09 2023-05-26 深圳市明源云采购科技有限公司 索引自动更新方法、索引自动更新装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301568A (ja) 2004-04-09 2005-10-27 Denso Corp 表示情報記憶制御装置および表示情報記憶制御プログラム
JP2013513868A (ja) 2009-12-09 2013-04-22 ザ マスワークス, インク グラフィカル状態遷移図モデルにおける再利用候補の正規化バージョン
JP2015005035A (ja) 2013-06-19 2015-01-08 日本電信電話株式会社 プログラミング情報共有装置及びプログラミング情報共有方法
US20170153886A1 (en) 2015-12-01 2017-06-01 International Business Machines Corporation Projects browser for development environments

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05119989A (ja) 1991-10-24 1993-05-18 Shikoku Nippon Denki Software Kk プログラム仕様管理システム
US6683624B1 (en) * 2000-08-17 2004-01-27 International Business Machines Corporation System and method for managing programming object visual representations participating in alternative execution paths
US10838698B2 (en) * 2018-09-24 2020-11-17 Salesforce.Com, Inc. Providing a reuse capability for visual programming logic within a building tool
US10817266B2 (en) * 2018-09-25 2020-10-27 Salesforce.Com, Inc. Converting a captured image to visual programming logic for an automation building tool
US11379192B2 (en) * 2018-09-25 2022-07-05 Salesforce, Inc. Saving a snippet of visual programming logic for reuse amongst programs created using an automation building tool

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301568A (ja) 2004-04-09 2005-10-27 Denso Corp 表示情報記憶制御装置および表示情報記憶制御プログラム
JP2013513868A (ja) 2009-12-09 2013-04-22 ザ マスワークス, インク グラフィカル状態遷移図モデルにおける再利用候補の正規化バージョン
JP2015005035A (ja) 2013-06-19 2015-01-08 日本電信電話株式会社 プログラミング情報共有装置及びプログラミング情報共有方法
US20170153886A1 (en) 2015-12-01 2017-06-01 International Business Machines Corporation Projects browser for development environments

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
日立Node-REDエバンジェリスト,つないで つないで プログラミング,第1版,日本,株式会社リックテレコム,2017年08月25日,pp.54-58,ISBN: 978-4-86594-107-4

Also Published As

Publication number Publication date
US20200241850A1 (en) 2020-07-30
JP2020123175A (ja) 2020-08-13
US10884711B2 (en) 2021-01-05

Similar Documents

Publication Publication Date Title
US10503813B2 (en) Editing electronic documents
CN109739855B (zh) 实现数据表拼接及自动训练机器学习模型的方法和系统
TWI413933B (zh) 圖形使用者介面之應用程式介面
EP3726373A1 (en) Creating an app method and system
JP2012508934A5 (ja)
JP5267732B2 (ja) Webページの制御方法、計算機システム及びプログラム
WO2016065960A1 (en) Graphically building abstract syntax trees
JP7113765B2 (ja) コード管理システムおよびコード管理方法
JP5921765B2 (ja) プログラムグラフ表示装置、プログラムグラフ表示方法およびプログラムグラフ表示プログラム
US9684738B2 (en) Text-based command generation
US20210389933A1 (en) Creating an app method and system
JP5720531B2 (ja) ヘルプ作成支援装置、ヘルプ作成支援プログラムおよびヘルプ作成支援方法
US11061664B2 (en) Code management system and code management method
JP7004930B2 (ja) 情報処理装置と、その処理方法及びプログラム
JP2004362343A (ja) ソースコード変換装置、ソースコード変換方法、およびプログラム
JP6552162B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JP2009163566A (ja) ジョブ解析支援装置
JP2007213509A (ja) 業務フロー管理システム及び業務フロー管理方法及び業務フロー管理プログラム
US11921496B2 (en) Information processing apparatus, information processing method and computer readable medium
JP2001273125A (ja) ソースプログラム自動生成方法およびシステム、ならびにそのプログラム記録媒体
JP6107337B2 (ja) 操作記録装置、操作記録方法及び操作記録プログラム
EP4345609A1 (en) System and method for decomposing monolith applications into software services
JP5629355B1 (ja) ソースプログラム生成装置およびソースプログラム生成プログラム
JP2019012469A (ja) サーバ、その処理方法及びプログラム
JP4438625B2 (ja) 表示装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210513

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220526

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220705

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220726

R150 Certificate of patent or registration of utility model

Ref document number: 7113765

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150