IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-24
(45)【発行日】2024-06-03
(54)【発明の名称】コミュニティ活性化装置及び方法
(51)【国際特許分類】
   G06Q 10/0631 20230101AFI20240527BHJP
【FI】
G06Q10/0631
【請求項の数】 13
(21)【出願番号】P 2021094373
(22)【出願日】2021-06-04
(65)【公開番号】P2022186247
(43)【公開日】2022-12-15
【審査請求日】2023-06-08
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】福意 大智
【審査官】平井 嗣人
(56)【参考文献】
【文献】特開2008-293228(JP,A)
【文献】特開2018-190348(JP,A)
【文献】特開2016-181036(JP,A)
【文献】特開2014-120031(JP,A)
【文献】特開2012-230535(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
複数の第1ユーザが参加するコミュニティを管理するコミュニティ活性化装置において、
前記複数の第1ユーザの各々を示すユーザ情報であって、当該第1ユーザの技術レベル及び当該第1ユーザのモチベーションを表すモチベーション係数を含むユーザ情報を格納する格納手段と、
第2ユーザが前記コミュニティにタスクを依頼する際に、当該タスクの難易度を含むタスク情報を取得する第1取得手段と、
前記取得されたタスク情報に含まれる難易度に対応する技術レベルを含む複数のユーザ情報を前記格納手段から取得する第2取得手段と、
前記取得された複数のユーザ情報に含まれるモチベーション係数に基づいて、当該複数のユーザ情報によって示される複数の第1ユーザの中から決定された第1ユーザに、前記タスク情報によって示されるタスクを割り当てる割当手段と
を具備するコミュニティ活性化装置。
【請求項2】
前記割当手段は、前記取得された複数のユーザ情報のうち前記モチベーション係数が予め定められた値以上であるユーザ情報を特定し、当該特定されたユーザ情報のうち前記モチベーション係数が低いユーザ情報によって示される第1ユーザに前記タスクを割り当てる請求項1記載のコミュニティ活性化装置。
【請求項3】
前記取得されたタスク情報によって示されるタスクが完了されているかを判定する第1判定手段と、
前記タスクが完了されていると判定された場合、前記タスクに割り当てられた第1ユーザのモチベーションを向上させるように当該第1ユーザを示すユーザ情報に含まれるモチベーション係数を更新する第1更新手段と
を更に具備する請求項1または2記載のコミュニティ活性化装置。
【請求項4】
前記タスク情報は、前記第2ユーザによって指定された期限を更に含み、
前記第1判定手段は、
前記取得されたタスク情報に含まれる期限内に前記タスクが完了されていると判定された場合、第1調整値を設定し、
前記取得されたタスク情報に含まれる期限を超過して前記タスクが完了されていると判定された場合、前記第1調整値よりも小さい第2調整値を設定し、
前記第1更新手段は、前記タスクが割り当てられた第1ユーザを示すユーザ情報に含まれる技術レベルと前記取得されたタスク情報に含まれる難易度とに応じたモチベーション係数に前記設定された第1または前記第2調整値を乗算した値を、当該第1ユーザを示すユーザ情報に含まれるモチベーション係数に加算する
請求項3記載のコミュニティ活性化装置。
【請求項5】
前記第1判定手段は、前記タスクが完了されていないと判定され、かつ、前記タスク情報に含まれる期限を予め定められた期間以上超過している場合、前記タスクが割り当てられた第1ユーザを示すユーザ情報に含まれるモチベーション係数を低下させる
請求項4記載のコミュニティ活性化装置。
【請求項6】
第2更新手段を更に具備し、
前記ユーザ情報は、当該ユーザ情報によって示される第1ユーザが過去に完了したタスクの数を示す累積タスク対応数を更に含み、
前記タスクが割り当てられた第1ユーザを示すユーザ情報に含まれる累積タスク対応数は、前記タスクが完了されていると判定された場合に更新され、
前記第2更新手段は、前記更新された累積タスク対応数に基づいて、前記タスクが割り当てられた第1ユーザを示すユーザ情報に含まれる技術レベルを更新する
請求項3~5のいずれか一項に記載のコミュニティ活性化装置。
【請求項7】
前記第2更新手段は、前記コミュニティとは異なる他のコミュニティにおいて前記第1ユーザが過去に完了したタスクの数に基づいて前記第1ユーザを示すユーザ情報に含まれる技術レベルを更新する請求項6記載のコミュニティ活性化装置。
【請求項8】
第2判定手段を更に具備し、
前記ユーザ情報は、前記第1ユーザが前記コミュニティにおいて活動した日付を更に含み、
前記第2判定手段は、前記ユーザ情報に含まれる日付から予め定められた期間が経過していると判定された場合、当該ユーザ情報に含まれるモチベーション係数を低下させる
請求項1~7のいずれか一項に記載のコミュニティ活性化装置。
【請求項9】
前記ユーザ情報に含まれるモチベーション係数が予め定められた値よりも低い場合、当該ユーザ情報によって示される第1ユーザに通知する通知手段を更に具備する請求項8記載のコミュニティ活性化装置。
【請求項10】
前記コミュニティに参加している複数のユーザの各々のモチベーション係数を、前記格納手段に格納されている当該複数のユーザを示す複数のユーザ情報から取得する第3取得手段と、
前記取得された複数のユーザの各々のモチベーション係数の総和を計算する計算手段と
を更に具備する請求項1~9のいずれか一項に記載のコミュニティ活性化装置。
【請求項11】
前記タスク情報は、前記第2ユーザによって指定されたタスクの内容及び期限を含み、
前記タスク情報に含まれる難易度は、当該タスク情報に含まれるタスクの内容及び期限を入力とする第1数理モデルによって推論され、
前記第1数理モデルは、機械学習アルゴリズムによって生成される
請求項1~10のいずれか一項に記載のコミュニティ活性化装置。
【請求項12】
前記タスク情報によって示されるタスクが割り当てられる第1ユーザは、前記タスク情報に含まれる難易度と、前記取得された複数のユーザ情報に含まれる技術レベル及びモチベーション係数とを入力とする第2数理モデルによって推論され、
前記第2数理モデルは、機械学習アルゴリズムによって生成される
請求項1~11のいずれか一項に記載のコミュニティ活性化装置。
【請求項13】
複数の第1ユーザが参加するコミュニティを管理し、前記複数の第1ユーザの各々を示すユーザ情報であって、当該第1ユーザの技術レベル及び当該第1ユーザのモチベーションを表すモチベーション係数を含むユーザ情報を格納する格納手段を備えるコミュニティ活性化装置が実行する方法であって、
第2ユーザが前記コミュニティにタスクを依頼する際に、当該タスクの難易度を含むタスク情報を取得するステップと、
前記取得されたタスク情報に含まれる難易度に対応する技術レベルを含む複数のユーザ情報を前記格納手段から取得するステップと、
前記取得された複数のユーザ情報に含まれるモチベーション係数に基づいて、当該複数のユーザ情報によって示される複数の第1ユーザの中から決定された第1ユーザに、前記タスク情報によって示されるタスクを割り当てるステップと
を具備する方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、コミュニティ活性化装置及び方法に関する。
【背景技術】
【0002】
一般に、ソフトウェア製品の開発においては、プログラミング言語で記述されたソースコードを管理するツール(ソースコード管理ツール)が使用される。
【0003】
このようなソースコード管理ツールにおいては、当該ソースコード管理ツールにおいて管理されるソースコードに関する知識を有するユーザが参加することが可能なコミュニティ内で知識を共有することによって、効率的なソフトウェア製品の開発を実現することが可能である。
【0004】
ところで、上記したソースコード管理ツールにおいては例えばユーザが作成したタスクをコミュニティに参加している他のユーザに依頼する(割り当てる)ことができるが、当該タスクが適切なユーザに割り当てられなければ、当該ユーザのモチベーションが低下し、コミュニティでの活動量が低下する。この場合、コミュニティが活性化せず、効率的なソフトウェア製品の開発を実現することができない可能性がある。
【先行技術文献】
【特許文献】
【0005】
【文献】国際公開第2013/191054号
【発明の概要】
【発明が解決しようとする課題】
【0006】
そこで、本発明が解決しようとする課題は、コミュニティに参加している適切なユーザにタスクを割り当てることが可能なコミュニティ活性化装置及び方法を提供することにある。
【課題を解決するための手段】
【0007】
実施形態によれば、複数の第1ユーザが参加するコミュニティを管理するコミュニティ活性化装置が提供される。前記コミュニティ活性化装置は、格納手段と、第1取得手段と、第2取得手段と、割当手段とを具備する。前記格納手段は、前記複数の第1ユーザの各々を示すユーザ情報であって、当該第1ユーザの技術レベル及び当該第1ユーザのモチベーションを表すモチベーション係数を含むユーザ情報を格納する。前記第1取得手段は、第2ユーザが前記コミュニティにタスクを依頼する際に、当該タスクの難易度を含むタスク情報を取得する。前記第2取得手段は、前記取得されたタスク情報に含まれる難易度に対応する技術レベルを含む複数のユーザ情報を前記格納手段から取得する。前記割当手段は、前記取得された複数のユーザ情報に含まれるモチベーション係数に基づいて、当該複数のユーザ情報によって示される複数の第1ユーザの中から決定された第1ユーザに、前記タスク情報によって示されるタスクを割り当てる。
【図面の簡単な説明】
【0008】
図1】実施形態におけるネットワークシステムの構成の一例を示す図。
図2】コミュニティ活性化装置のハードウェア構成の一例を示す図。
図3】ユーザのモチベーションの低下について説明するための図。
図4】コミュニティ活性化装置の機能構成の一例を示すブロック図。
図5】コミュニティ活性化装置の処理手順の一例を示すフローチャート。
図6】タスク作成画面の一例を示す図。
図7】タスク情報のデータ構造の一例を示す図。
図8】ユーザ情報のデータ構造の一例を示す図。
図9】タスク割当部の構成の一例を示す図。
図10】割り当て処理の処理手順の一例を示すフローチャート。
図11】割り当て処理における技術レベル、タスク難易度及びモチベーション係数の関係を示す図。
図12】ユーザに割り当てられるタスクの種類について説明するための図。
図13】タスク作成画面において指定されたタイトル、本文、難易度及び期限の一例を示す図。
図14】タスク情報の具体例を示す図。
図15】担当者が追加されたタスク情報の具体例を示す図。
図16】タスク完了判定部の構成の一例を示す図。
図17】タスク完了判定処理の処理手順の一例を示すフローチャート。
図18】累積タスク対応数が更新されたユーザ情報の一例を示す図。
図19】モチベーション係数が減点されたユーザ情報の一例を示す図。
図20】モチベーション係数更新部の構成の一例を示す図。
図21】モチベーション係数表の一例を示す図。
図22】モチベーション係数更新処理の処理手順の一例を示すフローチャート。
図23】モチベーション係数が更新されたユーザ情報の一例を示す図。
図24】モチベーション係数が更新されたユーザ情報の一例を示す図。
図25】技術レベル更新部の構成の一例を示す図。
図26】技術レベル判定表の一例を示す図。
図27】技術レベル更新処理の処理手順の一例を示すフローチャート。
図28】活動量判定部の構成の一例を示す図。
図29】活動量判定部の処理手順の一例を示すフローチャート。
図30】モチベーション係数が減点されたユーザ情報の一例を示す図。
図31】モチベーション係数の低下を通知するための通知画面の一例を示す図。
図32】ユーザがコミュニティに参加した時点で格納部に登録されるユーザ情報の一例を示す図。
図33】第2数理モデルを用いてタスクをユーザに割り当てる処理の処理手順の一例を示すフローチャート。
【発明を実施するための形態】
【0009】
以下、図面を参照して、本実施形態について説明する。
図1は、本実施形態にけるネットワークシステムの構成の一例を示す。図1に示すように、本実施形態におけるネットワークシステムは、コミュニティ活性化装置10及び複数のユーザ端末20を備える。コミュニティ活性化装置10及び複数のユーザ端末20は、例えばインターネットのようなネットワーク30を介して通信可能に接続されている。
【0010】
コミュニティ活性化装置10は、ソフトウェア製品の開発に用いられ、当該ソフトウェア製品の開発を行うユーザ(技術者)によって利用されるソースコード管理ツール(プラットフォーム)を当該ユーザに提供するように動作する。なお、ソースコード管理ツールは、ソフトウェア製品を実現するためのソースコードを管理する機能や当該ソースコードに関する知識を有するユーザが参加する(メンバーとして登録される)コミュニティを管理する機能等の様々な機能を有する。本実施形態におけるコミュニティは、例えばソースコード管理ツールにおいて管理されるソースコード毎に作成されることを想定しているが、他の観点で作成されてもよい。
【0011】
複数のユーザ端末20の各々は、上記したソフトウェア製品の開発時にユーザによって使用されるパーソナルコンピュータ等の情報処理装置である。ユーザは、ユーザ端末20を使用することによって、上記したようにコミュニティ活性化装置10によって提供されるソースコード管理ツールを利用してソフトウェア開発を行うことができる。
【0012】
図2は、図1に示すコミュニティ活性化装置10のハードウェア構成の一例を示す。コミュニティ活性化装置10は、CPU11、不揮発性メモリ12、主メモリ13及び通信デバイス14等を備える。
【0013】
CPU11は、コミュニティ活性化装置10内の様々なコンポーネントの動作を制御するためのプロセッサである。CPU11は、単一のプロセッサであってもよいし、複数のプロセッサで構成されていてもよい。CPU11は、不揮発性メモリ12から主メモリ13にロードされる様々なプログラムを実行する。これらプログラムは、例えばオペレーティングシステム(OS)及び上記したソースコード管理ツールを実現するためのアプリケーションプログラム等を含む。
【0014】
不揮発性メモリ12は、補助記憶装置として用いられる記憶媒体である。主メモリ13は、主記憶装置として用いられる記憶媒体である。図2においては不揮発性メモリ12及び主メモリ13のみが示されているが、コミュニティ活性化装置10は、例えばHDD(Hard Disk Drive)及びSSD(Solid State Drive)等の他の記憶装置を備えていてもよい。
【0015】
通信デバイス14は、上記した複数のユーザ端末20等の外部装置との通信を実行するように構成されたデバイスである。
【0016】
ところで、ソースコード管理ツールを利用するユーザは、上記したコミュニティにおいて他のユーザと知識(情報)を共有することができる。
【0017】
具体的には、ユーザは、当該ソースコード管理ツールにおいて管理されるソースコードに関するタスクを作成し、当該ソースコードに関する知識を有するユーザが参加しているコミュニティに対して当該タスクを依頼することができる。このようなタスクは例えば当該タスクを作成(依頼)したユーザによって指定されたユーザに割り当てられ、当該タスクが割り当てられたユーザが当該タスクに対応する。これにより、ユーザ間で知識が共有され、効率的なソフトウェア製品の開発を行うことが可能となる。また、上記したソースコード管理ツールには、コミュニティ(または当該コミュニティに参加している特定のユーザ)にコメントを投稿することにより、例えばユーザ間でソースコードに関する議論を行い、他のユーザの知見を得ることができるような機能も含まれている。
【0018】
なお、ソースコード管理ツールとしては例えばGitlabを利用することができるが、当該ソースコード管理ツールがGitlabである場合、ユーザによって作成されるタスクは、例えば修正または編集したソースコードのレビューを依頼するMR(Merge Request)及びソースコードの不具合に基づく修正を依頼するIsuue等が含まれる。なお、タスクには、他のユーザに対するソースコードの修正に関する質問等が含まれていてもよい。
【0019】
ここで、ソフトウェア製品の開発を効率的に行うためには、上記したコミュニティにおける知識の共有等が活発に行われ、コミュニティ全体のモチベーションを向上させる(つまり、コミュティを活性化させる)ことが有用である。
【0020】
この場合において、例えばコミュニティ全体のモチベーションが当該コミュニティに参加している複数のユーザの各々のモチベーションの総和であると定義すると、当該コミュニティ全体のモチベーションは、当該コミュニティに参加するユーザの数の増加により向上させることができると考えられる。一方、コミュニティ全体のモチベーション(コミュニティに参加している複数のユーザのモチベーションの総和、平均値または中央値等)が予め定められた値を下回るような場合には、当該コミュニティからユーザが離脱し、当該コミュニティ全体のモチベーションが低下する可能性がある。
【0021】
すなわち、コミュニティに参加するユーザの数を増加させ、コミュニティ全体のモチベーションを向上させるためには、既にコミュニティに参加しているユーザのモチベーションを向上させる必要がある。
【0022】
上記したユーザのモチベーションは、上記したMR及びIsuue等の他のユーザによって依頼されたタスクに対応する(つまり、コミュニティに貢献する)ことによって向上すると考えられる。
【0023】
しかしながら、ユーザの技術レベル(技術者のスキルのレベル)と、タスクに対応するために必要な技術レベル(つまり、タスクの難易度)とにミスマッチが生じている場合には、他のユーザから依頼されたタスクに対応したとしても、ユーザのモチベーションが向上しない場合がある。
【0024】
具体的には、例えば技術レベルが高いユーザ(以下、上級技術者と表記)に対して難易度が低いタスクが割り当てられた場合には、当該上級技術者のモチベーションは向上しない可能性がある。また、例えば技術レベルが低いユーザ(以下、初級技術者と表記)に対して難易度が高いタスクが割り当てられた場合についても同様に、当該初級技術者のモチベーションが向上しない可能性がある。
【0025】
このように上級技術者であっても初級技術者であっても、適切なタスクが割り当てられない場合にはモチベーションが向上しないことが懸念される。
【0026】
更に、図3に示すように、処理時間等の観点によれば、ユーザは上級技術者にタスクを依頼する傾向がある。このような場合には、初級技術者が対応するタスクの数が少なくなり、当該初級技術者のモチベーションを向上させることが困難となる。
【0027】
また、上記したようにコミュニティに参加しているユーザのモチベーションが向上しない場合にはコミュニティ全体のモチベーションも向上しないため、このようなコミュニティにおいては、例えば初級技術者の新規参入(つまり、当該ユーザが新たに当該コミュニティに参加すること)を期待することができない。これによれば、コミュニティ全体のモチベーションの向上が更に困難となる。
【0028】
そこで、本実施形態においては、タスクを適切なユーザに割り当てることによってコミュニティに参加しているユーザのモチベーションを効率的に向上させ、結果としてコミュニティ全体のモチベーションを向上させる(コミュニティを活性化させる)仕組みを提供する。なお、本実施形態における「適切なユーザ」とは、ある難易度のタスクに対して、当該タスクを遂行するための技術レベルの乖離が小さいユーザを想定している。
【0029】
図4は、本実施形態に係るコミュニティ活性化装置10の機能構成の一例を示すブロック図である。図4に示すように、コミュニティ活性化装置10は、格納部101、タスク取得部102、タスク割当部103、タスク完了判定部104、モチベーション係数更新部105、技術レベル更新部106及び活動量判定部107を含む。
【0030】
なお、本実施形態において、格納部101は、図2に示す不揮発性メモリ12または他の記憶装置等によって実現される。
【0031】
また、本実施形態において、タスク取得部102、タスク割当部103、タスク完了判定部104、モチベーション係数更新部105、技術レベル更新部106及び活動量判定部107の一部または全ては、例えば図2に示すCPU11(つまり、コミュニティ活性化装置10のコンピュータ)に所定のプログラムを実行させること、すなわち、ソフトウェアによって実現されるものとする。なお、このプログラムは、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能であるし、例えばネットワークを介してコミュニティ活性化装置10にダウンロードされても構わない。
【0032】
なお、本実施形態において、各部102~107は、上記したソースコード管理ツールの一部として動作する機能部であってもよいし、当該ソースコード実現ツールとは別個に動作する機能部であってもよい。
【0033】
ここでは各部102~107の一部または全てがソフトウェアによって実現されるものとして説明したが、当該各部102~107の一部または全ては、例えばハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせ構成によって実現されてもよい。
【0034】
格納部101はデータベース(DB)に相当し、当該格納部101には、例えばソースコード管理ツールにおいて管理されているソースコードに加えて、コミュニティに関する情報(以下、コミュニティ情報と表記)が格納される。なお、格納部101に格納されるコミュニティ情報には、例えばコミュニティに参加している複数のユーザの各々を示すユーザ情報(技術者データ)が含まれる。詳細については後述するが、ユーザ情報には、当該ユーザ情報によって示されるユーザの技術レベル(技術のスキルのレベル)及び当該ユーザのモチベーション(の度合い)を表すモチベーション係数等が含まれる。
【0035】
なお、ソースコード管理ツールにおいて複数のコミュニティが管理されている場合には、格納部101には、当該コミュニティ毎のコミュニティ情報が格納される。
【0036】
タスク取得部102は、コミュニティに対して依頼されるタスクを示すタスク情報を取得する。なお、タスク取得部102によって取得されるタスク情報によって示されるタスクはユーザ端末20に対するユーザの操作に応じて作成され、当該タスク情報には、当該ユーザによって指定されたタスクの難易度等が含まれる。タスクを作成するユーザは、当該タスクが依頼されるコミュニティに参加しているユーザであってもよいし、当該コミュニティに参加していないユーザであってもよい。
【0037】
以下の説明においては、便宜的に、所定のユーザによって依頼されるタスクを対象タスク、当該対象タスクが依頼されるコミュニティを対象コミュニティと称する。
【0038】
タスク割当部103は、対象コミュニティに参加している複数のユーザの中から、対象タスクを割り当てるユーザ(以下、担当ユーザと表記)を決定し、当該対象タスクを当該担当ユーザに割り当てる。なお、担当ユーザは、格納部101に格納されているユーザ情報に含まれる技術レベル及びタスク情報に含まれる難易度を照合した上で、当該ユーザ情報に含まれるモチベーション係数に基づいて決定される。対象タスクが担当ユーザに割り当てられた場合、当該対象タスクを示すタスク情報は、格納部101に格納される。
【0039】
タスク完了判定部104は、タスク割当部103によって担当ユーザに割り当てられた対象タスクを当該担当ユーザが完了したか否かを判定する。
【0040】
モチベーション係数更新部105は、タスク完了判定部104による判定結果に基づいて、担当ユーザのモチベーションを向上させるように当該担当ユーザを示すユーザ情報に含まれるモチベーション係数を更新する。
【0041】
技術レベル更新部106は、担当ユーザが過去に完了したタスクの数(累積タスク対応数)に基づいて、当該担当ユーザを示すユーザ情報に含まれる技術レベルを更新する。なお、累積タスク対応数は、ユーザ情報において管理されているものとする。
【0042】
活動量判定部107は、例えば対象コミュニティに参加しているユーザが当該対象コミュニティにおいて定期的に活動しているか否かを判定する。活動量判定部107は、当該活動量判定部107による判定結果に基づいて、上記したユーザ情報に含まれるモチベーション係数を更新する。
【0043】
次に、図5のフローチャートを参照して、本実施形態に係るコミュニティ活性化装置10の処理手順の一例について説明する。ここでは、コミュニティ活性化装置10がタスクを対象コミュニティに参加しているユーザに割り当てる際の処理手順について説明する。
【0044】
まず、所定のユーザ(以下、依頼ユーザと表記)が対象コミュニティに対して対象タスクを依頼する場合、当該依頼ユーザは、ユーザ端末20を操作することによって、対象タスクを作成することができる。タスク取得部102は、このように依頼ユーザによって作成された対象タスクを示すタスク情報をユーザ端末20から取得する(ステップS1)。
【0045】
ここで、図6は、依頼ユーザが対象タスクを作成する際にユーザ端末20に表示される画面(以下、タスク作成画面と表記)の一例を示す。
【0046】
図6に示すようにタスク作成画面200には、タイトル指定欄201、本文指定欄202、難易度指定欄203及び期限指定欄204が設けられている。
【0047】
タイトル指定欄201は、対象タスクのタイトル(概要)を指定することができる欄(領域)である。本文指定欄202は、対象タスクの本文(詳細)を指定することができる欄(領域)である。難易度指定欄203は、対象タスクの難易度を指定することができる欄(領域)である。期限指定欄204は、対象タスクの期限(対象タスクを完了する期限)を指定することができる欄(領域)である。
【0048】
依頼ユーザは、上記したタスク作成画面200に設けられている各欄201~204においてタイトル、本文、難易度及び期限を指定(入力)する操作を行い、当該タスク作成画面200に設けられている「Create」ボタンを押下することによって、対象タスクを作成することができる。
【0049】
図7は、図5に示すステップS1において取得されるタスク情報のデータ構造の一例を示す。図7に示すようにタスク情報には、タイトル、本文、難易度、期限、担当者及びステータスが対応づけて含まれる。
【0050】
タイトル、本文、難易度及び期限は、上記したタスク作成画面200において説明した通りであるため、ここではその詳しい説明を省略する。図7に示す例では、タイトルが「aaa」であり、本文が「bbb」であり、難易度が「03」であり、期限が「2021.cc.cc」であることが示されている。
【0051】
なお、本実施形態において、難易度は、10段階の数値(例えば、01~10)で表される場合を想定しているが、例えば「易しい」、「普通」及び「難しい」のような態様で表されてもよい。また、期限は、年月日で表されているが、時刻を含むような態様で表されていてもよい。
【0052】
担当者は、対象タスクが割り当てられた担当ユーザ(を識別するためのユーザID)を示す。なお、担当者は、対象タスクが作成された時点(つまり、図5に示すステップS1において取得された時点)では空欄である。
【0053】
ステータスは、対象タスクが完了されているか否かを示す。なお、ステータスは、対象タスクが作成された時点では「未完了」である。また、ステータスは、対象タスクが完了された場合に「未完了」から「完了」に更新(変更)される。
【0054】
再び図5に戻ると、タスク割当部103は、ステップS1において取得されたタスク情報及び格納部101に格納されているユーザ情報に基づいて、対象コミュニティに参加している複数のユーザの中から決定された担当ユーザに対象タスクを割り当てる処理(以下、割り当て処理と表記)を実行する(ステップS2)。
【0055】
ここで、図8は、上記した格納部101に格納されているユーザ情報のデータ構造の一例を示す。図8に示すように、ユーザ情報は、ユーザID(技術者ID)、技術レベル、モチベーション係数、累積タスク対応数及び前回活動日を対応づけて含む。
【0056】
ユーザIDは、ユーザ情報によって示されるユーザ(ソフトウェア製品を開発する技術者)を識別するための識別情報である。
【0057】
技術レベルは、ユーザ情報によって示されるユーザ(ユーザIDによって識別されるユーザ)の技術レベルである。技術レベルは、例えば初級技術者であることを示す「Novice」、中級技術者であることを示す「Middle」及び上級技術者であることを示す「High」等で表されるが、例えば数値等で表されてもよい。
【0058】
モチベーション係数は、ユーザ情報によって示されるユーザ(ユーザIDによって識別されるユーザ)のモチベーション(の度合い)を示す数値である。
【0059】
累積タスク対応数は、ユーザ情報によって示されるユーザ(ユーザIDによって識別されるユーザ)が過去に完了(対応)したタスクの数である。
【0060】
前回活動日は、ユーザ情報によって示されるユーザ(ユーザIDによって識別されるユーザ)がコミュニティおいて前回活動した(つまり、最後に活動した)日付である。なお、前回活動日は、例えばユーザがタスク(MRまたはIssue等)を作成した場合及び当該ユーザがタスクを完了した場合等に更新される。また、例えば対象コミュニティに参加しているユーザは当該対象コミュニティにおいてコメントを投稿することが可能であるが、前回活動日は、当該コメントが投稿された場合に更新されてもよい。前回活動日は、年月日を含む情報であるが、更に時刻を含む情報であってもよい。
【0061】
図8に示す例では、格納部101にユーザ情報101a~101cを含む複数のユーザ情報が格納されている。なお、ユーザ情報101a~101cは、対象コミュニティに参加しているユーザを示すユーザ情報(つまり、対象コミュニティに関するコミュニティ情報に含まれるユーザ情報)である。
【0062】
ユーザ情報101aは、ユーザID「001」、技術レベル「High」、モチベーション係数「80」、累積タスク対応数「50」及び前回活動日「2020.xx.xx」を対応づけて含む。このユーザ情報101aによれば、ユーザIDによって識別されるユーザの技術レベルが「High(つまり、当該ユーザが上級技術者)」であり、当該ユーザのモチベーションを表すモチベーション係数が「80」であることが示されている。更に、ユーザ情報101aによれば、ユーザIDによって識別されるユーザが対象コミュニティにおいて過去に対応したタスクの数が「50」であり、当該対象コミュニティにおいて当該ユーザが前回活動した日が「2020年xx月xx日」であることが示されている。
【0063】
ここでは、ユーザ情報101aについて説明したが、ユーザ情報101b及び101cを含む他のユーザ情報についても同様である。
【0064】
なお、図8は対象コミュニティに参加している複数のユーザを示すユーザ情報を示しているが、対象コミュニティ以外の他のコミュティが作成されている場合、格納部101には、図8に示すユーザ情報とは別に、当該他のコミュニティに参加している複数のユーザを示すユーザ情報が格納されている。
【0065】
すなわち、図8に示すユーザ情報は対象コミュニティにおけるユーザの活動に関する情報であり、当該ユーザ情報に含まれる技術レベル、モチベーション係数、累積タスク対応数、前回活動日の一部または全ては当該対象コミュニティでの活動に基づくものである。また、例えば同一のユーザが複数のコミュニティに参加している場合、当該ユーザを示すユーザ情報(に含まれる技術レベル、モチベーション係数、累積タスク対応数及び前回活動日)は、当該コミュニティ毎に異なる。換言すれば、ユーザ情報は、当該ユーザ情報によって示されるユーザが活動する(参加している)コミュニティ毎に管理されている。
【0066】
再び図5に戻ると、ステップS2においては、タスク情報に含まれる難易度に応じた技術レベルを含む複数のユーザ情報が格納部101から取得され、当該複数のユーザ情報によって示される複数のユーザの中から担当ユーザが決定される。なお、割り当て処理の詳細については後述する。
【0067】
ステップS2の処理が実行されると、タスク完了判定部104は、ステップS2の処理が実行されることによって担当ユーザに割り当てられた対象タスクが完了されているか否かを判定する処理(以下、タスク完了判定処理と表記)を実行する(ステップS3)。
【0068】
なお、ステップS3のタスク完了判定処理は、対象タスクを示すタスク情報に含まれるステータスに基づいて実行される。また、ステップS3においては、例えば対象タスクを示すタスク情報に含まれる期限内に対象タスクが完了されているか否かに応じて、当該担当ユーザのモチベーションを表すモチベーション係数(つまり、担当ユーザを示すユーザ情報に含まれるモチベーション係数)を更新する際に用いられる調整値を設定する。更に、ステップS3において対象タスクが完了されていると判定された場合、担当ユーザを示すユーザ情報に含まれる累積タスク対応数が更新される。タスク完了判定処理の詳細については後述する。
【0069】
ステップS3の処理が実行されると、モチベーション係数更新部105は、担当ユーザのモチベーションを表すモチベーション係数(以下、単に担当ユーザのモチベーション係数と表記)を更新する処理(以下、モチベーション係数更新処理と表記)を実行する(ステップS4)。
【0070】
ステップS4においては、対象タスクを示すタスク情報に含まれる難易度及び担当ユーザを示すユーザ情報に含まれる技術レベルに応じたモチベーション係数を上記した調整値を用いて調整し、当該調整されたモチベーション係数を担当ユーザのモチベーション係数に加算することによって、更新後のモチベーション係数が計算される。モチベーション係数更新処理の詳細については後述する。
【0071】
ステップS4の処理が実行されると、技術レベル更新部106は、担当ユーザを示すユーザ情報に含まれる累積タスク対応数に基づいて、当該担当ユーザの技術レベル(担当ユーザを示すユーザ情報に含まれる技術レベル)を更新する処理(以下、技術レベル更新処理と表記)を実行する(ステップS5)。
【0072】
ステップS5においては、例えば担当ユーザの他のコミュニティにおける活動量に応じて当該担当ユーザの技術レベルが更新されてもよい。技術レベル更新処理の詳細については後述する。
【0073】
上記した図5に示す処理が実行された場合には、依頼ユーザによって依頼された対象タスクを適切なユーザに割り当てることができるとともに、当該対象タスクに対応した担当ユーザのモチベーション(係数)及び技術レベルを自動的に更新することが可能となる。
【0074】
次に、上記した割り当て処理(図5に示すステップS2の処理)について詳細に説明する。この割り当て処理はタスク割当部103によって実行されるが、まず、図9を参照して、タスク割当部103の構成の一例を説明する。
【0075】
図9に示すように、タスク割当部103は、難易度取得部103a、クエリ送信部103b、ユーザ情報取得部103c及び担当ユーザ決定部103dを含む。
【0076】
難易度取得部103aは、上記したタスク取得部102によって取得されたタスク情報を取得する。難易度取得部103aは、取得されたタスク情報から、当該タスク情報に含まれる難易度を取得する。難易度取得部103aは、取得された難易度に基づくユーザ情報の取得をクエリ送信部103bに指示する。
【0077】
クエリ送信部103bは、難易度取得部103aからの指示に基づいて、ユーザ情報を取得するためのクエリを格納部101(データベース)に送信する。
【0078】
この場合、ユーザ情報取得部103cは、クエリ送信部103bによって送信されたクエリに応じたユーザ情報を格納部101から取得する。なお、ユーザ情報取得部103cは、例えば複数のユーザ情報を取得する。
【0079】
なお、以下の説明においては省略される場合があるが、本実施形態において格納部101に格納されている各種情報は、当該情報を取得するためのクエリが格納部101に送信されることによって取得されるものとする。
【0080】
担当ユーザ決定部103dは、ユーザ情報取得部103cによって取得された複数のユーザ情報によって示される複数の第1ユーザの中から担当ユーザを決定する。なお、担当ユーザは、ユーザ情報取得部103cによって取得された複数のユーザ情報の各々に含まれるモチベーション係数に基づいて決定される。
【0081】
担当ユーザ決定部103dは、決定された担当ユーザ(によって使用されるユーザ端末20)に対して、対象タスク(つまり、対象タスクが割り当てられたこと)を通知する。
【0082】
また、担当ユーザ決定部103dによって担当ユーザが決定された場合、担当ユーザを識別するためのユーザIDが追加されたタスク情報(対象タスクを示すタスク情報)が格納部101に格納(登録)される。
【0083】
次に、図10のフローチャートを参照して、割り当て処理の処理手順の一例について説明する。
【0084】
上記した図5に示すステップS1においてタスク情報が取得された場合、タスク割当部103に含まれる難易度取得部103aは、当該タスク情報をタスク取得部102から取得し、当該タスク情報に含まれる難易度を取得する(ステップS11)。
【0085】
ステップS11の処理が実行されると、難易度取得部103aは、当該ステップS11において取得された難易度に応じた技術レベルを特定する(ステップS12)。この場合、タスク割当部103(または難易度取得部103a)はタスクの難易度と当該タスクが割り当てられるべきユーザの技術レベルとの適切な対応関係を示す理想直線(情報)を予め保持しており、難易度取得部103aは、当該理想直線を参照して、取得された難易度に対応する技術レベルを特定することができる。
【0086】
次に、クエリ送信部103bは、難易度取得部103aからの指示に基づいてクエリを格納部101に送信する(ステップS13)。この場合、クエリ送信部103bは、ステップS12において特定された技術レベルを含むユーザ情報を取得するためのクエリを送信する。
【0087】
ステップS13の処理が実行されると、当該ステップS13において送信されたクエリに応じた複数のユーザ情報(ステップS12において特定された技術レベルを含む複数のユーザ情報)が格納部101から返され、ユーザ情報取得部103cは、当該複数のユーザ情報を取得する(ステップS14)。
【0088】
次に、担当ユーザ決定部103dは、ステップS14において取得された複数のユーザ情報の各々からモチベーション係数を取得する(ステップS15)。
【0089】
ここで、ステップS14において取得された複数のユーザ情報の各々によって示されるユーザの集合をSとする。この場合、担当ユーザ決定部103dは、ステップS15において取得されたモチベーション係数に基づいて、ユーザの集合Sから、当該モチベーション係数が閾値(予め定められた値)以上であるユーザの集合S´を抽出(特定)する(ステップS16)。なお、ユーザの集合S´は、ステップS14において取得された複数のユーザ情報のうち、閾値以上のモチベーション係数を含むユーザ情報によって示されるユーザの集合に相当する。
【0090】
ステップS16の処理が実行されると、担当ユーザ決定部103dは、ユーザの集合S´のうち、モチベーション係数が最も低いユーザ(つまり、最も低いモチベーション係数を含むユーザ情報によって示されるユーザ)を、担当ユーザとして決定する(ステップS17)。
【0091】
ここではユーザの集合S´のうちのモチベーション係数が最も低いユーザが担当ユーザとして決定されるものとして説明したが、本実施形態においては、例えば比較的モチベーション係数が低いユーザが担当ユーザとして決定される構成であればよい。具体的には、ユーザの集合S´のうちのモチベーション係数が低いユーザの中から、当該モチベーション係数以外の情報に基づいて担当ユーザを決定するような構成であってもよい。この場合、
例えばユーザの集合S´のうちのモチベーション係数が低いユーザであって、ユーザ情報に含まれる前回活動日が最も古いユーザを担当ユーザとして決定する構成としてもよい。
【0092】
ステップS17において担当ユーザが決定された場合、対象タスクは、当該担当ユーザに割り当てられ、当該担当ユーザに通知される(ステップS18)。なお、対象タスクの通知は、担当ユーザが使用するユーザ端末20において利用されるソースコード管理ツールを介して行われてもよいし、担当ユーザにメール等を送信することにより行われてもよい。
【0093】
図10においては示されてないが、担当ユーザに対象タスクが割り当てられた場合、当該担当ユーザを識別するためのユーザIDを担当者として含むタスク情報が格納部101に格納される。
【0094】
なお、図11は、上記した割り当て処理における技術レベル、難易度(タスク難易度)及びモチベーション係数の関係を3次元空間上で示している。上記した割り当て処理においては、タスク情報に含まれる難易度(対象タスクの難易度)に対応する技術レベルを有するユーザ(つまり、当該難易度に対応する理想直線に近いユーザ)であって、かつ、モチベーション係数が閾値以上のユーザのうち、当該モチベーション係数が最も低いユーザが担当ユーザとして決定される。
【0095】
ここで、図12を参照して、ユーザに割り当てられるタスクの種類について説明する。本実施形態においては難易度が低いタスクは「初級向け」のタスクと考えられることから初級技術者(技術レベルが低いユーザ)に割り当てられるが、このようなタスクは、「指導向け」のタスクと考えることもできる。本実施形態においては難易度が低いタスクは直接上級技術者(技術レベルが高いユーザ)には割り当てられないが、上級技術者は、初級技術者を指導する(初級技術者が指導を依頼する)という観点から、初級技術者とともに当該タスクに対応することができる。このようなタスクを示すタスク情報においては、例えば初級技術者を識別するためのユーザIDが担当者として含まれ、上級技術者を識別するためのユーザIDが共同担当者として含まれる。
【0096】
更に、難易度が高いタスクは「上級向け」のタスクと考えられることから上級技術者に割り当てられるが、このようなタスクは、「初級レベルアップ向け」のタスクと考えることもできる。難易度が高いタスクは直接初級技術者には割り当てられないが、初級技術者は、上級技術者を支援する(上級技術者が支援を依頼する)という観点から、上級技術者とともに当該タスクに対応することができる。このようなタスクを示すタスク情報においては、例えば上級技術者を識別するためのユーザIDが担当者として含まれ、初級技術者を識別するためのユーザIDが共同担当者として含まれる。
【0097】
なお、以下の説明においては、上記した上級技術者及び初級技術者が共同して対応するタスクを便宜的に共同対応用タスクと称する。また、共同担当者は、例えば担当者によって指定されればよいが、他の手法によって自動的に決定されてもよい。また、ここでは説明の便宜上、上級技術者及び初級技術者が共同してタスクに対応する場合について説明したが、例えば技術レベルが中程度のユーザが上級技術者または初級技術者と共同してタスクに対応することも可能であるし、当該技術レベルが中程度のユーザ同士でタスクに対応してもよい。
【0098】
以下、上記した割り当て処理の具体例について説明する。まず、図13はタイトル、本文、難易度及び期限が依頼ユーザによって指定(入力)されたタスク作成画面200の一例を示しており、図14図13に示すタスク作成画面200において「Create」ボタン205が押下された場合に作成された対象タスクを示すタスク情報の具体例を示している。また、ここでは格納部101に図8に示すユーザ情報101a~101cが格納されているものとする。
【0099】
この場合において、上記した割り当て処理が実行されたものとすると、タスク情報に含まれる難易度が「01(つまり、易しい)」であるため、図11に示す理想直線に基づき、図8に示すユーザ情報101a~101cによって示される複数のユーザの中から技術レベルが「Novice」であるユーザID「003」によって示されるユーザが担当ユーザとして決定される。
【0100】
これによれば、図14に示すタスク情報によって示される対象タスクがユーザID「003」によって識別されるユーザに割り当てられる。
【0101】
この場合、上記した図14に示すタスク情報に含まれる担当者としてユーザID「003」が追加されることによって得られる図15に示すタスク情報が格納部101に格納される。なお、図15に示すタスク情報(つまり、対象タスク)はユーザID「003」によって識別されるユーザに通知され、当該ユーザは、当該タスク情報に含まれるタイトル、本文、期限等を参照(確認)して、対象タスクに対応することができる。
【0102】
次に、上記したタスク完了判定処理(図5に示すステップS3の処理)について詳細に説明する。このタスク完了判定処理はタスク完了判定部104によって実行されるが、まず、図16を参照して、タスク完了判定部104の構成の一例を説明する。
【0103】
図16に示すように、タスク完了判定部104は、期限取得部104a、日付取得部104b、判定部104c、調整値設定部104d及びモチベーション係数減点部104eを含む。
【0104】
期限取得部104aは、格納部101に格納されているタスク情報を取得し、当該タスク情報に含まれる期限を取得する。
【0105】
日付取得部104bは、例えばコミュニティ活性化装置10上で動作するOS等から現在の日付を取得する。なお、本実施形態においては、現在の日付が取得されるものとして説明するが、上記した期限取得部104aによって取得される期限が時刻を含む場合には、日付取得部104bは、現在の日付に加えて、現在の時刻が取得しても構わない。
【0106】
判定部104cは、日付取得部104bによって取得された現在の日付が期限取得部104aによって取得された期限を超過しているか否かを判定する。また、判定部104cは、期限取得部104aによって取得されたタスク情報によって示される対象タスクを完了しているか否かを判定する。
【0107】
調整値設定部104dは、判定部104cによる判定結果に基づいて調整値を設定する。調整値設定部104dによって設定される調整値は、後述するモチベーション係数更新部105によるモチベーション係数の更新(計算)に用いられるため、モチベーション係数更新部105に渡される。
【0108】
モチベーション係数減点部104eは、判定部104cによる判定結果に基づいて、日付取得部104bによって取得されたタスク情報によって示される対象タスクが割り当てられた担当ユーザのモチベーション係数を減点する。このように減点されたモチベーション係数は格納部101に格納されているユーザ情報に反映され、当該ユーザ情報(に含まれるモチベーション係数)が更新される。
【0109】
次に、図17のフローチャートを参照して、タスク完了判定処理の処理手順の一例について説明する。
【0110】
まず、期限取得部104aは、上記した割り当て処理が実行されることによって格納部101に格納されたタスク情報を当該格納部101から取得し、当該タスク情報に含まれる期限を取得する(ステップS21)。また、日付取得部104bは、現在の日付を取得する(ステップS22)。
【0111】
次に、判定部104cは、ステップS21において取得された期限とステップS22において取得された現在の日付とを比較する。これにより、判定部104cは、現在の日付が期限を超過しているか否かを判定する(ステップS23)。
【0112】
現在の日付が期限を超過していないと判定された場合(ステップS23のNO)、判定部104cは、ステップS21において取得されたタスク情報によって示される対象タスクが完了されているか否かを判定する(ステップS24)。
【0113】
ここで、上記したようにタスク情報が格納部101に格納された時点では対象タスクは完了されておらず、当該タスク情報に含まれるステータスは「未完了」である。しかしながら、対象タスクが完了された場合、当該対象タスク依頼したユーザ(依頼ユーザ)は、当該対象タスクが完了されたことを登録する操作をユーザ端末20に対して行うことができる。このような操作が依頼ユーザによって行われた場合、タスク情報に含まれるステータスは、「未完了」から「完了」に更新される。また、判定部104cは、担当ユーザが対応タスクに貢献したかどうかを判断するため、当該担当タスクに対する担当ユーザの対応記録(当該タスクに対応する際に投稿したコメントやコミット等)を確認した上で、タスク情報に含まれるステータスを「未完了」から「完了」に更新してもよい。
【0114】
すなわち、上記したステップS24の処理は、ステップS21において取得されたタスク情報に含まれるステータスを参照することによって実行される。
【0115】
なお、ここでは対象タスクが完了されたことを登録する操作を依頼ユーザが行うものとして説明したが、当該操作は、例えば当該依頼ユーザ以外の権限があるユーザによって行われてもよい。
【0116】
対象タスクが完了されている(つまり、タスク情報に含まれるステータスが「完了」である)と判定された場合(ステップS24のYES)、調整値設定部104dは、モチベーション係数を更新する際に用いられる調整値を1に設定する(ステップS25)。
【0117】
ステップS25の処理が実行されると、担当ユーザを示すユーザ情報(タスク情報に担当者として含まれるユーザIDを含むユーザ情報)が取得され、当該ユーザ情報に含まれる累積タスク対応数に1が加算される。これにより、担当ユーザの累積タスク対応数が更新される(ステップS26)。
【0118】
一方、タスクが完了されていない(つまり、対象タスク情報に含まれるステータスが「未完了」である)と判定された場合(ステップS24のNO)、ステップS22に戻って処理が繰り返される。
【0119】
また、現在の日付が期限を超過していると判定された場合(ステップS23のYES)、判定部104cは、対象タスクが完了されているか否かを判定する(ステップS27)。なお、ステップS27の処理は上記したステップS24の処理と同様であるため、ここではその詳しい説明を省略する。
【0120】
対象タスクが完了されていると判定された場合(ステップS27のYES)、調整値設定部104dは、調整値を1/2に設定する(ステップS28)。ステップS28の処理が実行されると、上記したステップS26の処理が実行される。
【0121】
一方、対象タスクが完了されていないと判定された場合(ステップS27のNO)、判定部104cは、ステップS21において取得された期限とステップS22において取得された現在の日付との差分が閾値以上である(つまり、期限を予め定められた期間以上超過している)か否かを判定する(ステップS29)。
【0122】
期限と現在の日付との差分が閾値以上であると判定された場合(ステップS29のYES)、モチベーション係数減点部104eは、担当ユーザのモチベーション係数(当該担当ユーザを示すユーザ情報に含まれるモチベーション係数)を減点する(ステップS30)。なお、ステップS30においては、例えば担当ユーザのモチベーション係数から、予め定められた値(定数)が減算されてもよいし、後述するモチベーション係数表から取得される値が減算されてもよい。
【0123】
ステップS30の処理が実行されると、格納部101に格納されている担当ユーザを示すユーザ情報に含まれるモチベーション係数が当該ステップS30において減点されたモチベーション係数に更新される。
【0124】
ステップS29において期限と現在の日付との差分が閾値以上でないと判定された場合(ステップS29のNO)またはステップS30の処理が実行された場合、ステップS22に戻って処理が繰り返される。なお、図17に示す処理によれば、期限を長期間超過してもタスクが完了しない場合、ステップS30の処理が繰り返し実行される場合があるが、当該ステップS30の処理が実行される回数は制限されていてもよい。すなわち、ステップS30の処理が繰り返し実行されると、担当ユーザのモチベーション係数が著しく低下してしまう可能性があるため、当該ステップS30の処理は例えば1回のみ実行されるような構成としてもよい。
【0125】
上記した図17に示す処理によれば、担当ユーザが対象タスクに対応せず放置したような場合には、当該担当ユーザのモチベーション係数は減点される。また、担当ユーザが期限に間に合わないが対象タスクに対応している(つまり、対応中である)ような場合には、当該担当ユーザのモチベーション係数は据え置きされる。更に、担当ユーザが期限を超過したがタスクを完了した場合には、当該担当ユーザのモチベーション係数を微増させる(調整値を1/2とする)。なお、担当ユーザが期限内にタスクを完了した場合には、当該担当ユーザのモチベーション係数を向上させる(調整値を1とする)。
【0126】
すなわち、本実施形態におけるタスク完了判定処理においては、対象タスク完了するまでの期間に応じて、担当ユーザのモチベーション係数を調整するような処理が実行される。
【0127】
以下、上記したタスク完了判定処理の具体例について説明する。ここでは、上記した図8に示すユーザ情報及び図15に示すタスク情報が格納部101に格納されているものとする。この場合、図15に示すタスク情報に含まれる期限は「2021年3月1日」である。
【0128】
ここで、現在の日付が「2021年2月1日」であり、図15に示すタスク情報に含まれるステータスが「未完了」から「完了」に更新された(つまり、タスクが完了された)場合を想定する。この場合、現在の日付が期限を超過していないため、調整値として1が設定され、図8に示すユーザ情報が図18に示すユーザ情報に更新される。具体的には、担当ユーザを識別するためのユーザID「003」を含むユーザ情報に含まれる累積タスク対応数が「19」から「20」に更新される。
【0129】
一方、例えば現在の日付が「2021年3月10日」であり、図15に示すタスク情報に含まれるステータスが「未完了」から「完了」に更新された場合を想定する。この場合、現在の日付が期限を超過しているため、調整値として1/2が設定され、図8に示すユーザ情報が図18に示すユーザ情報に更新される。
【0130】
更に、現在の日付が「2021年4月10日」であり、図15に示すタスク情報に含まれるステータスが「未完了」のままである場合を想定する。この場合において、上記した図17に示すステップS29における閾値が例えば1か月であるものとすると、期限を予め定められた期間以上経過しているため、担当ユーザのモチベーション係数が減点され、図8に示すユーザ情報が図19に示すユーザ情報に更新される。具体的には、担当ユーザを識別するためのユーザID「003」を含むユーザ情報に含まれるモチベーション係数が「90」から「40」に更新される。ここでは、後述するモチベーション係数表から取得される値である「50」が担当ユーザのモチベーション係数から減算される例を示しているが、当該モチベーション係数から減算される値は他の値であってもよい。
【0131】
次に、上記したモチベーション係数更新処理(図5に示すステップS4の処理)について詳細に説明する。このモチベーション係数更新処理はモチベーション係数更新部105によって実行されるが、まず、図20を参照して、モチベーション係数更新部105の構成の一例を説明する。
【0132】
図20に示すように、モチベーション係数更新部105は、難易度取得部105a、ユーザ情報取得部105b、モチベーション係数表参照部105c、加算部105d及び判定部105eを含む。
【0133】
難易度取得部105aは、上記したタスク完了判定処理が実行されたタスク情報(対象タスクを示すタスク情報)をタスク完了判定部104から取得し、当該タスク情報に含まれる難易度を取得する。
【0134】
ユーザ情報取得部105aは、担当ユーザ(対象タスクを示すタスク情報に担当者として含まれるユーザIDによって識別されるユーザ)を示すユーザ情報を、格納部101から取得する。
【0135】
モチベーション係数表参照部105cは、タスクの難易度及びユーザの技術レベルに応じたモチベーション係数が定義されたモチベーション係数表(データ)を予め保持する。なお、図21は、モチベーション係数表の一例を示す。図21に示すように、モチベーション係数表においては、タスクの難易度及びユーザの技術レベルの組み合わせ毎にモチベーション係数が定義されている。
【0136】
モチベーション係数表参照部105cは、難易度取得部105aによって取得された難易度及びユーザ情報取得部105bによって取得されたユーザ情報に含まれる技術レベルに基づいてモチベーション係数表を参照し、当該難易度及び技術レベルに応じたモチベーション係数を当該モチベーション係数表から取得する。
【0137】
また、モチベーション係数表参照部105cは、タスク完了判定部104から上記した調整値を取得する。モチベーション係数表参照部105cは、モチベーション係数表から取得されたモチベーション係数に調整値を乗算することによって加算値を計算する。
【0138】
加算部105dは、ユーザ情報取得部105bによって取得されたユーザ情報に含まれるモチベーション係数に上記した加算値を加算する。
【0139】
これにより、格納部101に格納されている担当ユーザを示すユーザ情報に含まれるモチベーション係数が上記したように加算部105dによって加算値が加算されたモチベーション係数に更新される。
【0140】
ここで、例えば難易度取得部105aによって取得されたタスク情報に共同担当者が含まれている場合、当該タスクは、共同対応用タスクである。
【0141】
このため、判定部105eは、対象タスクを示すタスク情報に共同担当者が含まれているか否かに基づいて、当該対象タスクが共同対応用タスクであるか否かを判定する。また、判定部105eは、対象タスクが共同対応用タスクであると判定された場合、共同担当者がそれぞれ共同体応用タスクに貢献したかを判断するため、当該共同対応用タスクに対する対応記録(当該タスクに対応する際に投稿したコメント等)を確認する。
【0142】
加算部105dは、判定部105eによる対応記録の確認結果に基づいて、対象タスクを示すタスク情報に共同担当者として含まれているユーザIDによって識別されるユーザ(以下、共同担当ユーザと表記)を示すユーザ情報に含まれるモチベーション係数に上記した加算値を加算する。
【0143】
これにより、格納部101に格納されている共同担当ユーザを示すユーザ情報に含まれるモチベーション係数が上記したように加算部105dによって加算値が加算されたモチベーション係数に更新される。
【0144】
次に、図22のフローチャートを参照して、モチベーション係数更新処理の処理手順の一例について説明する。
【0145】
まず、難易度取得部105aは、上記した対象タスクを示すタスク情報をタスク完了判定部104から取得し、当該タスク情報に含まれる難易度を取得する(ステップS41)。ここではタスク情報がタスク完了判定部104から取得されるものとして説明したが、当該タスク情報は、格納部101から取得されてもよい。
【0146】
次に、ユーザ情報取得部105bは、対象タスクを示すタスク情報に担当者として含まれるユーザIDを含むユーザ情報(つまり、担当ユーザを示すユーザ情報)を格納部101から取得する(ステップS42)。
【0147】
ステップS42の処理が実行されると、モチベーション係数表参照部105cは、タスク完了判定部104から調整値を取得する(ステップS43)。
【0148】
次に、モチベーション係数表参照部105cは、モチベーション係数表を参照し、ステップS41において取得された難易度及びステップS42において取得された担当ユーザを示すユーザ情報に含まれる技術レベルの組み合わせに対して定義されているモチベーション係数を取得する。モチベーション係数表参照部105cは、取得されたモチベーション係数に調整値を乗算することによって、加算値を計算する(ステップS44)。
【0149】
ステップS44の処理が実行されると、当該ステップS44において計算された加算値を用いて、ステップS42において取得された担当ユーザを示すユーザ情報に含まれるモチベーション係数(つまり、担当ユーザのモチベーション係数)が更新される(ステップS45)。ステップS45においては、格納部101に格納されている担当ユーザを示すユーザ情報に含まれるモチベーション係数が、当該モチベーション係数に上記した加算値が加算された値に更新される。
【0150】
ここで、判定部105eは、対象タスクが共同対応用タスクであるか否かを判定する(ステップS46)。この場合、対象タスクを示すタスク情報に共同担当者(を示すユーザID)が含まれていれば、当該対象タスクが共同対応用タスクであると判定される。一方、タスク情報に共同担当者(を示すユーザID)が含まれていなければ、対象タスクが共同対応用タスクでないと判定される。
【0151】
対象タスクが共同対応用タスクであると判定された場合(ステップS46のYES)、判定部105eは、対応記録を確認し、当該共同対応用タスクにおいて共同担当者が適切に対応したか否かが判定される(ステップS47)。
【0152】
ここで、共同対応用タスクに担当ユーザが対応する場合、当該担当ユーザは、対象コミュニティにおいて共同担当ユーザ等とコメントをやり取りしながら当該共同対応用タスクを完了する。
【0153】
よって、例えば共同対応用タスクに対する対応において共同担当ユーザがメンション機能を利用して担当ユーザを指定したコメントを投稿している場合には、ステップS47において共同担当ユーザが適切に対応したと判定される。
【0154】
また、例えば担当ユーザによって投稿されたコメントに対して共同担当ユーザが返信している場合、または共同担当ユーザによって投稿されたコメント中に担当ユーザの名前または共同対応用タスクに関する用語が記述されている場合にも、ステップS47において共同担当ユーザが適切に対応したと判定されてもよい。
【0155】
なお、コミュニティにおいて投稿されたコメント等はソースコード管理ツールにおいて例えばコミュニティ情報として管理されているため、上記したステップS47の処理は、このようなコメントを解析することによって実行されてもよい。
【0156】
共同担当ユーザが適切に対応したと判定された場合(ステップS47のYES)、ユーザ情報取得部105bは、当該共同担当ユーザを示すユーザ情報を格納部101から取得する(ステップS48)。なお、この共同担当ユーザを示すユーザ情報は、対象タスクを示すタスク情報に共同担当者として含まれるユーザIDを含むユーザ情報である。
【0157】
ステップS48の処理が実行されると、上記したステップS44において計算された加算値を用いて、当該ステップS48において取得された共同担当ユーザを示すユーザ情報に含まれるモチベーション係数(つまり、共同担当ユーザのモチベーション係数)が更新される(ステップS49)。ステップS49においては、共同担当ユーザを示すユーザ情報に含まれるモチベーション係数が、当該モチベーション係数に上記した加算値が加算された値に更新される。
【0158】
なお、ステップS46において対象タスクが共同対応用タスクでないと判定された場合(ステップS46のYES)またはステップS47において共同担当ユーザが適切に対応していないと判定された場合(ステップS47のNO)、ステップS48及びS49の処理は実行されない。
【0159】
上記したモチベーション係数更新処理におけるステップS41~S45の処理によれば、タスクを完了した担当ユーザのモチベーション係数を向上させることができる。また、モチベーション係数更新処理におけるステップS46~S49の処理によれば、共同担当ユーザが適切に対応した場合にのみ当該共同担当ユーザのモチベーション係数を向上させるため、当該共同担当ユーザが適切な対応をしていないにもかかわらず当該共同担当ユーザのモチベーション係数を向上させることを回避することができる。
【0160】
なお、図22に示す処理においては、上記したコミュニティにおいて投稿されているコメント等に基づいて、担当ユーザが適切に対応したか(つまり、共同担当ユーザのみが対象タスクに対応していないか)を判定し、当該担当ユーザが適切に対応した場合にのみ当該担当ユーザのモチベーション係数を向上させるようにしてもよい。
【0161】
本実施形態において説明したモチベーション係数更新処理においては、対象タスク(または共同対応用タスク)を完了した担当ユーザ及び担当ユーザとともに共同対応用タスクに対応した共同担当ユーザのモチベーションを向上させるものとして説明したが、ユーザのモチベーション係数は、例えばタスクを作成した際に向上させるようにしてもよい。すなわち、本実施形態においては、担当ユーザ及び共同担当ユーザだけでなくタスクを作成したユーザのモチベーションをも評価する構成としてもよい。この場合、上記したタスクを作成したユーザのモチベーション係数に所定の加算値を加算することによって当該モチベーション係数を更新するが、当該加算値は、一定の値であってもよいし、作成されたタスクの難易度または当該ユーザの技術レベル等に応じて変動する値であってもよい。また、ユーザのモチベーションは、例えば当該ユーザの他のコミュニティにおける活動(タスクの作成または完了等)に応じて更新されてもよい。
【0162】
なお、本実施形態においては上記した割り当て処理によって自動的に担当者が割り当てられるため、モチベーションを向上させるために所定のユーザによって作成されたタスクに当該ユーザが対応するようなことはできない。
【0163】
以下、上記したモチベーション係数更新処理の具体例について説明する。ここでは、対象タスクを示すタスク情報が図15に示すタスク情報であり、ユーザ情報取得部105bによって図18に示すユーザID「003」を含むユーザ情報が担当ユーザを示すユーザ情報として取得された場合を想定する。
【0164】
この場合、図15に示すタスク情報に含まれる難易度は「01」であり、図18に示す担当ユーザを示すユーザ情報に含まれる技術レベルは「Novice」である。
【0165】
ここで、上記した図21に示すモチベーション係数表を参照すると、難易度「01」及び技術レベル「Novice」に対応づけて当該モチベーション係数表に定義されているモチベーション係数は「40」である。
【0166】
この場合において、タスク完了判定部104から取得された調整値が「1」であるものとすると、加算値は、40×1=40である。これによれば、担当ユーザを示すユーザ情報に含まれるモチベーション係数「90」は、図23に示すように、90+40=130に更新される。
【0167】
一方、タスク完了判定部104から取得された調整値が「1/2」であるものとすると、加算値は、40×1/2=20である。これによれば、担当ユーザを示すユーザ情報に含まれるモチベーション係数は「90」は、図24に示すように、90+20=110に更新される。
【0168】
次に、上記した技術レベル更新処理(図5に示すステップS5の処理)について詳細に説明する。この技術レベル係数更新処理は技術レベル更新部106によって実行されるが、まず、図25を参照して、技術レベル更新部106の構成の一例を説明する。
【0169】
図25に示すように、技術レベル更新部106は、第1対応数取得部106a、第2対応数取得部106b及び技術レベル判定表参照部106cを含む。
【0170】
第1対応数取得部106aは、担当ユーザを示すユーザ情報を格納部101から取得し、当該ユーザ情報に含まれる累積タスク対応数を取得する。
【0171】
ここで、上記したようにユーザ情報はユーザが活動するコミュニティ毎に管理されているが、第1対応数取得部106aによって取得されたユーザ情報は、対象タスクが依頼されたコミュニティにおける担当ユーザの活動に基づくユーザ情報(つまり、対象コミュニティに関するコミュニティ情報に含まれるユーザ情報)である。
【0172】
第2対応数取得部106bは、上記した担当ユーザが他のコミュニティにおいて活動している場合に、当該他のコミュニティにおける当該担当ユーザの活動に基づくユーザ情報(つまり、他のコミュニティに関するコミュニティ情報に含まれるユーザ情報)を格納部101から取得し、当該ユーザ情報に含まれる累積タスク対応数を取得する。第2対応数取得部106bにおいて取得される累積タスク対応数は、担当ユーザが他のコミュニティにおいて過去に完了したタスクの数である。
【0173】
技術レベル判定表参照部106cは、対象コミュニティでの累積タスク対応数及び他のコミュニティでの累積タスク対応数に応じた技術レベルが定義された技術レベル判定表(データ)を予め保持する。なお、図26は、技術レベル判定表の一例を示す。図26に示すように、技術レベル判定表においては、対象コミュニティでの累積タスク対応数及び他のコミュニティでの累積タスク対応数の組み合わせ毎に技術レベルが定義されている。
【0174】
なお、図26に示す例では、例えば対象コミュニティでの累積タスク対応数が0以上10未満であり、他のコミュニティでの累積タスク対応数が0以上10未満である場合には、技術レベルが「Novice」であることが定義されている。また、例えば対象コミュニティでの累積タスク対応数が0以上10未満であり、他のコミュニティでの累積タスク対応数が10以上20未満である場合には、技術レベル「Middle」であることが定義されている。ここで説明した以外の累積タスク対応数の組み合わせについても同様である。
【0175】
技術レベル判定表参照部106cは、第1対応数取得部106aによって取得された累積タスク対応数(対象コミュニティでの累積タスク対応数)及び第2対応数取得部106bによって取得された累積タスク対応数(他のコミュニティでの累積多数対応数)に基づいて技術レベル判定表を参照し、当該累積タスク対応数に応じた技術レベルを当該技術レベル判定表から取得する。
【0176】
技術レベル判定表参照部106cは、格納部101に格納されている担当ユーザを示すユーザ情報に含まれる技術レベル(つまり、担当者の技術レベル)を、技術レベル判定表から取得された技術レベルに更新する。
【0177】
次に、図27のフローチャートを参照して、技術レベル更新処理の処理手順の一例について説明する。
【0178】
まず、第1対応数取得部106aは、担当ユーザを示すユーザ情報(対象タスクを示すタスク情報に担当者として含まれるユーザIDを含むユーザ情報)を格納部101から取得する(ステップS51)。このユーザ情報は、例えば対象コミュニティに関するコミュニティ情報に含まれる複数のユーザ情報のうちの担当ユーザを示すユーザ情報であり、例えば当該対象コミュニティを識別するための識別情報及び担当ユーザを識別するためのユーザIDに基づいて取得される。なお、以下の説明においては、ステップS51において取得されるユーザ情報を、対象コミュニティのユーザ情報と称する。
【0179】
ステップS51の処理が実行されると、第1対応数取得部106aは、対象コミュニティのユーザ情報に含まれる累積タスク対応数(対象コミュニティでの累積タスク対応数)を取得する(ステップS52)。
【0180】
次に、第2対応数取得部106bは、他のコミュニティにおける担当ユーザの活動に関するユーザ情報(以下、他のコミュニティのユーザ情報と表記)を格納部101から取得する(ステップS53)。この他のコミュニティのユーザ情報は、当該他のコミュニティに関するコミュニティ情報に含まれる複数のユーザ情報のうちの担当ユーザを示すユーザ情報であり、例えば当該他のコミュニティを識別するための識別情報及び担当ユーザを識別するためのユーザIDに基づいて取得される。
【0181】
ステップS53の処理が実行されると、第2対応数取得部106bは、他のコミュニティのユーザ情報に含まれる累積タスク対応数(他のコミュニティでの累積タスク対応数)を取得する(ステップS54)。
【0182】
次に、技術レベル判定表参照部106cは、対象コミュニティでの累積タスク対応数及び他のコミュニティでの累積タスク対応数の組み合わせに対して定義されている技術レベルを取得する(ステップS55)。
【0183】
ステップS55の処理が実行されると、格納部101に格納されている対象コミュニティのユーザ情報に含まれる技術レベルが、当該ステップS55において取得された技術レベルに更新される(ステップS56)。
【0184】
上記した技術レベル更新処理においては、対象コミュニティでの累積タスク対応数及び他のコミュニティでの累積タスク対応数に基づいて対象コミュニティのユーザ情報に含まれる技術レベル(つまり、対象コミュニティにおける担当ユーザの技術レベル)が更新されるものとして説明したが、当該技術レベルの更新においては、例えば対象コミュニティのユーザ情報及び他のコミュニティのユーザ情報に含まれるモチベーション係数が考慮されてもよい。
【0185】
以下、上記した技術レベル更新処理の具体例について説明する。ここでは、対象コミュニティのユーザ情報が図23に示すユーザID「003」を含むユーザ情報である場合を想定する。この場合、対象コミュニティのユーザ情報に含まれる累積タスク対応数(つまり、対象コミュニティでの累積タスク対応数)は、「20」である。
【0186】
また、他のコミュニティのユーザ情報に含まれる累積タスク対応数(つまり、他のコミュニティでの累積タスク対応数)が例えば「5」であるものとする。
【0187】
ここで、図26に示す技術レベル判定表を参照すると、対象コミュニティでの累積タスク対応数「20」及び他のコミュニティでの累積タスク対応数「5」に対応づけて当該技術レベル判定表に定義されている技術レベルは「Middle」である。
【0188】
この場合、対象コミュニティのユーザ情報に含まれる技術レベル「Novice」は、「Middle」に更新される。
【0189】
なお、本実施形態における技術レベル更新処理においては担当ユーザの技術レベルを更新するものとして説明したが、上記した共同対応用タスクに対して担当ユーザ及び共同担当ユーザが対応した場合には、タスク完了判定処理において当該共同担当ユーザの累積タスク対応数(共同担当ユーザを示すユーザ情報に含まれる累積タスク対応数)を更新させてもよい。この場合には、共同担当ユーザの技術レベルを更新する技術レベル更新処理を実行することができる。
【0190】
また、本実施形態における技術レベル更新処理においては対象コミュニティでの累積タスク対応数及び他のコミュニティでの累積タスク対応数に基づいて技術レベルを更新するものとして説明したが、当該技術レベルは、例えば対象コミュニティでの累積タスク対応数のみに基づいて更新されてもよい。
【0191】
次に、上記した図4に示すコミュニティ活性化装置10に含まれる活動量判定部107について詳細に説明する。
【0192】
図28は、活動量判定部107の構成の一例を示す。図28に示すように、活動量判定部107は、ユーザ情報取得部107a、日付取得部107b、判定部107c、モチベーション係数減点部107d及び通知部107eを含む。
【0193】
ユーザ情報取得部107aは、格納部101からユーザ情報を取得する。日付取得部107bは、現在の日付を取得する。
【0194】
判定部107cは、ユーザ情報取得部107aによって取得されたユーザ情報に含まれる前回活動日と日付取得部107bによって取得された現在の日付とを比較し、当該前回活動日と当該現在の日付との間隔が予め定められた期間(閾値)以上であるか否かを判定する。
【0195】
モチベーション係数減点部107dは、判定部107cによる判定結果に基づいて、ユーザ情報取得部107aによって取得されたユーザ情報に含まれるモチベーション係数を減点する(つまり、低下させる)。このように減点されたモチベーション係数は格納部101に格納されているユーザ情報に反映され、当該ユーザ情報(に含まれるモチベーション係数)が更新される。
【0196】
通知部107eは、モチベーション係数減点部107dによって減点されたモチベーション係数が予め定められた値(閾値)未満である場合に、ユーザ情報取得部107aによって取得されたユーザ情報によって示されるユーザに当該モチベーション係数の低下を通知する。
【0197】
次に、図29のフローチャートを参照して、活動量判定部107の処理手順の一例について説明する。
【0198】
ここでは便宜的に1つのユーザ情報(以下、対象ユーザ情報と表記)について説明するが、図29に示す処理は、定期的に格納部101(DB)を走査することにより、格納部101に格納されている全てのユーザ情報に対して実行される。すなわち、図29に示す処理は、上記した図5に示す処理(割り当て処理、タスク完了判定処理、モチベーション係数更新処理及び技術レベル更新処理)とは独立して実行される処理である。
【0199】
まず、ユーザ情報取得部107aは、格納部101から対象ユーザ情報を取得する(ステップS61)。
【0200】
次に、ユーザ情報取得部107aは、ステップS61において取得された対象ユーザ情報に含まれる前回活動日を取得する(ステップS62)。
【0201】
ステップS62の処理が実行されると、日付取得部107bは、コミュニティ活性化装置10上で動作するOS等から現在の日付を取得する(ステップS63)。
【0202】
ここで、判定部107cは、ステップS62において取得された前回活動日及びステップS63において取得された現在の日付を比較することによって、前回活動日から現在までの間隔を計算する。判定部107cは、計算された間隔が閾値(予め定められた期間)以上であるか否かを判定する(ステップS64)。換言すれば、ステップS64においては、前回活動日から予め定められた期間が経過しているか否かが判定される。
【0203】
間隔が閾値以上であると判定された場合(ステップS64のYES)、モチベーション係数減点部107dは、ステップS61において取得された対象ユーザ情報に含まれるモチベーション係数を減点する(ステップS65)。なお、ステップS65においては、例えば対象ユーザ情報に含まれるモチベーション係数から一定の値を減算するような処理を実行することを想定しているが、当該対象ユーザ情報に含まれる技術レベルに応じた値を減算してもよい。また、モチベーション係数から減算する値は、例えば他の情報(例えば、前回活動日から現在までの間隔等)を用いて計算されてもよい。
【0204】
ステップS65の処理が実行されると、格納部101に格納されている対象ユーザに含まれるモチベーション係数が、当該ステップS65において減点されたモチベーション係数に更新される。
【0205】
次に、通知部107eは、ステップS65において減点されたモチベーション係数が閾値(予め定められた値)未満であるか否かを判定する(ステップS66)。
【0206】
モチベーション係数が閾値未満であると判定された場合(ステップS66のYES)、通知部107eは、モチベーション係数が閾値未満であり、当該モチベーション係数が低下していることを、対象ユーザ情報によって示されるユーザ(つまり、対象ユーザ情報に含まれるユーザIDによって識別されるユーザ)に通知(警告)する(ステップS67)。なお、ステップS67における通知は、ソースコード管理ツールを介して行われてもよいし、メール等を送信することにより行われてもよい。ステップS67の処理が実行されると、例えばモチベーション係数が低下していることを示すメッセージ等がユーザ端末20に表示される。
【0207】
なお、ステップS64において間隔が閾値以上でないと判定された場合(ステップS64のNO)、ステップS65以降の処理は実行されず、図29に示す処理は終了される。すなわち、この場合には、対象ユーザ情報に含まれるモチベーション係数は減点されない。
【0208】
また、ステップS66においてモチベーション係数が閾値未満でないと判定された場合(ステップS66のNO)、ステップS67の処理は実行されず、図29に示す処理は終了される。すなわち、この場合には、対象ユーザ情報に含まれるモチベーション係数が減点されたとしても、当該対象ユーザ情報によって示されるユーザに対する通知は行われない。
【0209】
なお、図29に示す処理は定期的に実行されるため、モチベーション係数が減点されたユーザは、当該処理が次に実行されるまでにコミュニティにおいて活動(つまり、前回活動日を更新)しなければ、再度モチベーション係数が減点されることになる。すなわち、コミュニティにおいて活動しない期間が長期化するほどモチベーション係数が低下する。
【0210】
また、図29に示す処理においては予め定められた期間以上活動していないユーザのモチベーション係数を減点するものとして説明したが、例えば頻繁に活動しているユーザ(つまり、前回活動日から現在までの間隔が短いユーザ)については、モチベーション係数を加点する(向上させる)ようにしても構わない。
【0211】
以下、上記した活動量判定部107の処理の具体例について説明する。ここでは、例えば図8に示すユーザID「001」を含むユーザ情報が対象ユーザ情報であるものとする。
【0212】
なお、この場合における対象ユーザ情報に含まれる前回活動日は「2020.xx.xx」であり、現在の日付との間隔が予め定められた期間以上であるものとする。
【0213】
これによれば、対象ユーザ情報に含まれるモチベーション係数「80」は、例えば図30に示すように減点される。図30に示す例では、対象ユーザ情報に含まれるモチベーション係数「80」から「50」が減算され、当該モチベーション係数は「30」となっている。
【0214】
この減点後のモチベーション係数「30」が閾値未満である場合、対象ユーザ情報に含まれるユーザID「001」によって識別されるユーザには、モチベーション係数(によって表されるモチベーション)の低下が通知される。
【0215】
ここで、図31は、モチベーション係数の低下が通知される際にユーザ端末20に表示される画面(以下、通知画面と表記)の一例を示す。なお、図31に示されている通知画面には、モチベーション係数が低下していることを通知(警告)するためのメッセージが表示されている。
【0216】
図31に示すメッセージは一例であるが、当該メッセージは、モチベーション係数の低下が通知されるユーザを示すユーザ情報(モチベーション係数及び技術レベル等)に基づいて作成され得る。
【0217】
図31に示す通知画面には、対象ユーザ情報によって示されるユーザ(ユーザID「001」によって識別されるユーザ)に対してモチベーションの低下を通知するためのメッセージが表示されており、当該メッセージによれば、モチベーション係数が低下していること、当該モチベーション係数が「30」であること、及び例えば共同対応用タスクにおいて初級技術者への指導を行うことでモチベーション係数を向上させることができることがユーザに対して通知されている。
【0218】
なお、通知画面に表示される内容は、メッセージに限られず、モチベーション係数が低下していることをユーザに通知(警告)するものであればよい。
【0219】
上記したように本実施形態においては、依頼ユーザ(第2ユーザ)が対象コミュニティに対象タスクを依頼する際に当該対象タスクの難易度を含むタスク情報を取得し、当該取得されたタスク情報に含まれる難易度に対応する技術レベルを含む複数のユーザ情報を取得し、当該取得された複数のユーザ情報に含まれるモチベーション係数に基づいて、当該複数のユーザ情報によって示される複数のユーザの中から決定された担当ユーザ(第1ユーザ)に、対象タスクを割り当てる。
【0220】
本実施形態においては、上記した構成により、対象コミュニティに参加しているユーザのモチベーションを向上させることを目的としてモチベーション係数という概念を導入し、当該モチベーション係数に基づいて対象タスクを適切なユーザに割り当てることが可能となり、当該対象コミュニティに参加しているユーザのモチベーションを効率的に向上させることができる。このように対象コミュニティに参加しているユーザのモチベーションが向上した場合には、当該コミュニティ全体のモチベーションも向上し、当該コミュニティからユーザが離脱することを抑止することができる。また、コミュニティ全体のモチベーションが高いことは、新たなユーザの当該コミュニティへの参加を促進する。
【0221】
なお、ユーザの新規参入が困難である場合には、コミュニティに参加するユーザの多様性が失われ、上級技術者の知識を初級技術者に引き継ぐことも困難となるが、本実施形態においては、技術レベルに適したタスクを割り当てられることが期待されるため、当該技術レベルにかかわらずコミュニティに参加しやすくなる。このようにコミュニティに参加するユーザの数を増加させることは、コミュニティ全体のモチベーションの向上に寄与するとともに、当該コミュニティにおける多様性を実現することができる。
【0222】
上記したように新たなユーザがコミュニティに参加した場合には当該ユーザを示すユーザ情報(当該ユーザの技術レベル及びモチベーション係数等)を管理する必要があるが、当該ユーザがコミュニティに参加した時点では、例えば図32に示すようなユーザ情報が格納部101に登録されるものとする。図32に示すユーザ情報は一例であり、当該ユーザ情報に含まれる技術レベル及びモチベーション係数等は、デフォルト値であってもよいし、例えば新たにコミュニティに参加するユーザまたはコミュニティ活性化装置10の管理者等によって指定されてもよい。また、このユーザ情報に含まれる技術レベルは、例えば他のコミュニティでの技術レベルに基づいて設定されてもよい。
【0223】
なお、コミュニティに参加したユーザは、タスクに対応する等によってコミュニティにおいて活動する(コミュニティに貢献する)ことで、新しいスキルを獲得するまたは現状のスキルを向上させることができる。また、上記したソースコード管理ツールによれば、例えばタスクに対する対応記録(当該タスクに対応する際に投稿したコメント等)をコミュニティに貢献した実績として確認することができる。
【0224】
更に、例えば対象コミュニティに参加している上級技術者(技術レベルが高いユーザ)が初級技術者(技術レベルが低いユーザ)を指導することにより、技術ドメインを次世代に引き継ぐことが可能であるとともに、当該上級技術者も新たな知見または高いスキル(教育の経験等)を獲得することができる可能性がある。
【0225】
また、本実施形態においては、タスク情報に含まれる難易度に対応する技術レベルを含む複数のユーザ情報のうちモチベーション係数が予め定められた値以上であるユーザ情報を特定し、当該特定されたユーザ情報のうちモチベーション係数が低いユーザ情報によって示されるユーザを、タスクを割り当てる担当ユーザとして決定する。
【0226】
本実施形態においては、このような構成により、対象コミュニティに参加しているユーザのモチベーションを底上げし、対象コミュニティ全体を偏りなく活性化させることができる。
【0227】
また、本実施形態においては、対象タスクが完了されていると判定された場合、担当ユーザを示すユーザ情報に含まれるモチベーションを向上させるように当該モチベーション係数を更新する。
【0228】
更に、タスク情報に含まれる期限内にタスクが完了されていると判定された場合には第1調整値を設定し、当該期限を超過し、かつ、当該期限から予め定められた期間以内にタスクが完了されていると判定された場合には第1調整値よりも小さい第2調整値を設定し、担当ユーザを示すユーザ情報に含まれる技術レベルとタスク情報に含まれる難易度とに応じたモチベーション係数に第1または第2調整値を乗算した値を、当該ユーザ情報に含まれるモチベーション係数に加算する。
【0229】
また、タスクが完了されていないと判定され、かつ、期限を予め定められた期間以上超過している場合、担当ユーザを示すユーザ情報に含まれるモチベーション係数を低下させる。
【0230】
本実施形態においては、上記したように担当ユーザのモチベーション係数を更新する構成により、担当ユーザが対象タスクを完了したタイミングに応じて当該担当ユーザのモチベーション係数を自動的に調整することができる。
【0231】
更に、本実施形態においては、対象タスクが完了されていると判定された場合に、担当ユーザを示すユーザ情報に含まれる累積タスク対応数(対象コミュニティでの累積タスク対応数)を更新し、当該更新された累積タスク対応数に基づいて当該ユーザ情報に含まれる技術レベルを更新する。
【0232】
本実施形態においては、上記した構成により、担当ユーザが過去に完了したタスクの数(累積タスク対応数)に基づいて当該担当ユーザの技術レベルを自動的に更新することができる。
【0233】
なお、本実施形態においては、他のコミュニティで担当ユーザが完了したタスクの数(他のコミュニティでの累積タスク対応数)に基づいて技術レベルを更新してもよい。
【0234】
更に、本実施形態においては、ユーザ情報に含まれる前回活動日(ユーザが対象コミュニティおいて活動した日付)から予め定められた期間が経過していると判定された場合に、当該ユーザ情報に含まれるモチベーション係数を低下させる。
【0235】
本実施形態においては、このような構成により、対象コミュニティにおいて活動していないユーザはモチベーションが低下しているとの観点から、当該ユーザのモチベーション係数を自動的に調整することができる。
【0236】
また、本実施形態においては、ユーザ情報に含まれるモチベーション係数(つまり、対象コミュニティに参加しているユーザのモチベーション係数)が予め定められた値よりも低い場合、当該ユーザ情報によって示されるユーザに通知(警告)する。
【0237】
本実施形態においては、このようにモチベーションが低下していることをユーザに通知(警告)することで、当該モチベーションを向上させるような活動をすることを当該ユーザに対して促すことができる。
【0238】
ここで、本実施形態に係るコミュニティ活性化装置10は、対象コミュニティに参加している複数のユーザを示す複数のユーザの各々に含まれるモチベーション係数の総和を対象コミュニティ全体のモチベーション(係数)として計算するように構成されていてもよい。この場合における対象コミュニティ全体のモチベーション係数は、例えば以下の式(1)により計算される。
【数1】
【0239】
なお、この式(1)中のnは対象コミュニティに参加しているユーザの数であり、mはユーザkのモチベーション係数(当該ユーザkを示すユーザ情報に含まれるモチベーション係数)である。
【0240】
このような式(1)を用いて計算される対象コミュニティ全体のモチベーション係数は、例えばコミュニティ活性化装置10の管理者等に提示される。これによれば、コミュニティ活性化装置10の管理者は、提示された対象コミュニティ全体のモチベーション係数を当該対象コミュニティ全体の活性度を定量的に図るための指標として用い、当該対象コミュニティ全体の活性度が高い場合はより多くのユーザ(技術者)が参加することを期待することができ、当該コミュニティ全体の活性度が低い場合は当該活性度を向上させる(改善する)ための対策を検討する必要があることを把握することができる。
【0241】
ここでは対象コミュニティ全体のモチベーションが管理者等に提示されるものとして説明したが、当該対象コミュニティ全体のモチベーションは、コミュニティ活性化装置10または当該コミュニティ活性化装置10の外部装置によって実行される各種処理に利用されてもよい。
【0242】
また、本実施形態においては依頼ユーザが対象コミュニティに対象タスクを依頼する際に当該依頼ユーザが対象タスクの難易度を指定するものとして説明したが、当該難易度は、例えば第1数理モデルを用いて推論されてもよい。この第1数理モデルは、例えば対象タスクの内容(タイトル及び本文等)及び期限を入力とした場合に当該対象タスクの難易度を出力するように、ニューラルネットワークまたはランダムフォレスト等の既知の様々な機械学習アルゴリズムを適用して生成されているものとする。これによれば、対象タスクの難易度は、タスク情報に含まれる対象タスクの内容及び期限を入力とする第1数理モデルによって推論される。この場合、例えばタスク取得部102が上記した第1数理モデルを保持し、当該第1数理モデルを用いて対象タスクの難易度を推論する処理は、タスク取得部102によって実行される。これにより、タスク取得部102は、第1数理モデルを用いて推論された対象タスクの難易度を含むタスク情報を取得することができる。
【0243】
このような構成によれば、対象タスクを作成する際にユーザが当該対象タスクの難易度を判断(指定)する必要がなく、当該対象タスクの難易度が当該対象タスクを作成するユーザによって異なる(ばらつく)ようなことを回避することができる。
【0244】
また、本実施形態においては、割り当て処理において第2数理モデルを用いる構成であってもよい。第2数理モデルは、例えばタスク情報に含まれる難易度、ユーザ情報に含まれる技術レベル及びモチベーション係数を入力とした場合に当該タスク情報によって示される対象タスクが割り当てられる担当ユーザ(を識別するためのユーザID)を出力するように、ニューラルネットワークまたはランダムフォレスト等の既知の様々な機械学習アルゴリズムを適用して生成されているものとする。
【0245】
ここで、図33のフローチャートを参照して、上記した第2数理モデルを用いて対象タスクを割り当てる処理(割り当て処理)の処理手順の一例について説明する。なお、図33に示す処理は、図5に示すステップS2においてタスク割当部103によって実行される。
【0246】
上記した図5に示すステップS1においてタスク情報が取得された場合、タスク割当部103に含まれる難易度取得部103aは、当該タスク情報をタスク取得部102から取得し、当該タスク情報に含まれる難易度を取得する(ステップS71)。
【0247】
次に、クエリ送信部103bは、クエリを格納部101に送信する(ステップS72)。この場合、クエリ送信部103bは、対象コミュニティに参加している複数のユーザを示す複数のユーザ情報を取得するためのクエリを送信する。
【0248】
ステップS72の処理が実行されると、当該ステップS72において送信されたクエリに応じた複数のユーザ情報が格納部101から返され、ユーザ情報取得部103cは、当該複数のユーザ情報を取得する(ステップS73)。
【0249】
次に、担当ユーザ決定部103dは、ステップS73において取得された複数のユーザ情報の各々から技術レベル及びモチベーション係数を取得する(ステップS74)。
【0250】
担当ユーザ決定部103dは、ステップS71において取得された難易度と、ステップS74において取得された技術レベル及びモチベーション係数とを上記した第2数理モデルに入力する(ステップS75)。
【0251】
ステップS75の処理が実行されると、ステップS71において取得された難易度、ステップS74において取得された技術レベル及びモチベーション係数を入力とする第2数理モデルによって対象タスクを割り当てるユーザが推論され、当該第2数理モデルから当該ユーザを識別するためのユーザIDが出力される。
【0252】
担当ユーザ決定部103dは、上記したように第2数理モデルから出力されたユーザIDを取得する(ステップS76)。これにより、担当ユーザ決定部103dは、ステップS76において取得されたユーザIDによって識別されるユーザ(つまり、担当ユーザ)に対象タスクを割り当てる。
【0253】
ステップS76の処理が実行されると、対象タスクは、担当ユーザに通知される(ステップS77)。
【0254】
本実施形態においては、上記したように第2数理モデルを用いて推論されたユーザに対象タスクを割り当てる構成とすることにより、より適切なユーザに対象タスクを割り当てることが期待される。
なお、本実施形態において説明した第2数理モデルは一例であり、当該第2数理モデルは、タスク難易度、技術者の累積タスク対応数、技術者の前回活動日、技術者の技術レベル、技術者のモチベーション係数を入力としてコミュニティ全体のモチベーションを向上させるように生成(訓練)されていてもよい。
【0255】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0256】
10…コミュニティ活性化装置、11…CPU、12…不揮発性メモリ、13…主メモリ、14…通信デバイス、20…ユーザ端末、101…格納部、102…タスク取得部、103…タスク割当部、103a…難易度取得部、103b…クエリ送信部、103c…ユーザ情報取得部、103d…担当ユーザ決定部、104…タスク完了判定部、104a…期限取得部、104b…日付取得部、104c…判定部、104d…調整値設定部、104e…モチベーション係数減点部、105…モチベーション係数更新部、105a…難易度取得部、105b…ユーザ情報取得部、105c…モチベーション係数表参照部、105d…加算部、105e…判定部、106…技術レベル更新部、106a…第1対応数取得部、106b…第2対応数取得部、106c…技術レベル判定表参照部、107…活動量判定部、107a…ユーザ情報取得部、107b…日付取得部、107c…判定部、107d…モチベーション係数減点部、107e…通知部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33