JP2022178776A - Applicability/non-applicability determination method and program - Google Patents

Applicability/non-applicability determination method and program Download PDF

Info

Publication number
JP2022178776A
JP2022178776A JP2021085810A JP2021085810A JP2022178776A JP 2022178776 A JP2022178776 A JP 2022178776A JP 2021085810 A JP2021085810 A JP 2021085810A JP 2021085810 A JP2021085810 A JP 2021085810A JP 2022178776 A JP2022178776 A JP 2022178776A
Authority
JP
Japan
Prior art keywords
conversation
program
development
information
person
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
JP2021085810A
Other languages
Japanese (ja)
Inventor
翔 前田
Sho Maeda
将治 原田
Masaharu Harada
健介 倉木
Kensuke Kuraki
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2021085810A priority Critical patent/JP2022178776A/en
Publication of JP2022178776A publication Critical patent/JP2022178776A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

To apply a highly reliable correction file to a development program.SOLUTION: The presence or absence of communications between a person in charge of development and experts/reviewers, which is detected by analysis of conversation data, and a merge determination result (application determination result) are presented to a person responsible for development. A screen g11 shows a graph where participants are indicated by nodes and nodes of the person in charge of development and participants who have had conversations with the person in charge of development are connected by branches. A screen g12 shows a conversation presence/absence table T0 and a merge determination result M0. The conversation presence/absence table T0 has items of usename, role, and conversation presence/absence. The merge determination result M0 indicates merge OK/NG. Since the conversation presence/absence table T0 shows that sato.hanako (person in charge of development) who has performed file correction has had conversations with yamada.taro (expert), yoshida.jiro (expert), and saito.goro (reviewer), the merge determination result for a correction file to a development program is displayed as merge OK.SELECTED DRAWING: Figure 17

Description

本発明は、適用可否判定方法およびプログラムに関する。 The present invention relates to an applicability determination method and program.

ソフトウェアの開発においては、開発プログラムに対して、機能の修正が行われたソースコード等のファイルを繰り返し適用させながら開発が進められる。
関連技術として、例えば、レビューでコメントされた指摘者を示す記録ファイルにもとづいて、有効な指摘をコメントしたか判定する技術が提案されている。また、レビューに参加したレビュアのスキルレベルと人数を評価し、評価結果を電子メールで送信する技術が提案されている。
In software development, development proceeds while repeatedly applying files such as source code whose functions have been modified to the development program.
As a related technique, for example, a technique has been proposed for determining whether or not a valid indication has been commented based on a record file indicating an indicationr who made a comment in a review. A technology has also been proposed that evaluates the skill level and the number of reviewers who have participated in a review, and transmits the evaluation results by e-mail.

特開2019-133558号公報JP 2019-133558 A 特開2013-033391号公報JP 2013-033391 A

しかし、上述の背景技術は、コメントをした人が修正されたプログラムに精通しているとは限らない。もし修正されたプログラムに精通していない人が、有効と思われる指摘を行った場合、またはスキルレベルは高いが、修正されたプログラムに精通していない人が指摘を行った場合には、適正なコメントができていないことが考えられる。 However, the above background art does not necessarily mean that the commenter is familiar with the modified program. If a person unfamiliar with the modified program makes a valid point, or if a person with a high skill level but not familiar with the modified program makes a point, the correct It is conceivable that such comments could not be made.

1つの側面では、本発明は、修正した人が修正されたプログラムに精通している人とコミュニケーションを取ったか否かを判定することで、当該プログラムに対する信頼度の高い修正ファイルの適用を可能にした適用可否判定方法およびプログラムを提供することを目的とする。 In one aspect, the present invention enables application of highly reliable modified files to the program by determining whether the person who modified the modified program has communicated with a person familiar with the modified program. It is an object of the present invention to provide an applicability determination method and a program.

上記課題を解決するために、適用可否判定方法が提供される。適用可否判定方法は、コンピュータが、プログラムの修正が行われた場合、プログラムの修正履歴情報にもとづいて、プログラムの修正経験がある有識者を特定し、コミュニケーションサービスシステムに記録されている会話情報にもとづいて、プログラムの修正を行った開発担当者と、有識者との間でのコミュニケーションの有無を判定し、判定の結果にもとづいて、修正されたプログラムの適用可否を判定する。 In order to solve the above problems, an applicability determination method is provided. The applicability determination method is that when a program is modified, the computer identifies an expert who has experience modifying the program based on the modification history information of the program, and based on the conversation information recorded in the communication service system. Then, the presence or absence of communication between the person in charge of development who modified the program and the expert is determined, and the applicability of the modified program is determined based on the result of the determination.

また、上記課題を解決するために、コンピュータに上記適用可否判定方法と同様の処理を実行させるプログラムが提供される。 Further, in order to solve the above problems, there is provided a program that causes a computer to execute the same process as the applicability determination method.

1側面によれば、開発プログラムへの信頼度の高い修正ファイルの適用が可能になる。 According to one aspect, application of highly reliable modification files to development programs is enabled.

第1の実施の形態の情報処理装置の一例を説明するための図である。1 is a diagram for explaining an example of an information processing device according to a first embodiment; FIG. 第2の実施の形態の情報処理装置の機能ブロックの一例を示す図である。It is a figure which shows an example of the functional block of the information processing apparatus of 2nd Embodiment. 情報処理装置のハードウェア構成の一例を示す図である。It is a figure which shows an example of the hardware constitutions of an information processing apparatus. GitHubの動作の一例を説明するための図である。FIG. 4 is a diagram for explaining an example of GitHub operation; 会話情報の収集動作の一例を示す図である。It is a figure which shows an example of collection operation|movement of conversation information. 会話データの抽出動作の一例を示す図である。It is a figure which shows an example of extraction operation|movement of conversation data. チャットアプリテーブルの一例を示す図である。It is a figure which shows an example of a chat application table. プルリクエスト会話テーブルの一例を示す図である。FIG. 10 is a diagram showing an example of a pull request conversation table; FIG. masterブランチのコミット情報からのデータ抽出の一例を示す図である。FIG. 10 is a diagram illustrating an example of data extraction from commit information of a master branch; 開発ブランチのコミット情報からのデータ抽出の一例を示す図である。FIG. 10 is a diagram illustrating an example of data extraction from commit information of a development branch; masterブランチ更新テーブルの一例を示す図である。FIG. 10 is a diagram showing an example of a master branch update table; FIG. 開発ブランチ更新テーブルの一例を示す図である。FIG. 10 is a diagram showing an example of a development branch update table; FIG. プルリクエスト情報からのデータ抽出の一例を示す図である。FIG. 4 is a diagram showing an example of data extraction from pull request information; プルリクエスト関係者テーブルの一例を示す図である。It is a figure which shows an example of a pull request concerned party table. チャットアプリテーブルの一例を示す図である。It is a figure which shows an example of a chat application table. プルリクエスト会話テーブルの一例を示す図である。FIG. 10 is a diagram showing an example of a pull request conversation table; FIG. 会話有無の提示画面の一例を示す図である。It is a figure which shows an example of the presentation screen of a conversation presence/absence. 情報処理装置の動作の一例を示すフローチャートである。4 is a flow chart showing an example of the operation of the information processing device;

以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は第1の実施の形態の情報処理装置の一例を説明するための図である。情報処理装置1は、制御部1aおよび記憶部1bを備える。制御部1aは、例えば、情報処理装置1が備える図示しないプロセッサが、所定のプログラムを実行することによって実現する。記憶部1bは、情報処理装置1の主記憶装置として使用され、例えば、ソフトウェア開発の履歴情報や会話情報等を記憶する。
Hereinafter, this embodiment will be described with reference to the drawings.
[First embodiment]
FIG. 1 is a diagram for explaining an example of an information processing apparatus according to a first embodiment. The information processing device 1 includes a control unit 1a and a storage unit 1b. The control unit 1a is implemented by, for example, a processor (not shown) included in the information processing apparatus 1 executing a predetermined program. The storage unit 1b is used as a main storage device of the information processing apparatus 1, and stores, for example, software development history information, conversation information, and the like.

制御部1aは、プログラムの修正が行われた場合、プログラムの修正履歴情報にもとづいて、プログラムの修正経験がある有識者を特定する。また、制御部1aは、コミュニケーションサービスシステムに記録されている会話情報にもとづいて、プログラムの修正を行った開発担当者と、有識者との間でのコミュニケーションの有無を判定し、判定の結果にもとづいて、修正されたプログラムの適用可否を判定する。 When the program is modified, the control unit 1a identifies an expert who has experience of modifying the program based on the modification history information of the program. Based on the conversation information recorded in the communication service system, the control unit 1a determines whether there is communication between the person in charge of development who modified the program and the expert, and based on the result of the determination, applicability of the modified program.

