Slide 1

Slide 1 text

SFOWʹΑΔύοέʔδ؅ཧ Reproducible environments for R projects ͘ΖͨΜ͘!CMBDL@UBOL@UPQ

Slide 2

Slide 2 text

໨࣍ Agenda ࣗݾ঺հ ύοέʔδΠϯετʔϧʹΑΔ؀ڥͷഁյ ҆શʹύοέʔδΠϯετʔϧ͢Δʹ͸ SFOWͱ͸ ֓ཁ ࢓૊Έ SFOWͷ࢖͍ํ SFOWͷΠϯετʔϧ SFOWͷ֤छίϚϯυ

Slide 3

Slide 3 text

໨࣍ Agenda ࣗݾ঺հ ύοέʔδΠϯετʔϧʹΑΔ؀ڥͷഁյ ҆શʹύοέʔδΠϯετʔϧ͢Δʹ͸ SFOWͱ͸ ֓ཁ ࢓૊Έ SFOWͷ࢖͍ํ Πϯετʔϧ ֤छίϚϯυ ɹ

Slide 4

Slide 4 text

ࣗݾ঺հ Self-introduction ͘ΖͨΜ͘ˏCMBDL@UBOL@UPQ ࢓ࣄɿ๭*5اۀʹͯɺ-FBE%BUB4DJFOUJTU ࠷ۙϋϚͬͯΔ΋ͷɿ%POLFZ$BSɾ.JOF3- ϒϩάɿIUUQTCMPHCMBDLUBOLUPQNF

Slide 5

Slide 5 text

໨࣍ Agenda ࣗݾ঺հ ύοέʔδΠϯετʔϧʹΑΔ؀ڥͷഁյ ҆શʹύοέʔδΠϯετʔϧ͢Δʹ͸ SFOWͱ͸ ֓ཁ ࢓૊Έ SFOWͷ࢖͍ํ Πϯετʔϧ ֤छίϚϯυ ɹ ɹ

Slide 6

Slide 6 text

ύοέʔδΠϯετʔϧʹΑΔ3؀ڥͷഁյ Upgrading packages can be a risky affair ύοέʔδͷόʔδϣϯΛVQHSBEFͨ͠Γɺ ผ؀ڥʹద౰ʹΠϯετʔϧͨ͠Γͯ͠ɺ ࢥ͏Α͏ʹίʔυ͕ಈ͔ͳ͍ͱ͍͏ܦݧ͸͋Γ·ͤΜ͔ʁ

Slide 7

Slide 7 text

ύοέʔδΠϯετʔϧʹΑΔ3؀ڥͷഁյ Upgrading packages can be a risky affair ύοέʔδͷόʔδϣϯΛVQHSBEFͨ͠Γɺ ผ؀ڥʹద౰ʹΠϯετʔϧͨ͠Γͯ͠ɺ ࢥ͏Α͏ʹίʔυ͕ಈ͔ͳ͍ͱ͍͏ܦݧ͸͋Γ·ͤΜ͔ʁ ݪҼͱͯ͠ߟ͑ΒΕΔͷ͸ w JOTUBMMQBDLBHFT ࣮ߦλΠϛϯάʹΑΔόʔδϣϯͷมԽͷՄೳੑ w ޓ׵ੑͷͳ͍มߋʹΑΔڍಈ͕มΘͬͨΓಈ͔ͳ͘ͳͬͨΓ͢ΔՄೳੑ

Slide 8

Slide 8 text

ύοέʔδΠϯετʔϧʹΑΔ3؀ڥͷഁյ Upgrading packages can be a risky affair ύοέʔδͷόʔδϣϯΛVQHSBEFͨ͠Γɺ ผ؀ڥʹద౰ʹΠϯετʔϧͨ͠Γͯ͠ɺ ࢥ͏Α͏ʹίʔυ͕ಈ͔ͳ͍ͱ͍͏ܦݧ͸͋Γ·ͤΜ͔ʁ ݪҼͱͯ͠ߟ͑ΒΕΔͷ͸ w JOTUBMMQBDLBHFT ࣮ߦλΠϛϯάʹΑΔόʔδϣϯͷมԽ w ޓ׵ੑͷͳ͍มߋʹΑΔڍಈ͕มΘͬͨΓಈ͔ͳ͘ͳͬͨΓ͢ΔՄೳੑ ύοέʔδͷΞοϓάϨʔυ΍ΠϯετʔϧͰ ΋͏೰Έͨ͘ͳ͍ Ͳ͏͢Ε͹ɺ҆શʹύοέʔδΠϯετʔϧͰ͖Δ͔

