Slide 1

Slide 1 text

PythonͱΫϥ΢υͱ 
 ໺ٿͷਪ͠׆. εϙʔπΞφϦςΟΫεΛ͍͍ײ͡ʹ΍ΔͨΊͷ 
 ϓϥοτϑΥʔϜ࡞Γͱӡ༻, ͦͯ͠ਪ͠׆. Shinichi Nakagawa@shinyorke 2023/07/13 Start Python Club #95

Slide 2

Slide 2 text

Who am I ? ʢ͓લ୭Α?ʣ • Shinichi Nakagawa@shinyorke • ΞΫηϯνϡΞגࣜձࣾ 
 ςΫϊϩδʔίϯαϧςΟϯάຊ෦ 
 Ϛωʔδϟʔ • ຊۀ͸Ϋϥ΢υɾΠϯϑϥѻ͏νʔϜͰ৭ʑ΍ͬͯΔਓ • ࢓ࣄ΋झຯ΋ϑϧαΠΫϧͳΤϯδχΞ • ϓϩ໺ٿ͸೔ϋϜ, MLB͸ΞεϨνοΫεਪ͠ • ʮLean Baseballʯͱ͍͏ݸਓϒϩάͰ 
 ʮٕज़ʯʮ໺ٿʯʮΩϟϦΞʯʹ͍ͭͯ৭ʑॻ͍ͯ·͢. 
 https://shinyorke.hatenablog.com/

Slide 3

Slide 3 text

ॏཁͳεϥΠυ͸͜ͷ഑৭Ͱ͢ ※10ຕ΋ͳ͍Ͱ͢, ࠷ѱ͜ͷ৭ͷεϥΠυ͚ͩ௥͍ͬͯͩ͘͞.

Slide 4

Slide 4 text

ࠓ໷ͷςʔϚʮࢲͷਪ͠׆ʯ • Pythonͱ͸΋͏10೥Ҏ্ͷ͓෇͖߹͍Ͱ͢, ΋͸΍૬๮. 
 ͱݴ͍ͭͭ, ࠷ۙ͸Go΍TypeScriptͱ΋஥ྑ͍ͯ͘͠·͢. • Ϋϥ΢υαʔϏε, ಛʹGoogle Cloud͸ެࢲڞ͓ੈ࿩ʹͳͬͯ·͢. 
 ͳ͓ݱ࣮ͷ࢓ࣄ΍झຯͰ͸AWS΋࢖͍·͢ʢͰ΋Google͕େ൒ʣ. • ਎ମೳྗ͕ૉ੖Β͍͠໺ٿબख͕޷͖Ͱ͢. 
 ೔ຊͩͱສ೾தਖ਼ʢ೔ຊϋϜʣ, ϝδϟʔ͸΋ͪΖΜ͜ͷํ…

Slide 5

Slide 5 text

ʢݱ࣌఺ͰʣੈքҰͷ໺ٿબखʮΦΦλχαϯͷ2023೥ʯͷਪ͠ϙΠϯτΛτίτϯޠΔ. ೔ຊ࣌ؒ2023/7/11࣌఺ͷσʔλʢMLBલ൒ઓऴྃʣ࣌఺ͷσʔλΛݩʹղઆ͠·͢. 
 ※σʔλࢀরݩʢMLBެࣜσʔλʣ: https://baseballsavant.mlb.com/statcast_search

Slide 6

Slide 6 text

ΦΦλχαϯ͸Τά͍͙Β͍ͷύϫʔʢଧٿ଎౓ʣͱ֯౓Ͱ ϗʔϜϥϯΛྔ࢈͍ͯ͠Δ.

Slide 7

Slide 7 text

ΦΦλχαϯ͸6݄͝ΖಥવόοςΟϯά͕͍͍ײ͡ʹͳΓଧ๮രൃ. ͦΓΌ͋6݄MVP΋Θ͔Δؾ͕͢Δʢͳ͓7݄಄ʹͪΐͬͱ࣪ͬͨ໛༷ʣ.

Slide 8

Slide 8 text

ΦΦλχαϯ͸޿֯ʹΊͬͪΌ଎͍ଧٿ͕ΊͬͪΌඈͿʢޠኮྗʣ.

Slide 9

Slide 9 text

