🧐

計算過程と対応関係をわかりやすくする

2 min read

計算式を含む仕様を書くとき

ZennのQ&Aより「販売について」を見ていたのですが、以下のような計算式が出てきます。(2020-09-17時点)

決済手数料
販売価格の3.6%(Stripeの決済手数料に準拠しています)

プラットフォーム利用料
販売価格から決済手数料を引いた額の10%

振込手数料
振込申請1回につき¥350

例えば、¥1,000の本が購入された場合、販売者の受取金額は(1000 - 1000 * 0.036) * 0.9= ¥868 となります。この本が100回購入された後に振込申請を行ったとすると、販売者の口座には(868 * 100) - 350= ¥86,450 が振り込まれます。

計算そのものに間違いは無いのですが、決済手数料を差し引く部分などの計算過程が省かれてたり、計算の表記が統一されていない(0.036と0.9)ことで読み手に「本当に正しいのか?」と疑問を抱かせる作りになっています。(個人の感想です)

このような計算例の場合、

  • 段階別(販売価格から決済手数料を引いた額、など)の具体的な過程をあえて表示する
  • 計算に使う数字(10%など)をなるべくそのまま(0.1など)利用して対応関係をわかりやすくする
  • 小数点以下の値が発生する箇所については計算式の前後で計算方法を必ず明示する(サイト内で統一だから、という文脈は読み手に負担をかける)

のように工夫するのが良いと思います。
これはユーザーに提示するUIだけの話ではなく、実装に関してもドキュメントの役割を持ちますので計算過程をわかりやすくすることは大事だと思います。

推敲例

これを踏まえて、わたしが書くとしたら計算例はこうなります。(例文の書き直しなので、これがZennの仕様を説明したものではありません。最新の計算方法はかならず公式のQ&Aなどをご確認ください)


例えば、¥1,000の本が購入された場合、一冊あたりの受取金額が次のように計算されます。(小数点以下は四捨五入)

  • 販売価格から決済手数料を引いた額: 1,000 * (1 - 0.036) = ¥964
  • 次にプラットフォーム利用料を引いた額: 964 * (1 - 0.1) = ¥868

100冊購入された段階で振込申請を行った場合、振込手数料を差し引いて以下の金額が振り込まれることになります。

  • 868 * 100 - 350 = ¥86,450

あえて箇条書きを2つに分けたりすることで計算に2つのフェーズがあることなどを視覚的にも表現しやすいと思います。

蛇足: 端数処理がある場合は特に誤解を招かないようにしましょう

ちなみに、私自身の疑問は「一冊あたりで端数計算するのか?」というポイントです。
たとえば上記の例だと100冊まとめて計算すると端数処理で金額が変わります。

  • 1,000 * 100 * (1 - 0.036) = ¥96,400
  • 96,400 * (1 - 0.1) = ¥86,760
  • 86,760 - 350 = ¥86,410

こういう悩ましいポイントについても「誰が見ても間違わない」方法を模索するようにできるといいですね。

Discussion

ログインするとコメントできます