図1の例を用いて動作の流れについて説明する。以下、プログラムの修正をファイルの修正を行うものとして説明する。
〔ステップS1〕ソフトウェア開発において、開発担当者によるプログラムの修正としてファイルの修正(新たな機能追加やバグ修正等)が行われる。なお、開発担当者は、例えば、ファイルに対して機能追加等の修正を行った人物である。
The flow of operation will be described using the example in FIG. In the following description, it is assumed that the modification of the program is modification of the file.
[Step S1] In software development, a file is modified (addition of a new function, bug correction, etc.) as a modification of a program by a person in charge of development. Note that the person in charge of development is, for example, the person who made corrections such as adding functions to the file.

〔ステップS2〕制御部1aは、ソフトウェア開発の修正履歴情報2aにもとづいて、ファイルの修正に関しての有識者を特定する。修正履歴情報2aは、例えば、ソフトウェア開発プラットフォームからリリースされるバージョンごとに開発履歴が管理されている情報である。なお、有識者は、修正が行われたファイルに対して過去に開発や修正を行った前任者が相当する。 [Step S2] Based on the software development revision history information 2a, the control unit 1a identifies an expert in file revision. The revision history information 2a is, for example, information in which the development history is managed for each version released from the software development platform. Note that the expert corresponds to the predecessor who developed or modified the modified file in the past.

〔ステップS3〕制御部1aは、コミュニケーションサービスシステム2bからファイルの修正が行われた期間における会話情報を抽出する。コミュニケーションサービスシステム2bは、例えば、GitHub(登録商標)やMattermost(登録商標)を使用することができる。 [Step S3] The control unit 1a extracts conversation information during the period in which the file was modified from the communication service system 2b. The communication service system 2b can use, for example, GitHub (registered trademark) or Mattermost (registered trademark).

〔ステップS4〕制御部1aは、会話情報にもとづいて、ファイルの修正を行った開発担当者と、有識者との間でコミュニケーションの有無を検出する。開発担当者と有識者間でコミュニケーション有りと検出した場合、ステップS5に処理が進み、コミュニケーション無しと検出した場合、ステップS6に処理が進む。 [Step S4] Based on the conversation information, the control section 1a detects whether or not there is communication between the person in charge of development who modified the file and the expert. If it is detected that there is communication between the person in charge of development and the expert, the process proceeds to step S5, and if it is detected that there is no communication, the process proceeds to step S6.

〔ステップS5〕制御部1aは、修正箇所が含まれる修正ファイルのソフトウェア開発中のプログラムへの適用を可と判定する。
〔ステップS6〕制御部1aは、修正箇所が含まれる修正ファイルのソフトウェア開発中のプログラムへの適用を不可と判定する。
[Step S5] The control unit 1a determines that the correction file containing the corrected portion can be applied to the program under software development.
[Step S6] The control unit 1a determines that it is not possible to apply the correction file containing the corrected portion to the program under software development.

このように情報処理装置1では、ファイルの修正が行われた期間における会話情報にもとづいて、ファイルの修正を行った開発担当者と、有識者との間でコミュニケーションが取れているか否かを検出する。そして、検出結果にもとづいて、修正箇所が含まれる修正ファイルのソフトウェア開発中のプログラムへの適用の可否を判定する。 In this manner, the information processing apparatus 1 detects whether or not communication is established between the person in charge of development who has corrected the file and the expert, based on the conversation information during the period in which the file was corrected. . Then, based on the detection result, it is determined whether or not the correction file including the corrected portion can be applied to the program under software development.

これにより、開発担当者と有識者間でコミュニケーションが取れている場合に修正ファイルを開発プログラムに適用できるので、開発プログラムへの信頼度の高い修正ファイルの適用が可能になる。 As a result, since the correction file can be applied to the development program when communication is established between the person in charge of development and the expert, it is possible to apply the correction file with high reliability to the development program.

[第2の実施の形態]
次に第2の実施の形態の情報処理装置について以降詳しく説明する。図2は第2の実施の形態の情報処理装置の機能ブロックの一例を示す図である。情報処理装置10は、制御部11および記憶部12を備える。制御部11は、会話情報収集部11a、会話データ抽出部11b、会話データ解析部11cおよび会話有無提示部11dを含む。また、制御部11には、コミュニケーションサービスシステム20が接続され、コミュニケーションサービスシステム20は、コミュニケーションツール21およびソフトウェア開発プラットフォーム22を含む。
[Second embodiment]
Next, the information processing apparatus according to the second embodiment will be described in detail. FIG. 2 is a diagram showing an example of functional blocks of an information processing apparatus according to the second embodiment. Information processing apparatus 10 includes control unit 11 and storage unit 12 . The control unit 11 includes a conversation information collection unit 11a, a conversation data extraction unit 11b, a conversation data analysis unit 11c, and a conversation presence/absence presentation unit 11d. A communication service system 20 is also connected to the control unit 11 , and the communication service system 20 includes a communication tool 21 and a software development platform 22 .

コミュニケーションツール21は、意思疎通や情報共有等を行う際に利用される会話ツールであり、例えば、Mattermost等のチャットアプリケーションまたはメール等のその他ツールである。ソフトウェア開発プラットフォーム22は、例えば、GitHub等のコードホスティングサービスである。 The communication tool 21 is a conversation tool used for communicating and sharing information, and is, for example, a chat application such as Mattermost or other tools such as e-mail. The software development platform 22 is, for example, a code hosting service such as GitHub.

会話情報収集部11aは、コミュニケーションツール21およびソフトウェア開発プラットフォーム22の少なくとも一方から会話情報を収集する。会話データ抽出部11bは、収集された会話情報から解析対象となる会話データを抽出する。 The conversation information collection unit 11 a collects conversation information from at least one of the communication tool 21 and the software development platform 22 . The conversation data extraction unit 11b extracts conversation data to be analyzed from the collected conversation information.

会話データ解析部11cは、抽出した会話データと、ソフトウェア開発プラットフォーム22のプルリクエストから取得した履歴情報(開発情報)とにもとづいて、有識者の識別を行い、さらに、開発担当者と有識者間でのコミュニケーションの有無を検出する。 Based on the extracted conversation data and the history information (development information) obtained from the pull request of the software development platform 22, the conversation data analysis unit 11c identifies the expert, and furthermore, identifies the person in charge of development and the expert. Detect the presence or absence of communication.

会話有無提示部11dは、ソフトウェア開発の開発責任者に対して、例えば、開発担当者と有識者とのコミュニケーションの有無を付与したコミュニケーション有無リストおよび適用可否に関して可視化した情報を提示する。記憶部12は、収集・取得された会話情報や履歴情報等がテーブル化されたデータ構造を記憶する。 The conversation presence/absence presenting unit 11d presents, to the person in charge of software development, a communication presence/absence list indicating whether or not there is communication between the person in charge of development and an expert, and visualized information regarding applicability. The storage unit 12 stores a data structure in which collected/acquired conversation information, history information, and the like are tabulated.

<ハードウェア>
図3は情報処理装置のハードウェア構成の一例を示す図である。情報処理装置10は、プロセッサ(コンピュータ)100によって全体制御されている。プロセッサ100は、制御部11の機能を有する。
<Hardware>
FIG. 3 is a diagram showing an example of the hardware configuration of the information processing apparatus. The information processing apparatus 10 is entirely controlled by a processor (computer) 100 . The processor 100 has the functions of the control unit 11 .

プロセッサ100には、バス103を介して、メモリ101、入出力インタフェース102およびネットワークインタフェース104が接続されている。
プロセッサ100は、マルチプロセッサであってもよい。プロセッサ100は、例えば、CPU(Central Processing Unit)、FPGA(Field Programmable Gate Array)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ100は、CPU、FPGA、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
A memory 101 , an input/output interface 102 and a network interface 104 are connected to the processor 100 via a bus 103 .
Processor 100 may be a multiprocessor. The processor 100 is, for example, a CPU (Central Processing Unit), FPGA (Field Programmable Gate Array), MPU (Micro Processing Unit), DSP (Digital Signal Processor), ASIC (Application Specific Integrated Circuit), or PLD (Programmable Logic Device). is. Processor 100 may also be a combination of two or more of CPU, FPGA, MPU, DSP, ASIC, and PLD.

メモリ101は、記憶部12の機能を有し、情報処理装置10の主記憶装置として使用される。メモリ101には、プロセッサ100に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ101には、プロセッサ100による処理に要する各種データが格納される。 The memory 101 has the function of the storage unit 12 and is used as the main storage device of the information processing device 10 . The memory 101 temporarily stores at least part of an OS (Operating System) program and application programs to be executed by the processor 100 . Various data required for processing by the processor 100 are stored in the memory 101 .

メモリ101は、情報処理装置10の補助記憶装置としても使用され、OSのプログラム、アプリケーションプログラム、および各種データが格納される。メモリ101は、補助記憶装置として、フラッシュメモリやSSD(Solid State Drive)等の半導体記憶装置やHDD(Hard Disk Drive)等の磁気記録媒体を含んでもよい。 The memory 101 is also used as an auxiliary storage device for the information processing apparatus 10, and stores OS programs, application programs, and various data. The memory 101 may include, as an auxiliary storage device, a semiconductor storage device such as a flash memory or an SSD (Solid State Drive), or a magnetic recording medium such as an HDD (Hard Disk Drive).

