PICSYにおける現時点のトレーサビリティ

日曜日に、友人の渡辺さんが主宰・演出している劇団アロッタファジャイナの舞台「わたしは真悟」を観てきた。楳図かずおの棒読みな演技が大変素敵でした。

一緒に観劇した澤邉さん@京大は、PICSYの人事評価システムへの応用に興味があって、それについて焼肉を食べながら議論した。

どうやら、PICSYのトレーサビリティが社内人事評価において重要ということなので、ちょっとまとめて書いておく。

ご存知の通り、PICSYは価値が伝播する貨幣なので、はるか昔の取引によって、急に貢献度が増えることがありうる。いまの自分の貢献度が、過去の取引のどれによって引き起こされているのかというのを知りたいと思うのも当然だ。

これは理論的な見地というよりも、プレイヤーとしての見地から必要とされる。PICSYgumonji対応についての中嶋さんとの議論の中で、価値の伝播を可視化したいという要望から、このアイデアがでてきたのだ。

gumonjiはオンラインゲームなので、過去の取引によって貢献度が増えると、3D空間を★が飛んでくるというイメージだった。そのため、PICSY engineでは、この機能を実現するために、過去のある取引が現在の貢献度に与えている影響を取得する関数が、APIとして用意されている。これが現時点におけるPICSYのトレーサビリティだ。

/**

* 特定の2人が行った取引分が、現在どれくらいの重みとして残っているかを取得する

* 範囲開始日時にnullが指定された場合は、一番古いデータから範囲となる。

* 範囲終了日時にnullが指定された場合は、一番新しいデータまで範囲となる。

* @param evaluatorID

* @param evaluateeID

* @param fromDate 範囲開始日時

* @param toDate 範囲終了日時

* @return 特定の2人が行った取引の重み込み総計

*/

//ログから取得。開発時、一度死んだログに注意

public synchronized double getReducedTotalTransaction(

int evaluatorID,

int evaluateeID,

Date fromDate,

Date toDate)

throws Exception {

return repository.getReducedTotalTransaction(

evaluatorID,

evaluateeID,

fromDate,

toDate,

currency.getID());

}

/**

* ある取引による貢献度増加が、現在どれくらいの貢献度増加に結びついているかを取得する

* @param logID

* @return ある取引による貢献度増加が、現在どれくらいの貢献度増加に結びついているか

*/

//ログから取得。

public synchronized double getAdditionalContributionByPastTransaction(long logID)

throws Exception {

return repository.getAdditionalContributionByPastTransaction(

logID,

currency.getID());

}

この論点については、すでに「貨幣の情報量」と「生産プロセスの可視化というオープンソースの本質」というエントリーで扱っているので、参考にされたい。