Follow US
facebook twitter
NO. 223
TECH BLOG
じげんのテック

バグ発生率をポアソン分布で予測して開発優先度を決めてみた

12.18.2022

目次

  • 自己紹介
  • どんなバグが発生してるのか?
  • ポアソン分布とは?
  • ポアソン分布を、バグ発生率に適用してみる
  • 開発優先度を決める
  • おわりに

自己紹介

株式会社じげんのグループ会社のアップルワールド(以下、APW)のエンジニアマネージャーをしています、大久保と申します。

APW では、旅行代理店様向けのホテル予約サイトを運営しております。

そのサイトの機能にホテルの空室照会を行うAPIがあり、そのAPIのリクエスト先に外部提携先(以下、ベンダー)のAPIへリクエストしています。

どんなバグが発生してるのか?

前項で説明したベンダーAPIへリクエストした結果で、API仕様書にない想定していない例外的な結果が返ってくる事が、半年間で2回発生しました。

それによりホテル予約の1回分が売上毀損してしまう不具合が発生しました。

APW 側の不具合であれば原因調査して修正するなどで対処できるのですが、今回の不具合はベンダー側APIのため原因の特定ができずに不具合修正もベンダー任せになるので、いつになるか不明確でした。

そのため APW 側での例外仕様への対応を行うべきかどうかを判断するために、交通事故の確率を求めるのによく使用されるポアソン分布での確率計算を使用してみました。

ポアソン分布とは?

ポアソン分布は、ざっくり説明するとある事象の起こりやすさがランダムで生じると仮定したときに、

「特定の期間あたり平均λ(ラムダ)回生じる事象が、その期間にk回生じる確率」を表すのに用いる確率分布です。

 

例えば、1日あたり交通事故の発生回数が平均5回のポアソン分布にしたがう場合に、

1日に2回交通事故の発生する確率は、8.42% くらいであることが下記のグラフからわかります。

 

事故発生確率計算式
事故発生確率グラフ

ポアソン分布を、バグ発生率に適用してみる

実際にポアソン分布を使用して、未来のバグ発生の回数をk回として、その確率から期待値計算をするために下記のように簡易な計算をしてみました。

簡易計算式

1予約の平均単価は、過去の集計からおおよそ算出した単価として30万円としています。

k回 * 1予約平均単価 * k回の発生確率 = 売上毀損の期待値

将来バグ(母数)が何回発生するかは不確実なので、発生確率が正規分布してると仮定して、0〜4回の94.73%を信頼区間とみなして母数としてみます。

そうすると、期待値としては、

0円 + 81,201円 + 162,402円 + 162,402円 + 108,268円 = 514,274円 となり、

51万円が将来毀損するであろう金額に近いと推測できました。

バグ発生確率計算式
バグ発声確率グラフ

開発優先度を決める

前項で売上毀損の期待値を算出したので、不具合修正の開発費用との比較を行いました。

 

開発費用は概ね50万円でしたので、上記の不具合が頻発していないという状況と損失額の期待値から緊急対応するのではなく、

現在進行してる新機能の利益を100万円あげる開発を優先して、そちらが終わってから次に開発するという判断を行いました。

もし不具合が頻発していたら、また違った判断にはなっていたかと思いますが、

ポアソン分布を使用することにより、主観的な経験則で判断するよりかは、客観的に判断する事ができたと考えています。

おわりに

APW では開発が経験則に頼る定性的な部分が多く、まだまだ定量的に判断できていない事が多いので、スクラム開発導入してベロシティ測ったり、CVR(コンバージョンレート)から開発後の利益算出するなどの施策を取り入れてます。

そんなデータドリブンな開発を一緒に携わってくださる方を随時募集しております。
ご興味がある方は、ぜひ求人情報だけでもご覧いただけたらと思います!


SHARE
  • facebook
  • twitter
Top