Slide 1

Slide 1 text

ςετɾΞαʔτͷಋೖ ʙ࠶ݱੑͷอূରࡦͱͯ͠ʙ ӝੜਅ໵ !VSJCP ͹͵ ઌͷ స

Slide 2

Slide 2 text

͜Μͳ͜ͱ͕සൟʹ͋Γ·͢Ͷ స Ҏલͷग़ྗͱҟͳΔ஋͕ग़ͨ ̎ จࣈྻܕͩͱࢥͬͨΒ ɹɹɹɹҼࢠܕʹͳ͍ͬͯͨ ̏ ͳͥɾͲ͜ͰΤϥʔʹ ɹɹͳͬͨͷ͔͕Θ͔Βͳ͍

Slide 3

Slide 3 text

৭ʑͳ৚݅ɾ؀ڥͷҧ͍͕͋Δ 04 3ຊମɾύοέʔδͷόʔδϣϯ มԽʢҟৗʣʹؾ͕ͭ͘͜ͱ͕େࣄ ࢥ͍ࠐΈͷ··ղੳΛଓ͚ͯ͠·ͬͨΒʁ Ͳ͜ͰมԽ͕͔͋ͬͨ୳͢ͷ͸ె࿑ Կ͕มΘͬͯ͠·ͬͨͷ͔Λ೺Ѳ͍ͨ͠ స σʔλ ͸ มΘΔ ςετɺΞαʔτΛಋೖ͢Δ͜ͱͰɺ σʔλͷมԽʹؾ෇͖΍͘͢ͳΔ

Slide 4

Slide 4 text

୯ମςετ VOJUUFTU ͱݺ͹ΕΔ΋ͷ ຊདྷ͸ɺϓϩάϥϜ͕ظ଴͞Εͨ௨Γʹɹɹ ಈ࡞͢Δ͔Λ֬ೝ͢ΔͨΊͷ࡞ۀ هड़͞ΕͨςετύλʔϯΛࢼ͢ɹɹɹɹɹ ʢهड़ͷͳ͍ςετ݁Ռ͸อূ͠ͳ͍ʣ Ξαʔτ BTTFSUʜஅݴ͢Δ ஋ͷঢ়ଶΛ༧ଌ͢Δ஋Λهड़ ༧૝֎ͷ஋͕༩͑ΒΕͨࡍʹΤϥʔΛग़ྗ స ςετ Ξαʔτ ͱ

Slide 5

Slide 5 text

MJCSBSZ UFTUUIBU

Slide 6

Slide 6 text

✔ expect_equal( dim(iris), c(120, 4)) Error: dim(iris) not equal to c(120, 4). 2/2 mismatches (average diff: 15.5) [1] 150 - 120 == 30 [2] 5 - 4 == 1 స FYQFDU@ ΦϒδΣΫτ ͱ ฦΓ஋ͷ ঢ়ଶΛهड़ expect_equal( object = dim(iris), expected = c(150, 5))

Slide 7

Slide 7 text