バス103に接続されている周辺機器としては、入出力インタフェース102およびネットワークインタフェース104がある。入出力インタフェース102は、キーボードやマウス等の情報入力装置を接続可能であって、情報入力装置から送られてくる信号をプロセッサ100に送信する。また、入出力インタフェース102には、ディスプレイが接続されて、会話有無/適用可否判定結果に関する情報等を表示する。 Peripheral devices connected to the bus 103 include an input/output interface 102 and a network interface 104 . The input/output interface 102 can be connected to an information input device such as a keyboard and a mouse, and transmits signals sent from the information input device to the processor 100 . A display is also connected to the input/output interface 102 to display information and the like regarding the conversation presence/absence/applicability determination result.

さらに、入出力インタフェース102は、周辺機器を接続するための通信インタフェースとしても機能する。例えば、入出力インタフェース102は、レーザ光等を利用して、光ディスクに記録されたデータの読み取りを行う光学ドライブ装置を接続することができる。光ディスクには、Blu-ray Disc(登録商標)、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(Rewritable)等がある。 Furthermore, the input/output interface 102 also functions as a communication interface for connecting peripheral devices. For example, the input/output interface 102 can be connected to an optical drive device that reads data recorded on an optical disc using a laser beam or the like. Optical discs include Blu-ray Disc (registered trademark), CD-ROM (Compact Disc Read Only Memory), CD-R (Recordable)/RW (Rewritable), and the like.

また、入出力インタフェース102は、メモリ装置やメモリリーダライタを接続することができる。メモリ装置は、入出力インタフェース102との通信機能を搭載した記録媒体である。メモリリーダライタは、メモリカードへのデータの書き込み、またはメモリカードからのデータの読み出しを行う装置である。メモリカードは、カード型の記録媒体である。 Also, the input/output interface 102 can connect a memory device and a memory reader/writer. The memory device is a recording medium equipped with a communication function with the input/output interface 102 . A memory reader/writer is a device that writes data to a memory card or reads data from a memory card. A memory card is a card-type recording medium.

ネットワークインタフェース104は、ネットワークに接続してネットワークインタフェース制御を行う。ネットワークインタフェース104は、ネットワークを通じてコミュニケーションサービスシステム20にアクセスして、会話情報や履歴情報等を収集・取得する。また、ネットワークインタフェース104は、例えば、NIC(Network Interface Card)、無線LAN(Local Area Network)カード等を使用することもできる。ネットワークインタフェース104で受信されたデータは、メモリ101やプロセッサ100に出力される。 A network interface 104 is connected to a network and controls the network interface. The network interface 104 accesses the communication service system 20 through the network to collect/acquire conversation information, history information, and the like. The network interface 104 can also use, for example, a NIC (Network Interface Card), a wireless LAN (Local Area Network) card, or the like. Data received by network interface 104 is output to memory 101 and processor 100 .

以上のようなハードウェア構成によって、情報処理装置10の処理機能を実現することができる。例えば、情報処理装置10は、プロセッサ100がそれぞれ所定のプログラムを実行することで本発明の処理を行うことができる。 The processing functions of the information processing apparatus 10 can be realized by the hardware configuration as described above. For example, the information processing apparatus 10 can perform the processing of the present invention by having the processors 100 each execute a predetermined program.

情報処理装置10は、例えば、コンピュータで読み取り可能な記録媒体に記録されたプログラムを実行することにより、本発明の処理機能を実現する。情報処理装置10に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。 The information processing apparatus 10 implements the processing functions of the present invention by executing a program recorded in a computer-readable recording medium, for example. A program describing the contents of processing to be executed by the information processing apparatus 10 can be recorded in various recording media.

例えば、情報処理装置10に実行させるプログラムを補助記憶装置に格納しておくことができる。プロセッサ100は、補助記憶装置内のプログラムの少なくとも一部を主記憶装置にロードし、プログラムを実行する。 For example, a program to be executed by the information processing device 10 can be stored in the auxiliary storage device. The processor 100 loads at least part of the program in the auxiliary storage device into the main storage device and executes the program.

また、光ディスク、メモリ装置、メモリカード等の可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えば、プロセッサ100からの制御により、補助記憶装置にインストールされた後、実行可能となる。またプロセッサ100が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。 It can also be recorded in a portable recording medium such as an optical disc, memory device, or memory card. A program stored in a portable recording medium can be executed after being installed in an auxiliary storage device under the control of the processor 100, for example. Alternatively, the processor 100 can read and execute the program directly from the portable recording medium.

<GitHub>
次にソフトウェア開発プラットフォーム22の一例であるGitHubについて説明する。Gitとはオープンソースの分散バージョン管理システムであり、ソフトウェア開発ではソースコードのバージョン管理に用いられる。
<GitHub>
Next, GitHub, which is an example of the software development platform 22, will be described. Git is an open source distributed version control system that is used for source code version control in software development.

開発担当者は、新しい機能を作成する際に、本番環境(masterブランチ)からコピーした開発環境(featureブランチ)を作成する。そして、開発担当者はコミット(commit)を重ねながら、開発が終了したブランチをmasterブランチにマージ(統合)することで、開発本流のmasterブランチを壊さずにソフトウェア開発を進めることができる。 A developer creates a development environment (feature branch) copied from the production environment (master branch) when creating a new feature. By merging (integrating) the development-finished branch into the master branch while making commits, the developer can proceed with software development without destroying the master branch, which is the mainstream of development.

なお、コミットとは、ファイルの変更や追加を日時・実施者・差分・コメント等と共に記録するコマンドであり、ファイルの追加や変更の履歴をリポジトリに保存する。新機能の開発等でソースコードの変更量が大きくなる場合は、一般に処理の分割が行われ、コミット単位で分けることでレビューが容易となる。 Note that a commit is a command that records changes and additions to files together with date/time, executor, differences, comments, etc., and saves the history of file additions and changes in the repository. When the amount of source code changes is large due to the development of a new function, etc., processing is generally divided, and reviewing is facilitated by dividing the processing into commit units.

GitHubは、このようなGitを利用したソフトウェア開発をサポートするサービスであり、ソースコードの管理に加え、プルリクエスト(Pull Request)によるサービスを提供する。プルリクエストは、バグの修正や機能追加をmasterブランチに取り込んでもらうための要求(依頼)を出す機能である。プルリクエストを行うことで、GitHubで管理されているソースコードの差分等を確認しながらソフトウェア開発を進めていくことが可能となっている。 GitHub is a service that supports software development using such Git, and in addition to source code management, provides pull request services. A pull request is a function to issue a request (request) for incorporating bug fixes and feature additions into the master branch. By making a pull request, it is possible to proceed with software development while checking differences in the source code managed on GitHub.

なお、オープンソースのソースコードホスティングシステムであるGitLabにもGitHubのプルリクエスト相当のマージリクエスト(Merge Request)という機能がある。本実施の形態では、プルリクエストを例に挙げたが、マージリクエストとしても同様の制御が可能である。 GitLab, an open source source code hosting system, also has a function called Merge Request, which is equivalent to GitHub's pull request. In this embodiment, a pull request is taken as an example, but similar control is possible for a merge request as well.

図4はGitHubの動作の一例を説明するための図である。
〔ステップS11〕masterブランチとなるソフトウェア開発のリポジトリに対して、ソースコードの機能追加・修正等を行う際にcreateブランチによって新しいブランチ(featureブランチ)が生成される。
FIG. 4 is a diagram for explaining an example of the operation of GitHub.
[Step S11] A new branch (feature branch) is generated by create branch when adding or correcting a source code function to a software development repository serving as a master branch.

〔ステップS12〕ソースコードの機能追加・修正等が行われて(commit changes)、featureブランチが更新される。
〔ステップS13〕featureブランチをmasterブランチにマージするためのプルリクエストが行われる。
[Step S12] Functions are added/corrected to the source code (commit changes), and the feature branch is updated.
[Step S13] A pull request is made to merge the feature branch into the master branch.

〔ステップS14〕featureブランチをmasterブランチにマージする前に、機能追加・修正等のフィードバック検証が行われる。
〔ステップS15〕featureブランチの最終確認が行われる(test changes)。
[Step S14] Before merging the feature branch into the master branch, feedback verification of function addition/correction is performed.
[Step S15] Final confirmation of the feature branch is performed (test changes).

〔ステップS16〕featureブランチがmasterブランチにマージされる(mergeブランチ)。
<情報処理装置の動作>
以降、情報処理装置10の動作について詳しく説明する。ここで、開発担当者、レビュアおよび有識者の用語について説明する。
[Step S16] The feature branch is merged into the master branch (merge branch).
<Operation of Information Processing Device>
Hereinafter, operations of the information processing apparatus 10 will be described in detail. The terms developer, reviewer, and expert are explained here.