౤खΦΦλχαϯ͸?ࠓ೥΋εϥΠμʔʢਖ਼֬ʹ͸Sweeperʣ͓Խ͚ʹ. 
 ͪΐͬͱඈᠳؾຯͳͷͱٿ଎Լ͕ͬͯΔͷ͕ෆ҆…

Slide 10

Slide 10 text

ͪͳΈʹڈ೥ͷ౤खΦΦλχαϯʢ2022γʔζϯऴྃ࣌఺ʣ

Slide 11

Slide 11 text

ϫΠʮ⽁σʔλج൫ཉ͘͠ͳ͖ͬͯͨϯΰʯ 
 #ԶͷDXϓϩδΣΫτര஀ ݩσʔλʢhttps://baseballsavant.mlb.com/ ʣͷෳࡶɾ೉ղ͕݁͞ߏΩπ͍. ͱ͍͏͜ͱͰఆظతʹσʔλΛDWHʹ์ΓࠐΉ&ՄࢹԽ͢Δج൫Λ࡞Ζ͏ʂ 
 ͱͳͬͨͷ͕͜ͷϓϩδΣΫτͷΩοΧέ.

Slide 12

Slide 12 text

اըɾઃܭɾ࣮૷ͦͯ͠ӡ༻…൒೥͔͚ۙͯ͘΍Γ͖ͬͨΓ·ͨ͠💪 ※ࠓ΋伱Λݟ͚ͭͯվળɾ৽ػೳ։ൃத.

Slide 13

Slide 13 text

ΞϓϦͱσʔλج൫ͷΞʔΩςΫνϟ

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

ΞʔΩςΫνϟͱαʔϏεબͼͷಛ௃ • ʮϑϧϚωʔδυ͔ͭαʔόϨεʯͳΫϥ΢υʹ߆Δ • ͓ࡒ෍ʹ༏͍͠ߏ੒ͱ࢖͍ํʹప͢Δ

Slide 16

Slide 16 text

ʮϑϧϚωʔδυ͔ͭαʔόϨεʯͳΫϥ΢υ • ʮϑϧϚωʔδυ͔ͭαʔόϨεͳΫϥ΢υαʔϏεʯͷಛ௃ • ͬ͘͟Γݴ͑͹ʮΞϓϦΛࡌͤͨΒͻͱ·ͣಈ͘ʯαʔϏεͷ͜ͱ. • ن໿ʹԊͬͯ։ൃͨ͠ίʔυ΋͘͠͸ContainerԽͨ͠؀ڥΛσϓϩΠͨ͠Βಈ͘. • ʮϑϧϚωʔδυ͔ͭαʔόϨεʯ͸ʮख͕͔͔ؒΒͳ͍ʯ • ΄΅ϝϯςφϯεϑϦʔ.ϛυϧ΢ΣΞͷอकɾӡ༻͔Β։์͞ΕΔ. • ҰਓͰ࢖͏࣌͸αʔόʔΛݮΒ͠, େਓ਺ͷ࣌͸૿΍͢౳ॊೈͳରԠָ͕. • ϦΫΤετ͋ͨΓͷॲཧ࣌ؒ, ࢖͑ΔϦιʔεྔͷ੍ݶɾϥϯλΠϜVersionͷ੍ݶ, etc… 
 ߟྀ͢΂͖ཹҙ఺ɾܽ఺΋͋ΔͷͰ࢖͏࣌͸࢓༷ΛνΣοΫ&ͪΌΜͱςετ͠·͠ΐ͏.

Slide 17

Slide 17 text

ʲਤʳGoogle Cloudͷ੹೚ڞ༗ϞσϧʢComputeܥαʔϏεʣ

Slide 18

Slide 18 text

Cloud Run, GAE, Firebase, Cloud Functions Ҏ্͕GoogleܥͷαʔόϨεͳαʔϏε.

Slide 19

Slide 19 text

ʁʁʁʮݸਓͰΫϥ΢υαʔϏεΛ͕ͬͭΓ࢖͏ͱ͓͕ۚ৺഑ʯ ͬͯࢥ͏͡Όͳ͍Ͱ͔͢, Ϋϥ΢υͱαʔόϨεͰ͍͍ײ͡ʹग़དྷ·͢.

Slide 20

Slide 20 text