Slide 9

Slide 9 text

҆શʹύοέʔδΠϯετʔϧ͢Δʹ͸ Safely Operating Packages ࠶ݱੑ͋Δύοέʔδ؅ཧͷϑϩʔ ϓϩδΣΫτ͝ͱʹɺ࢖༻͢ΔϥΠϒϥϦΛܾ ΊͯϓϩδΣΫτΛ։࢝͢Δ ࢖༻͢ΔϥΠϒϥϦͷύοέʔδΛΠϯετʔ ϧ͢Δ ίʔυͱҰॹʹϥΠϒϥϦͷঢ়ଶΛه࿥͢Δ ؀ڥΛ࠶࡞੒͢Δඞཁ͕͋Δͱ͖ʹϥΠϒϥϦ Λ෮ݩ͢Δ ͜ΕΛύοέʔδԽͨ͠ͷ͕ɺ SFOW 1+ͷ࡞੒ Πϯετʔϧ ίʔυΛॻ͘ ه࿥ ෮ݩ

Slide 10

Slide 10 text

໨࣍ Agenda ࣗݾ঺հ ύοέʔδΠϯετʔϧʹΑΔ؀ڥͷഁյ ҆શʹύοέʔδΠϯετʔϧ͢Δʹ͸ SFOWͱ͸ ֓ཁ ࢓૊Έ SFOWͷ࢖͍ํ Πϯετʔϧ ֤छίϚϯυ ɹ ɹ

Slide 11

Slide 11 text

SFOWͱ͸ What’s renv 3TUVEJP͕։ൃ͍ͯ͠Δ3QBDLBHF؅ཧπʔϧ IUUQTSTUVEJPHJUIVCJPSFOW

Slide 12

Slide 12 text

SFOWͷ֓ཁ Overview *TPMBUFEɿΠϯετʔϧ͢ΔύοέʔδΛσΟϨΫτϦຖʹ੾Γ෼͚ΒΕΔ 1PSUBCMFɿ؀ڥͷҠߦ͕؆୯ʹՄೳ 3FQSPEVDJCMFɿόʔδϣϯ؅ཧΛͯ͘͠ΕΔͷͰ؀ڥͷ࠶ݱੑ͕͋Δ ͜Ε·Ͱ͸ɺύοέʔδΛΠϯετʔϧ͢Δͱ3ͷ؀ڥશͯʹӨڹ͕͋ͬͨ ͕ɺSFOWΛ࢖͑͹σΟϨΫτϦ͝ͱʹར༻͢ΔύοέʔδΛ؅ཧͰ͖Δͨ ΊɺΠϯετʔϧʹΑͬͯଞͷ؀ڥ͕Ԛ͞Εͳ͘ͳΔ SFOWMPDLΛ࢖ͬͯɺผ؀ڥʹ΋ಉ͡ύοέʔδ؀ڥΛ؆୯ʹ࠶ݱͰ͖Δ

Slide 13

Slide 13 text