開発担当者は、開発機能のソースコードの作成を行った人物である。例えば、GitHub等のソースコードホスティングシステム上でassigneeに割り当てられた人物を開発担当者として扱うことができる。 The person in charge of development is the person who created the source code of the development function. For example, a person assigned to an assignee on a source code hosting system such as GitHub can be treated as a developer.

レビュアは、開発担当者が作成し、masterブランチに統合されようとするソースコードをチェックする人物である。ソースコードに詳しいと思われる人物や開発責任者(ソースコードにマージできる権限を持っているもののソースコードを熟知していない)が割り当てられる。例えば、GitHub等のソースコードホスティングシステム上でreviewerに割り当てられた人物をレビュアとして扱うことができる。 A reviewer is someone who checks the source code written by a developer and about to be integrated into the master branch. A person who seems to be familiar with the source code or a person in charge of development (who has the authority to merge into the source code but does not know the source code well) is assigned. For example, a person assigned to a reviewer on a source code hosting system such as GitHub can be treated as a reviewer.

有識者は、例えば、開発機能に関連するソースコードの修正を過去に行ったことのある人物を有識者として扱うことができる。よって、レビュアが有識者に包含されてもよいし、有識者とレビュアは重複してもよい。 As an expert, for example, a person who has modified source code related to development functions in the past can be treated as an expert. Therefore, a reviewer may be included in an expert, and an expert and a reviewer may overlap.

(会話情報の収集)
図5は会話情報の収集動作の一例を示す図である。コミュニケーションツール21として、チャットアプリケーションのMattermostで会話c1が行われたとする。会話c1では、yamada.taroのメッセージである「ありがとうございます!こちらでも確認してみます」に対して、sato.hanakoがスマイルのスタンプで応答している。
(Collection of conversation information)
FIG. 5 is a diagram showing an example of conversation information collection operation. Suppose that a conversation c1 takes place with the chat application Mattermost as the communication tool 21 . In conversation c1, sato.hanako responds to yamada.taro's message “Thank you!

制御部11は、REST API(Representational State Transfer Application Programming Interface)やファイルダンプ等により、Mattermostから半構造化された会話情報cd1を収集する。なお、REST APIは、Webシステムを外部から利用するためのプログラムの呼び出し規約である。 The control unit 11 collects semi-structured conversation information cd1 from Mattermost using a REST API (Representational State Transfer Application Programming Interface), a file dump, or the like. Note that REST API is a program calling convention for externally using a web system.

(会話データの抽出)
図6は会話データの抽出動作の一例を示す図である。制御部11は、収集した会話情報から解析に要する会話データを抽出する。抽出した会話データは、チャットアプリテーブルt1に登録される。
(extraction of conversation data)
FIG. 6 is a diagram showing an example of a conversation data extraction operation. The control unit 11 extracts conversation data required for analysis from the collected conversation information. The extracted conversation data is registered in the chat application table t1.

チャットアプリテーブルt1は、Mattermostによって収集した会話情報cd1から会話データを抽出してテーブル化したものであり、id、original_id、root_id、posted_at、username、channelおよびreaction_typeの項目を有する。 Chat application table t1 is a table obtained by extracting conversation data from conversation information cd1 collected by Mattermost, and has items of id, original_id, root_id, posted_at, username, channel, and reaction_type.

idは、チャットアプリテーブルt1内で識別される番号である。original_idは、1つのメッセージに付される番号であり、会話情報cd1内のidに対応する。会話情報cd1からoriginal_idとして“3ot1aijcebf5t8e75kr9text4h”が抽出されている。 id is a number identified in the chat application table t1. original_id is a number assigned to one message and corresponds to id in conversation information cd1. "3ot1aijcebf5t8e75kr9text4h" is extracted as the original_id from the conversation information cd1.

root_idは、メッセージに付されるid(メッセージ識別子)であり、会話情報cd1内のroot_idに対応する。会話情報cd1からroot_idとして“3ot1aijcebf5t8e75kr9text4h”が抽出されている。 root_id is an id (message identifier) attached to a message and corresponds to root_id in conversation information cd1. "3ot1aijcebf5t8e75kr9text4h" is extracted as the root_id from the conversation information cd1.

posted_atは、メッセージが投稿された時間であり、会話情報cd1内のcreate_atに示される数値を時間に変換したものに対応する。会話情報cd1からposted_atとして“2020-1221-19:31”が抽出されている。 posted_at is the time when the message was posted, and corresponds to the time converted from the numerical value indicated in create_at in the conversation information cd1. "2020-1221-19:31" is extracted as posted_at from the conversation information cd1.

usernameは、会話情報cd1のuser idを人の氏名に変換したものであり、“yamada.taro”が抽出されている。channelは、会話情報cd1のchannel_idからチャネル名に変換したものであり、“team_dev”が抽出されている。reaction_typeは、メッセージに対する応答がメッセージの場合はmessageと登録され、スタンプの場合はスタンプ名が登録される。図6の例では、「ありがとうございます!こちらでも確認してみます」のメッセージに対しての応答として“smile”のスタンプ名が登録されている。 The username is obtained by converting the user id of the conversation information cd1 into a person's name, and "yamada.taro" is extracted. The channel is a channel name converted from the channel_id of the conversation information cd1, and "team_dev" is extracted. For reaction_type, message is registered when the response to the message is a message, and stamp name is registered when the response is a stamp. In the example of FIG. 6, a stamp name of "smile" is registered as a response to the message "Thank you! I will check this as well."

図7はチャットアプリテーブルの一例を示す図である。チャットアプリテーブルT1は、図6で上述したように、コミュニケーションツール21として例えば、チャットアプリケーションのMattermostの会話情報から抽出した会話データをテーブル化したものである。 FIG. 7 is a diagram showing an example of a chat application table. As described above with reference to FIG. 6, the chat application table T1 is a table of conversation data extracted from the conversation information of the chat application Mattermost as the communication tool 21, for example.

チャットアプリテーブルT1では、id=1の会話データのレコードと、id=2の会話データのレコードの各root_idは同じ“3ot1aijcebf5t8e75kr9text4h”となっている。このようにroot_idが同一の会話データは、1つの同じ会話スレッドとして扱われる。 In the chat application table T1, each root_id of the conversation data record with id=1 and the conversation data record with id=2 is the same "3ot1aijcebf5t8e75kr9text4h". Conversation data with the same root_id are treated as one and the same conversation thread.

図8はプルリクエスト会話テーブルの一例を示す図である。制御部11は、チャットアプリテーブルT1の作成と同様にして、ソフトウェア開発プラットフォーム22のGitHubからプルリクエスト会話テーブルT2を作成する。 FIG. 8 is a diagram showing an example of a pull request conversation table. The control unit 11 creates a pull request conversation table T2 from GitHub of the software development platform 22 in the same manner as creating the chat application table T1.

プルリクエスト会話テーブルT2は、GitHub上でのissueやプルリクエストによる会話から解析に要する会話データを抽出して作成したテーブルであり、id、original_id、root_id、posted_at、username、channelおよびreaction_typeの項目を有する。 The pull request conversation table T2 is a table created by extracting conversation data required for analysis from conversations by issues and pull requests on GitHub, and has items of id, original_id, root_id, posted_at, username, channel, and reaction_type. .

また、プルリクエスト会話テーブルT2では、id=1の会話データのレコードと、id=2の会話データのレコードの各root_idは同じ“dfakjekfjekf5t8e75falejkljsd”となっている。このようにroot_idが同一の会話データは、GitHub上でのissueやプルリクエストにおいて、1つの同じ会話スレッドとして扱われる。 Also, in the pull request conversation table T2, the root_id of the conversation data record with id=1 and the conversation data record with id=2 are the same "dfakjekfjekf5t8e75falejkljsd". In this way, conversation data with the same root_id is treated as one and the same conversation thread in issues and pull requests on GitHub.

なお、上記では、MattermostやGitHubの会話情報から会話データを抽出して作成した会話テーブルの一例を示したが、会議等の音声データを話者識別してテキスト化したものから同様にして解析に要する会話テーブル(会議発言テーブル)を作成することも可能である。 In the above, an example of a conversation table created by extracting conversation data from conversation information on Mattermost and GitHub was shown. It is also possible to create a conversation table (meeting remarks table) required.

(履歴情報の取得)
GitHubでは、上述した会話情報の管理の他に、ソースコードの管理機構も有している。制御部11は、GitHubのソースコードの管理機構から履歴情報を取得する。履歴情報には、masterブランチのコミット情報および開発ブランチ(featureブランチ)のコミット情報が含まれる。
(Obtain history information)
GitHub has a source code management mechanism in addition to managing the conversation information described above. The control unit 11 acquires history information from the source code management mechanism of GitHub. The history information includes commit information of the master branch and commit information of the development branch (feature branch).

図9はmasterブランチのコミット情報からのデータ抽出の一例を示す図である。制御部11は、masterブランチのコミット情報から解析に要するデータを抽出して、masterブランチ更新テーブル(本番環境更新テーブル)t3を作成する。 FIG. 9 is a diagram showing an example of data extraction from the commit information of the master branch. The control unit 11 extracts data required for analysis from the commit information of the master branch and creates a master branch update table (production environment update table) t3.