αʔόϨεͳΫϥ΢υ͸͓ࡒ෍ʹ༏͍͠ • ʮ࢖͏ͱ্ཱ͖͚͕ͩͪΕ͹͍͍ʯͷͰΞϓϦέʔγϣϯج൫͸αʔόϨεʹશৼΓ • WebΞϓϦέʔγϣϯ΋όονॲཧ΋ίʔϧυελϯόΠʢΞΫηεͨ͠Βىಈʣ • ʮಈ͍͍ͯͳ͍࣌΋͓͕͔͔ۚΔʯͷ͸DWHͱετϨʔδͷΈʢͦΕ΋͘͝গֹʣ • ྉ͓ۚΑͼແྉ࿮ͷϧʔϧΛͪΌΜͱಡΜͰཧղͯ͠ਖ਼͘͠࢖͏ • ྉۚମܥͱແྉ࿮͸ͪΌΜͱެࣜυΩϡϝϯτΛಡΉ. • ྫ͑͹Google Cloud Storage͸ద੾ͳετϨʔδλΠϓͷબ୒͓Αͼ, 
 ௕ظอ؅ʢϑΝΠϧมߋͤͣ௕͘อଘʣͷར༻Ͱอ؅ίετ͕Լ͕ͬͨΓ͢Δ.

Slide 21

Slide 21 text

Ұϲ݄Ͱ$3ະຬ, ίʔώʔ3.34ഋ෼ఔ౓ͰࡁΈ·ͨ͠🐯 
 ※σʔλج൫ϓϩδΣΫτͷ࣮ίετΑΓࢉग़ʢίʔώʔ୅͸ίϯϏχίʔώʔج४ʣ, υϝΠϯऔಘྉ౳֎෦ίετΛআ͘

Slide 22

Slide 22 text

ΞʔΩςΫνϟղઆͷ·ͱΊ • ʮϑϧϚωʔδυ͔ͭαʔόϨεʯͳΫϥ΢υαʔϏε͸ָͰ͋Δ. • อकɾӡ༻࡞ۀ͔Βͷղ์, ࢖ͬͯͳ͍࣌͸ίʔϧυελϯόΠ. • αʔόϨεͳΒͰ͸ͷ੍໿ࣄ߲ʹ஫ҙʢॲཧ࣌ؒɾϦιʔε౳ʣ. • ͓ࡒ෍ʹ༏͍͠࢖͍ํ͕Ͱ͖Δ. • αʔόϨε͸ʮ࢖͚͓͕͔͔ͬͨ࣌ͩۚΔʯߏ੒ͳͷͰ͓ࡒ෍ʹ༏͍͠. • ετϨʔδ΍DB͸ແྉ࿮ɾσʔλ௕ظอ؅ϧʔϧΛ׆༻.

Slide 23

Slide 23 text

σʔλ෼ੳμογϡϘʔυΛ αʔόϨε͔ͭϞμϯͳPythonͰ ͍͍ײ͡ʹ࡞Δ

Slide 24

Slide 24 text

ͪ͜Β͸શ෦PythonͰ։ൃ͍ͯ͠·͢. ։ൃதʹJavaScript/HTML͸Ұߦ΋ॻ͍͍ͯ·ͤΜ.

Slide 25

Slide 25 text

PythonͳLow-codeͰ ͍͍ײ͡ʹ࡞Δ. • PlotlyΛLow-codeπʔϧͱͯ͠ 
 ࢖͑ΔΑ͏ʹͨ͠ʮDashʯΛར༻. • ϓϩτλΠϓͰ͸෼ੳɾՄࢹԽʹ 
 Jupyter LabͱPlotlyΛ࢖͓ͬͯΓ, 
 ͜ΕΛͦͷ··Ҡ২Ͱ͖ΔखஈͰ 
 ࣮૷͔ͨͬͨ͠. • https://dash.plotly.com/

Slide 26

Slide 26 text

ࠓճ࡞ͬͨίʔυ 
 ʢҰ෦ൈਮʣ • Python͚ͩͰॻ͚Δͷ͸ΊͬͪΌศརͩͬͨ. • HTMLʹ໛ͨ͠ίϯϙʔωϯτΛPythonͰ 
 ΰϦͬͱॻ͍ͯ࡞੒͢Δͱ͍͍ײ͡ʹಈ͘. • ΠϕϯτۦಈͰͷॻ͖׵͑͸Callbackͳ 
 σίϨʔλʔͰ࣮૷. • ReactͬΆ͋ͬͯ͞ݸਓతʹ͸େ޷͖͕ͩ, 
 ςετ͕௒ॻ͖ʹ͍͘ҹ৅… 
 ※গͳ͘ͱ΋UI ίϯϙʔωϯτʹؔͯ͠