ؔ਺ ର৅ ྫ expect_equal() ฏ౳ੑ expect_equal(letters[1:3], c(“a", "b", “c”)) expect_setequal(letters[1:3],c("a", "c", "b")) expect_gt() େখؔ܎ expect_gt(pi, 3.1) expect_gte(pi, 3.14) expect_lt(pi, 3.2) expect_true() ਅِ஋ expect_true(iris$Species[1] == "setosa") expect_length() ௕͞ expect_length(unique(iris$Species), 3)

Slide 8

Slide 8 text

࣮ફ

Slide 9

Slide 9 text

EBUB JSJT ͷঢ়ଶΛه࿥ͨ͠ ɹɹɹɹɹɹɹɹɹͭͷςετ߲໨Λ༻ҙ tests/testthat/test-01iris.R σʔλͷαΠζ ߦɾྻͷ਺ ྻͷ໊લ 4QFDJFTྻʹؚ·ΕΔਫ४

Slide 10

Slide 10 text

tests/testthat/test-01iris.R ςετର৅ͷΦϒδΣΫτΛ ɹɹɹɹɹNZ@JSJTDTWʹม͑ͯ࠶౓࣮ߦ NZ@JSJT͸JSJTͱಉ͡σʔλͰ͋Δ૝ఆ JSJTʹର͍͔ͯͭ͘͠ͷՃ޻Λߦͬͨ΋ͷ Error: Test failed: 'Iris data statement' * dim(my_iris) not equal to c(150, 5). 1/2 mismatches [1] 120 - 150 == -30 * unique(my_iris$Species) has length 4, not length 3. * levels(my_iris$Species) not set-equal to c("setosa", "versicolor", "virginica"). Lengths differ: 4 is not 3 స ʮਖ਼͘͠ʯࣦഊ͢Δ

Slide 11

Slide 11 text

MJCSBSZ BTTFSUS

Slide 12

Slide 12 text

library(dplyr) iris %>% tibble::as_tibble() %>% select(Sepal.Length, Species) %>% verify( has_all_names( c("Sepal.Length", "Species"))) %>% filter(Sepal.Length >= 5.0) %>% assert( within_bounds(5.0, Inf), Sepal.Length) ύΠϓॲཧ ϑϨϯυϦʔ ͳ Ξαʔτ ؔ਺Λఏڙ verify has_all_names assert within_bounds ྻʹؚ·ΕΔ໊લͰ͋Δ ൣғʹؚ·ΕΔ஋Ͱ͋Δ

Slide 13

Slide 13 text

࣮ફ

Slide 14

Slide 14 text

my_iris <- iris my_iris %>% select(Sepal.Length, Species) %>% filter(Sepal.Length >= 5.0) %>% group_by(Species) %>% summarise( sl_mean = mean(Sepal.Length)) # A tibble: 3 x 2 Species sl_mean 1 setosa 5.23 2 versicolor 5.96 3 virginica 6.62 src/02-assertr_demo.R Ξαʔτ͕ͳ͍ͱʜ

Slide 15

Slide 15 text

my_iris <- read.csv( here::here("data", "my_iris.csv")) my_iris %>% select(Sepal.Length, Species) %>% filter(Sepal.Length >= 5.0) %>% group_by(Species) %>% summarise( sl_mean = mean(Sepal.Length)) # A tibble: 4 x 2 Species sl_mean 1 setosa 5.28 2 versicolor 5.98 3 virginica 6.65 4 Virsicolor 6.2 స ͜Ε͸๬Μͩ݁Ռ Ξαʔτ͕ͳ͍ͱʜ src/02-assertr_demo.R

Slide 16

Slide 16 text

MJCSBSZ WEJGGS ͓ · ͚

Slide 17

Slide 17 text

࡞ਤͨ͠ϑΝΠϧ΋ςετ͍ͨ͠ ϑΥϯτɺ৭ɺϨΠΞ΢τFUD มߋΛՃ͑ͭͭɺաڈͷਤͱ΋ൺֱ͍ͨ͠ స ͦͷ ਤ͸ ຊ౰ʹ ಉ͡ʁ ϙΠϯτͷେ͖͞ͱʜ ୳͞ͳ͍Ͱ͍ͩ͘͞

Slide 18

Slide 18 text

˞ύοέʔδ ؀ڥͰͷ ར༻Λ૝ఆ ࡞ਤΛߦ͏ॲཧ·ͨ͸ؔ਺Λ༻ҙ UFTUTUFTUUIBUͷதͷϑΝΠϧͰ ɹΛ࣮ߦ ·ͨ͸vdiffr::collect_cases(), vdiffr:::diffrAddin() Ͱ΋Մ vdiffr::validate_cases()Λ࣮ߦ ˠUFTUTpHTʹ47(Ͱग़ྗ͞ΕΔ ̎ ̏

Slide 19

Slide 19 text

࣮ફ

Slide 20

Slide 20 text

src/03-plot.R ࡞ਤॲཧͷίʔυΛमਖ਼ લޙͷঢ়ଶ Λൺֱ ܩઢ

Slide 21

Slide 21 text

ςετΛॻ͘͜ͱͰੜ࢈ੑ͸ɹɹɹ Ұ࣍తʹԼ͕Δ શͯΛ໢ཏ͢Δͷ͸ࠔ೉ σʔλ਺΍ܽଛɺྻͷσʔλܕͳͲɹ ͕େࣄʁ ਖ਼͍͠ςετ͚ͩͰͳࣦ͘ഊ͢Δɹ έʔεͷهड़΋ॏཁ స ԿΛ Ͳ͜·Ͱ ςετ ͢Δ͔ ɾ d࠷ޙʹd

Slide 22

Slide 22 text

ίϝϯτʹΑΔ஋ͷهड़͸͍ͯ͠Δ ໨HSFQʹΑΔ࡞ۀ͸ආ͚͍ͨͷͰ(PPE ࢀՃऀͷ੠͔Β ςετʹཔΓ͗ͣ͢ɺ໨ࢹʹΑΔ֬ೝ΋େࣄɻ ͓ΘΓ