masterブランチのコミット情報は、masterブランチ更新情報md1とコミットの差分(diff)情報md2を含む。masterブランチ更新テーブルt3は、masterブランチ更新情報md1とコミットの差分情報md2から抽出したデータが登録され、id、commitid、username、dateおよびchangefileの項目を有する。 The commit information of the master branch includes master branch update information md1 and commit difference (diff) information md2. The master branch update table t3 registers data extracted from the master branch update information md1 and the commit difference information md2, and has items of id, commitid, username, date and changefile.

idは、masterブランチ更新テーブルt3内で識別される番号である。commitidは、1つのコミット情報に付される番号であり、masterブランチ更新情報md1内のcommitに対応する。masterブランチ更新情報md1からcommitidとして“4c50ff93”が抽出されている。 id is a number identified in the master branch update table t3. commitid is a number attached to one piece of commit information and corresponds to commit in master branch update information md1. "4c50ff93" is extracted as the commitid from the master branch update information md1.

usernameは、masterブランチに対してコミットを行った人の氏名であり、masterブランチ更新情報md1内のAuthorに対応する。masterブランチ更新情報md1からusernameとして“yoshida.jiro”が抽出されている。 username is the name of the person who committed to the master branch, and corresponds to Author in the master branch update information md1. "yoshida.jiro" is extracted as the username from the master branch update information md1.

dateは、コミットが行われた時間であり、masterブランチ更新情報md1内のDateに対応する。masterブランチ更新情報md1からdateとして“2020-1209-17:16”が抽出されている。 The date is the time when the commit was made and corresponds to the date in the master branch update information md1. "2020-1209-17:16" is extracted as the date from the master branch update information md1.

changefileは、開発されたファイル名であり、コミットの差分情報md2内のchangefileに対応する。コミットの差分情報md2からchangefileとして“fileA”が抽出されている。 changefile is the name of the developed file and corresponds to changefile in the commit difference information md2. "fileA" is extracted as a changefile from the commit difference information md2.

図10は開発ブランチのコミット情報からのデータ抽出の一例を示す図である。制御部11は、開発ブランチのコミット情報から解析に要するデータを抽出して、開発ブランチ更新テーブル(開発環境更新テーブル)t4を作成する。 FIG. 10 is a diagram showing an example of data extraction from the commit information of the development branch. The control unit 11 extracts data required for analysis from the commit information of the development branch and creates a development branch update table (development environment update table) t4.

開発ブランチのコミット情報は、開発ブランチ更新情報fd1とコミットの差分(diff)情報fd2を含む。開発ブランチ更新テーブルt4は、開発ブランチ更新情報fd1とコミットの差分情報fd2から抽出したデータが登録され、id、commitid、username、dateおよびchangefileの項目を有する。 The commit information of the development branch includes development branch update information fd1 and commit difference (diff) information fd2. The development branch update table t4 registers data extracted from the development branch update information fd1 and the commit difference information fd2, and has items of id, commitid, username, date and changefile.

idは、開発ブランチ更新テーブルt4内で識別される番号である。commitidは、1つのコミット情報に付される番号であり、開発ブランチ更新情報fd1内のcommitに対応する。開発ブランチ更新情報fd1からcommitidとして“bnlrvkrd”が抽出されている。 id is a number identified in the development branch update table t4. commitid is a number attached to one piece of commit information and corresponds to commit in development branch update information fd1. "bnlrvkrd" is extracted as the commitid from the development branch update information fd1.

usernameは、開発ブランチに対してコミットを行った人の氏名であり、開発ブランチ更新情報fd1内のAuthorに対応する。開発ブランチ更新情報fd1からusernameとして“sato.hanako”が抽出されている。 username is the name of the person who committed to the development branch, and corresponds to Author in the development branch update information fd1. "sato.hanako" is extracted as the username from the development branch update information fd1.

dateは、コミットが行われた時間であり、開発ブランチ更新情報fd1内のDateに対応する。開発ブランチ更新情報fd1からdateとして“2020-1214-14:33”が抽出されている。 The date is the time when the commit was made, and corresponds to the date in the development branch update information fd1. "2020-1214-14:33" is extracted as the date from the development branch update information fd1.

changefileは、修正されたファイル名であり、コミットの差分情報fd2内のchangefileに対応する。コミットの差分情報fd2からchangefileとして“fileA”が抽出されている。 changefile is the name of the modified file and corresponds to changefile in the commit difference information fd2. "fileA" is extracted as a changefile from the commit difference information fd2.

(修正ファイル、開発担当者および有識者の特定)
図11はmasterブランチ更新テーブルの一例を示す図である。masterブランチ更新テーブル(本番環境更新テーブル)T3は、図9で上述したように、ソフトウェア開発プラットフォーム22として例えば、GitHubのmasterブランチのコミット情報から抽出したmasterブランチにおける開発データをテーブル化したものである。
(Fixed files, identification of developers and experts)
FIG. 11 is a diagram showing an example of the master branch update table. The master branch update table (production environment update table) T3 is, as described above with reference to FIG. .

図12は開発ブランチ更新テーブルの一例を示す図である。開発ブランチ更新テーブル(開発環境更新テーブル)T4は、図10で上述したように、GitHubの開発ブランチのコミット情報から抽出した開発ブランチにおける開発データをテーブル化したものである。 FIG. 12 is a diagram showing an example of the development branch update table. The development branch update table (development environment update table) T4 is a table of development data in the development branch extracted from the commit information of the development branch in GitHub, as described above with reference to FIG.

ここで、図11、図12の例において、開発ブランチ更新テーブルT4のchangefile列にもとづいて、修正されたファイルはfileAと検出され、fileAの開発ブランチ更新テーブルT4のusername列にもとづいて、修正に携わった開発担当者はsato.hanakoと特定される。 Here, in the examples of FIGS. 11 and 12, the corrected file is detected as fileA based on the changefile column of the development branch update table T4, and based on the username column of the development branch update table T4 of fileA, the correction is performed. The developer involved is identified as sato.hanako.

そして、masterブランチ更新テーブルT3のchangefile列を値がfileAのレコードに絞ることで、masterブランチへコミットしている人物でfileAを作成した有識者は、yoshida.jiroおよびyamada.taroであることが特定される。 Then, by narrowing down the changefile column of the master branch update table T3 to records whose value is fileA, it is identified that the experts who have committed to the master branch and created fileA are yoshida.jiro and yamada.taro. be.

さらに、コミット回数が多い人物はfileAに最も関わっている有識者とし、コミット回数が少ない人物はfileAの初版作成の人物と特定できる。この例では、masterブランチ更新テーブルT3のusername列で最頻出となる(コミット回数が多い)人物(fileAに最も関わっている有識者)はyamada.taroと特定される。また、コミット回数が少ないyoshida.jiroは初版作成の人物と特定される。 Furthermore, the person with the most commits can be identified as the expert most involved in fileA, and the person with the fewest commits can be identified as the person who created the first version of fileA. In this example, yamada.taro is specified as the person who appears most frequently (the person with the highest number of commits) in the username column of the master branch update table T3 (expert person who is most involved in fileA). In addition, yoshida.jiro, which has a small number of commits, is identified as the person who created the first edition.

このように、制御部11は、有識者として、修正されたファイルを最初に作成した人物または修正されたファイルの修正・改変に過去最も関わった人物をGitHubに対するコミット回数にもとづいて特定する。これにより、有識者ということだけでなく、修正されたファイルの過去の最多修正者および初版作成者といった属性も特定することが可能になる。 In this way, the control unit 11 identifies, as an expert, the person who first created the modified file or the person who was most involved in the modification/modification of the modified file in the past, based on the number of commits to GitHub. This makes it possible to identify not only knowledgeable people, but also attributes such as the past most modified files and original authors.

また、上記のように、制御部11は、GitHubから履歴情報を取得し、履歴情報からmasterブランチにおけるファイルの更新情報として、ファイルの作成者の氏名(username)、作成期間(date)およびファイル名(changefile)を含むmasterブランチ更新テーブルT3を作成する。 Further, as described above, the control unit 11 acquires history information from GitHub, and from the history information, the name of the creator of the file (username), the creation period (date), and the file name as the update information of the file in the master branch. Create a master branch update table T3 containing (changefile).

さらに、制御部11は、履歴情報から開発環境におけるファイルの更新情報として、ファイルの修正者の氏名(username)、修正期間(date)およびファイル名(changefile)を含む開発ブランチ更新テーブルT4を作成する。 Further, the control unit 11 creates a development branch update table T4 including the name of the person who modified the file (username), the modification period (date), and the file name (changefile) as file update information in the development environment from the history information. .