Slide 27

Slide 27 text

Dash࣮ͬͯ༻Ͱ࢖͑·͔͢? • ݁࿦ʮΧελϚΠζʢࣗ࡞ʣ͕ඞཁͳσʔλՄࢹԽΞϓϦͳΒ˕ʯ • ໺ٿΞϓϦ͸ΧελϚΠζͰ࡞Δάϥϑ͕͋ͬͨͷͰॿ͔ͬͨ • ٿ৔ͷμΠϠϞϯυʢ֎໺ؚΉʣ • ετϥΠΫκʔϯදࣔ • ΧελϚΠζ͕ແ͚Ε͹࢖Θͳ͍͍ͯ͘ʢΉ͠Ζ։ൃ͢Δͳʣ 
 Looker΍Tableau, RedashͰࡁΉͳΒͦΕ͕࠷΋޾ͤ

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

μογϡϘʔυΞϓϦͷϢʔεέʔε • σϞΞϓϦέʔγϣϯʢWebΞϓϦέʔγϣϯʣ͸Cloud Run্Ͱϗετ. ࣮૷͸PythonʢDashʣ. • όοΫΤϯυͷೝূ͸API GatewayΛ༻͍ͯߦ͏, API KeyํࣜͷೝূʢSaaSతʹ࢖͏ͨΊ׶͑ͯ͜͏΍͍ͬͯΔʣ. • BigQueryʹ֨ೲ͞ΕͨσʔλΛݕࡧ͢ΔόοΫΤϯυʢRESTful APIʣ͸GoʢGinʣͰ࣮૷, Cloud RunͰϗετ. • RESTful APIͷResponse͸৚݅ผʹCloud StorageʹΩϟογϡʢಉ͡ΫΤϦΛԿ౓΋࣮ߦͤ͞ͳ͍ʣ.

Slide 30

Slide 30 text

ʮΫϥ΢υαʔϏεબͼʯͷ೉͠͞Λղܾ͢Δ • αʔόϨεͳΫϥ΢υαʔϏεͷબͼํ - Google Cloudฤ • App EngineͱFirebaseͱCloud Run, Կ͕ҧ͏ͷ? • Cloud Functions͍ͬͯͭ࢖͏ͷ?ͦ΋ͦ΋Կऀ?? • Python࢖͍తʹ͸Ͳ͏ͨ͠Βྑ͍͔? • ϓϩάϥϛϯάݴޠͷબͼํ

Slide 31

Slide 31 text

