From 1244bb40ba1ac69e8a13fc9c133fd89cd79195e7 Mon Sep 17 00:00:00 2001 From: Kazuya AZEGAMI Date: Thu, 7 Dec 2023 23:52:54 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=81=E3=83=A5=E3=83=BC=E3=83=88=E3=83=AA?= =?UTF-8?q?=E3=82=A2=E3=83=AB=E3=81=AEmarkdown=E3=82=92=E5=BE=AE=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/tutorial.md | 1008 +++++++++++++++++++++++----------------------- 1 file changed, 507 insertions(+), 501 deletions(-) diff --git a/docs/tutorial.md b/docs/tutorial.md index 323f93d3..0bbcd2cb 100644 --- a/docs/tutorial.md +++ b/docs/tutorial.md @@ -38,349 +38,354 @@ 1. `tests/チュートリアル/3の倍数給付金.yaml`の空ファイルを作成します。 2. 下記の「自分のみが給付対象の場合」を参考にして、テストケースを記載して保存します。 -```yaml -- name: 自分のみが給付対象の場合 # テストケース名 - period: 2023-01-01 # テストで対象とする日・期間(日によって金額が変わることを確認する時などに使用する) - input: # 入力情報(entities.pyやvariables/xxx.pyに定義されている項目を記載できる) - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 45 - 配偶者: - 年齢: 44 - 親1: - 年齢: 74 - 親2: - 年齢: 74 - 子1: - 年齢: 19 - 子2: - 年齢: 2 - output: - 世帯: - 三の倍数給付金: 100000 -``` - -
全てのテストデータを見る - -```yaml -- name: 自分のみが給付対象の場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 45 - 配偶者: - 年齢: 44 - 親1: - 年齢: 74 - 親2: - 年齢: 74 - 子1: - 年齢: 19 - 子2: - 年齢: 2 - output: - 世帯: - 三の倍数給付金: 100000 - -- name: 自分のみが給付対象で他の世帯員がいない場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 45 - output: - 世帯: - 三の倍数給付金: 100000 - -- name: 配偶者のみが給付対象の場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 44 - 配偶者: - 年齢: 45 - 親1: - 年齢: 74 - 親2: - 年齢: 74 - 子1: - 年齢: 19 - 子2: - 年齢: 2 - output: - 世帯: - 三の倍数給付金: 100000 - -- name: 親1のみが給付対象の場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 44 - 配偶者: - 年齢: 44 - 親1: - 年齢: 75 - 親2: - 年齢: 74 - 子1: - 年齢: 19 - 子2: - 年齢: 2 - output: - 世帯: - 三の倍数給付金: 100000 - -- name: 親2のみが給付対象の場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 44 - 配偶者: - 年齢: 44 - 親1: - 年齢: 74 - 親2: - 年齢: 75 - 子1: - 年齢: 19 - 子2: - 年齢: 2 - output: - 世帯: - 三の倍数給付金: 100000 - -- name: 子1のみが給付対象の場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 44 - 配偶者: - 年齢: 44 - 親1: - 年齢: 74 - 親2: - 年齢: 74 - 子1: - 年齢: 21 - 子2: - 年齢: 2 - output: - 世帯: - 三の倍数給付金: 100000 - -- name: 子2のみが給付対象の場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 44 - 配偶者: - 年齢: 44 - 親1: - 年齢: 74 - 親2: - 年齢: 74 - 子1: - 年齢: 19 - 子2: - 年齢: 3 - output: - 世帯: - 三の倍数給付金: 100000 - -- name: 子1のみが給付対象でボーナス対象(小学校3年生)の場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 44 - 配偶者: - 年齢: 44 - 親1: - 年齢: 74 - 親2: - 年齢: 74 - 子1: - 年齢: 9 # 小学校3年生 - 子2: - 年齢: 2 - output: - 世帯: - 三の倍数給付金: 130000 - -- name: 子1のみが給付対象でボーナス対象(小学校6年生)の場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 44 - 配偶者: - 年齢: 44 - 親1: - 年齢: 74 - 親2: - 年齢: 74 - 子1: - 誕生年月日: 2011-01-01 # 小学校6年生 - 子2: - 年齢: 2 - output: - 世帯: - 三の倍数給付金: 130000 - -- name: 子1のみが給付対象でボーナス対象(中学校3年生)の場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 44 - 配偶者: - 年齢: 44 - 親1: - 年齢: 74 - 親2: - 年齢: 74 - 子1: - 年齢: 15 # 中学校3年生 - 子2: - 年齢: 2 - output: - 世帯: - 三の倍数給付金: 130000 - -- name: 子1のみが給付対象でボーナス対象(高校3年生)の場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 44 - 配偶者: - 年齢: 44 - 親1: - 年齢: 74 - 親2: - 年齢: 74 - 子1: - 年齢: 18 # 高校3年生 - 子2: - 年齢: 2 - output: - 世帯: - 三の倍数給付金: 130000 - -- name: 全員が給付対象である場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 45 - 配偶者: - 年齢: 45 - 親1: - 年齢: 75 - 親2: - 年齢: 75 - 子1: - 年齢: 21 - 子2: - 年齢: 3 - output: - 世帯: - 三の倍数給付金: 600000 - -- name: 全員が給付対象で子供が全員ボーナス対象の場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 45 - 配偶者: - 年齢: 45 - 親1: - 年齢: 75 - 親2: - 年齢: 75 - 子1: - 年齢: 18 # 高校3年生 - 子2: - 年齢: 9 # 小学校3年生 - # 小学校3年生 - output: - 世帯: - 三の倍数給付金: 660000 - -- name: 給付対象の世帯員がいない場合 - period: 2023-01-01 - input: - 世帯: - 自分一覧: - - 自分 - 世帯員: - 自分: - 年齢: 44 - 配偶者: - 年齢: 44 - 親1: - 年齢: 74 - 親2: - 年齢: 74 - 子1: - 年齢: 19 - 子2: - 年齢: 2 - output: - 世帯: - 三の倍数給付金: 0 -``` -
- + ```yaml + - name: 自分のみが給付対象の場合 # テストケース名 + period: 2023-01-01 # テストで対象とする日・期間(日によって金額が変わることを確認する時などに使用する) + input: # 入力情報(entities.pyやvariables/xxx.pyに定義されている項目を記載できる) + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 45 + 配偶者: + 年齢: 44 + 親1: + 年齢: 74 + 親2: + 年齢: 74 + 子1: + 年齢: 19 + 子2: + 年齢: 2 + output: + 世帯: + 三の倍数給付金: 100000 + ``` + +
全てのテストデータを見る + + ```yaml + - name: 自分のみが給付対象の場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 45 + 配偶者: + 年齢: 44 + 親1: + 年齢: 74 + 親2: + 年齢: 74 + 子1: + 年齢: 19 + 子2: + 年齢: 2 + output: + 世帯: + 三の倍数給付金: 100000 + + - name: 自分のみが給付対象で他の世帯員がいない場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 45 + output: + 世帯: + 三の倍数給付金: 100000 + + - name: 配偶者のみが給付対象の場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 44 + 配偶者: + 年齢: 45 + 親1: + 年齢: 74 + 親2: + 年齢: 74 + 子1: + 年齢: 19 + 子2: + 年齢: 2 + output: + 世帯: + 三の倍数給付金: 100000 + + - name: 親1のみが給付対象の場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 44 + 配偶者: + 年齢: 44 + 親1: + 年齢: 75 + 親2: + 年齢: 74 + 子1: + 年齢: 19 + 子2: + 年齢: 2 + output: + 世帯: + 三の倍数給付金: 100000 + + - name: 親2のみが給付対象の場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 44 + 配偶者: + 年齢: 44 + 親1: + 年齢: 74 + 親2: + 年齢: 75 + 子1: + 年齢: 19 + 子2: + 年齢: 2 + output: + 世帯: + 三の倍数給付金: 100000 + + - name: 子1のみが給付対象の場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 44 + 配偶者: + 年齢: 44 + 親1: + 年齢: 74 + 親2: + 年齢: 74 + 子1: + 年齢: 21 + 子2: + 年齢: 2 + output: + 世帯: + 三の倍数給付金: 100000 + + - name: 子2のみが給付対象の場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 44 + 配偶者: + 年齢: 44 + 親1: + 年齢: 74 + 親2: + 年齢: 74 + 子1: + 年齢: 19 + 子2: + 年齢: 3 + output: + 世帯: + 三の倍数給付金: 100000 + + - name: 子1のみが給付対象でボーナス対象(小学校3年生)の場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 44 + 配偶者: + 年齢: 44 + 親1: + 年齢: 74 + 親2: + 年齢: 74 + 子1: + 年齢: 9 + 学年: 3 # 小学校3年生 + 子2: + 年齢: 2 + output: + 世帯: + 三の倍数給付金: 130000 + + - name: 子1のみが給付対象でボーナス対象(小学校6年生)の場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 44 + 配偶者: + 年齢: 44 + 親1: + 年齢: 74 + 親2: + 年齢: 74 + 子1: + 年齢: 12 + 学年: 6 # 小学校6年生 + 子2: + 年齢: 2 + output: + 世帯: + 三の倍数給付金: 130000 + + - name: 子1のみが給付対象でボーナス対象(中学校3年生)の場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 44 + 配偶者: + 年齢: 44 + 親1: + 年齢: 74 + 親2: + 年齢: 74 + 子1: + 年齢: 15 + 学年: 9 # 中学校3年生 + 子2: + 年齢: 2 + output: + 世帯: + 三の倍数給付金: 130000 + + - name: 子1のみが給付対象でボーナス対象(高校3年生)の場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 44 + 配偶者: + 年齢: 44 + 親1: + 年齢: 74 + 親2: + 年齢: 74 + 子1: + 年齢: 18 + 学年: 12 # 高校3年生 + 子2: + 年齢: 2 + output: + 世帯: + 三の倍数給付金: 130000 + + - name: 全員が給付対象である場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 45 + 配偶者: + 年齢: 45 + 親1: + 年齢: 75 + 親2: + 年齢: 75 + 子1: + 年齢: 21 + 子2: + 年齢: 3 + output: + 世帯: + 三の倍数給付金: 600000 + + - name: 全員が給付対象で子供が全員ボーナス対象の場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 45 + 配偶者: + 年齢: 45 + 親1: + 年齢: 75 + 親2: + 年齢: 75 + 子1: + 年齢: 18 + 学年: 12 # 高校3年生 + 子2: + 年齢: 9 + 学年: 3 # 小学校3年生 + # 小学校3年生 + output: + 世帯: + 三の倍数給付金: 660000 + + - name: 給付対象の世帯員がいない場合 + period: 2023-01-01 + input: + 世帯: + 自分一覧: + - 自分 + 世帯員: + 自分: + 年齢: 44 + 配偶者: + 年齢: 44 + 親1: + 年齢: 74 + 親2: + 年齢: 74 + 子1: + 年齢: 19 + 子2: + 年齢: 2 + output: + 世帯: + 三の倍数給付金: 0 + ``` +
## STEP2:”年齢が3の倍数の世帯員の1人につき、年間10万円を給付する”を実装する @@ -389,89 +394,89 @@ 1. `variables/チュートリアル/3の倍数給付金.py` のファイルを作成する - 内容は下記を参考にする -```python -""" -3の倍数給付金の実装 -""" - -import numpy as np - -from openfisca_core.periods import DAY -from openfisca_core.variables import Variable -from openfisca_japan.entities import 世帯 -from openfisca_japan.variables.全般 import 小学生学年, 中学生学年, 高校生学年 - -# 数字始まりのクラス名を使えないので、漢数字を使っている -class 三の倍数給付金(Variable): - value_type = int # この給付金は小数にはならないので整数型のintを指定している - entity = 世帯 # この給付金は世帯ごとに支給されるので世帯を指定している - definition_period = DAY # 基本はDAYを指定する。※どういう時にYEARやMONTHを指定する? - label = "年齢が3の倍数の世帯員の1人につき、年間10万円を給付する架空の制度。一部の学生については追加で年間3万円を給付する。" # 説明 - reference = "https://project-inclusive.github.io/OpenFisca-Japan/tutorial.html" # この給付金の情報が掲載されているサイトのURL - - def formula(対象世帯, 対象期間, _parameters): # この給付金の計算式を記述する - # 世帯員の年齢を取得する - # == 処理を記載する == - - # 3の倍数の世帯員の数を取得する - # == 処理を記載する == - - # 3の倍数の世帯員の数×100,000円を返す - # == 処理を記載する == - - return 給付金額 -``` + ```python + """ + 3の倍数給付金の実装 + """ + + import numpy as np + + from openfisca_core.periods import DAY + from openfisca_core.variables import Variable + from openfisca_japan.entities import 世帯 + from openfisca_japan.variables.全般 import 小学生学年, 中学生学年, 高校生学年 + + # 数字始まりのクラス名を使えないので、漢数字を使っている + class 三の倍数給付金(Variable): + value_type = int # この給付金は小数にはならないので整数型のintを指定している + entity = 世帯 # この給付金は世帯ごとに支給されるので世帯を指定している + definition_period = DAY # 基本はDAYを指定する。※どういう時にYEARやMONTHを指定する? + label = "年齢が3の倍数の世帯員の1人につき、年間10万円を給付する架空の制度。一部の学生については追加で年間3万円を給付する。" # 説明 + reference = "https://project-inclusive.github.io/OpenFisca-Japan/tutorial.html" # この給付金の情報が掲載されているサイトのURL + + def formula(対象世帯, 対象期間, _parameters): # この給付金の計算式を記述する + # 世帯員の年齢を取得する + # == 処理を記載する == + + # 3の倍数の世帯員の数を取得する + # == 処理を記載する == + + # 3の倍数の世帯員の数×100,000円を返す + # == 処理を記載する == + + return 給付金額 + ``` ### 2. 処理を記載する 1. `== 処理を記載する ==` となっている部分にコードを記載する -
記載後の内容を見る - -```python - def formula(対象世帯, 対象期間, _parameters): # この給付金の計算式を記述する - # 世帯員の年齢を取得する - 世帯員の年齢一覧 = 対象世帯.members("年齢", 対象期間) - 世帯員の学年一覧 = 対象世帯.members("学年", 対象期間) - - # 3の倍数の世帯員の数を取得する - 年齢が3の倍数の世帯員数 = np.count_nonzero(np.mod(世帯員の年齢一覧, 3) == 0) - - # 3の倍数の世帯員の数×100,000円を返す - 給付金額 = 年齢が3の倍数の世帯員数 * 100000 - - # デバッグ用(テストが失敗したら、出力される) - print('======== START ========') - print('世帯員の年齢一覧', 世帯員の年齢一覧) - print('世帯員の学年一覧', 世帯員の学年一覧) - print('年齢が3の倍数の世帯員数', 年齢が3の倍数の世帯員数) - print('給付金額', 給付金額) - print('======== END ========') - - return 給付金額 -``` -
+
記載後の内容を見る + + ```python + def formula(対象世帯, 対象期間, _parameters): # この給付金の計算式を記述する + # 世帯員の年齢を取得する + 世帯員の年齢一覧 = 対象世帯.members("年齢", 対象期間) + 世帯員の学年一覧 = 対象世帯.members("学年", 対象期間) + + # 3の倍数の世帯員の数を取得する + 年齢が3の倍数の世帯員数 = np.count_nonzero(np.mod(世帯員の年齢一覧, 3) == 0) + + # 3の倍数の世帯員の数×100,000円を返す + 給付金額 = 年齢が3の倍数の世帯員数 * 100000 + + # デバッグ用(テストが失敗したら、出力される) + print('======== START ========') + print('世帯員の年齢一覧', 世帯員の年齢一覧) + print('世帯員の学年一覧', 世帯員の学年一覧) + print('年齢が3の倍数の世帯員数', 年齢が3の倍数の世帯員数) + print('給付金額', 給付金額) + print('======== END ========') + + return 給付金額 + ``` +
### 3. テストを実行する 1. OpenFiscaのdockerコンテナに入る -```sh -docker compose exec openfisca /bin/bash -``` + ```sh + docker compose exec openfisca /bin/bash + ``` 2. OpenFiscaのファイルをbuildする -```sh -make build -``` + ```sh + make build + ``` 3. テストを実行する - ボーナス対象のテストが失敗するので、ボーナス対象を考慮した処理を追加しましょう -```sh -openfisca test --country-package openfisca_japan openfisca_japan/tests/チュートリアル/3の倍数給付金.yaml -``` + ```sh + openfisca test --country-package openfisca_japan openfisca_japan/tests/チュートリアル/3の倍数給付金.yaml + ``` ## STEP3:”小学校3年生、小学校6年生、中学校3年生、高校3年生”に対するロジックを追加する @@ -479,120 +484,121 @@ openfisca test --country-package openfisca_japan openfisca_japan/tests/チュー 1. `== 処理を記載する ==` となっている部分にコードを記載する -```python - def formula(対象世帯, 対象期間, _parameters): # この給付金の計算式を記述する - # 世帯員の年齢を取得する - 世帯員の年齢一覧 = 対象世帯.members("年齢", 対象期間) - 世帯員の学年一覧 = 対象世帯.members("学年", 対象期間) - - # 3の倍数の世帯員の数を取得する - 年齢が3の倍数の世帯員数 = np.count_nonzero(np.mod(世帯員の年齢一覧, 3) == 0) - - # ボーナス対象学年の世帯員数を取得する - # == 処理を記載する == - - # 3の倍数の世帯員の数×100,000円 + ボーナス対象学年の世帯員数×30,000円 を返す - # == 処理を記載する == - - return 給付金額 -``` - -
記載後の内容を見る - -```python - def formula(対象世帯, 対象期間, _parameters): # この給付金の計算式を記述する - # 世帯員の年齢を取得する - 世帯員の年齢一覧 = 対象世帯.members("年齢", 対象期間) - 世帯員の学年一覧 = 対象世帯.members("学年", 対象期間) - - # 3の倍数の世帯員の数を取得する - 年齢が3の倍数の世帯員数 = np.count_nonzero(np.mod(世帯員の年齢一覧, 3) == 0) - - # ボーナス対象学年の世帯員数を取得する - ボーナス対象学年の世帯員数 = np.count_nonzero(np.isin(世帯員の学年一覧, [小学生学年.三年生.value,小学生学年.六年生.value,中学生学年.三年生.value, 高校生学年.三年生.value])) - - # 3の倍数の世帯員の数×100,000円 + ボーナス対象学年の世帯員数×30,000円 を返す - 給付金額 = 年齢が3の倍数の世帯員数 * 100000 + ボーナス対象学年の世帯員数 * 30000 - - # デバッグ用(テストが失敗したら、出力される) - print('======== START ========') - print('世帯員の年齢一覧', 世帯員の年齢一覧) - print('世帯員の学年一覧', 世帯員の学年一覧) - print('年齢が3の倍数の世帯員数', 年齢が3の倍数の世帯員数) - print('ボーナス対象学年の世帯員数', ボーナス対象学年の世帯員数) - print('給付金額', 給付金額) - print('======== END ========') - - return 給付金額 -``` -
+ ```python + def formula(対象世帯, 対象期間, _parameters): # この給付金の計算式を記述する + # 世帯員の年齢を取得する + 世帯員の年齢一覧 = 対象世帯.members("年齢", 対象期間) + 世帯員の学年一覧 = 対象世帯.members("学年", 対象期間) + + # 3の倍数の世帯員の数を取得する + 年齢が3の倍数の世帯員数 = np.count_nonzero(np.mod(世帯員の年齢一覧, 3) == 0) + + # ボーナス対象学年の世帯員数を取得する + # == 処理を記載する == + + # 3の倍数の世帯員の数×100,000円 + ボーナス対象学年の世帯員数×30,000円 を返す + # == 処理を記載する == + + return 給付金額 + ``` + +
記載後の内容を見る + + ```python + def formula(対象世帯, 対象期間, _parameters): # この給付金の計算式を記述する + # 世帯員の年齢を取得する + 世帯員の年齢一覧 = 対象世帯.members("年齢", 対象期間) + 世帯員の学年一覧 = 対象世帯.members("学年", 対象期間) + + # 3の倍数の世帯員の数を取得する + 年齢が3の倍数の世帯員数 = np.count_nonzero(np.mod(世帯員の年齢一覧, 3) == 0) + + # ボーナス対象学年の世帯員数を取得する + ボーナス対象学年の世帯員数 = np.count_nonzero(np.isin(世帯員の学年一覧, [小学生学年.三年生.value,小学生学年.六年生.value,中学生学年.三年生.value, 高校生学年.三年生.value])) + + # 3の倍数の世帯員の数×100,000円 + ボーナス対象学年の世帯員数×30,000円 を返す + 給付金額 = 年齢が3の倍数の世帯員数 * 100000 + ボーナス対象学年の世帯員数 * 30000 + + # デバッグ用(テストが失敗したら、出力される) + print('======== START ========') + print('世帯員の年齢一覧', 世帯員の年齢一覧) + print('世帯員の学年一覧', 世帯員の学年一覧) + print('年齢が3の倍数の世帯員数', 年齢が3の倍数の世帯員数) + print('ボーナス対象学年の世帯員数', ボーナス対象学年の世帯員数) + print('給付金額', 給付金額) + print('======== END ========') + + return 給付金額 + ``` +
### 2. テストを実行する 1. 先程と同じようにbuildしてからテストを実行しましょう - 成功したことを確認できたら終わりです -```sh -make build + ```sh + make build -openfisca test --country-package openfisca_japan openfisca_japan/tests/チュートリアル/3の倍数給付金.yaml -``` + openfisca test --country-package openfisca_japan openfisca_japan/tests/チュートリアル/3の倍数給付金.yaml + ``` ## STEP4:Web APIとしてデータを取得してみる + 1. dockerコンテナを抜けて、OpenFiscaコンテナをビルドし直します - これをしないと既に起動しているAPIに3の倍数給付金のコード変更が反映されないためです -```sh -exit # コンテナを抜ける + ```sh + exit # コンテナを抜ける -docker compose up openfisca --build -``` + docker compose up openfisca --build + ``` 2. コンテナを再ビルドできたら、下記のcurlコマンドで `/calculate` にPOSTリクエストを送る - レスポンスの3の倍数給付金に金額が入っていることを確認する - Pythonが入っていない場合はOpenFiscaコンテナに入って実行しても良い -```sh -curl -X 'POST' \ - 'http://localhost:50000/calculate' \ - -H 'accept: application/json' \ - -H 'Content-Type: application/json' \ - -d '{ - "世帯員": { - "あなた": { - "誕生年月日": { - "ETERNITY": "1978-01-01" - } - }, - "配偶者": { - "誕生年月日": { - "ETERNITY": "1979-01-01" + ```sh + curl -X 'POST' \ + 'http://localhost:50000/calculate' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -d '{ + "世帯員": { + "あなた": { + "誕生年月日": { + "ETERNITY": "1978-01-01" + } + }, + "配偶者": { + "誕生年月日": { + "ETERNITY": "1979-01-01" + } + }, + "子ども0": { + "誕生年月日": { + "ETERNITY": "2005-01-01" + } } }, - "子ども0": { - "誕生年月日": { - "ETERNITY": "2005-01-01" - } - } - }, - "世帯": { - "世帯1": { - "自分一覧": [ - "あなた" - ], - "配偶者一覧": [ - "配偶者" - ], - "子一覧": [ - "子ども0" - ], - "三の倍数給付金": { - "2023-01-01": null + "世帯": { + "世帯1": { + "自分一覧": [ + "あなた" + ], + "配偶者一覧": [ + "配偶者" + ], + "子一覧": [ + "子ども0" + ], + "三の倍数給付金": { + "2023-01-01": null + } } } - } -}' | python -m json.tool --no-ensure-ascii # レスポンスを整形 -``` + }' | python -m json.tool --no-ensure-ascii # レスポンスを整形 + ``` ---