そして、制御部11は、開発ブランチ更新テーブルT4のファイル名(changefile)から修正ファイル(fileA)を検出し、ファイルの修正者の氏名(username)から開発担当者(sato.hanako)を検出する。さらに、検出した修正ファイル(fileA)がmasterブランチ更新テーブルT3のファイル名(changefile)に登録されるレコードにおけるファイルの作成者の氏名(username)から有識者(yamada.taro、yoshida.jiro)を検出する。このような制御によって、GitHubの履歴情報から、修正ファイル、開発担当者および有識者を精度よく特定することができる。 Then, the control unit 11 detects the modified file (fileA) from the file name (changefile) of the development branch update table T4, and detects the person in charge of development (sato.hanako) from the name of the person who modified the file (username). Furthermore, experts (yamada.taro, yoshida.jiro) are detected from the file creator's name (username) in the record in which the detected modified file (fileA) is registered in the file name (changefile) of the master branch update table T3. . Such control makes it possible to accurately identify modified files, developers, and experts from GitHub history information.

(プルリクエスト情報の取得)
図13はプルリクエスト情報からのデータ抽出の一例を示す図である。制御部11は、REST APIにより、GitHub等のコードホスティングサービスからプルリクエスト情報を取得する。プルリクエスト情報には、開発関係者情報(レビュア、開発担当者等)、プルリクエストがオープンされた開発開始日時、最終更新日時等が含まれる。
(get pull request information)
FIG. 13 is a diagram showing an example of data extraction from pull request information. The control unit 11 acquires pull request information from a code hosting service such as GitHub using REST API. The pull request information includes development related person information (reviewer, developer, etc.), development start date and time when the pull request was opened, and last update date and time.

プルリクエスト情報テーブルt5aは、プルリクエスト情報prから抽出したデータが登録されており、id、reviewer、assignee、created_at、updated_atおよびpr_idの項目を有する。 The pull request information table t5a registers data extracted from the pull request information pr, and has items of id, reviewer, assignee, created_at, updated_at, and pr_id.

idは、プルリクエスト情報テーブルt5a内で識別される番号である。reviewerは、レビュアの氏名であり、プルリクエスト情報pr内のrequested reviewersの下のlogin名に対応する。プルリクエスト情報prからreviewerとして“saito.goro”が抽出されている。 id is a number identified in the pull request information table t5a. reviewer is the name of the reviewer, and corresponds to the login name under requested reviewers in the pull request information pr. "saito.goro" is extracted as a reviewer from the pull request information pr.

assigneeは、開発担当者の氏名であり、プルリクエスト情報pr内のassigneeの下のlogin名に対応する。プルリクエスト情報prからassigneeとして“sato.hanako”が抽出されている。 assignee is the name of the person in charge of development, and corresponds to the login name under assignee in the pull request information pr. "sato.hanako" is extracted as an assignee from the pull request information pr.

created_atは、プルリクエストがオープンされた開発開始日時であり、プルリクエスト情報pr内のcreated_atに対応する。プルリクエスト情報prからcreated_atとして“2020-1210-19:20”が抽出されている。 created_at is the development start date and time when the pull request was opened, and corresponds to created_at in the pull request information pr. "2020-1210-19:20" is extracted as created_at from the pull request information pr.

updated_atは、プルリクエストの最終更新日時であり、プルリクエスト情報pr内のupdated_atに対応する。プルリクエスト情報prからupdated_atとして“2020-1223-13:21”が抽出されている。なお、created_atとupdated_atは、システムから取得する時間は協定世界時間(UTC:Universal Time Coordinated)のものなので、日本標準時間と合わせるため+9時間としている。 updated_at is the date and time when the pull request was last updated, and corresponds to updated_at in the pull request information pr. "2020-1223-13:21" is extracted as updated_at from the pull request information pr. For created_at and updated_at, the time obtained from the system is the Coordinated World Time (UTC: Universal Time Coordinated), so it is set to +9 hours to match with Japan Standard Time.

pr_idは、プルリクエストを識別する番号である。プルリクエスト情報pr内のnumberに対応する。プルリクエスト情報prからpr_idとして“48”が抽出されている。
なお、プルリクエスト情報テーブルt5aのcreated_atからupdated_at(2020-1210-19:20から2020-1223-13:21)期間中の会話データを解析に利用するものとする。すなわち、この期間は、ファイル修正が行われた期間とみなされ、当該期間における会話データからコミュニケーション有無の検出が行われる。
pr_id is a number that identifies a pull request. It corresponds to the number in the pull request information pr. "48" is extracted as pr_id from the pull request information pr.
It is assumed that conversation data during the period from created_at to updated_at (from 2020-1210-19:20 to 2020-1223-13:21) in the pull request information table t5a is used for analysis. In other words, this period is regarded as the period during which the file was modified, and the presence or absence of communication is detected from the conversation data in this period.

このように、制御部11では、Mattermostから収集した会話情報から、会話メッセージのメッセージ識別子(root_id)、会話が行われた会話時間(posted_at)、会話者の氏名(username)を抽出してチャットアプリテーブルT1を作成する。 In this way, the control unit 11 extracts the message identifier (root_id) of the conversation message, the conversation time (posted_at), and the name of the speaker (username) from the conversation information collected from Mattermost. Create table T1.

また、制御部11は、GitHubにプルリクエストがオープンされたときのプルリクエスト情報prからファイルの修正期間(created_atからupdated_at)を抽出する。そして、このファイルの修正期間に会話時間が含まれるチャットアプリテーブルT1の会話スレッドを、ファイルの修正が行われた期間における会話データとして抽出する。これにより、ファイル修正が行われた期間の会話データをMattermostから精度よく抽出することが可能になる。 The control unit 11 also extracts the file modification period (from created_at to updated_at) from the pull request information pr when the pull request was opened on GitHub. Then, the conversation thread of the chat application table T1 whose conversation time is included in the file correction period is extracted as the conversation data in the file correction period. This makes it possible to accurately extract conversation data from Mattermost during the period in which the file was modified.

一方、制御部11では、GitHubから収集した会話情報から、会話メッセージのメッセージ識別子(root_id)、会話が行われた会話時間(posted_at)、会話者の氏名(username)を抽出してプルリクエスト会話テーブルT2を作成する。 On the other hand, the control unit 11 extracts the message identifier (root_id) of the conversation message, the conversation time (posted_at), and the name of the conversation person (username) from the conversation information collected from GitHub, and creates a pull request conversation table. Create T2.

また、制御部11は、GitHubにプルリクエストがオープンされたときのプルリクエスト情報prからファイルの修正期間(created_atからupdated_at)を抽出する。そして、このファイルの修正期間に会話時間が含まれるプルリクエスト会話テーブルT2の会話スレッドを、ファイルの修正が行われた期間における会話データとして抽出する。これにより、ファイル修正が行われた期間の会話データをGitHubから精度よく抽出することが可能になる。 The control unit 11 also extracts the file modification period (from created_at to updated_at) from the pull request information pr when the pull request was opened on GitHub. Then, the conversation thread of the pull request conversation table T2 whose conversation time is included in the file modification period is extracted as the conversation data in the file modification period. This makes it possible to accurately extract conversation data from GitHub during the period in which files were modified.

図14はプルリクエスト関係者テーブルの一例を示す図である。プルリクエスト関係者テーブルT5は、プルリクエスト情報テーブルt5aに対して、masterブランチ更新テーブルT3および開発ブランチ更新テーブルT4から検出された有識者のexpert列を追加したものである。なお、reviewer、assignee、expertは複数人となることもありうる。 FIG. 14 is a diagram showing an example of a pull request related party table. The pull request related party table T5 is obtained by adding an expert column of experts detected from the master branch update table T3 and the development branch update table T4 to the pull request information table t5a. There may be multiple reviewers, assignees, and experts.

(会話データ解析の具体例)
会話データ解析の具体例として、pr_id=48の開発項目における開発担当者と有識者間での会話有無の解析を行うものとする。図14に示したプルリクエスト関係者テーブルT5から、pr_id=48の開発項目においては、assignee列から開発担当者はsato.hanakoであることが検出される。さらに、reviewer列からレビュアはsaito.goroであり、expert1/expert2列から有識者はyoshida.jiro、yamada.taroであることが検出される。また、上述したように、プルリクエスト関係者テーブルT5のcreated_atからupdated_at(2020-1210-19:20から2020-1223-13:21)期間中の会話データを解析に利用するものとする。
(Concrete example of conversation data analysis)
As a specific example of conversation data analysis, it is assumed that the presence or absence of conversation between the person in charge of development and an expert in the development item with pr_id=48 is analyzed. From the pull request related party table T5 shown in FIG. 14, for the development item with pr_id=48, it is detected that the person in charge of development is sato.hanako from the assignee column. Further, it is detected that the reviewer is saito.goro from the reviewer column, and that the experts are yoshida.jiro and yamada.taro from the expert1/expert2 columns. Also, as described above, the conversation data during the period from created_at to updated_at (from 2020-1210-19:20 to 2020-1223-13:21) in the pull request related party table T5 is used for analysis.

図15はチャットアプリテーブルの一例を示す図である。チャットアプリテーブルT11において、root_idが同一となるレコードは同じ会話スレッドである。したがって、root_id=3ot1aijcebf5t8e75kr9text4hであるid=1、2のレコードは同一の会話スレッドであり、root_id=mniqwhyhxbn4zfofrxmmjzo1boであるid=4、5のレコードは同一の会話スレッドである。 FIG. 15 is a diagram showing an example of a chat application table. In the chat application table T11, records with the same root_id are the same conversation thread. Therefore, records with id=1 and 2 where root_id=3ot1aijcebf5t8e75kr9text4h are in the same conversation thread, and records with id=4 and 5 where root_id=mniqwhyhxbn4zfofrxmmjzo1bo are in the same conversation thread.

ここで、チャットアプリテーブルT11において、以下の条件(1A)、(2A)、(3A)をすべて満たす会話スレッドがある場合、開発担当者と有識者/レビュア間での会話が存在したと判定する。 Here, in the chat application table T11, if there is a conversation thread that satisfies all of the following conditions (1A), (2A), and (3A), it is determined that there was a conversation between the developer and the expert/reviewer.

(1A)root_idが同一となる会話スレッドのうちにusername=開発担当者となるレコードが存在する。
(2A)root_idが同一となる会話スレッドのうちにusername=レビュアまたは有識者となるレコードが存在する。
(1A) Among conversation threads with the same root_id, there is a record with username=developer.
(2A) Among conversation threads with the same root_id, there is a record with username=reviewer or expert.

(3A)root_idが同一となる会話スレッドのうちに、posted_at列の値が最もcreate_atに近い行(posted_atが最も古い行)のusername(最初の発言者・有識者)が開発担当者、レビュアまたは有識者であるレコードが存在する。 (3A) Among conversation threads with the same root_id, the username (first speaker/expert) of the row whose posted_at column value is closest to create_at (the row with the oldest posted_at) is a developer, reviewer, or expert. A record exists.

チャットアプリテーブルT11におけるid=1、2の会話スレッドについては、username=sato.hanako(開発担当者)となるレコードが存在するので(1A)を満たす。また、username=yamada.taro(有識者)となるレコードが存在するので(2A)を満たす。さらに、会話スレッド中でposted_atが最も古いレコードのusername(最初の発言者・有識者)がyamada.taro(有識者)となるレコードが存在するので(3A)を満たす。 For conversation threads with id=1 and 2 in the chat application table T11, there is a record with username=sato.hanako (developer), so (1A) is satisfied. Also, since there is a record with username=yamada.taro (expert), (2A) is satisfied. Furthermore, since there is a record in which the username (first speaker/expert) of the record with the oldest posted_at in the conversation thread is yamada.taro (expert), (3A) is satisfied.

したがって、id=1、2の会話スレッドでは、sato.hanako(開発担当者)とyamada.taro(有識者)との会話があったことが検出される。
一方、チャットアプリテーブルT11におけるid=4、5の会話スレッドについては、username=sato.hanako(開発担当者)となるレコードが存在するので(1A)を満たす。また、username=yoshida.jiro(有識者)となるレコードが存在するので(2A)を満たす。さらに、会話スレッド中でposted_atが最も古い行のusername(最初の発言者・有識者)がyoshida.jiro(有識者)となるレコードが存在するので(3A)を満たす。
Therefore, in conversation threads with id=1 and 2, it is detected that there was a conversation between sato.hanako (developer) and yamada.taro (expert).
On the other hand, for the conversation threads with id=4 and 5 in the chat application table T11, there is a record with username=sato.hanako (developer), so (1A) is satisfied. Also, since there is a record with username=yoshida.jiro (expert), (2A) is satisfied. Furthermore, since there is a record in which the username (first speaker/expert) of the line with the oldest posted_at in the conversation thread is yoshida.jiro (expert), (3A) is satisfied.

したがって、id=4、5の会話スレッドでは、sato.hanako(開発担当者)とyoshida.jiro(有識者)との会話があったことが検出される。このような制御によって、Mattermostにもとづくチャットアプリテーブルから、開発担当者と有識者とのコミュニケーションの有無を精度よく検出することができる。 Therefore, in conversation threads with id=4 and 5, it is detected that there was a conversation between sato.hanako (developer) and yoshida.jiro (expert). With this kind of control, it is possible to accurately detect the presence or absence of communication between the developer and the expert from the chat application table based on Mattermost.

図16はプルリクエスト会話テーブルの一例を示す図である。プルリクエスト会話テーブルT12において、root_idが同一となるレコードを1つの会話スレッドとする。したがって、root_id=dfakjekfjekf5t8e75falejkljsdであるid=1、2、3のレコードは同一の会話スレッドである。 FIG. 16 is a diagram showing an example of a pull request conversation table. In the pull request conversation table T12, records with the same root_id are regarded as one conversation thread. Therefore, records with id=1, 2, 3 with root_id=dfakjekfjekf5t8e75falejkljsd are the same conversation thread.

ここで、プルリクエスト会話テーブルT12において、以下の条件(1B)、(2B)をすべて満たす会話スレッドがある場合、開発担当者と有識者/レビュア間での会話が存在したと判定する。 Here, in the pull request conversation table T12, if there is a conversation thread that satisfies all of the following conditions (1B) and (2B), it is determined that there was a conversation between the developer and the expert/reviewer.

(1B)root_idが同一となる会話スレッドのうちにusername=開発担当者となるレコードが存在する。
(2B)root_idが同一となる会話スレッドのうちにusername=レビュアまたは有識者となるレコードが存在する。
(1B) Among conversation threads with the same root_id, there is a record with username=developer.
(2B) Among conversation threads with the same root_id, there is a record with username=reviewer or expert.

プルリクエスト会話テーブルT12におけるid=1、2、3の会話スレッドについては、username=sato.hanako(開発担当者)となるレコードが存在するので(1B)を満たす。また、username=saito.goro(レビュア)となるレコードが存在するので(2B)を満たす。 For conversation threads with id=1, 2, and 3 in the pull request conversation table T12, there is a record with username=sato.hanako (developer), so (1B) is satisfied. Also, since there is a record with username=saito.goro (reviewer), (2B) is satisfied.

したがって、id=1、2、3の会話スレッドでは、sato.hanako(開発担当者)とsaito.goro(レビュア)との会話があったことが検出される。このような制御によって、GitHubにもとづくプルリクエスト会話テーブルから、開発担当者と有識者とのコミュニケーションの有無を精度よく検出することができる。 Therefore, in conversation threads with id=1, 2, and 3, it is detected that there was a conversation between sato.hanako (developer) and saito.goro (reviewer). With this kind of control, it is possible to accurately detect the presence or absence of communication between developers and experts from the pull request conversation table based on GitHub.

(会話有無の提示)
図17は会話有無の提示画面の一例を示す図である。制御部11は、上記のような会話データの解析によって検出した開発担当者と有識者/レビュア間のコミュニケーションの有無およびマージ判定結果を可視化情報にして、例えば、開発責任者に提示する。
(Presence or absence of conversation)
FIG. 17 is a diagram showing an example of a presentation screen for conversation presence/absence. The control unit 11 visualizes the presence or absence of communication between the person in charge of development and the expert/reviewer detected by analyzing the conversation data as described above and the result of merge determination, and presents it to the person in charge of development, for example.

この場合、例えば、過半数の有識者と、開発関係者とのコミュニケーションが取れているか否かで「マージOK」「マージNG」といったマージ判定の基準となる通知とともに、開発担当者と関係者のコミュニケーションの有無を提示してもよい。また、有識者とはみなされてないものの会話量の多い人物との会話を有識者候補との会話として併せて提示してもよい。 In this case, for example, depending on whether or not the majority of the experts are communicating with the people involved in the development, along with a notification that serves as a criterion for merge judgment such as "Merge OK" or "Merge NG", You may indicate whether or not In addition, a conversation with a person who is not regarded as an expert but has a large amount of conversation may be presented together as a conversation with an expert candidate.

制御部11は画面g10を表示する。画面g10は、画面g11、g12を含む。画面g11は、プルリクエスト#48の開発項目のうち、すべての参加者をノードで表し、開発担当者と、開発担当者が会話した参加者とのノード間を枝で結んでグラフ化したものである。sato.hanako(開発担当者)は、yamada.taro(有識者)、yoshida.jiro(有識者)、suzuki.siro(第三者)およびsaito.goro(レビュア)と会話していることが示される。 The control unit 11 displays a screen g10. The screen g10 includes screens g11 and g12. Screen g11 represents all the participants in the development items of pull request #48 as nodes, and is a graph that connects the nodes of the developer and the participants with whom the developer spoke with branches. be. sato.hanako (developer) is shown conversing with yamada.taro (expert), yoshida.jiro (expert), suzuki.siro (third party) and saito.goro (reviewer).

画面g12は、会話有無テーブルT0とマージ判定結果M0を示している。会話有無テーブルT0は、username、役割および会話有無の項目を有する。また、マージ判定結果M0は、マージOKまたはマージNGを示す。 A screen g12 shows a conversation presence/absence table T0 and a merge determination result M0. The conversation presence/absence table T0 has items of username, role, and conversation presence/absence. Also, the merge determination result M0 indicates merge OK or merge NG.