αʔόϨεͳΞϓϦέʔγϣϯಈ࡞؀ڥ ओͳαʔϏεʢ(PPHMFʣ 63- ֓ཁ ("& (PPHMF"QQ&OHJOF IUUQTDMPVEHPPHMFDPNBQQFOHJOF αʔόϨε͔ͭϑϧϚωʔδυͷ ݩ૆Έ͍ͨͳଘࡏ ࢖͍΍͍͢ 'JSFCBTF IUUQT fi SFCBTFHPPHMFDPN ΞϓϦͷΈͳΒͣ %#ɾ௨஌ͱ ΍ΕΔ͜ͱ͕ଟ͍͔ͭศར جຊ+BWB4DSJQU͕ͩҰ෦1ZUIPOར༻Մ $MPVE3VO IUUQTDMPVEHPPHMFDPNSVO ޷͖ͳݴޠɾ؀ڥͰ࡞ΔͳΒ͜Ε 
 ͻͱ·ͣ$POUBJOFS࡞ͬͯಈ͔ͤΔ $MPVE'VODUJPOT IUUQTDMPVEHPPHMFDPNGVODUJPOT ͪΐͬͱͨؔ͠਺Λಈ͔͢ͳΒ 4MBDL#PU౳ͷখ͞ΊͳΞϓϦͳͲ

Slide 32

Slide 32 text

Cloud RunΛબ୒ͨ͠ʢPythonicͳʣཧ༝ • μογϡϘʔυΞϓϦͷґଘϥΠϒϥϦతʹApp EngineͰಈ͔͘ո͔ͬͨͨ͠Ί • PandasʹDashʢPlotlyʣͱσʔλܥͷϥΠϒϥϦ͕੝Γͩ͘͞ΜͷWebΞϓϦ • ͜ͷ࣌఺ͰͪΌΜͱͨ͠ContainerܥͰಈ͔͞ͳ͍ͱବ໨ͩͳͬͯ൑அˠͦͷ௨Γͩͬͨ • બ୒͢Δ·Ͱͷࢥߟͱͯ͠͸… 1.ґଘϥΠϒϥϦͳͲͷ౎߹Ͱ΄΅PythonʢҰ෦GoʣͰͷ։ൃ -> Firebase͕ީิ͔Βফ͑Δ 2.Cloud FunctionsͰಈ͔͢ʹ͸ඍົͳ࢓༷ͱͳͬͨͨΊબ୒ࢶͱͯ͠ফڈ 3.App EngineʢStandardʣ͸Container͡Όͳ͍ -> Cloud Runʹܾఆ 
 ※ContainerͰಈ͔ͤΔApp EngineʢFlexibleʣΛ࢖Θͳ͔ͬͨཧ༝͸…ͦΜͳબ୒ࢶΛೖΕͨ͘ͳ͔͔ͬͨΒͰ͢ʢ௚ٿʣ

Slide 33

Slide 33 text

σʔλऩूόονॲཧʢج൫ʣΛ ͍͍ײ͡ʹ࡞Δ

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

σʔλऩूج൫ͷϢʔεέʔε ᶃ Cron Scheduler͕ຖ೔ܾ·ͬͨ࣌ؒʹᶄͷTriggerΛݺͼग़͢ ᶄ Trigger͸σʔλऩूαʔϏεʢCrawlerʣʹඞཁͳύϥϝʔλʔΛ࡞ͬͯ౉͢ ᶅ Crawler͸Trigger͔ΒͷύϥϝʔλʔΛ࢖ͬͯσʔλݩαΠτ͔ΒCSVΛμ΢ϯϩʔυ, Datalakeʹอଘ ᶆ Cron SchedulerͷτϦΨʔΛݩʹImporter͸CSVσʔλΛDWHʢBigQueryʣʹ౤ೖ

Slide 36

Slide 36 text

Ϋϥ΢υωΠςΟϒͳʮόονॲཧʯ • Ϋϥ΢υͰ͋Γ͕ͪͳόονॲཧํࣜ • Cloud Functions + Pub/SubΛ࢖ͬͯϐλΰϥεΠονతʹ࡞Δ

Slide 37

Slide 37 text

Ϋϥ΢υͰ͋Γ͕ͪͳόονॲཧํࣜ ݴޠ ڧΈͱ୹ॴ Ϋϥ΢υωΠςΟϒͳํ๏ͱͯ͠ ʲ΍Γํ࣍ୈʳࣗલͰαʔόʔ࡞Δ ʲڧΈʳ DSPOUBCͱԿ͔͠ΒͷݴޠͰ࡞ΕΔ ʲ୹ॴʳ ϝϯςɾӡ༻͕໘౗ɾଐਓԽ͢Δةݥ "84&$4'BSHBUFͳΒ͍͍ײ͡ 7.ܥͩͬͨΓϚγϯ͕ඞཁͳΒ Ϋϥ΢υ࢖͏ҙຯ͕ݮΔ͔΋ ʲΦεεϝʳ"QBDIF"JS fl PXΛ Ϋϥ΢υαʔϏεͰ࢖͏ ʲڧΈʳ "JS fl PXͷ࢓૊Έʹ৐ͬͯ؂ࢹɾӡ༻Մ ʲ୹ॴʳ "JS fl PXͷֶशίετɾऔΓѻ͍ ۀ຿Ͱ࢖͏ ͋Δఔ౓ͷن໛͕͋Δ όονॲཧͰ͸ྑ͍ײ͡ͷํ๏ (PPHMF$MPVE "84྆ํ͍͚Δ ʲཁ͕݅߹͑͹Φεεϝʳ 1VC4VCʹΑΔΠϕϯτۦಈ ʲڧΈʳ ϚΠΫϩαʔϏεతʹ࡞ΕΔ ʲ୹ॴʳ ઃܭɾ࣮૷Λཧղɾ׳ΕΔֶशίετ Ϋϥ΢υαʔϏεͳΒͰ͸ͷํ๏ ઃܭɾ࣮૷ͷֶशίετ͸͔͔Δ͕ ׳Εͯ͠·͑͹݁ߏؾܰʹ࡞ΕΔ

Slide 38

Slide 38 text

ؾܰͰ͍҆ʮPub/SubΠϕϯτۦಈʯΛ࠾༻ ݴޠ ڧΈͱ୹ॴ Ϋϥ΢υωΠςΟϒͳํ๏ͱͯ͠ ʲ΍Γํ࣍ୈʳࣗલͰαʔόʔ࡞Δ ʲڧΈʳ DSPOUBCͱԿ͔͠ΒͷݴޠͰ࡞ΕΔ ʲ୹ॴʳ ϝϯςɾӡ༻͕໘౗ɾଐਓԽ͢Δةݥ "84&$4'BSHBUFͳΒ͍͍ײ͡ 7.ܥͩͬͨΓϚγϯ͕ඞཁͳΒ Ϋϥ΢υ࢖͏ҙຯ͕ݮΔ͔΋ ʲΦεεϝʳ"QBDIF"JS fl PXΛ Ϋϥ΢υαʔϏεͰ࢖͏ ʲڧΈʳ "JS fl PXͷ࢓૊Έʹ৐ͬͯ؂ࢹɾӡ༻Մ ʲ୹ॴʳ "JS fl PXͷֶशίετɾऔΓѻ͍ ۀ຿Ͱ࢖͏ ͋Δఔ౓ͷن໛͕͋Δ όονॲཧͰ͸ྑ͍ײ͡ͷํ๏ (PPHMF$MPVE "84྆ํ͍͚Δ ʲ࠾༻ʳ 1VC4VCʹΑΔΠϕϯτۦಈ ʲڧΈʳ ϚΠΫϩαʔϏεతʹ࡞ΕΔ ʲ୹ॴʳ ઃܭɾ࣮૷Λཧղɾ׳ΕΔֶशίετ Ϋϥ΢υαʔϏεͳΒͰ͸ͷํ๏ ઃܭɾ࣮૷ͷֶशίετ͸͔͔Δ͕ ׳Εͯ͠·͑͹݁ߏؾܰʹ࡞ΕΔ

Slide 39

Slide 39 text

Pub/Sub + Cloud FunctionsͳϐλΰϥεΠον • crontab໾ͷΫϥ΢υαʔϏεʢCloud Schedulerʣ͔ΒPub/Subܦ༝Ͱୟ͘ࣄͰόονॲཧΛ࣮ݱ • ֤Cloud Functionsؔ਺ʢᶄ, ᶅ, ᶆʣ͸Pub/Sub͔ΒͷϝοηʔδΛड͚ͯಈ͘࢓૊ΈͰ࡞Δ • ͜ΕΒͷํ๏͸Google Cloudެࣜʹ΋Quick Start͕͋ΔͷͰਅࣅͨ͠Β࣮ݱՄೳʢਅࣅ͠·ͨ͠ʣ • ͪͳΈʹ؀ڥ͸Cloud RunͳͲ, ଞͷαʔϏε΋࢖͑·͢&ݴޠ͸Python͡Όͳͯ͘΋ߏ͍·ͤΜ

Slide 40

Slide 40 text

Ҏ্, ٕज़ύʔτͷ࿩͸͓͠·͍.

Slide 41

Slide 41 text

ͦΖͦΖ໺ٿͷ࿩ʹ໭Γ·͢.

Slide 42

Slide 42 text

ࠓ೔֮͑ͯؼͬͯ΄͍͠ʮMLBͷ͓Խ͚ʯୡ • ϩφϧυɾΞΫʔχϟJr.ʢΞτϥϯλɾϒϨʔϒε/૸߈कͷ͓Խ͚ʣ • ౻࿘৾ଠ࿠ʢΦʔΫϥϯυɾΞεϨνοΫε/ૉࡐܕͷ͓Խ͚ʣ

Slide 43

Slide 43 text

ϩφϧυɾΞΫʔχϟͬͯͲΜͳબखʁ • ΞτϥϯλɾϒϨʔϒε͍΍ϝδϟʔϦʔάͷະདྷΛഎෛ͏ 
 ௒ઈΞεϦʔτܕ֎໺खͰϙδγϣϯ͸ओʹϥΠτ • લ൒ઓऴྃ࣌఺ͷ੒੷ʢ89ࢼ߹ʣ: ଧ཰.331/ 21ຊྥଧ / 41౪ྥ 
 ※લ൒ઓͰʮ20ຊྥଧ&40౪ྥʯ͸MLB্࢙ॳͷه࿥ • લਓະ౸, 40ຊྥଧ&70౪ྥͱ͍͏Ғۀʢมଶͳه࿥ʣ͕ظ଴͞ΕΔ

Slide 44

Slide 44 text

ΞΫʔχϟ͸ΦΦλχαϯͱҟͳΓ௿ͯ͘ڧ͍ଧٿ͕ଟ͍.

Slide 45

Slide 45 text

ΞΫʔχϟ΋ΊͬͪΌ޿֯ʹଧͬͯΔ, ΦΦλχαϯͱλΠϓҧ͏ͷʹ🤔 
 ※2ਓ͸ຊྥଧͱೋྥଧͷ਺ʹ͕ࠩ͋Γ·͢ʢΞΫʔχϟ͸ೋྥଧଟ͍ʣ

Slide 46

Slide 46 text

ΦΦλχαϯͱಉੈ୅Ͱࠓγʔζϯϝδϟʔʹ౉ͬͨਓ… ͱ͍͑͹ʂʁ

Slide 47

Slide 47 text

౻࿘৾ଠ࿠౤खͷલ൒ઓ. • ౰ॳ͸ઌൃʢ4ࢼ߹ʣ -> Ϙʔϧͷίϯτϩʔϧ͕ΞϨͰதܧ͗ʹ഑ஔస׵ 
 ※ͨͩͨ͠·ʹઌൃ༗Γʢ1-2Πχϯά౤͛Δઌൃ, ΦʔϓφʔͱݺͿʣ • ੒੷͕ඇৗʹߥΕ͍ͯΔʢલ൒ઓ5উ7ഊ ๷ޚ཰9.00ʣ͕࣮͸ঃʑʹվળ. • 4݄ʢ6ࢼ߹ʣ: 0উ4ഊʢ݄ؒʣ๷ޚ཰13.00 • 5݄ʢ11ࢼ߹ʣ: 2উ1ഊʢ݄ؒʣ๷ޚ཰10.50 • 6݄ʢ9ࢼ߹ʣ: 1উ2ഊʢ݄ؒʣ๷ޚ཰4.35 • 7݄ʢ5ࢼ߹ʣ: 2উ0ഊʢ݄ؒʣ๷ޚ཰0.00←ࠓ͜͜ • ঃʑʹྑ͘ͳͬͨͷͬͯԿ͕ى͖ͨͷ͔ؾʹͳΓ·ͤΜ͔?

Slide 48

Slide 48 text

ʲ౴ʳ੒੷҆ఆ࢝͠Ί͙ͨΒ͍͔ΒSweeper͕૿͑ͨʢ&ٿ଎͕ӈݞ্͕Γʣ. 
 ੒੷ͱͷؔ܎͸ṖͰ͕͢স, ͔֬Β͍͠มԽ͸ͦͷลͰͨ͠.

Slide 49

Slide 49 text

݁ͼ

Slide 50

Slide 50 text

ʲ࠶ܝʳࠓ໷ͷςʔϚʮࢲͷਪ͠׆ʯ • Pythonͱ͸΋͏10೥Ҏ্ͷ͓෇͖߹͍Ͱ͢, ΋͸΍૬๮. 
 ※࠷ۙ͸Go΍TypeScriptͱ΋஥ྑ͍ͯ͘͠·͢. • Ϋϥ΢υαʔϏε, ಛʹGoogle Cloud͸ެࢲڞ͓ੈ࿩ʹͳͬͯ·͢. 
 ※ݱ࣮ͷ࢓ࣄ΍ͪΐͬͱͨ͠झຯͰ͸AWS΋࢖͍·͢. • ਎ମೳྗ͕ૉ੖Β͍͠໺ٿબख͕޷͖Ͱ͢. 
 ೔ຊͩͱສ೾தਖ਼ʢ೔ຊϋϜʣ, ϝδϟʔ͸ΦΦλχαϯଞͨ͘͞Μ.

Slide 51

Slide 51 text

ࠓ೔ͷ࿩Λཁ໿͢Δͱ… • ϑϧϚωʔδυ͔ͭαʔόϨεͳΫϥ΢υ͚ͩͰσʔλج൫͸࡞ΕΔ. 
 ݸਓతʹ͸Google Cloudਪ͠Ͱ͢ʢ໪࿦, ଞͷΫϥ΢υͰ΋Ͱ͖·͢ʣ. • Կ͔΍ΔΜͩͬͨΒPythonͰ͍͍Μ͡Όͳ͍ΜͰ͔͢Ͷʢࡶʣ. 
 ແ೉ʹԿͰ΋Ͱ͖·͢…͕৔߹ʹΑͬͯGoͱ͔TypeScript΋ྑ͖. • ਎ମೳྗ͓Խ͚͸໺ٿΛ΋ͬͱ໘ന͘͢Δʢਅإʣ. 
 ΞΫʔχϟͷҒۀͱ, ౻࿘͞ΜͷࠓޙʢSweeperʹཔΔͷ͔ʣʹظ଴.

Slide 52

Slide 52 text

͓࢓ࣄʢۀ຿ʣͰࢀߟʹ͠Α͏ͱࢥͬͨํ΁ • ࠓճ঺հͨ͠΍Γํɾߏ੒͸ઈରతͳճ౴ɾϕετϓϥΫςΟεͰ͸ͳ͍Ͱ͢. 
 ྫ͑͹αʔόϨεɾΞʔΩςΫνϟʹ͢΂͖/͢΂͖͡Όͳ͍ঢ়گ͸࣮֬ʹଘࡏ͠·͢. • ͜ͷ࿩͸ࢲʢshinyorkeʣ͕΍Γ͍ͨࣄ, ͍͍ͱࢥͬͯΔࣄʢ&৮Γ͍ͨϞϊʣΛ 
 ٧ΊࠐΜͰ࡞ͬͨ, ࣗ෼͕΍Γ͍ͨࣄͷूେ੒Ͱ, ͋͘·Ͱղͷग़͠ํͷҰͭͰ͢. • ྫ͑͹, αʔόϨεʹ߆Βͳ͍΍ΓํͩͱʮGKEΫϥελཱͯͯͦ͜Ͱಈ͔͢ʯͰऴΘΔ. 
 ͜Ε΋ཱ೿ͳղ౴ͩͬͨΓ͠·͢, ϝϦσϝ࣍ୈͰʢK8sΛѻ͏ͷ͸ͦΕͳΓʹେมͰ͕͢ʣ. • Infrastructure as CodeͰ͖ͯͳ͍, ςετίʔυ଍Γͳ͍etc…࣮͸՝୊ࢁੵΈ. • ίϯςΩετͷཧղ͕த్൒୺ͳ··ਅࣅ͢Δͱരࢮ͠·͢, ਅࣅ͢ΔͳΒࣗݾ੹೚Ͱ. 
 ※ߏ੒ɾࢹ఺తʹ͸৽نࣄۀ΍γϦʔζB͘Β͍ͷϕϯνϟʔͷγεςϜʹ͸Ԡ༻Մೳͳఔ౓ʹ͸࢖͑·͢.

Slide 53

Slide 53 text

Python࢖͍ͷօ͞·΁. • Pythonʢ΋͘͠͸ΤϯδχΞϦϯάʣΛ޷͖ʹͳΓ, 
 ҙࢤΛ࣋ͬͯԿ͔Λ΍Γ͖Δ, తͳʮҰ్ʹͳΕΔ໨ඪʯΛݟ͚ͭΔͱྑ͖. • ࢲ͸PythonͱΫϥ΢υ, ໺ٿ͕޷͖Ͱެࢲڞ৭ʑ΍͖ͬͯͨ݁Ռ, 
 ٕज़΋ଞͷϞϊ΋ຏ͔Εͯ, ࣗ෼͕ཧ૝ͱ͢ΔΩϟϦΞΛาΜͰ͍·͢. • ΤϯδχΞϦϯάͳʮਪ͠׆ʯ͸ΤϯδχΞɾϏδωεύʔιϯͱͯ͠, 
 ࣗ෼ͷਓੜͱΩϟϦΞΛ๛͔ʹ͢Δ΋ͷͩͱࢥͬͯ·͢ʂ΍͍ͬͯ͜͏ͥ🤛

Slide 54

Slide 54 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠⽁ @shinyorke