JP2022178776A - Applicability/non-applicability determination method and program - Google Patents
Applicability/non-applicability determination method and program Download PDFInfo
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
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.
しかし、上述の背景技術は、コメントをした人が修正されたプログラムに精通しているとは限らない。もし修正されたプログラムに精通していない人が、有効と思われる指摘を行った場合、またはスキルレベルは高いが、修正されたプログラムに精通していない人が指摘を行った場合には、適正なコメントができていないことが考えられる。 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は第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
制御部1aは、プログラムの修正が行われた場合、プログラムの修正履歴情報にもとづいて、プログラムの修正経験がある有識者を特定する。また、制御部1aは、コミュニケーションサービスシステムに記録されている会話情報にもとづいて、プログラムの修正を行った開発担当者と、有識者との間でのコミュニケーションの有無を判定し、判定の結果にもとづいて、修正されたプログラムの適用可否を判定する。
When the program is modified, the
図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
〔ステップS3〕制御部1aは、コミュニケーションサービスシステム2bからファイルの修正が行われた期間における会話情報を抽出する。コミュニケーションサービスシステム2bは、例えば、GitHub(登録商標)やMattermost(登録商標)を使用することができる。
[Step S3] The
〔ステップS4〕制御部1aは、会話情報にもとづいて、ファイルの修正を行った開発担当者と、有識者との間でコミュニケーションの有無を検出する。開発担当者と有識者間でコミュニケーション有りと検出した場合、ステップS5に処理が進み、コミュニケーション無しと検出した場合、ステップS6に処理が進む。
[Step S4] Based on the conversation information, the
〔ステップS5〕制御部1aは、修正箇所が含まれる修正ファイルのソフトウェア開発中のプログラムへの適用を可と判定する。
〔ステップS6〕制御部1aは、修正箇所が含まれる修正ファイルのソフトウェア開発中のプログラムへの適用を不可と判定する。
[Step S5] The
[Step S6] The
このように情報処理装置1では、ファイルの修正が行われた期間における会話情報にもとづいて、ファイルの修正を行った開発担当者と、有識者との間でコミュニケーションが取れているか否かを検出する。そして、検出結果にもとづいて、修正箇所が含まれる修正ファイルのソフトウェア開発中のプログラムへの適用の可否を判定する。
In this manner, the
これにより、開発担当者と有識者間でコミュニケーションが取れている場合に修正ファイルを開発プログラムに適用できるので、開発プログラムへの信頼度の高い修正ファイルの適用が可能になる。 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.
コミュニケーションツール21は、意思疎通や情報共有等を行う際に利用される会話ツールであり、例えば、Mattermost等のチャットアプリケーションまたはメール等のその他ツールである。ソフトウェア開発プラットフォーム22は、例えば、GitHub等のコードホスティングサービスである。
The
会話情報収集部11aは、コミュニケーションツール21およびソフトウェア開発プラットフォーム22の少なくとも一方から会話情報を収集する。会話データ抽出部11bは、収集された会話情報から解析対象となる会話データを抽出する。
The conversation
会話データ解析部11cは、抽出した会話データと、ソフトウェア開発プラットフォーム22のプルリクエストから取得した履歴情報(開発情報)とにもとづいて、有識者の識別を行い、さらに、開発担当者と有識者間でのコミュニケーションの有無を検出する。
Based on the extracted conversation data and the history information (development information) obtained from the pull request of the
会話有無提示部11dは、ソフトウェア開発の開発責任者に対して、例えば、開発担当者と有識者とのコミュニケーションの有無を付与したコミュニケーション有無リストおよび適用可否に関して可視化した情報を提示する。記憶部12は、収集・取得された会話情報や履歴情報等がテーブル化されたデータ構造を記憶する。
The conversation presence/
<ハードウェア>
図3は情報処理装置のハードウェア構成の一例を示す図である。情報処理装置10は、プロセッサ(コンピュータ)100によって全体制御されている。プロセッサ100は、制御部11の機能を有する。
<Hardware>
FIG. 3 is a diagram showing an example of the hardware configuration of the information processing apparatus. The
プロセッサ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
メモリ101は、記憶部12の機能を有し、情報処理装置10の主記憶装置として使用される。メモリ101には、プロセッサ100に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ101には、プロセッサ100による処理に要する各種データが格納される。
The
メモリ101は、情報処理装置10の補助記憶装置としても使用され、OSのプログラム、アプリケーションプログラム、および各種データが格納される。メモリ101は、補助記憶装置として、フラッシュメモリやSSD(Solid State Drive)等の半導体記憶装置やHDD(Hard Disk Drive)等の磁気記録媒体を含んでもよい。
The
バス103に接続されている周辺機器としては、入出力インタフェース102およびネットワークインタフェース104がある。入出力インタフェース102は、キーボードやマウス等の情報入力装置を接続可能であって、情報入力装置から送られてくる信号をプロセッサ100に送信する。また、入出力インタフェース102には、ディスプレイが接続されて、会話有無/適用可否判定結果に関する情報等を表示する。
Peripheral devices connected to the
さらに、入出力インタフェース102は、周辺機器を接続するための通信インタフェースとしても機能する。例えば、入出力インタフェース102は、レーザ光等を利用して、光ディスクに記録されたデータの読み取りを行う光学ドライブ装置を接続することができる。光ディスクには、Blu-ray Disc(登録商標)、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(Rewritable)等がある。
Furthermore, the input/
また、入出力インタフェース102は、メモリ装置やメモリリーダライタを接続することができる。メモリ装置は、入出力インタフェース102との通信機能を搭載した記録媒体である。メモリリーダライタは、メモリカードへのデータの書き込み、またはメモリカードからのデータの読み出しを行う装置である。メモリカードは、カード型の記録媒体である。
Also, the input/
ネットワークインタフェース104は、ネットワークに接続してネットワークインタフェース制御を行う。ネットワークインタフェース104は、ネットワークを通じてコミュニケーションサービスシステム20にアクセスして、会話情報や履歴情報等を収集・取得する。また、ネットワークインタフェース104は、例えば、NIC(Network Interface Card)、無線LAN(Local Area Network)カード等を使用することもできる。ネットワークインタフェース104で受信されたデータは、メモリ101やプロセッサ100に出力される。
A
以上のようなハードウェア構成によって、情報処理装置10の処理機能を実現することができる。例えば、情報処理装置10は、プロセッサ100がそれぞれ所定のプログラムを実行することで本発明の処理を行うことができる。
The processing functions of the
情報処理装置10は、例えば、コンピュータで読み取り可能な記録媒体に記録されたプログラムを実行することにより、本発明の処理機能を実現する。情報処理装置10に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。
The
例えば、情報処理装置10に実行させるプログラムを補助記憶装置に格納しておくことができる。プロセッサ100は、補助記憶装置内のプログラムの少なくとも一部を主記憶装置にロードし、プログラムを実行する。
For example, a program to be executed by the
また、光ディスク、メモリ装置、メモリカード等の可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えば、プロセッサ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
<GitHub>
次にソフトウェア開発プラットフォーム22の一例であるGitHubについて説明する。Gitとはオープンソースの分散バージョン管理システムであり、ソフトウェア開発ではソースコードのバージョン管理に用いられる。
<GitHub>
Next, GitHub, which is an example of the
開発担当者は、新しい機能を作成する際に、本番環境(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
開発担当者は、開発機能のソースコードの作成を行った人物である。例えば、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
制御部11は、REST API(Representational State Transfer Application Programming Interface)やファイルダンプ等により、Mattermostから半構造化された会話情報cd1を収集する。なお、REST APIは、Webシステムを外部から利用するためのプログラムの呼び出し規約である。
The
(会話データの抽出)
図6は会話データの抽出動作の一例を示す図である。制御部11は、収集した会話情報から解析に要する会話データを抽出する。抽出した会話データは、チャットアプリテーブルt1に登録される。
(extraction of conversation data)
FIG. 6 is a diagram showing an example of a conversation data extraction operation. The
チャットアプリテーブル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
チャットアプリテーブル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
プルリクエスト会話テーブル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
図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
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
開発ブランチのコミット情報は、開発ブランチ更新情報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
また、上記のように、制御部11は、GitHubから履歴情報を取得し、履歴情報からmasterブランチにおけるファイルの更新情報として、ファイルの作成者の氏名(username)、作成期間(date)およびファイル名(changefile)を含むmasterブランチ更新テーブルT3を作成する。
Further, as described above, the
さらに、制御部11は、履歴情報から開発環境におけるファイルの更新情報として、ファイルの修正者の氏名(username)、修正期間(date)およびファイル名(changefile)を含む開発ブランチ更新テーブルT4を作成する。
Further, the
そして、制御部11は、開発ブランチ更新テーブルT4のファイル名(changefile)から修正ファイル(fileA)を検出し、ファイルの修正者の氏名(username)から開発担当者(sato.hanako)を検出する。さらに、検出した修正ファイル(fileA)がmasterブランチ更新テーブルT3のファイル名(changefile)に登録されるレコードにおけるファイルの作成者の氏名(username)から有識者(yamada.taro、yoshida.jiro)を検出する。このような制御によって、GitHubの履歴情報から、修正ファイル、開発担当者および有識者を精度よく特定することができる。
Then, the
(プルリクエスト情報の取得)
図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
プルリクエスト情報テーブル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
また、制御部11は、GitHubにプルリクエストがオープンされたときのプルリクエスト情報prからファイルの修正期間(created_atからupdated_at)を抽出する。そして、このファイルの修正期間に会話時間が含まれるチャットアプリテーブルT1の会話スレッドを、ファイルの修正が行われた期間における会話データとして抽出する。これにより、ファイル修正が行われた期間の会話データをMattermostから精度よく抽出することが可能になる。
The
一方、制御部11では、GitHubから収集した会話情報から、会話メッセージのメッセージ識別子(root_id)、会話が行われた会話時間(posted_at)、会話者の氏名(username)を抽出してプルリクエスト会話テーブルT2を作成する。
On the other hand, the
また、制御部11は、GitHubにプルリクエストがオープンされたときのプルリクエスト情報prからファイルの修正期間(created_atからupdated_at)を抽出する。そして、このファイルの修正期間に会話時間が含まれるプルリクエスト会話テーブルT2の会話スレッドを、ファイルの修正が行われた期間における会話データとして抽出する。これにより、ファイル修正が行われた期間の会話データをGitHubから精度よく抽出することが可能になる。
The
図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
この場合、例えば、過半数の有識者と、開発関係者とのコミュニケーションが取れているか否かで「マージ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
画面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
〔ステップS22〕制御部11は、収集した会話情報から解析に要する会話データを抽出する。
〔ステップS23〕制御部11は、会話データから開発担当者、有識者/レビュアを識別する。
[Step S22] The
[Step S23] The
〔ステップS24〕制御部11は、開発担当者と有識者/レビュアとの会話があるか否かを検出する。会話がある場合はステップS25に進み、会話がない場合はステップS26に処理が進む。
[Step S24] The
〔ステップS25〕制御部11は、開発責任者に「マージOK」を提示する。
〔ステップS26〕制御部11は、開発責任者に「マージNG」を提示する。
上記で説明した本発明の情報処理装置1、10の処理機能は、コンピュータによって実現することができる。この場合、情報処理装置1、10が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
[Step S25] The
[Step S26] The
The processing functions of the
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶部、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶部には、ハードディスク装置(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
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.
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) |
-
2021
- 2021-05-21 JP JP2021085810A patent/JP2022178776A/en active Pending
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 |