Skip to content

Instantly share code, notes, and snippets.

@twada
Last active October 16, 2023 03:52
Show Gist options
  • Star 12 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save twada/856c37103ebd3d1fb973ba2c2654f9d6 to your computer and use it in GitHub Desktop.
Save twada/856c37103ebd3d1fb973ba2c2654f9d6 to your computer and use it in GitHub Desktop.
Revenue Recognition

収益認識

いま、ソフトウェア製品を扱う小さなECサイトを営んでいるとする。

(なお、本演習ではドメイン層のみを扱い、かつ顧客、消費税、税率、通貨、お釣り、在庫などの概念は扱わないものとする)

注意

本演習は TDD を体験することを主眼としていますので、 プログラミングの速さを競っているのではない 点にご注意ください。 機能を粗く速く実装することよりも、テストを書いて動かすことによるフィードバックを受けながら、 リファクタリングを忘れずに着実に進めていくことが、本演習では重要です。

問題: 製品、契約、売上、収益認識

いま、以下の2つの種類(category)のソフトウェア製品(product)を扱っている。

  • ワードプロセッサ
  • スプレッドシート

製品は名前(name)と価格(price)を持つ(今回は消費税を扱わないので、単純に価格と考えてください)。

例:

  • ワードプロセッサ「MS Word」の価格は 18,800円
  • ワードプロセッサ「一太郎」の価格は 20,000円
  • スプレッドシート「MS Excel」の価格は 27,800円
  • スプレッドシート「三四郎」の価格は 5,000円

現時点では1回にどれか1つの製品を1つのみ購入する契約(contract)ができるものとする(カートに一つしか入らない貧弱なECサイトのイメージ)。契約が成立(sign)した場合、

  • ワードプロセッサは契約日(signed date)に直ちに売上(revenue)全額を収益認識(revenue recognition)する
  • スプレッドシートは契約日に売上の2/3、30日後に1/3を収益認識する

もちろんのこと、収益認識の総和は売上とかならず 完全一致 しなければならない。

例:

  • 2月1日に「MS Word」が1つ売れる契約が成立したとき、2月1日 に 18,800円収益認識される
  • 2月1日に「MS Excel」が1つ売れる契約が成立したとき、2月1日 に 18,534円、3月3日 に 9,266円収益認識される
  • 2月1日に「三四郎」が1つ売れる契約が成立したとき、2月1日 に 3,334円、3月3日 に 1,666円収益認識される
  • (「一太郎」に関してもテストしてください)

--

短縮 URL: https://bit.ly/3nkWwYq

クリエイティブ・コモンズ 表示 - 継承 2.1 日本 この演習問題は クリエイティブ・コモンズ 表示 - 継承 2.1 日本 ライセンスの下に提供されています。

また、この演習問題は Martin Fowler の著作 『Patterns of Enterprise Application Architecture』 から着想を得ています。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment