(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024101525
(43)【公開日】2024-07-29
(54)【発明の名称】情報処理装置、方法、プログラム、およびシステム
(51)【国際特許分類】
G06Q 10/0639 20230101AFI20240722BHJP
【FI】
G06Q10/0639
【審査請求】未請求
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2023133119
(22)【出願日】2023-08-17
(62)【分割の表示】P 2023005238の分割
【原出願日】2023-01-17
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PYTHON
2.TENSORFLOW
(71)【出願人】
【識別番号】516291402
【氏名又は名称】ファインディ株式会社
(74)【代理人】
【識別番号】110002815
【氏名又は名称】IPTech弁理士法人
(72)【発明者】
【氏名】志賀 優毅
(72)【発明者】
【氏名】稲葉 将一
(72)【発明者】
【氏名】柳沢 正二郎
(72)【発明者】
【氏名】内田 博咲也
(72)【発明者】
【氏名】笹野 翔太
(72)【発明者】
【氏名】山家 史照
【テーマコード(参考)】
5L010
5L049
【Fターム(参考)】
5L010AA09
5L049AA09
(57)【要約】
【課題】エンジニアによる開発パフォーマンスの適切な把握または管理を支援する。
【解決手段】本開示の一態様のプログラムは、コンピュータを、複数のエンジニアがイシュー管理サービスを利用することで当該イシュー管理サービスに保存された、当該複数のエンジニアの各々による開発活動に関する情報を取得する手段、開発活動に関する情報に基づいて、エンジニア単位の開発活動、または複数のエンジニアにより構成される組織単位の開発活動に関する指標のうち少なくとも第1種別の指標を算出する手段、エンジニアと組織とのうち少なくとも一方を参照対象として決定する手段、参照対象について算出された第1種別の指標に基づいて、参照対象とは異なるエンジニアである評価対象の第1種別の指標のベンチマークを算出する手段、ベンチマークを出力する手段、として機能させる。
【選択図】
図4
【特許請求の範囲】
【請求項1】
コンピュータを、
複数のエンジニアがイシュー管理サービスを利用することで当該イシュー管理サービスに保存された、当該複数のエンジニアの各々による開発活動に関する情報を取得する手段、
前記開発活動に関する情報に基づいて、エンジニア単位の開発活動、または前記複数のエンジニアの一部または全部により構成される組織単位の開発活動に関する指標のうち少なくとも第1種別の指標を算出する手段、
前記複数のエンジニアのうち1以上と、前記複数のエンジニアの一部または全部により構成される組織のうち1以上とのうち少なくとも一方を参照対象として決定する手段、
前記参照対象について算出された前記第1種別の指標に基づいて、前記参照対象とは異なるエンジニアである評価対象の前記第1種別の指標のベンチマークを算出する手段、
前記ベンチマークを出力する手段、
として機能させるプログラム。
【請求項2】
前記算出する手段は、前記第1種別とは異なる第2種別の指標をさらに算出し、
前記決定する手段は、前記評価対象について算出された前記第2種別の指標と、前記参照対象について算出された前記第2種別の指標とに基づいて、前記参照対象を決定する、
請求項1に記載のプログラム。
【請求項3】
前記第1種別の指標は、前記第2種別の指標と相関する、
請求項2に記載のプログラム。
【請求項4】
前記第2種別の指標は、所定の開発活動のボリュームを表し、
前記第1種別の指標は、前記所定の開発活動の内容によって影響を受ける別の開発活動に関する、
請求項2に記載のプログラム。
【請求項5】
前記第2種別の指標は、追加または変更したファイルを前記イシュー管理サービスのローカルリポジトリに記録する第1活動の数または前記ローカルリポジトリに追加または変更したファイルのレビューを依頼する第2活動の数の少なくとも1つであり、
前記第1種別の指標は、前記第2活動のうち当該ファイルのプロジェクト本体への統合が承認されたものの数である、
請求項2に記載のプログラム。
【請求項6】
前記第2種別の指標は、作成したイシューの数であり、
前記第1種別の指標は、作成したイシューのうちクローズされたものの数である、
請求項2に記載のプログラム。
【請求項7】
前記第2種別の指標は、前記イシュー管理サービスにおけるローカルリポジトリに追加または変更したファイルのレビューの依頼あたりの平均変更行数であり、
前記第1種別の指標は、前記ローカルリポジトリに追加または変更したファイルのレビューの依頼の数、または当該依頼のうち当該ファイルのプロジェクト本体への統合が承認されたものの数である、
請求項2に記載のプログラム。
【請求項8】
前記第1種別の指標は、他のエンジニアによってなされた前記イシュー管理サービスにおけるローカルリポジトリに追加または変更したファイルのレビューの依頼に応じてレビューした数であり、
前記第2種別の指標は、前記レビューの依頼から最初にレビューするまでの所要時間である、
請求項2に記載のプログラム。
【請求項9】
前記決定する手段は、前記評価対象と属性の類似する他のエンジニア、または組織を前記参照対象と決定する、
請求項1に記載のプログラム。
【請求項10】
前記属性は、経験年数、プログラミング言語、マークアップ言語、役割、雇用形態、または報酬の少なくとも1つを含む、
請求項9に記載のプログラム。
【請求項11】
前記第1種別の指標のベンチマークは、前記参照対象について算出された第1種別の指標の平均値、中央値、最頻値、最大値、最小値、第一四分位数、または第三四分位数のいずれかである、
請求項1に記載のプログラム。
【請求項12】
前記第1種別の指標のベンチマークは、前記参照対象について算出された第1種別の指標の重み付き平均である、
請求項1に記載のプログラム。
【請求項13】
前記重み付き平均を算出するための重みは、前記評価対象と前記参照対象との間の前記第1種別とは異なる指標、または属性のうち少なくとも1つに関する類似度が高いほど大きくなる、
請求項12に記載のプログラム。
【請求項14】
コンピュータが、
複数のエンジニアがイシュー管理サービスを利用することで当該イシュー管理サービスに保存された、当該複数のエンジニアの各々による開発活動に関する情報を取得するステップと、
前記開発活動に関する情報に基づいて、エンジニア単位の開発活動、または前記複数のエンジニアの一部または全部により構成される組織単位の開発活動に関する指標のうち少なくとも第1種別の指標を算出するステップと、
前記複数のエンジニアのうち1以上と、前記複数のエンジニアの一部または全部により構成される組織のうち1以上とのうち少なくとも一方を参照対象として決定するステップと、
前記参照対象について算出された前記第1種別の指標に基づいて、前記参照対象とは異なるエンジニアである評価対象の前記第1種別の指標のベンチマークを算出するステップと、
前記ベンチマークを出力するステップと
を実行する方法。
【請求項15】
複数のエンジニアがイシュー管理サービスを利用することで当該イシュー管理サービスに保存された、当該複数のエンジニアの各々による開発活動に関する情報を取得する手段と、
前記開発活動に関する情報に基づいて、エンジニア単位の開発活動、または前記複数のエンジニアの一部または全部により構成される組織単位の開発活動に関する指標のうち少なくとも第1種別の指標を算出する手段と、
前記複数のエンジニアのうち1以上と、前記複数のエンジニアの一部または全部により構成される組織のうち1以上とのうち少なくとも一方を参照対象として決定する手段と、
前記参照対象について算出された前記第1種別の指標に基づいて、前記参照対象とは異なるエンジニアである評価対象の前記第1種別の指標のベンチマークを算出する手段と、
前記ベンチマークを出力する手段と
を具備する、情報処理装置。
【請求項16】
第1情報処理装置と第2情報処理装置とを具備するシステムであって、
前記第1情報処理装置は、
複数のエンジニアがイシュー管理サービスを利用することで当該イシュー管理サービスに保存された、当該複数のエンジニアの各々による開発活動に関する情報を取得する手段と、
前記開発活動に関する情報に基づいて、エンジニア単位の開発活動、または前記複数のエンジニアの一部または全部により構成される組織単位の開発活動に関する指標のうち少なくとも第1種別の指標を算出する手段と、
前記複数のエンジニアのうち1以上と、前記複数のエンジニアの一部または全部により構成される組織のうち1以上とのうち少なくとも一方を参照対象として決定する手段と、
前記参照対象について算出された前記第1種別の指標に基づいて、前記参照対象とは異なるエンジニアである評価対象の前記第1種別の指標のベンチマークを算出する手段と、
前記ベンチマークを前記第2情報処理装置へ出力する手段と
を備える、
システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置、方法、プログラム、およびシステムに関する。
【背景技術】
【0002】
組織におけるプロダクト(例えばソフトウェア)開発は、通常、複数のエンジニアからなるチームによって遂行される。プロダクトの開発責任者は、当該プロダクトを担当するチーム全体またはチームを構成する各エンジニアの開発パフォーマンスを適切に把握することが求められる。また、エンジニアの自己管理の面からもかかる開発パフォーマンスを把握することは有用と考えられる。
【0003】
特許文献1には、ソフトウェアの開発者の成果を評価(定量化)する技術について開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に記載の技術は、開発者個人の成果を評価(定量化)するものであるが、被評価者がどの程度の成果を達成するべきかが分からなければ、成果の優劣を把握することが困難である。
【0006】
本開示の目的は、エンジニアによる開発パフォーマンスの適切な把握または管理を支援する技術を提供することである。
【課題を解決するための手段】
【0007】
本開示の一態様のプログラムは、コンピュータを、複数のエンジニアがイシュー管理サービスを利用することで当該イシュー管理サービスに保存された、当該複数のエンジニアの各々による開発活動に関する情報を取得する手段、開発活動に関する情報に基づいて、エンジニア単位の開発活動、または複数のエンジニアの一部または全部により構成される組織単位の開発活動に関する指標のうち少なくとも第1種別の指標を算出する手段、複数のエンジニアのうち1以上と、複数のエンジニアの一部または全部により構成される組織のうち1以上とのうち少なくとも一方を参照対象として決定する手段、参照対象について算出された第1種別の指標に基づいて、参照対象とは異なるエンジニアである評価対象の第1種別の指標のベンチマークを算出する手段、ベンチマークを出力する手段、として機能させる。
【発明の効果】
【0008】
本開示によれば、開発パフォーマンスの適切な把握を支援することができる。
【図面の簡単な説明】
【0009】
【
図1】本実施形態の情報処理システムの構成を示すブロック図である。
【
図2】本実施形態のクライアント装置の構成を示すブロック図である。
【
図3】本実施形態のサーバの構成を示すブロック図である。
【
図5】本実施形態のリポジトリデータベースのデータ構造を示す図である。
【
図6】本実施形態の開発活動データベースのデータ構造を示す図である。
【
図7】本実施形態の情報処理のフローチャートである。
【
図8】本実施形態の情報処理において表示される画面例を示す図である。
【
図9】本実施形態の情報処理において表示される画面例を示す図である。
【
図10】本実施形態の情報処理において表示される画面例を示す図である。
【発明を実施するための形態】
【0010】
以下、本発明の一実施形態について、図面に基づいて詳細に説明する。なお、実施形態を説明するための図面において、同一の構成要素には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0011】
本明細書において、チームとは、複数人のメンバーにより構成される集団を意味する。本明細書では、チームとは、複数のエンジニアにより構成される集団であるエンジニアチームを指す場合もある。チームは、特定のプロダクトの開発を担当する。プロダクトは、典型的にはソフトウェアであり、例えば、SaaS(Software as a Service)などのWebサービスを提供するためのWebサイトであってもよいし、コンピュータにインストールされるアプリケーションであってもよい。チーム内では、それぞれのエンジニアが機能ごと、アウトプットごと等に役割分担して開発を進める。1つまたは複数のチームは、例えば企業などの組織に属する場合がある。また、チーム内のエンジニアは、特定の1つの企業(組織)に雇用されている会社員のみに限られず、複数の企業が共同で開発を進める開発プロジェクトにおける任意の企業の会社員でもよい。さらに、チーム内のエンジニアには、派遣社員、個人事業主(いわゆるフリーランス)のエンジニアが含まれてもよい。
【0012】
(1)情報処理システムの構成
情報処理システムの構成について説明する。
図1は、本実施形態の情報処理システムの構成を示すブロック図である。
【0013】
図1に示すように、情報処理システム1は、クライアント装置10と、サーバ30とを備える。
クライアント装置10及びサーバ30は、ネットワーク(例えば、インターネット又はイントラネット)NWを介して接続される。また、サーバ30は、ネットワークNWを介して外部システム50と接続される。
【0014】
クライアント装置10は、サーバ30にリクエストを送信する情報処理装置の一例である。クライアント装置10は、例えば、スマートフォン、タブレット端末、又は、パーソナルコンピュータである。クライアント装置10は、情報処理システム1によって提供される、エンジニアまたはチームによる開発パフォーマンスの評価結果を確認するために用いることができる。評価結果は、少なくとも、後述するベンチマークを含む。クライアント装置10のユーザは、例えば、以下の少なくとも1つを含むことができる。
・評価の対象となるエンジニア(以下、「評価対象」という)
・評価対象が所属するチームの他メンバーまたはリーダー
・評価対象が担当するプロダクトの開発責任者
・評価対象の上長
・評価対象が所属する組織における人事担当者
・評価対象が所属する組織における経営幹部
・評価対象が所属する組織の求人情報を閲覧する者
・評価対象への業務の依頼、または評価対象の雇用を検討している者
【0015】
サーバ30は、クライアント装置10から送信されたリクエストに応じたレスポンスをクライアント装置10に提供する情報処理装置の一例である。サーバ30は、例えば、サーバコンピュータである。サーバ30は、クライアント装置10からのリクエストに応じて、対象エンジニによる開発パフォーマンスの評価結果を提供する。
【0016】
外部システム50は、サーバ30からのリクエストに応じて、評価対象に加えて、様々なエンジニアによる開発活動の活動に関する情報を提供する。外部システム50は、典型的には、GitHub(登録商標)などの、ソフトウェア開発プラットフォームである。GitHubは、エンジニアによる開発の成果物であるソースコードの管理、ソースコードに対するレビューの管理等を行う。
【0017】
なお、外部システム50は、GitHubに限られず、GitLab(登録商標)またはBitbucket(登録商標)等の他のソフトウェア開発プラットフォームであってもよい。或いは、外部システム50は、ソフトウェア開発における課題管理ツール(例えばJira(登録商標))、またはタスク管理ツール(例えば、Trello(登録商標)またはbacklog(登録商標)等)であってもよい。これらソフトウェア開発プラットフォーム、課題管理ツールまたはタスク管理ツールは、イシュー管理サービスとして総称することもできる。以下の説明では、外部システム50として、GitHubを利用することを前提として述べる。
【0018】
GitHubは、ソースコードホスティングサービスである。GitHubは、開発の成果物であるソースコードのバージョン管理を行うためのリポジトリ(管理手段)を有する。GitHubは、ある時点におけるソースコードの一覧を管理している。GitHubは、イシュー(作成)、プッシュ、コミット、プルリクエスト、マージ等の各種機能を備えている。イシューは、プロジェクトやソースコードの課題を管理するための機能である。プッシュは、エンジニアのローカル環境(ローカルリポジトリ)で作成又は修正を行ったソースコードをリモート環境(リモートリポジトリ)へアップロードする機能である。コミットは、ソースコードへの変更内容を登録するための機能である。プルリクエストは、プッシュがなされたことを通知してレビューを依頼する機能である。マージは、レビュー結果を確定させて履歴を統合する機能である。ここで、ソースコードとは、Pythonのようなプログラミング言語、またはHTML、CSSのようなマークアップ言語により記述されるコード(文字列)に加え、JavaScript(登録商標)のようなプログラミング言語の一種であるスクリプト言語により記述されるスクリプト(文字列)を含む概念である。
【0019】
プログラミング言語とは、ソフトウェア開発に用いられる言語であり、具体的にはJavaScript(登録商標)、Java(登録商標)、Scala、PHP、Ruby、Python、Go、C#、などがある。また、ソフトウェアフレームワークとはソフトウェア開発に利用するソフトウェアプラットフォームであり、具体的には、jQuery、React、Vue.js、Angular、Nuxt.js、Next.js、ReactNative、Spring Framework、Play Framework、Laravel、CakePHP、RubyonRails、Django、Flask、TensorFlow、gin、Unity、Expressなどがある。
【0020】
(1-1)クライアント装置の構成
クライアント装置の構成について説明する。
図2は、本実施形態のクライアント装置の構成を示すブロック図である。
【0021】
図2に示すように、クライアント装置10は、記憶装置11と、プロセッサ12と、入出力インタフェース13と、通信インタフェース14とを備える。クライアント装置10は、ディスプレイ21に接続される。
【0022】
記憶装置11は、プログラム及びデータを記憶するように構成される。記憶装置11は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、及び、ストレージ(例えば、フラッシュメモリ又はハードディスク)の組合せである。
【0023】
プログラムは、例えば、以下のプログラムを含む。
・OS(Operating System)のプログラム
・情報処理を実行するアプリケーション(例えば、ウェブブラウザ)のプログラム
【0024】
データは、例えば、以下のデータを含む。
・情報処理において参照されるデータベース
・情報処理を実行することによって得られるデータ(つまり、情報処理の実行結果)
【0025】
プロセッサ12は、記憶装置11に記憶されたプログラムを起動することによって、クライアント装置10の機能を実現するコンピュータである。プロセッサ12は、例えば、以下の少なくとも1つである。
・CPU(Central Processing Unit)
・GPU(Graphic Processing Unit)
・ASIC(Application Specific Integrated Circuit)
・FPGA(Field Programmable Array)
【0026】
入出力インタフェース13は、クライアント装置10に接続される入力デバイスから情報(例えばユーザの指示)を取得し、かつ、クライアント装置10に接続される出力デバイスに情報(例えば画像信号)を出力するように構成される。
入力デバイスは、例えば、キーボード、ポインティングデバイス、タッチパネル、又は、それらの組合せである。
出力デバイスは、例えば、ディスプレイ21、スピーカ、又は、それらの組合せである。
【0027】
通信インタフェース14は、クライアント装置10と外部装置(例えばサーバ30)との間の通信を制御するように構成される。
【0028】
ディスプレイ21は、画像(静止画、または動画)を表示するように構成される。ディスプレイ21は、例えば、液晶ディスプレイ、または有機ELディスプレイである。
【0029】
(1-2)サーバの構成
サーバの構成について説明する。
図3は、本実施形態のサーバの構成を示すブロック図である。
【0030】
図3に示すように、サーバ30は、記憶装置31と、プロセッサ32と、入出力インタフェース33と、通信インタフェース34とを備える。
【0031】
記憶装置31は、プログラム及びデータを記憶するように構成される。記憶装置31は、例えば、ROM、RAM、及び、ストレージ(例えば、フラッシュメモリ又はハードディスク)の組合せである。
【0032】
プログラムは、例えば、以下のプログラムを含む。
・OSのプログラム
・情報処理を実行するアプリケーションのプログラム
【0033】
データは、例えば、以下のデータを含む。
・情報処理において参照されるデータベース
・情報処理の実行結果
【0034】
プロセッサ32は、記憶装置31に記憶されたプログラムを起動することによって、サーバ30の機能を実現するコンピュータである。プロセッサ32は、例えば、以下の少なくとも1つである。
・CPU
・GPU
・ASIC
・FPGA
【0035】
入出力インタフェース33は、サーバ30に接続される入力デバイスからユーザの指示を取得し、かつ、サーバ30に接続される出力デバイスに情報を出力するように構成される。
入力デバイスは、例えば、キーボード、ポインティングデバイス、タッチパネル、又は、それらの組合せである。
出力デバイスは、例えば、ディスプレイである。
【0036】
通信インタフェース34は、サーバ30と外部装置(例えばクライアント装置10または外部システム50)との間の通信を制御するように構成される。
【0037】
(2)実施形態の一態様
本実施形態の一態様について説明する。
図4は、本実施形態の一態様の説明図である。
【0038】
図4に示すように、評価対象ET1を含む様々なエンジニアが、外部システム50を利用して種々の開発活動を行う。外部システム50は、このような開発活動のログに関する情報(以下、「開発活動情報」という)を保存する。サーバ30は、外部システム50から開発活動情報を収集する。サーバ30は、定期的に開発活動情報を収集してもよいし、何らかのトリガ(例えば、クライアント装置10からの評価要求の受信)に応じて開発活動情報を収集してもよい。
【0039】
クライアント装置10は、ユーザUS2からの指示に応じて、評価対象ET1(ユーザUS1本人であってもよいし、ユーザUS2とは異なる人物であってもよい)による開発パフォーマンスの評価をサーバ30に要求する。
【0040】
サーバ30は、評価要求に応じて、開発活動に関する指標を開発活動情報に基づいて算出する。ここで算出される指標は、少なくとも後述する第1種別の指標を含む。ここで算出される指標は、エンジニア単位の開発活動に関するものであってもよいし、または組織(組織は、外部システム50を利用するエンジニアにより構成される)単位の開発活動に関するものであってもよい。
【0041】
また、サーバ30は、評価対象の第1種別の指標のベンチマークを算出するために参照されるエンジニアまたは組織(以下、「参照対象」という)を決定する。参照対象は、1または複数のエンジニアであってもよいし、1または複数の組織であってもよいし、それらの組み合わせであってもよい。参照対象は評価対象とは完全一致しないが、参照対象を構成する複数のエンジニアの1人として評価対象を含むこと、および参照対象を構成する組織のメンバーとして評価対象を含むことは許容される。
【0042】
サーバ30は、参照対象について算出された第1種別の指標に基づいて、評価対象の第1種別の指標のベンチマークを算出する。サーバ30は、ベンチマークを含む評価応答をクライアント装置10へ送信する。評価応答は、ベンチマークのほか、評価対象について算出された指標(つまり、開発パフォーマンスの実績値)を含むことができる。クライアント装置10は、評価応答をユーザUS2に提示する。
【0043】
このように、サーバ30によれば、ユーザUS2は、評価対象ET1の第1種別の指標のベンチマークを知ることができる。故に、ユーザUS2は、かかるベンチマークを基準として、評価対象の開発パフォーマンスが優れているか、或いは劣っているかを容易に把握したり、評価対象の開発パフォーマンスに対して適切な目標を設定して管理したりすることができる。
【0044】
(3)データベース
本実施形態のデータベースについて説明する。以下のデータベースは、記憶装置31に記憶される。
【0045】
(3-1)リポジトリデータベース
本実施形態のリポジトリデータベースについて説明する。
図5は、本実施形態のリポジトリデータベースのデータ構造を示す図である。
【0046】
リポジトリデータベースには、リポジトリ情報が格納される。リポジトリ情報は、外部システム50において作成されているリポジトリに関する情報である。
【0047】
図5に示すように、リポジトリデータベースは、「リポジトリID」フィールドと、「チームID」フィールドと、「アドレス」フィールドとを含む。各フィールドは、互いに関連付けられている。
【0048】
「リポジトリID」フィールドには、リポジトリIDが格納される。リポジトリIDは、リポジトリを識別する情報である。サーバ30は、外部システム50からリポジトリIDを取得可能である。
【0049】
「チームID」フィールドには、チームIDが格納される。チームIDは、対応するリポジトリIDによって特定されるリポジトリを作成したチームを識別する情報である。サーバ30は、外部システム50からチームIDを取得可能である。なお、チームを参照対象として利用しない構成の場合、リポジトリデータベースにチームIDを格納しなくてもよい。
【0050】
チームIDは、図示しないデータベースにおいて、組織IDと関連付けられてもよい。チームIDに関連付けられる組織IDは、当該チームIDに対応するチームが属する組織を識別する。また、チームIDは、図示しないデータベースにおいて、エンジニアIDと関連付けられてもよい。チームIDに関連付けられるエンジニアIDは、当該チームIDに対応するチームに属するメンバーを識別する。
【0051】
「アドレス」フィールドには、アドレス情報が格納される。アドレス情報は、対応するリポジトリIDによって特定されるリポジトリにアクセスするための情報(例えばURL(Uniform Resource Locator))である。
【0052】
(3-2)開発活動データベース
本実施形態の開発活動データベースについて説明する。
図6は、本実施形態の開発活動データベースのデータ構造を示す図である。
【0053】
開発活動データベースには、開発活動情報が格納される。開発活動情報は、外部システム50において作成されたリポジトリに保存されているソースコードに関して、エンジニアにより行われた活動に関する情報である。
【0054】
外部システム50は、例えば、ユーザ(つまり、エンジニア)がソースコードをローカルリポジトリからプッシュした場合に、プッシュを行ったユーザを特定可能な情報、およびプッシュが行われた日時をログ情報として記録する。同様に、以下の少なくとも1つの活動について、外部システムはログ情報を記録する。
・追加または変更したファイルをイシュー管理サービスのローカルリポジトリに記録する活動(例えばGitHubにおけるコミットに相当し、以下、同様の活動を「コミット」という)
・ソースコードに関してイシューを作成する活動
・イシューをクローズする活動
・ローカルリポジトリに追加または変更したファイルのレビューを依頼する活動(例えばGitHubにおけるプルリクエストに相当し、以下、同様の活動を「プルリクエスト」という)
・上記依頼に応じてファイルをレビューする活動
・レビューを依頼されたファイルのプロジェクト本体への統合を承認(例えばGitHubにおけるマージに相当し、以下、同様の活動を「マージ」という)する活動
・コメントを作成する活動
・コメントに対する回答を作成する活動
【0055】
サーバ30は、外部システム50から取得した開発活動情報に基づいて、開発活動データベースを更新する。サーバ30は、定期的に開発活動情報を取得してもよいし、何らかのトリガ(例えば、クライアント装置10からの評価要求の受信)に応じて開発活動情報を取得してもよい。
【0056】
図6に示すように、開発活動データベースは、「活動ID」フィールドと、「リポジトリID」フィールドと、「アクションID」フィールドと、「エンジニアID」フィールドと、「日時」フィールドと、「ソースコード」フィールドとを含む。
【0057】
「活動ID」フィールドには、活動IDが格納される。活動IDは、外部システム50において作成されたリポジトリに保存されているソースコードに関して、エンジニアにより行われた活動を識別する情報である。
【0058】
「リポジトリID」フィールドには、リポジトリIDが格納される。リポジトリIDは、対応する活動IDによって特定される活動が行われたソースコードが保存されているリポジトリを識別する情報である。
【0059】
「アクション」フィールドには、アクション情報が格納される。アクション情報は、対応する活動IDによって特定される活動の種別に関する情報である。
【0060】
「エンジニアID」フィールドには、エンジニアIDが格納される。エンジニアIDは、対応する活動IDによって特定される活動を行ったエンジニア(つまり、外部システム50のユーザ)を識別する情報である。
【0061】
「日時」フィールドには、日時情報が格納される。日時情報は、対応する活動IDによって特定される活動が行われた日時に関する情報である。
【0062】
「ソースコード」フィールドには、ソースコード情報が格納される。ソースコード情報は、対応する活動IDによって特定される活動が行われたソースコードに関する情報(例えばファイル名情報)である。
【0063】
(4)情報処理
本実施形態の情報処理について説明する。
図7は、本実施形態の情報処理のフローチャートである。
図8は、本実施形態の情報処理において表示される画面例を示す図である。
図9は、本実施形態の情報処理において表示される画面例を示す図である。
図10は、本実施形態の情報処理において表示される画面例を示す図である。
【0064】
図7に示すように、クライアント装置10は、評価要求(S110)を実行する。
具体的には、クライアント装置10は、ユーザの指示に応じて評価要求を生成する。評価要求は、評価対象を特定可能な情報(例えばエンジニアID)を含む。また、評価要求は、必要に応じて、評価の対象となる期間(以下、「対象期間」という)を特定可能な情報を含んでもよい。ただし、対象期間を定める必要がない場合(例えば直近の1ヶ月などのように予め定められている場合)には、評価要求はかかる情報を含まなくてもよい。
【0065】
なお、評価要求(S110)と同時に、または評価要求(S110)と前後して、サーバ30は、ユーザ認証を行ってもよい。
具体的には、クライアント装置10は、ユーザ認証に用いられる情報を取得し、サーバ30へ送信する。サーバ30は、かかる情報に基づいてクライアント装置10の操作者が登録済みのユーザであるか否かを確認する。サーバ30は、ユーザ認証が成功した場合に、以後の処理を実行する。ただし、評価要求(S110)と同時もしくは評価要求(S110)よりも後にユーザ認証が行われ、かつ評価対象の評価結果を閲覧する権限がユーザに割り当てられていない場合に、サーバ30は評価要求を拒否する。
【0066】
ユーザ認証に用いられる情報は、ユーザを特定可能な情報(例えばユーザID)と、クライアント装置10の操作者が当該ユーザ本人であることを証明するために当該操作者によって提供された情報(例えば、パスワード、または生体情報、など)とを含み得る。
【0067】
ステップS110の後に、サーバ30は、情報の取得(S130)を実行する。
具体的には、サーバ30は、ステップS110において送信された評価要求を受信する。サーバ30は、評価要求に応じて、例えば開発活動データベース(
図6)を参照し、種々の開発活動情報を抽出する。
一例として、サーバ30は、評価対象および他のエンジニアの開発活動情報を開発活動データベースから抽出する。参照対象が予め定められている場合に、他のエンジニアは当該参照対象を構成する者に限られてもよい。また、対象期間が定められている場合に、抽出される情報は、当該対象期間内の日付を示す日付情報を含むものに限られてよい。さらに、対象期間が定められている場合であっても、サーバ30は、対象期間外の日付を示す日付情報を含む他のエンジニアの開発活動情報を開発活動データベースから抽出することで、ベンチマークを算出するために参照可能なデータ数を増やすようにしてもよい。
【0068】
なお、サーバ30は、開発活動データベースから開発活動情報を抽出する前に、外部システム50から開発活動情報を取得し、当該データベースを外部システム50が保有する最新の情報を反映するように更新してもよい。
【0069】
ステップS130の後に、サーバ30は、指標の算出(S131)を実行する。
具体的には、サーバ30は、ステップS130において取得した開発活動情報に基づいて、対象期間における評価対象による開発パフォーマンスに関する指標を算出する。また、サーバ30は、ステップS130において取得した開発活動情報に基づいて、他のエンジニアによる開発パフォーマンス、または組織による開発パフォーマンスに関する指標を算出する。サーバ30は、取得した開発活動情報に基づいて演算(例えば、カウント)を行うことで指標を算出してもよい。
【0070】
指標は、例えば、以下の少なくとも1つを含むことができる。
・コミットを行った数
・ソースコードに関してイシューを作成した数
・作成したイシューがクローズされた数
・プルリクエストを行った数
・プルリクエストに応じてファイルがレビューされた数
・他のエンジニアによるプルリクエストに応じてレビューを行った数
・プルリクエストがマージされた数
・コメントを作成した数
・コメントに対する回答が作成された数
・コーディング数(アクティブ日数)
・他のエンジニアによるプルリクエストに対して最初のレビューをするまでの平均時間[h]
・プルリクエストの作成からマージまたはクローズされるまでの平均時間[h]
・最初のコミットからプルリク作成までの平均時間[h]
・プルリクエストの作成からレビューまでの平均時間[h]
・最初のレビューからクローズまでの平均時間[h]
・最初のレビューから最後のアプルーブまでの平均時間[h]
・最後のアプルーブからマージまでの平均時間[h]
・メインブランチへのマージされたプルリクエストの作成からマージまでの平均時間[h]
・メインブランチへマージされたプルリクエストに紐づく最初のコミットからマージまでの平均時間[h]
・レビューされずにマージされたプルリクエストの割合[%]
・変更障害率
・1プルリクエストに対する平均コメント数
・1プルリクエストあたりの平均変更行数
・1プルリクエストあたりの変更ファイル数
なお、複数のエンジニアが関与するアクションに関する指標は、一部のエンジニアのみについて算出されてもよいし、全エンジニアについて算出されてもよい。例えば、プルリクエストの作成からレビューまでの平均時間の指標は、プルリクエストの作成者についてのみ算出されてもよいし、プルリクエストのレビュアーについてのみ算出されてもよいし、両者それぞれについて算出されてもよい。
【0071】
サーバ30は、組織の指標を、例えば、当該組織を構成する複数のエンジニアの指標の総和を平均化することで導出してもよい。また、対象期間外の開発活動情報に基づいて他のエンジニアまたは組織の指標を生成する場合に、対象期間と時間長(例えば日数)を揃えるための補正を行ってよい。
【0072】
ここで、変更障害率とは、変更に伴って発生した障害の割合を意味する。一例として、変更障害率は、メインブランチへマージしたプルリクエスト数に対する、障害を意味するタグ付けがなされたブランチからメインブランチへマージしたプルリクエスト数の割合として表現できる。障害を意味するタグ付けがなされたブランチは、例えば、修正を意味する文字列(hotfix)または変更を元に戻すことを意味する文字列(revert)を含む(大文字小文字問わず)ブランチである。
【0073】
なお、サーバ30は、生成した指標を、図示しないデータベースに格納してもよい。これにより、サーバ30は、同一の評価対象および同一の対象期間が指定された場合等に、指標の算出(S131)を実行する代わりに、データベースに格納されている指標を読み出して利用することができる。また、サーバ30は、対象期間の長さに関わらず、対象期間に属する所定の時間単位(例えば日単位)における指標を生成してデータベースに格納し、当該対象期間に属する時間単位に亘って指標を統合すること対象期間における指標を生成してもよい。これにより、過去に指定された対象期間と重複する対象期間が指定された場合であっても、過去に生成した指標を再利用して指標の算出(S131)を実行できる。
【0074】
ステップS131の後に、サーバ30は、参照対象の決定(S132)を実行する。
具体的には、サーバ30は、評価対象の少なくとも1つの指標に対するベンチマークを算出するために参照されるエンジニア(評価対象とは異なるエンジニア)、または組織を決定する。
【0075】
参照対象の決定(S132)の第1例として、サーバ30は、ベンチマークが算出される指標(つまり、第1種別の指標)とは異なる他の指標(以下、「第2種別の指標」という)に基づいて参照対象を決定する。
サーバ30は、ステップS131において、評価対象の第2種別の指標と、他のエンジニアまたは組織の第2種別の指標とを算出する。そして、サーバ30は、評価対象と第2種別の指標に関して類似する他のエンジニア、または評価対象と第2種別の指標に関して類似する組織を参照対象と決定する。一例として、サーバ30は、評価対象に対し、第2種別の指標の差が所定範囲内にある他のエンジニアまたは組織を参照対象と決定する。別の例として、サーバ30は、評価対象に対し、第2種別の指標の差の絶対値が小さい順に所定数の他のエンジニアまたは組織を参照対象と決定する。
【0076】
第2種別の指標は、第1種別の指標と相関する指標であってよい。また、第2種別の指標が所定の開発活動のボリュームを表す指標である場合に、第1種別の指標は当該所定の開発活動の内容によって影響を受ける別の開発活動に関する指標であってよい。
【0077】
指標の組み合わせの第1例として、サーバ30は、第2種別の指標として、コミットを行った数、またはプルリクエストを行った数を選択し、第1種別の指標としてプルリクエストがマージされた数を選択できる。この場合に、第1種別の指標と第2種別の指標との間には、通常は正の相関があると考えられる。第2種別の指標に比べて第1種別の指標が小さいエンジニアは、質の低いプルリクエストを作成し、その結果マージに結びついていないという仮説を導けるので、第1種別の指標について適切なベンチマークを定めることで、プルリクエストの質の向上を促すことが有効である可能性がある。
【0078】
指標の組み合わせの第2例として、サーバ30は、第2種別の指標としてイシューを作成した数を選択し、第1種別の指標として作成したイシューがクローズされた数を選択できる。この場合に、第1種別の指標と第2種別の指標との間には、通常は正の相関があると考えられる。第2種別の指標に比べて第1種別の指標が小さいエンジニアは、具体性に欠けるイシューを作成し、その結果クローズに結びついていないという仮説を導けるので、第1種別の指標について適切なベンチマークを定めることで、イシューの具体性の向上を促すことが有効である可能性がある。
【0079】
指標の組み合わせの第3例として、サーバ30は、第2種別の指標として1プルリクエストあたりの平均変更行数を選択し、第1種別の指標として、プルリクエストを行った数、またはプルリクエストがマージされた数を選択できる。この場合に、第1種別の指標と第2種別の指標との間には、通常は負の相関があると考えられる。第2種別の指標に比べて第1種別の指標が小さいエンジニアは、プルリクエストをコンパクトに作成しておらず、その結果、マージに結びついていないという仮説を導けるので、第1種別の指標について適切なベンチマークを定めることで、プルリクエストのコンパクト化を促すことが有効である可能性がある。
【0080】
指標の組み合わせの第4例として、サーバ30は、第2種別の指標として他のエンジニアによるプルリクエストに対して最初のレビューをするまでの平均時間を、第1種別の指標として他のエンジニアによるプルリクエストに応じてレビューを行った数を選択できる。この場合に、第1種別の指標と第2種別の指標との間には、通常は正の相関があると考えられる。第2種別の指標が大きいエンジニアは成熟しており、レビューのスピードも速いため、多くのレビューを任せられる傾向にあるという仮説を導ける。このため、第1種別の指標について適切なベンチマークを定めることで、評価対象の成熟度に応じた量のレビューの実施を促すことが有効である可能性がある。
【0081】
指標の組み合わせの第5例として、サーバ30は、評価対象がプルリクエストを行った数と、評価対象によるプルリクエストの作成からクローズされるまでの平均時間(以下、「プルリクエストクローズ時間」という)とが正の相関がある場合に、第2種別の指標としてプルリクエストを行った数を選択し、第1種別の指標としてプルリクエストクローズ時間を選択できる。第1種別の指標と第2種別の指標との間には、通常は相関がないと考えられる。第1種別の指標と第2種別との間に正の相関があるエンジニアは、質の低いプルリクエストを作成しており、その結果、プルリクエストクローズ時間が長くなっているという仮説を導けるので、第1種別の指標について適切なベンチマークを定めることで、プルリクエストクローズ時間を抑えるように意識させることが有効である可能性がある。
【0082】
指標の組み合わせの第6例として、サーバ30は、評価対象がイシューを作成した数と、評価対象によるイシューの作成からクローズされるまでの平均時間(以下、「イシュークローズ時間」という)とが正の相関がある場合に、第2種別の指標としてイシューを作成した数を選択し、第1種別の指標としてイシュークローズ時間を選択できる。第1種別の指標と第2種別の指標との間には、通常は相関がないと考えられる。第1種別の指標と第2種別との間に正の相関があるエンジニアは、裁けない量のイシューを作成しているか、具体性に欠けるイシューを作成しており、その結果、イシュークローズ時間が長くなっているという仮説を導けるので、第1種別の指標について適切なベンチマークを定めることで、イシュークローズ時間を抑えるように意識させることが有効である可能性がある。
【0083】
参照対象の決定(S132)の第2例として、サーバ30は、評価対象と属性に関して類似する他のエンジニア、または評価対象と属性に関して類似する組織を参照対象と決定する。一例として、サーバ30は、評価対象に対し、属性の差(例えば、属性値の差、属性値の不一致数、またはそれらの組み合わせ)が所定範囲内にある他のエンジニアまたは組織を参照対象と決定する。別の例として、サーバ30は、評価対象に対し、属性の差の絶対値が小さい順に所定数の他のエンジニアまたは組織を参照対象と決定する。
【0084】
属性は、例えば以下の少なくとも1つを含むことができる。
・経験年数
・(使用する)プログラミング言語
・(使用する)マークアップ言語
・役割
・雇用形態
・報酬
【0085】
参照対象の決定(S133)の第3例として、サーバ30は、評価対象に対して予め定められた他のエンジニア、または評価対象に対して予め定められた組織を参照対象と決定する。この場合、参照対象を特定可能な情報(例えば、エンジニアIDまたはチームID)が、評価対象に関する情報として記憶装置31に保存されてもよい。参照対象となる他のエンジニアまたは組織は、評価対象本人によって指定されてもよいし、権限を有する他のユーザ(例えば、評価対象の上長、または評価対象が所属する組織の人事担当者、など)によって指定されてもよい。
【0086】
参照対象の決定(S133)の第4例として、サーバ30は、上記第1例乃至第3例のうち2以上を組み合わせる。
【0087】
ステップS131の後に、サーバ30は、ベンチマークの算出(S133)を実行する。
具体的には、サーバ30は、ステップS131において算出した第1種別の指標のうち、ステップS132において決定した参照対象に関する指標に基づいて、評価対象の第1種別の指標のベンチマークを算出する。
【0088】
一例として、サーバ30は、参照対象について算出された第1種別の指標の代表値を、評価対象の第1種別の指標のベンチマークとして算出する。代表値は、例えば以下のいずれかである。
・平均値
・中央値
・最頻値
・最大値
・最小値
・第一四分位数
・第三四分位数
【0089】
別の例として、サーバ30は、参照対象について算出された第1種別の指標の重み付き平均を、評価対象の第1種別の指標のベンチマークとして算出する。ここで、参照対象の第1種別の指標に割り当てられる重みは、例えば、評価対象と、当該参照対象との間の他の指標(例えば、第2種別の指標)または属性に関する類似度が高いほど大きくなるように定められてよい。
【0090】
サーバ30は、導出したベンチマークを、図示しないデータベースに格納してもよい。これにより、サーバ30は、同一の評価対象が指定された場合に、ベンチマークの算出(S133)を実行する代わりに、データベースに格納されているベンチマークを読み出して利用することができる。
【0091】
ステップS133の後に、サーバ30は、評価応答(S134)を実行する。
具体的には、サーバ30は、ステップS133において算出したベンチマークを含む評価結果をクライアント装置10のユーザに提示するための情報を含む評価応答を生成する。評価結果には、さらに、ステップS131において算出された、対象期間における評価対象の指標(実績)を含むことができる。サーバ30は、生成した評価応答をクライアント装置10へ送信する。ここで、評価結果を提示するための情報は、例えば、クライアント装置10がディスプレイ21に表示させる画面を生成するための情報であってよい。
【0092】
ステップS134の後に、クライアント装置10は、情報提示(S111)を実行する。
具体的には、クライアント装置10は、ステップS134において送信された評価応答を受信し、当該評価応答に基づく画面をディスプレイ21に表示させる。これにより、ユーザは、評価対象の開発パフォーマンスの評価結果(これは、第1種別の指標のベンチマークを含む)を確認することができる。
【0093】
一例として、クライアント装置10は、
図8に示す画面をディスプレイ21に表示させる。
図8の画面は、オブジェクトJ20~J24を含む。
【0094】
オブジェクトJ20は、評価対象の名称を表示する。オブジェクトJ20は、評価対象を変更するユーザ指示を受け付けてもよい。この場合に、クライアント装置10のユーザは、当該ユーザに評価結果の閲覧権限が割り当てられているエンジニアのいずれかを新たな評価対象として選択する入力が認められる。
【0095】
評価対象が変更された場合に、クライアント装置10は、評価要求(S110)を新たに実行してもよい。これにより、クライアント装置10は、ディスプレイ21の画面(
図8の例では、オブジェクトJ20~J21の表示内容)を更新できる。
【0096】
オブジェクトJ21は、評価対象の第1種別の指標のベンチマークを表示する。オブジェクトJ21は、さらに、以下の少なくとも1つを表示してもよい。
・評価対象の少なくとも1つの指標の実績
・評価対象の少なくとも1つの指標(第1種別の指標)の実績と対応するベンチマークとの比較結果
・ベンチマークを達成した指標の数
・全指標に対する、ベンチマークを達成した指標の数の割合
図8の例では、実績とベンチマークとの間に配置された顔アイコンの表情により、当該実績と当該ベンチマークとの比較結果を示しているが、他の表現を用いてもよい。例えば、ベンチマークと実績との差(以下、「ベンチマークギャップ」という)、ベンチマークに対する実績の割合、またはベンチマークに対するベンチマークギャップの割合などの表現が利用可能である。
【0097】
また、オブジェクトJ21は、実績またはベンチマークが算出される対象期間の長さ(月、年、四半期、週、または日、など)、または位置(始点、終点、または中心点、など)を変更するユーザ指示を受け付けてもよい。
【0098】
対象期間の長さまたは位置が変更された場合に、クライアント装置10は、評価要求(S110)を新たに実行してもよい。これにより、クライアント装置10は、ディスプレイ21の画面(
図8の例では、オブジェクトJ20~J21の表示内容)を更新できる。或いは、クライアント装置10は、サーバ30から受信した評価応答に含まれる情報に基づいて、指標またはベンチマークを算出してもよい。
【0099】
オブジェクトJ22は、参照対象の条件を設定するための画面に切り替えるためのユーザ指示を受け付ける。オブジェクトJ22が選択されると、クライアント装置10はディスプレイ21の画面の切り替えを行う。例えば、クライアント装置10は、ディスプレイ21に
図9の画面を表示する。クライアント装置10は、ディスプレイ21に切り替え後の画面を表示させるための情報を、必要に応じてサーバ30に要求してもよい。
【0100】
オブジェクトJ23は、評価対象に対するコメントを閲覧するための画面に切り替えるためのユーザ指示を受け付ける。オブジェクトJ23が選択されると、クライアント装置10はディスプレイ21の画面の切り替えを行う。例えば、クライアント装置10は、ディスプレイ21に
図10の画面を表示する。クライアント装置10は、ディスプレイ21に切り替え後の画面を表示させるための情報を、必要に応じてサーバ30に要求してもよい。
【0101】
オブジェクトJ24は、前画面に戻るためのユーザ指示を受け付ける。オブジェクトJ24が選択されると、クライアント装置10はディスプレイ21の画面の切り替えを行う。
【0102】
前述のように、例えばオブジェクトJ22が選択された場合に、クライアント装置10は、
図9の画面をディスプレイ21に表示させることができる。
図9の画面は、オブジェクトJ20,J23,J24,J30,J31を含む。オブジェクトJ20,J23,J24は、前述のとおりである。
【0103】
オブジェクトJ30は、参照対象の選択条件に関する設定を表示する。オブジェクトJ30は、参照対象の選択条件に関する設定を変更するためのユーザ指示を受け付けてもよい。参照対象の選択条件に関する設定が変更されると、クライアント装置10は、変更後の情報を記憶装置11に保存するとともに、評価要求(S110)を新たに実行してもよい。
【0104】
参照対象の選択条件は、以下の少なくとも1つを含むことができる。
・参照対象の決定時に考慮される属性とその詳細(オプション)
・参照対象の決定時に考慮される指標(第2種別の指標)とその詳細(オプション)
・他の選択条件に関わらず、参照対象に含められる他のエンジニアまたは組織
・他の選択条件に関わらず、参照対象から除外される他のエンジニアまたは組織
【0105】
参照対象の選択条件は、ベンチマークが算出される指標(第1種別の指標)毎に設定可能に構成されてもよいし、複数の指標に亘って共通に設定可能に構成されてもよい。
【0106】
参照対象の選択条件の情報は、例えば評価対象を特定可能な情報(例えばエンジニアID)に関連付けて記憶装置31に保存されてもよい。そして、サーバ30は、かかる情報を参照して、参照対象の決定(S132)を実行してよい。
【0107】
オブジェクトJ31は、評価対象のベンチマークを閲覧するための画面に切り替えるためのユーザ指示を受け付ける。オブジェクトJ31が選択されると、クライアント装置10はディスプレイ21の画面の切り替えを行う。例えば、クライアント装置10は、ディスプレイ21に
図8の画面を表示する。
【0108】
前述のように、例えばオブジェクトJ23が選択された場合に、クライアント装置10は、
図10の画面をディスプレイ21に表示させることができる。
図10の画面は、オブジェクトJ20,J22,J24,J31,J40を含む。オブジェクトJ20,J22,J24,J31は、前述のとおりである。
【0109】
オブジェクトJ40は、評価対象の第1種別の指標のベンチマークと比べた実績の良し悪しに関するコメントを表示する。コメントは、典型的にはベンチマークと実績との乖離(例えば、差の符号、差の符号と大きさとの組み合わせ、または比率)に関する情報を含む。コメントは、この乖離を適正化する(実績をベンチマークに近づける、またはベンチマークを超える実績を達成する)ための改善アドバイス(例えば、評価対象が開発活動において意識すべき方向性)に関する情報を含んでもよい。
【0110】
(5)小括
以上説明したように、サーバ30は、複数のエンジニアがイシュー管理サービスを利用することで当該イシュー管理サービスに保存された、当該複数のエンジニアの各々による開発活動に関する情報を取得する。サーバ30は、開発活動に関する情報に基づいて、エンジニア単位の開発活動、または複数のエンジニアの一部または全部により構成される組織単位の開発活動に関する指標のうち少なくとも第1種別の指標を算出する。サーバ30は、複数のエンジニアのうち1以上と、複数のエンジニアの一部または全部により構成される組織のうち1以上とのうち少なくとも一方を参照対象として決定する。サーバ30は、参照対象について算出された第1種別の指標に基づいて、参照対象とは異なるエンジニアである評価対象の第1種別の指標のベンチマークを算出し、ベンチマークを出力する。これにより、ユーザは、ベンチマークを用いることで、評価対象の実績の良し悪しを適切に評価したり、適切な目標を設定して管理を行ったりすることができる。
【0111】
サーバ30は、第1種別とは異なる第2種別の指標をさらに算出し、評価対象について算出された第2種別の指標と、参照対象について算出された第2種別の指標とに基づいて、参照対象を決定してもよい。これにより、第2種別の指標の観点から参照対象を決定し、第1種別の指標についてより妥当なベンチマークを算出できる。
【0112】
第1種別の指標は、第2種別の指標と相関してもよい。これにより、第1種別の指標と相関のある第2種別の指標の観点から参照対象を決定し、第1種別の指標についてより妥当なベンチマークを算出できる。
【0113】
第2種別の指標は、所定の開発活動のボリュームを表してよく、第1種別の指標は、所定の開発活動の内容によって影響を受ける別の開発活動に関するものであってよい。これにより、第1種別の指標と因果関係のある第2種別の指標の観点から参照対象を決定し、第1種別の指標についてより妥当なベンチマークを算出できる。
【0114】
第2種別の指標は、追加または変更したファイルをイシュー管理サービスのローカルリポジトリに記録する第1活動の数(コミット数)またはローカルリポジトリに追加または変更したファイルのレビューを依頼する第2活動の数(プルリクエスト数)の少なくとも1つであってよい。第1種別の指標は、第2活動のうち当該ファイルのプロジェクト本体への統合が承認されたものの数(マージ済みプルリクエスト数)であってよい。これにより、マージ済みプルリクエスト数と正の相関があると考えられるコミット数またはプルリクエスト数の観点から参照対象を決定し、マージ済みプルリクエスト数についてより妥当なベンチマークを算出できる。
【0115】
第2種別の指標は、作成したイシューの数(イシュー作成数)であってよく、第1種別の指標は、作成したイシューのうちクローズされたものの数(クローズドイシュー数)であってよい。これにより、クローズドイシュー数と正の相関があると考えられるイシュー作成数の観点から参照対象を決定し、クローズドイシュー数についてより妥当なベンチマークを算出できる。
【0116】
第2種別の指標は、イシュー管理サービスにおけるローカルリポジトリに追加または変更したファイルのレビューの依頼あたりの平均変更行数(1プルリクエストあたりの平均変更行数)であってよい。第1種別の指標は、ローカルリポジトリに追加または変更したファイルのレビューの依頼の数(プルリクエスト数)、または当該依頼のうち当該ファイルのプロジェクト本体への統合が承認されたものの数(マージ済みプルリクエスト数)であってよい。これにより、プルリクエスト数またはマージ済みプルリクエスト数と負の相関があると考えられる1プルリクエスト当たりの平均変更行数の観点から参照対象を決定し、プルリクエスト数またはマージ済みプルリクエスト数についてより妥当なベンチマークを算出できる。
【0117】
第1種別の指標は、他のエンジニアによってなされたイシュー管理サービスにおけるローカルリポジトリに追加または変更したファイルのレビューの依頼に応じてレビューした数(レビュー数)であってよく、第2種別の指標は、レビューの依頼から最初にレビューするまでの所要時間(レビュー所要時間)であってよい。これにより、レビュー数と正の相関があると考えられるレビュー所要時間の観点から参照対象を決定し、レビュー数についてより妥当なベンチマークを算出できる。
【0118】
サーバ30は、評価対象と属性の類似する他のエンジニア、または組織を参照対象と決定してもよい。これにより、属性の観点から参照対象を決定し、より妥当なベンチマークを算出できる。
【0119】
属性は、経験年数、プログラミング言語、マークアップ言語、役割、雇用形態、または報酬の少なくとも1つを含んでもよい。これにより、経験年数、プログラミング言語、マークアップ言語、役割、雇用形態、または報酬の少なくとも1つの観点から参照対象を決定し、より妥当なベンチマークを算出できる。
【0120】
第1種別の指標のベンチマークは、参照対象について算出された第1種別の指標の平均値、中央値、最頻値、最大値、最小値、第一四分位数、または第三四分位数のいずれかであってよい。これにより、参照対象について算出された第1種別の指標の分布における代表的な値をベンチマークとすることができる。
【0121】
第1種別の指標のベンチマークは、参照対象について算出された第1種別の指標の重み付き平均であってよい。これにより、参照対象に含まれる各エンジニアまたは組織の第1種別の指標が、ベンチマークの算出に及ぼす影響を調整することができる。
【0122】
重み付き平均を算出するための重みは、評価対象と参照対象との間の第1種別とは異なる指標、または属性のうち少なくとも1つに関する類似度が高いほど大きくなってもよい。これにより、評価対象と他の指標または属性に関して類似するエンジニアまたは組織について算出された第1種別の指標を重視したベンチマークを得ることができる。
【0123】
(6)その他の変形例
記憶装置11は、ネットワークNWを介して、クライアント装置10と接続されてもよい。ディスプレイ21は、クライアント装置10と一体化されてもよい。記憶装置31は、ネットワークNWを介して、サーバ30と接続されてもよい。
【0124】
上記の情報処理の各ステップは、クライアント装置10及びサーバ30の何れでも実行可能である。例えば、サーバ30が実行するとして説明された処理を、クライアント装置10が実行してもよい。
【0125】
上記説明では、サーバ30が、評価対象の第1種別の指標のベンチマークを算出するとともに評価対象の各指標(第1種別の指標および第2種別の指標)を算出する例を示した。しかしながら、評価対象の各指標を算出することは必須でない。つまり、サーバ30は、評価対象の各指標を何ら算出することなく、参照対象の第1種別の指標に基づいて当該評価対象の各指標のベンチマークを算出することができる。
【0126】
上記説明では、クライアント装置10がユーザ指示に応じて評価対象の評価を要求する例を示した。しかしながら、サーバ30は、クライアント装置10からの評価要求によらずに、評価対象の評価を繰り返し(例えば所定の周期で)実行してもよい。さらに、サーバ30は、評価対象のベンチマークについて所定の条件が成立する場合に、例えばユーザ宛に通知を行ってもよい。所定の条件は、例えばベンチマークが変更されたこと、であってよい。通知は、アプリ画面、またはウェブサイト画面上で行われてもよいし、メールまたはその他のメッセージ(例えば、SNS(Social Networking Service)メッセージ、SMS(Short Message Service)メッセージ、など)を用いて行われてもよい。通知は、所定条件が成立したことを伝える情報を含んでいてもよいし、評価対象の(例えば最新の)ベンチマークの情報を含んでいてもよい。これにより、ユーザは、評価対象のベンチマークを能動的に頻繁に確認せずとも、上記所定の条件の成立時に評価対象のベンチマークを速やかに把握することができる。
【0127】
サーバ30は、対象期間における評価対象の第2種別の指標に基づく第1種別の指標のベンチマークと、過去の期間における評価対象の第2種別の指標に基づく第1種別の指標のベンチマークに対する変化(例えば改善)の比率、または量を算出し、算出結果をユーザに提示してもよい。
【0128】
また、上記説明では、情報処理において各ステップを特定の順序で実行する例を示したが、各ステップの実行順序は、依存関係がない限りは説明した例に制限されない。一例として、属性に基づいて参照対象を決定する場合に、ステップS132は、ステップS131よりも前に実行することができる。
【0129】
(7)付記
実施形態および変形例で説明した事項を、以下に付記する。
【0130】
(付記1)
コンピュータ(30)を、
複数のエンジニアがイシュー管理サービス(50)を利用することで当該イシュー管理サービスに保存された、当該複数のエンジニアの各々による開発活動に関する情報を取得する手段(S130)、
前記開発活動に関する情報に基づいて、エンジニア単位の開発活動、または前記複数のエンジニアの一部または全部により構成される組織単位の開発活動に関する指標のうち少なくとも第1種別の指標を算出する手段(S131)、
前記複数のエンジニアのうち1以上と、前記複数のエンジニアの一部または全部により構成される組織のうち1以上とのうち少なくとも一方を参照対象として決定する手段(S132)、
前記参照対象について算出された前記第1種別の指標に基づいて、前記参照対象とは異なるエンジニアである評価対象の前記第1種別の指標のベンチマークを算出する手段(S133)、
前記ベンチマークを出力する手段(S134)、
として機能させるプログラム。
【0131】
(付記2)
前記算出する手段は、前記第1種別とは異なる第2種別の指標をさらに算出し、
前記決定する手段は、前記評価対象について算出された前記第2種別の指標と、前記参照対象について算出された前記第2種別の指標とに基づいて、前記参照対象を決定する、
付記1に記載のプログラム。
【0132】
(付記3)
前記第1種別の指標は、前記第2種別の指標と相関する、
付記2に記載のプログラム。
【0133】
(付記4)
前記第2種別の指標は、所定の開発活動のボリュームを表し、
前記第1種別の指標は、前記所定の開発活動の内容によって影響を受ける別の開発活動に関する、
付記2に記載のプログラム。
【0134】
(付記5)
前記第2種別の指標は、追加または変更したファイルを前記イシュー管理サービスのローカルリポジトリに記録する第1活動の数または前記ローカルリポジトリに追加または変更したファイルのレビューを依頼する第2活動の数の少なくとも1つであり、
前記第1種別の指標は、前記第2活動のうち当該ファイルのプロジェクト本体への統合が承認されたものの数である、
付記2に記載のプログラム。
【0135】
(付記6)
前記第2種別の指標は、作成したイシューの数であり、
前記第1種別の指標は、作成したイシューのうちクローズされたものの数である、
付記2に記載のプログラム。
【0136】
(付記7)
前記第2種別の指標は、前記イシュー管理サービスにおけるローカルリポジトリに追加または変更したファイルのレビューの依頼あたりの平均変更行数であり、
前記第1種別の指標は、前記ローカルリポジトリに追加または変更したファイルのレビューの依頼の数、または当該依頼のうち当該ファイルのプロジェクト本体への統合が承認されたものの数である、
付記2に記載のプログラム。
【0137】
(付記8)
前記第1種別の指標は、他のエンジニアによってなされた前記イシュー管理サービスにおけるローカルリポジトリに追加または変更したファイルのレビューの依頼に応じてレビューした数であり、
前記第2種別の指標は、前記レビューの依頼から最初にレビューするまでの所要時間である、
付記2に記載のプログラム。
【0138】
(付記9)
前記決定する手段は、前記評価対象と属性の類似する他のエンジニア、または組織を前記参照対象と決定する、
付記1に記載のプログラム。
【0139】
(付記10)
前記属性は、経験年数、プログラミング言語、マークアップ言語、役割、雇用形態、または報酬の少なくとも1つを含む、
付記9に記載のプログラム。
【0140】
(付記11)
前記第1種別の指標のベンチマークは、前記参照対象について算出された第1種別の指標の平均値、中央値、最頻値、最大値、最小値、第一四分位数、または第三四分位数のいずれかである、
付記1に記載のプログラム。
【0141】
(付記12)
前記第1種別の指標のベンチマークは、前記参照対象について算出された第1種別の指標の重み付き平均である、
付記1に記載のプログラム。
【0142】
(付記13)
前記重み付き平均を算出するための重みは、前記評価対象と前記参照対象との間の前記第1種別とは異なる指標、または属性のうち少なくとも1つに関する類似度が高いほど大きくなる、
付記12に記載のプログラム。
【0143】
(付記14)
コンピュータ(30)が、
複数のエンジニアがイシュー管理サービス(50)を利用することで当該イシュー管理サービスに保存された、当該複数のエンジニアの各々による開発活動に関する情報を取得するステップ(S130)と、
前記開発活動に関する情報に基づいて、エンジニア単位の開発活動、または前記複数のエンジニアの一部または全部により構成される組織単位の開発活動に関する指標のうち少なくとも第1種別の指標を算出するステップ(S131)と、
前記複数のエンジニアのうち1以上と、前記複数のエンジニアの一部または全部により構成される組織のうち1以上とのうち少なくとも一方を参照対象として決定するステップ(S132)と、
前記参照対象について算出された前記第1種別の指標に基づいて、前記参照対象とは異なるエンジニアである評価対象の前記第1種別の指標のベンチマークを算出するステップ(S133)と、
前記ベンチマークを出力するステップ(S134)と
を実行する方法。
【0144】
(付記15)
複数のエンジニアがイシュー管理サービス(50)を利用することで当該イシュー管理サービスに保存された、当該複数のエンジニアの各々による開発活動に関する情報を取得する手段(S130)と、
前記開発活動に関する情報に基づいて、エンジニア単位の開発活動、または前記複数のエンジニアの一部または全部により構成される組織単位の開発活動に関する指標のうち少なくとも第1種別の指標を算出する手段(S131)と、
前記複数のエンジニアのうち1以上と、前記複数のエンジニアの一部または全部により構成される組織のうち1以上とのうち少なくとも一方を参照対象として決定する手段(S132)と、
前記参照対象について算出された前記第1種別の指標に基づいて、前記参照対象とは異なるエンジニアである評価対象の前記第1種別の指標のベンチマークを算出する手段(S133)と、
前記ベンチマークを出力する手段(S134)と
を具備する、情報処理装置(30)。
【0145】
(付記16)
第1情報処理装置(30)と第2情報処理装置(10)とを具備するシステム(1)であって、
前記第1情報処理装置は、
複数のエンジニアがイシュー管理サービス(50)を利用することで当該イシュー管理サービスに保存された、当該複数のエンジニアの各々による開発活動に関する情報を取得する手段(S130)と、
前記開発活動に関する情報に基づいて、エンジニア単位の開発活動、または前記複数のエンジニアの一部または全部により構成される組織単位の開発活動に関する指標のうち少なくとも第1種別の指標を算出する手段(S131)と、
前記複数のエンジニアのうち1以上と、前記複数のエンジニアの一部または全部により構成される組織のうち1以上とのうち少なくとも一方を参照対象として決定する手段(S132)と、
前記参照対象について算出された前記第1種別の指標に基づいて、前記参照対象とは異なるエンジニアである評価対象の前記第1種別の指標のベンチマークを算出する手段(S133)と、
前記ベンチマークを前記第2情報処理装置へ出力する手段(S134)と
を備える、
システム。
【0146】
以上、本発明の実施形態について詳細に説明したが、本発明の範囲は上記の実施形態に限定されない。また、上記の実施形態は、本発明の主旨を逸脱しない範囲において、種々の改良や変更が可能である。また、上記の実施形態及び変形例は、組合せ可能である。
【符号の説明】
【0147】
1 :情報処理システム
10 :クライアント装置
11 :記憶装置
12 :プロセッサ
13 :入出力インタフェース
14 :通信インタフェース
21 :ディスプレイ
30 :サーバ
31 :記憶装置
32 :プロセッサ
33 :入出力インタフェース
34 :通信インタフェース
50 :外部システム