会話有無テーブルT0からsato.hanako(開発担当者)は、yamada.taro(有識者(最多修正))、yoshida.jiro(有識者(初版作成))およびsaito.goro(レビュア)と会話していることが検出されている。したがって、開発プログラムへの修正ファイル(修正ソースコード)のマージ(適用)か否かのマージ判定結果M0はマージOKとなっている。 From the conversation presence/absence table T0, sato.hanako (developer) is having a conversation with yamada.taro (expert (most revisions)), yoshida.jiro (expert (first edition)), and saito.goro (reviewer). detected. Therefore, the merge determination result M0 as to whether or not to merge (apply) the modified file (modified source code) to the development program is merge OK.

(フローチャート)
図18は情報処理装置の動作の一例を示すフローチャートである。
〔ステップS21〕制御部11は、Mattermost、GitHub等のコミュニケーションサービスシステムから会話情報を収集する。
(flowchart)
FIG. 18 is a flow chart showing an example of the operation of the information processing device.
[Step S21] The control unit 11 collects conversation information from communication service systems such as Mattermost and GitHub.

〔ステップS22〕制御部11は、収集した会話情報から解析に要する会話データを抽出する。
〔ステップS23〕制御部11は、会話データから開発担当者、有識者/レビュアを識別する。
[Step S22] The control unit 11 extracts conversation data required for analysis from the collected conversation information.
[Step S23] The control unit 11 identifies the person in charge of development and the expert/reviewer from the conversation data.

〔ステップS24〕制御部11は、開発担当者と有識者/レビュアとの会話があるか否かを検出する。会話がある場合はステップS25に進み、会話がない場合はステップS26に処理が進む。 [Step S24] The control unit 11 detects whether or not there is a conversation between the person in charge of development and the expert/reviewer. If there is conversation, the process proceeds to step S25, and if there is no conversation, the process proceeds to step S26.

〔ステップS25〕制御部11は、開発責任者に「マージOK」を提示する。
〔ステップS26〕制御部11は、開発責任者に「マージNG」を提示する。
上記で説明した本発明の情報処理装置1、10の処理機能は、コンピュータによって実現することができる。この場合、情報処理装置1、10が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
[Step S25] The control section 11 presents "Merge OK" to the person in charge of development.
[Step S26] The control unit 11 presents "Merge NG" to the person in charge of development.
The processing functions of the information processing apparatuses 1 and 10 of the present invention described above can be realized by a computer. In this case, a program describing the processing contents of the functions that the information processing apparatuses 1 and 10 should have is provided. By executing the program on a computer, the above processing functions are realized on the computer.

処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶部、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶部には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等がある。光ディスクには、CD-ROM/RW等がある。光磁気記録媒体には、MO(Magneto Optical disk)等がある。 A program describing the processing content can be recorded in a computer-readable recording medium. Computer-readable recording media include a magnetic storage unit, an optical disk, a magneto-optical recording medium, a semiconductor memory, and the like. The magnetic storage unit includes a hard disk device (HDD), flexible disk (FD), magnetic tape, and the like. Optical disks include CD-ROM/RW and the like. Magneto-optical recording media include MO (Magneto Optical disk) and the like.

プログラムを流通させる場合、例えば、そのプログラムが記録されたCD-ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶部に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。 When distributing a program, for example, portable recording media such as CD-ROMs on which the program is recorded are sold. It is also possible to store the program in the storage unit of the server computer and transfer the program from the server computer to another computer via the network.

プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶部に格納する。そして、コンピュータは、自己の記憶部からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。 A computer that executes a program stores, for example, a program recorded on a portable recording medium or a program transferred from a server computer in its own storage unit. Then, the computer reads the program from its own storage unit and executes processing according to the program. The computer can also read the program directly from the portable recording medium and execute processing according to the program.

また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。また、上記の処理機能の少なくとも一部を、DSP、ASIC、PLD等の電子回路で実現することもできる。 In addition, the computer can also execute processing according to the received program every time the program is transferred from a server computer connected via a network. At least part of the processing functions described above can also be realized by electronic circuits such as DSPs, ASICs, and PLDs.

以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。 Although the embodiment has been exemplified above, the configuration of each part shown in the embodiment can be replaced with another one having the same function. Also, any other components or steps may be added. Furthermore, any two or more configurations (features) of the above-described embodiments may be combined.

1 情報処理装置
1a 制御部
1b 記憶部
2a 修正履歴情報
2b コミュニケーションサービスシステム
1 Information Processing Device 1a Control Unit 1b Storage Unit 2a Correction History Information 2b Communication Service System

Claims (3)

コンピュータが、
プログラムの修正が行われた場合、前記プログラムの修正履歴情報にもとづいて、前記プログラムの修正経験がある有識者を特定し、
コミュニケーションサービスシステムに記録されている会話情報にもとづいて、前記プログラムの修正を行った開発担当者と、前記有識者との間でのコミュニケーションの有無を判定し、
前記判定の結果にもとづいて、修正された前記プログラムの適用可否を判定する、
適用可否判定方法。
the computer
When the program is modified, based on the modification history information of the program, identify an expert who has experience modifying the program,
Based on the conversation information recorded in the communication service system, determining whether or not there is communication between the developer who modified the program and the expert,
Determining applicability of the modified program based on the result of the determination;
Applicability judgment method.
前記コンピュータは、
前記有識者として、修正された前記プログラムを最初に作成した人物、または前記プログラムの修正に多く関わった人物を前記コミュニケーションサービスシステムに対するコミット回数にもとづいて特定し、
前記開発担当者と、前記有識者との前記コミュニケーションが取れていると検出した場合に、修正プログラムのソフトウェア開発中のプログラムへの適用を可とする、
請求項1記載の適用可否判定方法。
The computer is
Identifying, as the expert, a person who originally created the modified program or a person who was involved in many modifications of the program based on the number of commits to the communication service system;
When it is detected that the communication between the person in charge of development and the expert is established, it is possible to apply the correction program to the program under software development.
Applicability determination method according to claim 1.
コンピュータに、
プログラムの修正が行われた場合、前記プログラムの修正履歴情報にもとづいて、前記プログラムの修正経験がある有識者を特定し、
コミュニケーションサービスシステムに記録されている会話情報にもとづいて、前記プログラムの修正を行った開発担当者と、前記有識者との間でのコミュニケーションの有無を判定し、
前記判定の結果にもとづいて、修正された前記プログラムの適用可否を判定する、
処理を実行させるプログラム。
to the computer,
When the program is modified, based on the modification history information of the program, identify an expert who has experience modifying the program,
Based on the conversation information recorded in the communication service system, determining whether or not there is communication between the developer who modified the program and the expert,
Determining applicability of the modified program based on the result of the determination;
A program that causes an action to take place.
JP2021085810A 2021-05-21 2021-05-21 Applicability/non-applicability determination method and program Pending JP2022178776A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021085810A JP2022178776A (en) 2021-05-21 2021-05-21 Applicability/non-applicability determination method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021085810A JP2022178776A (en) 2021-05-21 2021-05-21 Applicability/non-applicability determination method and program

Publications (1)

Publication Number Publication Date
JP2022178776A true JP2022178776A (en) 2022-12-02

Family

ID=84239272

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021085810A Pending JP2022178776A (en) 2021-05-21 2021-05-21 Applicability/non-applicability determination method and program

Country Status (1)

Country Link
JP (1) JP2022178776A (en)

Similar Documents

Publication Publication Date Title
AU2019210601B2 (en) Automatic generation of microservices based on technical description of legacy code
JP5970617B2 (en) Development support system
US9405662B2 (en) Process for displaying test coverage data during code reviews
US11954461B2 (en) Autonomously delivering software features
US20160070568A1 (en) Automatic code review and code reviewer recommendation
US20080295085A1 (en) Integrated code review tool
CN104090776A (en) Software development method and system
US10152367B2 (en) System dump analysis
US9355003B2 (en) Capturing trace information using annotated trace output
US10055302B2 (en) Performing a closure merge operation
JP2014081811A (en) Log management system and log management method
An et al. An empirical study of crash-inducing commits in Mozilla Firefox
CN110888926A (en) Method and device for structuring medical text
US10521253B2 (en) Framework for automated globalization enablement on development operations
US20180095810A1 (en) Information processing device and specification creation method
JP2022178776A (en) Applicability/non-applicability determination method and program
JP4144885B2 (en) How to reuse application objects
US10698884B2 (en) Dynamic lineage validation system
US10331436B2 (en) Smart reviews for applications in application stores
US20130111344A1 (en) Help creation support apparatus, help creation method, and storage medium storing help creation program
US9672083B2 (en) Operating a program code object in conjunction with an application context
JP2020087087A (en) Correction candidate specification program
JP6221305B2 (en) Information processing device
JP2010224956A (en) Workflow processing apparatus, program, and method
JP6369333B2 (en) Software installation determination program, software installation determination method, and software installation determination device