SFOWͷύοέʔδͷΠϯετʔϧͷ࢓૊Έ Structure of renv environment ϥΠϒϥϦ͸γεςϜͱ੾Γ෼͚ΒΕɺ1+ؒ͸HMPCBMQBDLBHFDBDIFʹΑͬͯɺύοέʔδΛڞ༗͢ΔͨΊɺɹɹɹɹ Ұ౓Πϯετʔϧͨ͠όʔδϣϯʹؔͯ͠͸Πϯετʔϧ͕࣌ؒ୹ॖ͞ΕΔʢ1BDLSBUͱͷҧ͍Ͱ΋͋Δʣ SFOWʹΑͬͯ1+ʹύοέʔδ͕Πϯετʔϧ͞ΕΔͷ͸ɺجຊతʹHMPCBMQBDLBHFDBDIFͷγϯϘϦοΫϦϯΫ 1+͝ͱͦΕͧΕར༻͢ΔϥΠϒϥϦͷϝλ৘ใͷهड़ΛSFOWMPDLͱ͍͏ϑΝΠϧʹهड़͞ΕΔ TZTUFNFOWJSPNFOU TZTUFNMJCSBSZ ͜Ε·ͰΠϯετʔϧ͖ͯͨ͠ ύοέʔδͷ࣮ମ HMPCBMQBDLBHF DBDIF SFOWʹΑͬͯΠϯετʔϧ ͞Εͨύοέʔδͷ࣮ମ 1+QSJWBUFMJCSBSZ 1+QSJWBUFMJCSBSZ 1+QSJWBUFMJCSBSZ SFOWFOWJSPNFOU ͸γϯϘϦοΫϦϯΫ͕షΒΕΔ SFOWMPDL SFOWMPDL SFOWMPDL

Slide 14

Slide 14 text

໨࣍ Agenda ࣗݾ঺հ ύοέʔδΠϯετʔϧʹΑΔ؀ڥͷഁյ ҆શʹύοέʔδΠϯετʔϧ͢Δʹ͸ SFOWͱ͸ ֓ཁ ࢓૊Έ SFOWͷ࢖͍ํ Πϯετʔϧ ֤छίϚϯυ ɹ ɹ

Slide 15

Slide 15 text

SFOWͷ࢖͍ํ Workflow # ॳظԽ (·ͬ͞ΒͳRscriptΛઌʹ։͍͓ͯ͘) > renv::init() # ύοέʔδͷΠϯετʔϧ > renv::install("pkg") # Rscriptʹlibrary("pkg")ͱॻ͍ͯอଘ͢Δ # Πϯετʔϧঢ়گͷ֬ೝ > renv::status() # Πϯετʔϧঢ়گΛrenv.lockϑΝΠϧʹॻ͖ग़͢ > renv::snapshot() ॳظԽ ඞཁͳύοέʔδͷΠϯετʔϧ MJCSBSZ QLH Λॻ͍ͯอଘ Πϯετʔϧঢ়گͷ֬ೝ Πϯετʔϧঢ়گΛॻ͖ग़͠ dΛ܁Γฦ͠ͳ͕Β࡞ۀ͢Δ อଘΛ๨ΕΔͱTUBUVT ͕൓Ԡ͠ͳ͍ͷͰ஫ҙ͢Δ͜ͱ ஫ɿSFOW͸ߋ৽͕͔ͳΓߦΘΕ͍ͯΔͷͰɺɹɹ ࢖͍ํ͕େ͖͘มΘΔՄೳੑ͕͋Δ

Slide 16

Slide 16 text

SFOWͷΠϯετʔϧ How to install renv 3Λ্ཱͪ͛Δ SFNPUFTΛJOTUBMM SFOWΛΠϯετʔϧ ͦͷ͏ͪ$3"/͔ΒΠϯετʔϧͰ͖ΔͬΆ͍ ݱࡏ > if (!requireNamespace("remotes")) install.packages("remotes") > remotes::install_github("rstudio/renv")

Slide 17

Slide 17 text

SFOWJOJU Initialize a Project > setwd("~/local/Project/sandbox_r/") > renv::init() # private R libraryͷσΟϨΫτϦ͕࡞ΒΕΔ > .libPaths() ύοέʔδ؅ཧ։࢝ίϚϯυ ద౰ͳσΟϨΫτϦͰ࡞ۀ͢Δ ॳظԽ͢Δͱ෼͚ΒΕͨ؀ڥ͕Ͱ͖Δ ֘౰σΟϨΫτϦʹMJCSBSZஔ͖৔͕Ͱ͖Δ )0.&ͩͱJOJUBMJ[FͰ͖ͳ͍ͬΆ͍ͷͰ࡞ۀ༻EJSͰߦ͏ ɹ34UVEJPͳΒOFXQSPKFDUͳͲͰద౰ʹ࡞੒͢ΔͳͲ͢Δ ɹ·ͬ͞Βͳ34DSJQUΛ࡞੒ͯ͠อଘ͓ͯ͘͠ SFOWMPDLͱ͍͏ύοέʔδͷόʔδϣϯͳͲΛ؅ཧ͢ΔϑΝΠϧ͕Ͱ͖Δɻ͜ͷϑΝ ΠϧΛ(JUͰ؅ཧ͢Δ͜ͱΛਪ঑͢Δ جຊతʹHMPCBMDBDIFͷEJSʹΠϯετʔϧ͞Εͯɺ͜͜ʹ͸γϯϘϦοΫϦϯΫ͕ షΒΕΔɻॳΊͯͷ࣌͸HMPCBMDBDIF͕ͳ͍ͷͰΠϯετʔϧ͢ΔͨΊͷ͕͔͔࣌ؒΔ * '~/Library/Application Support/renv' has been created. * Discovering package dependencies ... Done! * Copying packages into the cache ... Done! * Resolving missing dependencies ... * Querying repositories for available binary packages ... Done! * Querying repositories for available source packages ... Done! The following package(s) will be updated in the lockfile: # GitHub ============================= - renv [* -> rstudio/renv] * Lockfile written to ‘~/local/Project/sandbox_r/renv.lock’. [1] “/Users/blacktanktop/local/Project/sandbox_r/renv/library/ R-3.6/x86_64-apple-darwin15.6.0” [2] "/private/var/folders/h1/m7p6hhnx11g_r55plhrm9z3c0000gn/T/ RtmpB41ftz/renv-system-library"

Slide 18

Slide 18 text

SFOWJOTUBMM Install packages > setwd("~/local/Project/sandbox_r/") > renv::install("dplyr") # ࠷৽൛ͷΠϯετʔϧ > renv::install("dplyr") # ಛఆͷόʔδϣϯͷΠϯετʔϧ > renv::install("[email protected]") # GitHub(࠷৽dev.version)͔ΒͷΠϯετʔϧ > renv::install("tidyverse/dplyr") # ιʔείʔυ͔ΒͷΠϯετʔϧ > renv::install("~/path/to/package") ΠϯετʔϧίϚϯυ HMPCBMDBDIFʹΠϯετʔϧ͞Ε͍ͯΔ͔Λ ֬ೝͯ͠طʹ͋Ε͹ɺDBDIFʹϦϯΫΛషΔ ͚ͩͷॲཧ͕ߦΘΕΔͨΊɺΠϯετʔϧͷ࣌ ͕ؒ୹ॖ͞ΕΔ ׅހ಺ͷॻ͖ํʹΑͬͯɺΠϯετʔϧݩΛม ߋͰ͖Δ DBDIFΛ࢖Θͣʹɺ࣮ମࣗମΛQSJWBUFMJCSBSZʹஔ͘͜ͱ΋Ͱ͖Δ PQUJPOT SFOWTIJNT'"-4& ΍SFOWTFUUJOHTVTFDBDIF '"-4& Λ͔ͭ͏ ৄࡉ͸IUUQTSTUVEJPHJUIVCJPSFOWBSUJDMFTSFOWIUNM * Querying repositories for available binary packages ... Done! * Querying repositories for available source packages ... Done!

Slide 19

Slide 19 text

SFOWTUBUVT Report differences between renv.lock file and the current state Πϯετʔϧঢ়گ֬ೝίϚϯυ Πϯετʔϧޙɺ3TDSJQUʹMJCSBSZ QLH ͱ ॻ͍ͯอଘ͢Δ Πϯετʔϧ͞Ε͍ͯΔ͕ɺSFOWMPDLʹه࿥ ͞Ε͍ͯͳ͍ มߋ͕ಉظ͞Ε͍ͯͳ͍ ͷ̎ͭʹ෼͔Εͯදࣔ͞ΕΔ Πϯετʔϧͱ3TDSJQU্ͷMJCSBSZ QLH ͷঢ়ଶͱSFOWMPDLͷঢ়ଶΛൺֱ͢ΔͨΊ ӈྫ͸ɺHHQMPUͷΠϯετʔϧͱɺEBUBUBCMF ͷόʔδϣϯมߋͷঢ়گ ʢʜͷ෦෼͸࣮ࡍ͸શ෦දࣔ͞ΕΔʣ > renv::status() The following package(s) are installed but not recorded in the lockfile: _ Rcpp [1.0.2] ggplot2 [3.2.1] ………লུ……… reshape2 [1.4.3] magrittr [1.5] ………লུ……… Use `renv::snapshot()` to add these packages to your lockfile. The following package(s) are out of sync: Package Lockfile Version Library Version data.table 1.12.2 1.11.8 Use `renv::snapshot()` to save the state of your library to the lockfile. Use `renv::restore()` to restore your library from the state of the lockfile.

Slide 20

Slide 20 text

SFOWTOBQTIPU Create a renv.lock file capturing R package dependencies > renv::snapshot() The following package(s) will be updated in the lockfile: # CRAN =============================== - data.table [1.12.2 -> 1.11.8] - Rcpp [* -> 1.0.2] - pillar [* -> 1.4.2] ………ศ্ٓলུ……… - ggplot2 [* -> 3.2.1] - reshape2 [* -> 1.4.3] ………ศ্ٓলུ……… Do you want to proceed? [y/N]: y * Lockfile written to ‘~/local/Project/sandbox_r/renv.lock’. Πϯετʔϧঢ়گه࿥ίϚϯυ Πϯετʔϧঢ়گͷมߋΛSFOWMPDLʹه࿥͢Δ ӈྫ͸ɺEBUBUBCMFόʔδϣϯมߋͱHHQMPUͷ Πϯετʔϧͯ͠ɺه࿥ͨ͠ঢ়گ

Slide 21

Slide 21 text

SFOWSFTUPSF Restore a project's dependencies from a renv.lock file # new projectΛ࡞੒ # ر๬ͷrenv.lockΛஔ͘ > renv::init() * The library is already synchronized with the lockfile. Restarting R session... * Project ‘~/local/Project/sandbox_r' loaded. [renv 0.7.0-108] > renv::restore() The following package(s) will be updated: # CRAN =============================== - data.table [* -> 1.12.2] Do you want to proceed? [y/N]: y Installing data.table [1.12.2] ... OK (linked cache) ෮چίϚϯυ SFOWMPDLͷঢ়ଶΛ࠶ݱͰ͖Δ ӈྫ͸ɺ·ͬ͞Βͳঢ়ଶͰɺ࠶ݱ͍ͨ͠؀ڥͷ SFOWMPDLΛஔ͖ɺJOJU ͰॳظԽɺSFTUPSF Ͱ ෮چ͍ͯ͠Δঢ়گ SFTUPSFͷޙ͸TFTTJPOΛ3FTUBSU͢Δ͜ͱ

Slide 22

Slide 22 text

SFOWSFTUPSF Restore a project's dependencies from a renv.lock file > renv::install("data.table") Installing data.table [1.12.2] ... OK (linked cache) > renv::status() The following package(s) are out of sync: Package Lockfile Version Library Version data.table 1.11.0 1.12.2 # ৽ͨͳversionͯ͠ෆ۩߹Λ֬ೝ # ໰୊͕͋Δ৔߹͸snapshotΛऔΒͣʹ > renv::restore() The following package(s) will be updated: # CRAN =============================== - data.table [1.12.2 -> 1.11.0] Do you want to proceed? [y/N]: y Installing data.table [1.11.0] ... OK (linked cache) ෮چίϚϯυ SFOWMPDLͷঢ়ଶΛ࠶ݱͰ͖ΔͷͰɺΠϯετʔ ϧ͞ΕͨύοέʔδΛ࡟আ΍όʔδϣϯมߋͯ͠ɺ ؾʹ৯Θͳ͔ͬͨΒ෮چ͢Δ͜ͱ͕Ͱ͖Δ ӈྫ͸ɺEBUBUBCMF͕Πϯετʔϧ͞Ε ͍ͯΔঢ়ଶͰ࠷৽ʹVQHSBEF͠ɺSFTUPSF Ͱ෮ چ͍ͯ͠Δঢ়گ SFTUPSFͷޙ͸TFTTJPOΛ3FTUBSU͢Δ͜ͱ Ұ୴ฏؾͱࢥͬͯɺTOBQTIPUΛऔͬͯ͠·͏ͱ ໭ͤͳ͍ͷͰɺͦͷରࡦͱͯ͠ɺSFOWMPDLΛ(JU ؅ཧ͢Δඞཁ͕͋Δ

Slide 23

Slide 23 text

SFOWIJTUPSZ Find prior versions of the renv.lock file > renv::history() commit author_date committer_date subject 1 26b79f55452169f97c38f959bd94756a73e3b5ab 2019-09-29 09:49:32 2019-09-29 09:49:32 [email protected] 2 1a394b4f4de56084d23b62fbb05e2c31ae58e3f1 2019-09-29 09:47:15 2019-09-29 09:47:15 [email protected] 3 40446467d7b9d714ae4822c4b81c0b6ce34fc5e9 2019-09-29 09:45:40 2019-09-29 09:45:40 first commit ҎԼͱಉ͡Ͱ͋Δ͜ͱ͕Θ͔Δɻ % git log commit 26b79f55452169f97c38f959bd94756a73e3b5ab (HEAD -> master) Author: blacktanktop Date: Sun Sep 29 09:49:32 2019 +0900 [email protected] commit 1a394b4f4de56084d23b62fbb05e2c31ae58e3f1 Author: blacktanktop Date: Sun Sep 29 09:47:15 2019 +0900 [email protected] commit 40446467d7b9d714ae4822c4b81c0b6ce34fc5e9 Author: blacktanktop Date: Sun Sep 29 09:45:40 2019 +0900 ίϛοτཤྺͷࢀরίϚϯυ SFOWMPDLΛ(JU؅ཧ͍ͯ͠Δલఏ HJUMPHΛฦ͍ͯ͠Δͷ͕Θ͔Δ ӈྫ͸ɺSFOWJOJU ௚ޙɺ౓ͷҟͳΔόʔδϣ ϯΛJOTUBMMޙʹDPNNJUͯ͋͠Δঢ়گͰɺ֬ೝ͠ ͨ΋ͷ SFOWJOJU ͷޙͰ֘౰EJSͰHJUJOJUͯ͠SFOWMPDLΛDPNNJUɻTOBQTIPUऔΔͨͼʹ DPNNJU͍ͯ͠Δঢ়ଶɻ

Slide 24

Slide 24 text

SFOWSFWFSU Revert renv.lock file > renv::revert(commit = "1a394b4f4de56084d23b62fbb05e2c31ae58e3f1") diff --git a/renv.lock b/renv.lock index f6c69b2..da44e6d 100644 --- a/renv.lock +++ b/renv.lock @@ -11,10 +11,10 @@ "Packages": { "data.table": { "Package": "data.table", - "Version": "1.12.2", + "Version": "1.11.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "f2f76b5c5394350c4d4ee77dab51d35c" + "Hash": "7af1b7412c98cb4fde6d4f940218924e" }, "renv": { "Package": "renv", * renv.lock from commit 1a394b4f4de56084d23b62fbb05e2c31ae58e3f1 has been checked out. > > > renv::restore() The following package(s) will be updated: # CRAN =============================== - data.table [1.12.2 -> 1.11.0] Do you want to proceed? [y/N]: y Installing data.table [1.11.0] ... OK (linked cache) SFOWMPDLpMF෮چίϚϯυ IJTUPSZͷDPNNJUཤྺΛ࢖ͬͯɺSFOWMPDLΛ ෮چ͢ΔɻͦͷޙɺSFTUPSFͰ؀ڥ΋෮چՄ TOBQTIPUͷͨͼʹDPNNJU͑ͯ͋͞͠Ε͹ɺ޷ ͖ͳSFOWMPDLpMFͷঢ়ଶʹ෮چͰ͖Δ ӈྫ͸ɺલͷεϥΠυʹ͓͍ͯɺ EBUBUBCMF!ͷঢ়ଶʹ໭͍ͯ͠Δঢ়گɻ SFTUPSFͷޙ͸TFTTJPOΛ3FTUBSU͢Δ͜ͱ > renv::revert(commit = "1a394b4f4de56084d23b62fbb05e2c31ae58e3f1") diff --git a/renv.lock b/renv.lock index f6c69b2..da44e6d 100644 --- a/renv.lock +++ b/renv.lock @@ -11,10 +11,10 @@ "Packages": { "data.table": { "Package": "data.table", - "Version": "1.12.2", + "Version": "1.11.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "f2f76b5c5394350c4d4ee77dab51d35c" + "Hash": "7af1b7412c98cb4fde6d4f940218924e" }, "renv": { "Package": "renv", * renv.lock from commit 1a394b4f4de56084d23b62fbb05e2c31ae58e3f1 has been checked out. # renv.lock͕໭ͬͨͷͰrestore͢Ε͹؀ڥ΋໭ͤΔ > renv::restore()

Slide 25

Slide 25 text

·ͱΊ summary SFOWΛ࢖͏͜ͱͰɺ TZTUFNMJCSBSZͱ੾Γ෼͚Δ͜ͱ͕Ͱ͖ɺશମ΁ͷӨڹΛແͤ͘Δ HMPCBMQBDLBHFDBDIFʹΑͬͯɺ౎౓ͷΠϯετʔϧ࣌ؒΛݮΒͤΔ ͙͢ݩʹ໭ͤΔͨΊɺ҆৺ͯ͠ύοέʔδͷΠϯετʔϧ͕Ͱ͖Δ SFOWMPDLʹΑͬͯ࠶ݱੑ͋Δ؀ڥΛൺֱతָʹ࡞Δ͜ͱ͕Ͱ͖Δ SFOW͸࢖͍উख͕ඇৗʹྑ͍ͷͰɺ ෼ੳͷ࠶ݱੑΛ୲อ͢ΔͨΊʹ΋ੋඇ࢖ͬͯΈͯ΄͍͠ɻ

Slide 26

Slide 26 text

ิ଍ࢿྉ Appendix ҎԼɺิ଍ࢿྉ

Slide 27

Slide 27 text

$MBOHͱ(/6'PSUSBOͷΠϯετʔϧ Install Clang compiler and GNU Fortran ίϯύΠϥʔؔ࿈ͷΠϯετʔϧ SFOW͸աڈͷόʔδϣϯͷύοέʔδΛΠϯ ετʔϧ͢Δ࣌͸ɺιʔεͰΞʔΧΠϒ͞Εͯ ͍Δ΋ͷΛΠϯετʔϧ͜ͱʹͳΔɻ .BDͰDMBOHͱGPSUSBO͕ͳͯ͘ίϯύΠϧΤ ϥʔ͕ग़ͨ࣌ͷରԠ ެࣜʹ΋ॻ͔Ε͍ͯΔ ͱΓ͋͑ͣΠϯετʔϧ͢Δ ΂ͭʹCSFXͰΠϯετʔϧͯ͠΋͍͍ IUUQTDSBOSQSPKFDUPSHCJONBDPTY UPPMT d3.BLFWBST 1. దٓίϝϯτΛೖΕସ͑ͭͭ 2. # gcc 3. # CC=/usr/local/bin/gcc-8 4. # CXX=/usr/local/bin/g++-8 6. # llvm 7. CC=/usr/local/clang7/bin/clang 8. CXX=/usr/local/clang7/bin/clang++