Tokyo.R #81 応用セッション Shiny Appを支えるエンジニアリング (+おまけ)
4IJOZ"QQΛࢧ͑ΔΤϯδχΞϦϯά5PLZP3.PUPZVLJ0,*!PLJZVLJ
View Slide
ͩΕΑʁ● .PUPZVLJ0,* !PLJZVLJ● %BUB4DJFOUJTU!-*/&● ϐΫςϧ (BNF%FTJHOFS
4IJOZͱࢲIUUQTHJUIVCDPNPLJZVLJ4IJOZ"#
IUUQHJOHJIBUFOBCMPHDPNFOUSZ4IJOZͱࢲ
εϥΠυͷͶΒ͍● 4IJOZΛσʔλੳͷμογϡϘʔυʹ༻!● 4IJOZ"QQΛࢧ͑ΔΤϯδχΞϦϯάΛհ● " ۩ମతʹʁʢࢀߟਤॻ͜Εʣ○ ෳਓར༻ˍೝূ○ େࣄ○ յΕʹ͍͘● ʢ͓·͚ʣΤϯδχΞϥΠΫʹ։ൃ͍ͨ͠
ຊհ͢ΔίϯςϯπʢͰͤΔͱ͜·Ͱʣ● NFNPJTF σʔλಡΈࠐΈߴԽ● QPPM 4IJOZͱ%#ͷίωΫγϣϯཧ● 4IJOZ1SPYZ %PDLFSʹΑΔ"QQִͱೝূ● 4IJOZMPBEUFTU ෳਓΞΫηε࣌ͷੑೳܭଌ● 4IJOZUFTU 4IJOZͰͷ୯ମςετ● ʢࢲతʣΑ͘ى͜Δτϥϒϧ● ʢ͓·͚ʣ͓͠ΌΕ6*Λࢦͯ͠
४උ● ओʹ͜ͷεϥΠυϙΠϯλʹͳͬͯ·͢○ 2JJUBͷϦϯΫʹৄࡉ͕͋Γ·͢● ͜ͷεϥΠυͷ4IJOZ4FSWFS0QFO4PVSDF൛ͷ4IJOZ4FSWFSΛࢦ͠·͢● ͪͳΈʹ○ 34UVEJP4FSWFS1SPͬͯΔਓ!ʁ○ 4IJOZ4FSWFS1SPͬͯΔਓ!ʁ
ຊհ͢Δίϯςϯπ● NFNPJTF σʔλಡΈࠐΈߴԽ● QPPM4IJOZͱ%#ͷίωΫγϣϯཧ● 4IJOZ1SPYZ%PDLFSʹΑΔ"QQִͱೝূ● 4IJOZMPBEUFTUෳਓΞΫηε࣌ͷੑೳܭଌ● 4IJOZUFTU4IJOZͰͷ୯ମςετ● ʢࢲతʣΑ͘ى͜Δτϥϒϧ● ʢ͓·͚ʣ͓͠ΌΕ6*Λࢦͯ͠
Ͳ͜ͰΑ͘ΈΔμογϡϘʔυͷ͍ํ● ຖόονͰ࠷৽σʔλ͕ੜ͞ΕΔ● ࠷৽ͷσʔλΛ9ਓ͕:ඵ͔͚ͯಡΈࠐΉ● σʔλͷՄࢹԽ! 9 : ͳΒຖඵσʔλͷಡΈࠐΈ͚ͩͰ͕࣌ؒΘΕ͍ͯΔ
NFNPJTFΛͨ·ͨ·ݟ͚ͭΔ3FG$BTFTUVEZDPOWFSUJOHB4IJOZBQQUPBTZODIUUQTSTUVEJPHJUIVCJPQSPNJTFTBSUJDMFTDBTFTUVEZIUNM
SMJCNFNPJTFͱʁ͡Ίͯ͋Δఆٛͨؔ͠Λݺͼग़ͨ͠ͱ͖ɺฦ͞ΕΔσʔλΛΩϟογϡͤ͞ΔҎ߱ͷݺͼग़ͦ͠ͷΩϟογϡԽ͞ΕͨσʔλΛฦ͢! μογϡϘʔυͷσʔλಡΈࠐΈؔΛNFNPJTFͰΩϟογϡͤ͞Ε͘ͳΓͦ͏IUUQTHJUIVCDPNSMJCNFNPJTF
Δ͜ͱ͜Ε͚ͩݩͷؔϥοϐϯάճҎ߱ͷΞΫηε
ৄ͍͍͠ํҎԼΛͲ͏ͧ!IUUQTRJJUBDPNPLJZVLJJUFNTCDFECFBFFDG
ຊհ͢Δίϯςϯπ● NFNPJTFσʔλಡΈࠐΈߴԽ● QPPM 4IJOZͱ%#ͷίωΫγϣϯཧ● 4IJOZ1SPYZ%PDLFSʹΑΔ"QQִͱೝূ● 4IJOZMPBEUFTUෳਓΞΫηε࣌ͷੑೳܭଌ● 4IJOZUFTU4IJOZͰͷ୯ମςετ● ʢࢲతʣΑ͘ى͜Δτϥϒϧ● ʢ͓·͚ʣ͓͠ΌΕ6*Λࢦͯ͠
4IJOZͱ%#ͷ࿈ܞ!%#ͱͷଓཧΛ4IJOZͰΔͷπϥΠ!%#͔ΒͷಡΈࠐΈ్தͰ4IJOZ"QQ͕ดͯ͡ɺ%#ͱͷίωΫγϣϯͬͯ͠·͏ͱ͔" STUVEJPQPPMΛͬͯίωΫγϣϯཧͷΘ͠͞ΛճආͰ͖ΔSTUVEJPQPPM0CKFDU1PPMJOHJO3IUUQTHJUIVCDPNSTUVEJPQPPM
STUVEJPQPPMΛ͏ͱ͜Μͳײ͡ˡ QPPMʹଓใΛೖΕΔˡ 4IJOZ"QQࢭΊͨͱ͖ʹউखʹQPPMDMPTFˡ EQMZSͰ42-ॻ͔ͣʹ&5-
ຊհ͢Δίϯςϯπ● NFNPJTFσʔλಡΈࠐΈߴԽ● QPPM4IJOZͱ%#ͷίωΫγϣϯཧ● 4IJOZ1SPYZ %PDLFSʹΑΔ"QQִͱೝূ● 4IJOZMPBEUFTUෳਓΞΫηε࣌ͷੑೳܭଌ● 4IJOZUFTU4IJOZͰͷ୯ମςετ● ʢࢲతʣΑ͘ى͜Δτϥϒϧ● ʢ͓·͚ʣ͓͠ΌΕ6*Λࢦͯ͠
ͦͦ4IJOZ4FSWFSͷπϥΠͱ͜Ζ! BQQQSPDFTTͰॲཧ͢ΔͨΊɺෳਓ͕͏ͱɺઌͷॲཧ͕ऴΘΔ·Ͱͭඞཁ͕͋Δ3FG"MUFSOBUJWFBQQSPBDIFTUPTDBMJOH4IJOZXJUI34UVEJP4IJOZ4FSWFS 4IJOZ1SPYZPSDVTUPNBSDIJUFDUVSF IUUQTBQQTJMPODPNBMUFSOBUJWFTUPTDBMJOHTIJOZ
ͦͦ4IJOZ4FSWFSͷπϥΠͱ͜Ζ! ೝূػೳ͕ͳ͍ͷͰɺඞཁͳΒ1SPYZʢ/HJOYͱ͔ʣαʔόͷߏங͕ඞཁ3FG"EE"VUIFOUJDBUJPOUP4IJOZ4FSWFSXJUI/HJOYIUUQTXXXSCMPHHFSTDPNBEEBVUIFOUJDBUJPOUPTIJOZTFSWFSXJUIOHJOY
4IJOZ1SPYZ! VTFS EPDLFSTIJOZDPOUBJOFSΛىಈͤ͞Δ! -%"1ͷೝূʢڥมͰϢʔβ໊ͤΔʣ3FG"MUFSOBUJWFBQQSPBDIFTUPTDBMJOH4IJOZXJUI34UVEJP4IJOZ4FSWFS 4IJOZ1SPYZPSDVTUPNBSDIJUFDUVSF IUUQTBQQTJMPODPNBMUFSOBUJWFTUPTDBMJOHTIJOZIUUQTHJUIVCDPNPQFOBOBMZUJDTTIJOZQSPYZ
4IJOZ1SPYZͷը໘ˡ ೝূใΛೖΕΔʢ#BTJDೝূ -%"1FUDˢ Ϣʔβ͕ΞΫηεͰ͖Δ4IJOZ"QQ͕ϦετԽ͞ΕͯݟΕΔˢ Ϣʔβ໊
4IJOZ1SPYZ● "QBDIFϥΠηϯε +BWBͷ4QSJOHCPPU● ৄ͍͠ಋೖํ๏ҎԼΛͲ͏ͧ!IUUQTRJJUBDPNPLJZVLJJUFNTBBEEF
ຊհ͢Δίϯςϯπ● NFNPJTFσʔλಡΈࠐΈߴԽ● QPPM4IJOZͱ%#ͷίωΫγϣϯཧ● 4IJOZ1SPYZ%PDLFSʹΑΔ"QQִͱೝূ● 4IJOZMPBEUFTU ෳਓΞΫηε࣌ͷੑೳܭଌ● 4IJOZUFTU4IJOZͰͷ୯ମςετ● ʢࢲతʣΑ͘ى͜Δτϥϒϧ● ʢ͓·͚ʣ͓͠ΌΕ6*Λࢦͯ͠
4IJOZ"QQ։ൃதʹ;ͱࢥ͏͜ͷ"QQΛ9ਓ͕ಉ࣌ʹݟͨͱ͖ʹɺ࠷ѱͲΕ͘Β͍ॲཧʹ͔͔࣌ؒΔͩΖ͏͔ʜ!
STUVEJPDPOG4IJOZJO1SPEVDUJPOΑΓ3FG4IJOZJO1SPEVDUJPOQIUUQTTQFBLFSEFDLDPNKDIFOHTIJOZJOQSPEVDUJPO TMJEFͳΜͩΖ͜Εʁ
TIJOZMPBEUFTUͱʁ● 9ਓͷಉ࣌ΞΫηεʹରͯ͠ɺҰ࿈ͷॲཧʹͲͷఔ͕͔͔࣌ؒΔ͔ΛγϛϡϨʔγϣϯͰ͖Δ● खॱ○ 3FDPSE4IJOZ"QQͷૢ࡞Λه͢Δ○ 3FQMBZ9XPSLFSىಈͯ͠ɺૢ࡞Λܭଌ○ "OBMZ[F༷ʑͳՄࢹԽΛఏڙ
TFTTJPOEVSBUJPOੳ XPLFSUISFBEˡ ͍ઢ3FDPSE࣌ͷૢ࡞ྃ·Ͱͷ࣌ؒԣ࣠ ࣌ؒʢӈʹ͍͘΄Ͳ͔͔࣌ؒΔʣॎ࣠ ֤γϛϡϨʔγϣϯ͔͔ͬͨ࣌ؒॱͰιʔτ͞ΕͯΔ͜ͷྫͰɺճͷγϛϡϨʔγϣϯΛߦ͍ͬͯΔ֤৭ͦΕͧΕͷॲཧʹ͔͔ͬͯΔ࣌ؒ
TFTTJPOEVSBUJPOੳ XPLFSUISFBEճͷγϛϡϨʔγϣϯΛߦ͍ͬͯΔ! ਓಉ࣌ΞΫηεͩͱɺ࠷ѱഒ͘Β͍͘ͳΔՄೳੑ͕͋ΔͱಡΉʢͨͿΜʣ
TIJOZMPBEUFTUͷײ! γϛϡϨʔγϣϯ݁Ռ͔Βࠞࡶ͢Δͱ9ඵ͘Β͍ͭՄೳੑ͋Γ·͕͢ɺྃ͝ঝ͍ͩ͘͞ͱݴ͑Δ" ผ్TIJOZDBOOPOΛJOTUBMMͯ͠$-*͔Β࣮ߦ͢Δඞཁ͕͋Γɺগ͠खؒΛײ͡Δɻ$*Խ͕·͍͠ৄ͍͍͠ํ2JJUBΛͲ͏ͧ#IUUQTRJJUBDPNPLJZVLJJUFNTFEFBCB
ຊհ͢Δίϯςϯπ● NFNPJTFσʔλಡΈࠐΈߴԽ● QPPM4IJOZͱ%#ͷίωΫγϣϯཧ● 4IJOZ1SPYZ%PDLFSʹΑΔ"QQִͱೝূ● 4IJOZMPBEUFTUෳਓΞΫηε࣌ͷੑೳܭଌ● 4IJOZUFTU 4IJOZͰͷ୯ମςετ● ʢࢲతʣΑ͘ى͜Δτϥϒϧ● ʢ͓·͚ʣ͓͠ΌΕ6*Λࢦͯ͠
4IJOZͰςετΛճ͍ͯ͜͠͏! 4IJOZ4FSWFSʹ"QQΛ%FQMPZ͚ͨ͠ͲΤϥʔ● ͖ͬ͞·Ͱಈ͍͍ͯͨͷʹʜʂ● ։ൃҰൠʹى͜Δ
4IJOZUFTUͱUFTUUIBUΛ͏4IJOZUFTU● 3QBDLBHF● 1IBOUPN+4ʹΑΔ4IJOZ%SJWFS͕"QQΛىಈUFTUUIBU● 3ͷίʔυͷ୯ମςετΛߦ͏ͨΊͷ3QBDLBHF! ΤϥʔͰىಈ͠ͳ͍͔ʁͱ͍͏৺͕ݮΔ
Α͋͘ΔσΟϨΫτϦߏUFTUεΫϦϓτΛ࣮ߦ͢ΔUFTUεΫϦϓτͱͦͷ݁Ռ
ʢྫʣSVO@UFTUT3
ʢྫʣUFTU3
UFTUʹͲΜͳͷΛ༻ҙ͢Δ͔● ىಈ͔ΒɺϢʔβ͕සൟʹߦ͏ͷʢΫϦοΫͯ͠σʔλ%-ͱ͔ʣΛUFTU3ʹ·ͣॻ͍͓ͯ͘● ৄ͍͍͠ํҎԼΛͲ͏ͧ!IUUQTRJJUBDPNPLJZVLJJUFNTBCBDBFGG
ຊհ͢Δίϯςϯπ● NFNPJTFσʔλಡΈࠐΈߴԽ● QPPM4IJOZͱ%#ͷίωΫγϣϯཧ● 4IJOZ1SPYZ%PDLFSʹΑΔ"QQִͱೝূ● 4IJOZMPBEUFTUෳਓΞΫηε࣌ͷੑೳܭଌ● 4IJOZUFTU4IJOZͰͷ୯ମςετ● ʢࢲతʣΑ͘ى͜Δτϥϒϧ● ʢ͓·͚ʣ͓͠ΌΕ6*Λࢦͯ͠
ʢࢲతʣ4IJOZ4FSWFSͰΑ͋͘Δ&SSPSͷݪҼ! ϩʔΧϧͷมɾϥΠϒϥϦΛࢀরͯͨ͠EFUBDIBMMQBDLBHFTXIJMFXPSLJOHJO3 4UBDL0WFSGMPXIUUQTTUBDLPWFSGMPXDPNRVFTUJPOTEFUBDIBMMQBDLBHFTXIJMFXPSLJOHJOSσλονͷॲཧΛೖΕΔ"HMPCBM3
ʢࢲతʣ4IJOZ4FSWFSͰΑ͋͘Δ&SSPSͷݪҼ! ͋ΔϥΠϒϥϦΛͬͯͳ͍ͱࢥͬͯআͯͨ͠Β࣮͍ͬͯͯؾ͔ͮͳ͔ͬͨ" ໊લۭؒΛࢦఆͨ͠΄͏͕ແHMPCBM3
ʢࢲతʣ4IJOZ4FSWFSͰΑ͋͘Δ&SSPSͷݪҼ! 4IJOZ"QQͰͬͯΔؔΛมߋ͚ͨ͠Ͳɺ4IJOZ4FSWFSͰݟͯมΘͬͯͳ͍ʜʁ" SFTUBSUUYUಉ࣌ʹUPVDIίϚϯυͰߋ৽ͯ͠ஔ͢Δͷ͕ແ4IJOZ4FSWFSW$POGJHVSBUJPO3FGFSFODFIUUQTEPDTSTUVEJPDPNTIJOZTFSWFSSFTUBSUJOHBOBQQMJDBUJPOˎSFTUBSUUYUͱ4IJOZ"QQΛڧ੍తʹSFTUBSUͤ͞ΔͨΊͷۭϑΝΠϧ
ຊͷ͓͞Β͍● NFNPJTF σʔλಡΈࠐΈߴԽ● QPPM 4IJOZͱ%#ͷίωΫγϣϯཧ● 4IJOZ1SPYZ %PDLFSʹΑΔ"QQִͱೝূ● 4IJOZMPBEUFTU ෳਓΞΫηε࣌ͷੑೳܭଌ● 4IJOZUFTU 4IJOZͰͷ୯ମςετ● ʢࢲతʣΑ͘ى͜Δτϥϒϧ● ʢ͓·͚ʣ͓͠ΌΕ6*Λࢦͯ͠
·ͱΊ● ΤϯδχΞϦϯάࢹͰɺ4IJOZ"QQΛࢧ͑ΔศརػೳΛհͨ͠● ੈͷதͷ4IJOZ6TFSͷॿ͚ʹͳΕ͍Ͱ͢○ ͱ͘ʹɺاۀͰ4IJOZΛར༻͍ͯ͠Δ ͍ͨ͠Ϣʔβʹ͚ͯ
ʢ͓·͚ʣ͓͠ΌΕ6*Λࢦͯ͠
ϩʔσΟϯάදࣔ͋Δํ͕·͍͠● ! ར༻ऀͷؾ࣋ͪʣͪΌΜͱಈ͍ͯΔʁΤϥʔͰࢭ·ͬͯΔʁΘ͔ΒΜ● ࠷ॳ BOESFXTBMJQMPUMZ#BSTͱ͍͏ͷ͕͋ͬͨ● ࠓ͜Ε͕৽͍͠ BOESFXTBMJTIJOZDTTMPBEFST
BOESFXTBMJTIJOZDTTMPBEFST● छྨ͔ΒબΔ● ͜Ε͚ͩ3FGʲ3ʳਤɾςʔϒϧͷग़ྗʹ$444OJQQFUTͰΞχϝʔγϣϯΛ͚ͭΔ 2JJUBIUUQTRJJUBDPNTBTBLJ@,@TBTBLJJUFNTGECFBFFGGD
USFTUMFUFDITIJOZ"DF● "DFΤσΟλΛ 4IJOZ6*Ͱ͏͜ͱ͕Ͱ͖Δ● !ݟ͕͓ͨ͠ΌΕ3FGUSFTUMFUFDITIJOZ"DF*OUFHSBUJOHUIF"DFFEJUPSXJUI4IJOZIUUQTHJUIVCDPNUSFTUMFUFDITIJOZ"DF
ESFBN3TTIJOZ8JEHFUT!͓͠ΌΕ6*ΟδΣοτESFBN3TTIJOZ8JEHFUTTIJOZ8JEHFUT&YUFOEXJEHFUTBWBJMBCMFJOTIJOZIUUQTHJUIVCDPNESFBN3TTIJOZ8JEHFUT
ࢀߟESFBN3TϑϥϯεͰ3QBDLBHFͷ։ൃESFBN3TcFYQFSU3cFYQFSUTIJOZcEBUBTDJFODFc'SBODFIUUQTXXXESFBNSTGS
͓͠ΌΕͳ4IJOZ5FNQMBUFଞʹ͋Γ·͢● 3JOUF3GBDFCTEBTI #PPUTUSBQ● FSJDSBZBOEFSTPOTIJOZNBUFSJBM NBUFSJBMEFTJHO● 3JOUF3GBDFGVMM1BHF GVMMQBHFKTͰGVMMQBHFΞϓϦ● "QQTJMPOTIJOZTFNBOUJD+BWB4DSJQUৄ͍͠ਓʹظ
ςϯϓϨʔτσβΠϯΛద༻͓ͯ͠͠ΌΕʹ● STUVEJPTIJOZUIFNFT● OJLEBTICPBSEUIFNFT ྫҎԼ
3FGFSFODF● ֆจࣈ5XFNPKJΛ༻͠·ͨ͠○ IUUQTUXFNPKJUXJUUFSDPN