Slide 1

Slide 1 text

όονΛ࡞Βͳ͖Ό ͱͳͬͨͱ͖ʹߟ͑Δ͜ͱ JJUG CCC 2024 Spring @irof

Slide 2

Slide 2 text

͓͠ͳ͕͖ • όονͬͯʁ • όονͱWebAPI • όονղମ • όονΛ࡞Βͳ͖Όͱͳͬͨͱ͖ʹߟ͑Δ͜ͱ ʻຊηογϣϯͷझࢫʼ NO: όονΛ࡞Βͳ͖ΌˠͲ͏࡞ͬͨΒ͍͍ΜͩΖ͏ʁ YES: όονΛ࡞Βͳ͖Όˠ΄Μͱʹʁ

Slide 3

Slide 3 text

όονͬͯʁ

Slide 4

Slide 4 text

όονʢbatchʣͷҙຯ MacʹೖͬͯΔ΢ΟζμϜӳ࿨ࣙయ MacʹೖͬͯΔεʔύʔେࣙྛ

Slide 5

Slide 5 text

• ࣙॻతʹ͸ʮҰଋʯʮҰմʯͰɺෳ਺Λ·ͱΊͨ΋ͷɻ • Ұൠੈքతʹ͸2ݸҎ্ͷΑ͏ͳؾ͸͢Δ͚Ͳɺίϯϐϡʔλతʹ͸ 0..n ͔ͳɻ • ͱʹ͔͘ʮ·ͱ·ͬͨͻͱͭʯͰ͋Δ͜ͱɻ • ͜͜͸ಛʹ໰୊ͳ͍ͱࢥ͏ɻ MacʹೖͬͯΔεʔύʔେࣙྛ

Slide 6

Slide 6 text

• ʮόονʯ͸ʮ·ͱ·ͬͨͻͱͭʯͩͬͨ • ʮόονॲཧʯͩͱʮҰఆྔ͋Δ͍͸Ұఆ࣌ؒ͝ͱʯͱ͔ݴ͍࢝ΊΔɻ • ʮ͝ͱʯʁԿ౓΋࣮ߦ͞ΕΔͷ͕҉໧ͷલఏʹͳ͍ͬͯΔʁ • ࣮ߦܖػ΋ʮόονॲཧʯʹؚΊΔͷʁ • ͳ͔ͳ͔Ṗɻ MacʹೖͬͯΔεʔύʔେࣙྛ

Slide 7

Slide 7 text

͜ͷࣙॻతʹ͸͜Ε͕ରͬΆ͍ MacʹೖͬͯΔεʔύʔେࣙྛ

Slide 8

Slide 8 text

• ʮόονॲཧʯͱʮϦΞϧλΠϜॲཧʯʁ • ʮόονʯͱʮϦΞϧʯ͸ର͡Όͳ͍ΑͶ • ϦΞϧͷର͸όʔνϟϧͩΖ͠ɻ • ͳ͓ʮόʔνϟϧεϨουʯʹର͢Δͷ͸ʮϓϥοτϑΥʔϜεϨουʯ • ΦϑϥΠϯॲཧͱΦϯϥΠϯॲཧͬͯݴͬͨΓ΋͢Δͳɻ • ඇಉظॲཧͱಉظॲཧ΋ࣅͯͦ͏ɻࣅͯͦ͏͚ͩͲͪΐͬͱҧ͍ͦ͏ɻ ·͍͍͊΍

Slide 9

Slide 9 text

JavaͷੈքͰग़ͯ͘Δόονͷྫ • java.sql.Statement#executeBatch() • ෳ਺ͷSQLΛҰ౓ʹ࣮ߦ͢Δ΋ͷ • ໊લ͔ΒʮόονʯͰ࢖͏΋ͷͱೝࣝ͞Ε͍ͯΔ͜ͱ΋͠͹͠͹ • ʮόονʯͰ࢖͏΋ͷͰ͸ͳͯͩ͘ͳ……ͬͯ࿩Λͨ·ʹ͢Δ ʢຊηογϣϯਃ͠༁ఔ౓ͷJavaཁૉʣ

Slide 10

Slide 10 text

͍ͦ΍͜Μͳݴ༿΋͋Δ • όον • λεΫ • δϣϒ • ͜ΕΒ͕ಉ͡΋ͷΛࢦͯ͠Δ͜ͱ΋͠͹͠͹͋Δ • Ͳ͏ҧ͏ͷ͔ฉ͍ͯΈΑ͏ɺAIʹɻ

Slide 11

Slide 11 text

JetBrains AI • όον • όονॲཧ͸ɺҰ࿈ͷδϣϒΛࣗಈԽ͢ΔҰछͷॲཧํ๏Ͱ͢ɻҰ౓ʹଟ਺ͷδϣϒΛ ࣮ߦ͠ɺਓؒͷհೖΛ࠷খݶʹ཈͑·͢ɻόονॲཧ͸ɺΤϯυϢʔβʔͷૢ࡞ͳ͠Ͱ ఆظతʹ·ͨ͸༧ఆ͞Εͨ࣌ؒʹߦΘΕΔ܏޲͕͋Γ·͢ɻ • δϣϒ • δϣϒͱ͸ɺಛఆͷλεΫ·ͨ͸Ұ࿈ͷλεΫΛࢦ͢Ұൠతͳ༻ޠͰ͢ɻγεςϜͷί ϯςΩετʹґଘ͠ɺಛఆͷϓϩηε·ͨ͸όονॲཧͷҰ෦Λࢦ͢͜ͱ͕͋Γ·͢ɻ • λεΫ • λεΫ͸ɺಛఆͷδϣϒΛ׬ྃ͢ΔͨΊʹ࣮ߦ͢Δඞཁͷ͋Δݸʑͷ࡞ۀΛࢦ͠·͢ɻ ͦΕ͸ಛఆͷ݁ՌΛୡ੒͢ΔͨΊͷҰ࿈ͷૢ࡞͔΋͠Ε·ͤΜɻ

Slide 12

Slide 12 text

ChatGPT • όον (Batch) • ఆٛ: ෳ਺ͷ࡞ۀ΍ॲཧΛҰ ׅ࣮ͯ͠ߦ͢ΔํࣜͰ͢ɻ • ಛ௃: Ϣʔβʔͷհೖͳ͠ ʹɺࣗಈతʹҰ࿈ͷ࡞ۀ͕ॱ ࣮࣍ߦ͞ΕΔɻ • ࢖༻ྫ: σʔλϕʔεͷόο ΫΞοϓɺఆظతͳϨϙʔτ ੜ੒ɺόονॲཧγεςϜɻ • ࢖͍ํ: όονॲཧ͸ɺεέ δϡʔϧʹج͍ͮͯࣗಈ࣮ߦ ͞ΕΔ͜ͱ͕ଟ͘ɺ໷ؒͳͲ ඇϐʔΫ࣌ʹ࣮ߦ͞ΕΔ͜ͱ ͕ଟ͍Ͱ͢ɻ • δϣϒ (Job) • ఆٛ: ίϯϐϡʔλγεςϜ ʹ͓͚ΔҰ࿈ͷ໋ྩ΍ϓϩά ϥϜͷ࣮ߦ୯ҐͰ͢ɻ • ಛ௃: δϣϒ͸ෳ਺ͷλεΫ ΍εςοϓ͔Βߏ੒͞ΕΔ͜ ͱ͕ଟ͍ɻ • ࢖༻ྫ: όονॲཧ಺ͷݸʑ ͷ࡞ۀɺσʔλ෼ੳδϣϒɺ Ϗϧυδϣϒɻ • ࢖͍ํ: δϣϒ͸ɺόονॲ ཧͷதͷҰ෦෼ͱͯ͠ѻΘΕ Δ͜ͱ͕ଟ͘ɺδϣϒεέ δϡʔϥͳͲͷγεςϜʹ Αͬͯ؅ཧ͞ΕΔ͜ͱ͕ଟ͍ Ͱ͢ɻ • λεΫ (Task) • ఆٛ: ࣮ߦ͢ΔͨΊͷݸʑͷ ΞΫςΟϏςΟ΍࡞ۀͷ࠷খ ୯ҐͰ͢ɻ • ಛ௃: λεΫ͸ܰྔͰ͋Γɺ ௨ৗ͸୹࣌ؒͰ׬ྃ͢Δɻ • ࢖༻ྫ: ΦϖϨʔςΟϯάγ εςϜͷλεΫ؅ཧɺ෼ࢄγ εςϜͷλεΫεέδϡʔϦ ϯάɻ • ࢖͍ํ: λεΫ͸ɺෳ਺ͷλ εΫ͕ฒߦ࣮ͯ͠ߦ͞ΕΔ͜ ͱ͕ଟ͘ɺεϨου΍ϓϩη εʹΑ࣮ͬͯߦ͞ΕΔ͜ͱ͕ ͋Γ·͢ɻ

Slide 13

Slide 13 text

ͱΓ͋͑ͣ͜͏ݴ͏ؔ܎ͬͯ͞ όον └── δϣϒ └── λεΫ ΁ʔɻ·͊ͦΜͳײ͔͡ͳ͊ɻ

Slide 14

Slide 14 text

ͪͳΈʹjBatch(JSR-352)ͱSpringBatch • Batch/Job/Taskͷ֊૚͸ಉ͡ • όονΞϓϦέʔγϣϯʹෳ਺ͷJobΛ࣋ͭ • Job͸ෳ਺ͷStepΛ࣋ͭ • Stepͷύλʔϯͱͯ͠ • Chunk, Batchlet(jBatch) • Chunk, Tasklet(SpringBatch) • ୯७ͳStepΛλεΫͱݺͿײ͡ • ·͊ಉ͡ײ͡ɻײ͡ɻ JSR 352ͷਤ

Slide 15

Slide 15 text

όονɺδϣϒɺλεΫ • Batch/Job/Taskͷ֊૚͕ҰൠతͬΆ͍Μ͚ͩͲ…… • ʮόονδϣϒʯͱݴͬͨΓ͢Δɻόονͳͷδϣϒͳͷɻ • ʮλεΫΛ࣮ߦ͢Δʯͬͯݴͬͨ࣌ʹόονͷ֓೦͕ͳ͔ͬͨΓ͢Δɻ • ֊૚ߏ଄ͳΜͯͳ͔ͬͨɻ • ༳Ε༳ΕɻͦΜͳ΋ΜͩΑͶɻ • ແཧʹೝࣝ߹Θͤͯ΋࿑ྗʹݟ߹͏ؾ͸ਖ਼௚͠ͳ͍ɻ

Slide 16

Slide 16 text

ੈͷதʹ͸͍ΖΜͳόον͕͋Δͳ͊ͱ • ೔࣍΍݄࣍ͷചΓ্͛Λूܭ͢Δ΋ͷ • ாථΛग़ྗ͢Δ΋ͷ • DBͷόοΫΞοϓΛͱΔ΋ͷ • Ϣʔβʔ΁ͷϝʔϧૹ৴ • σʔλͷิਖ਼Λߦ͏΋ͷ • ʢ͓޷͖ͳόονΛࢥ͍ු͔΂͍ͯͩ͘͞ʣ

Slide 17

Slide 17 text

όονͬͯʁɿ·ͱΊʁ • ҰׅॲཧͰॲཧ͢Δ΋ͷ • ෳ਺ͷδϣϒ΍λεΫ͕࣮ߦ͞Εɺ్தͰϢʔβʔͷૢ࡞ΛٻΊͳ͍ • ఆظతʹ࣮ߦ͞ΕΔΑ͏ʹεέδϡʔϦϯά͞ΕΔ • ͋ͨΓ͕όονͷಛ௃ͷީิ͔ͳʁ • ·ͱ·Μͳ͍Ͷɻ

Slide 18

Slide 18 text

όονͱWebAPI ͋Δ͍͸ଞͷॲཧܗଶ

Slide 19

Slide 19 text

ʮόονͱWebAPIʯͬͯ෼͚ํ͸ඍົ όονॲཧ ϦΞϧλΠϜॲཧ ΦϑϥΠϯॲཧ ΦϯϥΠϯॲཧ ඇಉظॲཧ ಉظॲཧ Ұׅॲཧ ஞ࣍ॲཧ δϣϒ τϥϯβΫγϣϯ ... ... ಉ͡΋ͷΛࢦͯͨ͠Γɺҧ͏΋ͷΛࢦͯͨ͠Γ͢Δɻ

Slide 20

Slide 20 text

• ͜ͷϞσϧ͸߹͍ͬͯΔΜ͚ͩΕͲɺؒҧͬͯ΋͍Δɻ • ͱ͍͏͔શͯͷϞσϧ͸߹͍ͬͯΔؒ͠ҧ͍ͬͯΔɻ ͪΐͬͱ୤ઢɿʮAͱͦΕҎ֎ʯͱ͍͏ߟ͑ํ ੈքͷશͯ όον ϦΞϧλΠϜʢόονҎ֎ʣ ੈքͷશͯ ϦΞϧλΠϜ όονʢϦΞϧλΠϜҎ֎ʣ

Slide 21

Slide 21 text

• ΄ͱΜͲશͯͷॲཧ͕ʮϦΞϧλΠϜʯͰɺิॿతʹʮόονʯ͕͋Δ৔߹ɻ • ʮϦΞϧλΠϜͰͳ͍΋ͷʯ͸͢΂ͯʮόονʯͱݺͿɻ • ͦΕ͕ʮόονʯͰͳͯ͘΋ɻ • όονʹدͤ͸͢Δɻ • ؅ཧ୯Ґͱͯ͠ͷݺͼํͰଟ͘ݟΒΕΔɻ ߹͍ͬͯΔจ຺ ੈքͷશͯ όονʢݺশʣ ϦΞϧλΠϜ

Slide 22

Slide 22 text

• ࿩Λ͢Δʹ͋ͨͬͯʮόονʯ͕ᐆດͳͷͰɺόονͱόονҎ֎ͷϞσϧͰڥքΛ ୳͍͖ͬͯ·͢ɻ όονͷڥքΛ୳ΔͨΊʹ෼͚ͯΈΔ ੈքͷશͯ όονʁҎ֎ ੈքͷશͯ όονʁҎ֎ όονʁ όονʁ ௥͍ग़ͨ͠Γ ઢҾ͖Λͨ͠Γ

Slide 23

Slide 23 text

งғؾͰɿόονͬΆ͍ॲཧ • Ұ౓ʹଟ͘ͷσʔλΛॲཧ͢Δ • Ұ࿈ͷॲཧͷͳ͔Ͱਓؒͷ൑அΛڼ͙ඞཁ͕ͳ͍ • ࣮ߦ͙ͯ݁͢͠Ռ͕෼͔ΔΑ͏ͳଈ࣌ੑΛٻΊͳ͍ • ॲཧ͕࣌ؒ௕͍ • τϥϯβΫγϣϯͷACID͕ཁٻ͞Ε͕ͪ • ίϯϐϡʔλϦιʔεΛͨ͘͞Μ࢖༻͢Δ • ఆظతʹ࣮ߦ͞ΕΔ • ໷ؒʹ࣮ߦ͞ΕΔ

Slide 24

Slide 24 text

งғؾͰɿόονͬΆ͘ͳ͍ॲཧ • ଈ࣌Ԡ౴͕ඞཁ • Ϣʔβʔͷର࿩తͳೖྗ͕ඞཁ • ϦΞϧλΠϜͰ݁Ռ͕൓ө͞ΕΔ

Slide 25

Slide 25 text

໨ඪɿόονʹ͢Δ͔Λద੾ʹ൑அ͢Δ • Ͱ͖ΔΑ͏ʹͳΓ͍ͨΑͶɻ • ద੾ͬͯͳΜ΍ͷʁͬͯɻ • ʮଈ࣌Ϩεϙϯε͕ඞཁͳ΋ͷ΍ର࿩తͳ΋ͷҎ֎͸શ෦όονʯͬͯೝࣝͰ΋γες Ϝ͸࡞ΕͪΌ͏͠ɺͦΕͬΆ͘΋ಈ͍ͨΓ͢Δɻ • ʮͬΆ͍ʯͱ͔ʮͬΆ͘ͳ͍ʯͱ͔ײ֮࿦͸ྲྀੴʹڥքઢ͕ΏΔ;Θ͗͢ɻ

Slide 26

Slide 26 text

ਅ໘໨ʹߟྀ͢ΔͳΒ͜ͷลʁ • ଈ࣌ੑ͕ඞཁ͔൱͔ • ॲཧର৅ͷσʔλϘϦϡʔϜ͕Ͳͷఔ౓͔ • Ϣʔβʔૢ࡞͕ॲཧதʹඞཁ͔൱͔ • ॲཧதͷ৘ใΛݟͯϢʔβʔͷৼΔ෣͍͕มΘΔ͔൱͔ • γεςϜϦιʔεͷ࢖༻۩߹ • ͲͷΑ͏ͳΤϥʔϋϯυϦϯά͕Ͱ͖͏Δ͔ • ……

Slide 27

Slide 27 text

લஈͷόονͷಛ௃ͷީิΛݟͯΈΔ • ҰׅͰॲཧ͢Δ • ॲཧͷ్தͰϢʔβʔͷೖྗ͕ཁΒͳ͍ • εέδϡʔϧʹै࣮ͬͯߦ͞ΕΔ

Slide 28

Slide 28 text

લஈͷόονͷಛ௃ͷީิΛݟͯΈΔ • ҰׅͰॲཧ͢Δ • ؒҧ͍ͳ͘όονɻҰׅͰॲཧ͠ͳ͚Ε͹ͳΒͳ͍ࣄ৘͕͋Δ͔Βόονɻ • ॲཧͷ్தͰϢʔβʔͷೖྗ͕ཁΒͳ͍ • ඞཁʹͳͬͨΒόονͰ͸ͳ͍ɻҰํͰෆཁʹόονͱ͸ݴ͑ͳ͍ɻ • εέδϡʔϧʹै࣮ͬͯߦ͞ΕΔ • εέδϡʔϧ͸ඞਢͰ͸ͳ͍ɻ࣮ߦ͍ͨ͠ͱ͖ʹ࣮ߦͯ͠΋όονɻ

Slide 29

Slide 29 text

લஈͷόονͷಛ௃ͷީิΛݟͯΈΔ • ҰׅͰॲཧ͢Δ • ؒҧ͍ͳ͘όονɻҰׅͰॲཧ͠ͳ͚Ε͹ͳΒͳ͍ࣄ৘͕͋Δ͔Βόονɻ • ॲཧͷ్தͰϢʔβʔͷೖྗ͕ཁΒͳ͍ • ඞཁʹͳͬͨΒόονͰ͸ͳ͍ɻҰํͰෆཁʹόονͱ͸ݴ͑ͳ͍ɻ • εέδϡʔϧʹै࣮ͬͯߦ͞ΕΔ • εέδϡʔϧ͸ඞਢͰ͸ͳ͍ɻ࣮ߦ͍ͨ͠ͱ͖ʹ࣮ߦͯ͠΋όονɻ όονͷόονͨΔಛ௃

Slide 30

Slide 30 text

ͦΕ͸ͦΕͱͯ͠όον͕޷·ΕΔഎܠ • όον͸ઐ༻ͷ࣮ߦ؀ڥ͕༻ҙ͞ΕΔ • ίϯϐϡʔλϦιʔε͕ઐ༗Ͱ͖Δ • ॲཧର৅͕େ͖͍ͨΊ౤ࢿରޮՌ͕େ͖͍ • ଈ࣌ॲཧ͕೉͍͠΋ͷͷԡ͠ࠐΈઌͱͯ͠ύλʔϯԽ͍ͯ͠Δ • όον͋Γ͖Ͱߟ͑ΒΕ͍ͯΔ • ͱ͔ʁଞ΋৭ʑ͋Δͱ͸ࢥ͏ɻ

Slide 31

Slide 31 text

όονͱWebAPIɿ·ͱΊ • όονͱόονҎ֎Ͱฒ΂ͯΈͨ • ͜Ε͚ͩ͡Ό·ͩόονͷڥք͕ఆ·Βͳ͍ • ͱΓ͋͑ͣʮҰׅॲཧʯΛखֻ͔ΓʹόονͷղମʹऔΓ૊ΜͰΈΔ

Slide 32

Slide 32 text

όονղମ

Slide 33

Slide 33 text

݅਺͕ଟͯ͘ॲཧ͕࣌ؒ௕͍͔Βόον • ݅਺͕ଟͯ͘ॲཧ͕࣌ؒ௕͍΋ͷ͸όονͳΜ͚ͩ Ͳɺ݅਺͕ݮͬͨΓॲཧ͕࣌ؒ୹͘ͳͬͨΒόον ͡Όͳ͘ͳΔ͔ͬͯݴΘΕΔͱٙ໰͕͋Δɻ • ͋ͱʮόονͱWebAPIʯΈ͍ͨͳ෼͚ํΛ͍ͯ͠Δ ͷʹ৮ΕΔػձ͕͋ͬͯɺͦͷ࣌ʹ໱ʑͱߟ͑ͯͨͷ ͕͜Εɻ • ղମͨ͠Βਖ਼ମݟ͑ͯ͘ΔΜ͡Όͳ͍͔ͳʁͬͯɻ • ʮΘ͚ΔͱΘ͔Δʯ͸݁ߏΑ͋͘Δɻ

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

ͱݴ͏͜ͱͰ͜ͷ࿩Ͱ͢ɻ ʢಡΈ͔ͨͬͨΒݕࡧͯ͠Έͯʣ

Slide 36

Slide 36 text

• ͢΂ͯͷඇWebAPIͷॲཧΛόονͱݺͿͱγεςϜઃܭ͕ෳࡶʹͳΔɻ • όονॲཧͱεέδϡʔϧλεΫΛ۠ผ͢Δɻ • όονॲཧ: Ұׅॲཧʹ͓͚ΔτϥϯβΫγϣϯ؅ཧ΍࠶࣮ߦͳͲෳࡶͳ໰୊Λѻ͏ɻ • εέδϡʔϧλεΫ: ఆظతʹ࣮ߦ͞ΕΔॲཧɻݸผॲཧ΍୯७ͳ܁Γฦ͠ɻ • όονΛॲཧͱτϦΨʔʢWebAPIɺεέδϡʔϧλεΫɺඇಉظλεΫʣͰ෼཭͢ Δɻ • όονॲཧ͸ಛผͳઃܭ͕ඞཁ͕ͩɺεέδϡʔϧλεΫ΍WebAPIͰ୅ସͰ͖Δ΋ͷ ͸γϯϓϧʹઃܭ͢Δɻ • όονॲཧʹཔΓ͗͢ͳ͍ɻ

Slide 37

Slide 37 text

όονͷղମ όον

Slide 38

Slide 38 text

όονΛτϦΨʔͱॲཧʹ෼͚Δ όον τϦΨʔ ॲཧ

Slide 39

Slide 39 text

τϦΨʔΛ෼͚Δ εέδϡʔϥʔ τϦΨʔ ॲཧ Πϕϯτ ϚχϡΞϧ

Slide 40

Slide 40 text

τϦΨʔ • εέδϡʔϥʔ • ʮεέδϡʔϧͰಈ͘΋ͷ͸όονʯͰ͸ͳ͍ɻ͕͜ͷηογϣϯͷझࢫͰ͢ɻ • Πϕϯτ • ϑΝΠϧ͕ஔ͔ΕͨͳͲͷΠϕϯτͰಈ͘όον΋ଟ͋͘Δɻ • ࣮ߦ͢Δ৚͕݅੔ͬͨΒಈ͘ͱ͍͏΋ͷɻεέδϡʔϧ΋Πϕϯτͱ͍͑͹ΠϕϯτͳΜ͚ͩͲɺผ ࿮Ͱѻ͏ɻ • ϚχϡΞϧ • खಈ࣮ߦ͞ΕΔόονɻ݁ՌΛ଴ͭ৔߹͕ଟ͍ɻಉظͰ଴ͭ͜ͱ΋͋Ε͹ϙʔϦϯάͳͲͰ݁ՌΛ֬ ೝ͢Δ৔߹΋ɻ • εέδϡʔϧ͞Ε͍ͯΔόονͷखಈ࠶࣮ߦ͸͜͜ɻ ͜Ε͚͕ͩ෼͚ํͰ͸ͳ͍ɻଞͷ෼͚ํ΋͋ΔͩΖ͏ ͠ɺෆ଍΋͋Δͱࢥ͏ɻྫ͘Β͍ʹଊ͍͑ͯͩ͘͞ɻ

Slide 41

Slide 41 text

ॲཧΛ෼͚Δ εέδϡʔϥʔ Ұׅॲཧ τϦΨʔ ॲཧ Πϕϯτ ϚχϡΞϧ ݸผॲཧ

Slide 42

Slide 42 text

ॲཧ • Ұׅॲཧ • ܈Λ૬खʹ͢Δ΋ͷɻूܭͱ͔ɻ • όονग़ͳ͚Ε͹ͳΒͳ͍΋ͷɻ • ݸผॲཧ • Ұͭͣͭॱ൪ʹॲཧ͢Δ΋ͷ΋͋Ε͹ɺฒྻʹॲཧ͢Δ৔߹΋͋Δ͚ΕͲɺॲཧͷຊ ମͱͯ͠͸ʮݸʯΛ૬खʹ͢Δ΋ͷɻ • ॲཧޮ཰ͷͨΊʹόονͱ͍͏ܗଶΛͱ͍ͬͯΔ΋ͷ΋͋Δɻ ͜Ε͚͕ͩ෼͚ํͰ͸ͳ͍ɻଞͷ෼͚ํ΋͋ΔͩΖ͏ ͠ɺෆ଍΋͋Δͱࢥ͏ɻྫ͘Β͍ʹଊ͍͑ͯͩ͘͞ɻ

Slide 43

Slide 43 text

ʮόονʯͱ͍͏մ͸͜ΕΒ͕͜Μ͕Β͕͍ͬͯΔ εέδϡʔϥʔ Ұׅॲཧ Πϕϯτ ϚχϡΞϧ ݸผॲཧ όον ݴ༿Ͱͷཁૉ෼ղɻ1ͭͷόονʹશ෦ೖͬͯΔΘ͚Ͱ͸ͳ͍͔ΒͳΜ͔ҧ͏ͳ͊ͱࢥ͍ͭͭɻ

Slide 44

Slide 44 text

͜ͷ෼͚ํͩͱ3*2Ͱ6ύλʔϯ τϦΨʔ ॲཧ୯Ґ όονʁ εέδϡʔϥʔ Ұׅॲཧ Y Πϕϯτ Ұׅॲཧ Y ϚχϡΞϧ Ұׅॲཧ Y εέδϡʔϥʔ ݸผॲཧ N Πϕϯτ ݸผॲཧ N ϚχϡΞϧ ݸผॲཧ N

Slide 45

Slide 45 text

όονʗඇόον • Ұׅॲཧ͕ඞཁͳ΋ͷ͸όονͱ͔ͯͬ͠͠Γόον͢Δ • τϦΨʔ΋ઃܭʹ૊ΈࠐΜͰ͠·͏ • Ұׅॲཧ͕ඞਢͰͳ͍΋ͷ͸όονʹ͠ͳ͍ • τϦΨʔͱݸผॲཧΛ໌֬ʹ෼͚ɺτϦΨʔʹΑΒͳ͍Α͏ʹ࡞Δ • τϦΨʔʹґଘͨ͠࡞ΓΛ͠ͳ͍͜ͱͰɺόονΏ͑ͷ໰୊ͱઓΘͳͯ͘ྑ͘ͳΔ

Slide 46

Slide 46 text

͜Εͩͱͪΐͬͱ෺଍Γͳ͍ • όονͱඇόονͷڥքઢΛʮҰׅॲཧ͔൱͔ʯͰҾ͘͜ͱ͸Ͱ͖ͦ͏ • ͱ͸ݴ͑ࠓͷʮόονʯͷմͷ··෼ྨͯ͠΋ʮόονʯʹண஍ͯ͠͠·͏ • ʮҰׅॲཧʯ͕͢͜͠Ͱ΋͋ͬͨΒʮόονʯʹͳΔ • ʮҰׅॲཧʯΛݟ௚͢ඞཁ͕͋Δ

Slide 47

Slide 47 text

͜Ε͕Ͳ͏ͯ͠΋෼ղͰ͖ͳ͍ͳΒ·ͱΊͯόονͩΖ͚Ͳ

Slide 48

Slide 48 text

͜Ε͕Ͳ͏ͯ͠΋෼ղͰ͖ͳ͍ͳΒ·ͱΊͯόονͩΖ͚Ͳ த਎͕͜͏ͱ͔ ͜Μͳײ͡ͱ͔

Slide 49

Slide 49 text

͜ͷ΁Μ͸όον͡Όͳ͍͔΋͠Εͳ͍

Slide 50

Slide 50 text

ղମͯ͠੔ཧ͢Δ • Ͳ͏ͯ͠΋ʮҰׅॲཧʯ͠ͳ͚Ε͹ͳΒͳ͍ͱ͜ΖҎ֎͸ʮόονʯͱͯ͠͸ѻΘͳ͍ • ʮҰׅॲཧʯ͕ඞཁʹͯ͠΋ɺͦ͜Ͱѻ͏΋ͷΛՄೳͳݶΓݮΒ͢ • ʮҰׅॲཧʯͷจ຺ʹෳࡶͳۀ຿͕ೖΔͷΛۃྗආ͚Δ • ۀ຿తͳෳࡶੑͱγεςϜతͳෳࡶੑΛࠞͥͳ͍ • ࠞ͟Δ΋ͷ͸࢓ํͳ͍ͷͰɺͲ͏ͯ͠΋෼͚Εͳ͍ͳΒෲΛׅΔ

Slide 51

Slide 51 text

୤όονͷѻ͍ํ ʢܰ͘ʣ

Slide 52

Slide 52 text

͜ͷ෼͚ํͩͱ3*2=6ύλʔϯͰ τϦΨʔ ॲཧ୯Ґ όονʁ εέδϡʔϥʔ Ұׅॲཧ Y Πϕϯτ Ұׅॲཧ Y ϚχϡΞϧ Ұׅॲཧ Y εέδϡʔϥʔ ݸผॲཧ N Πϕϯτ ݸผॲཧ N ϚχϡΞϧ ݸผॲཧ N ͜ͷࢠͨͪ

Slide 53

Slide 53 text

εέδϡʔϥʔʴݸผ πΠʔτͰʮεέδϡʔϧλεΫʯͱݴ͍ͬͯͨ΋ͷ

Slide 54

Slide 54 text

εέδϡʔϥʔΛͲ͜Ͱ͔࣋ͭ • ΞϓϦέʔγϣϯ֎ • OSͷεέδϡʔϥʔͱ͔͋Δ͠ɺΫϥ΢υ؀ڥͰ΋৭ʑ༻ҙ͞ΕͯΔ • ͔ͦ͜ΒΞϓϦέʔγϣϯΛ͚ͭͭΕ͹͍͍ • ϓϩηεΛىಈ͢ΔΑΓɺWebAPIΛୟ͘ͷ͕औΓѻ͍΍͍͢ • ϚΠΫϩαʔϏεతͳͷ͕Ͱ͖ͨΒ͍͍Μ͚ͩͲɺJavaจ຺ͩͱ·ͩඍົ͡Όͳ͍͔ ͳͬͯࢥ͍ɻNative࣍ୈʁ • ΞϓϦέʔγϣϯ಺ • Քಇ͍ͯ͠ΔαʔόʔΞϓϦέʔγϣϯ͕͋ΔͳΒΞϓϦέʔγϣϯͰ࣋ͬͯ΋ɻ

Slide 55

Slide 55 text

ΞϓϦέʔγϣϯ಺εέδϡʔϥʔ • Springͩͱ @Scheduled ͱ͔࢖͏ͱ؆୯ʹεέδϡʔϥʔ͕࡞ΕΔɻ • ͚Ͳଟॏ࣮ߦ͸ߟྀ͠ͱ͖͍ͨ • ෳ਺αʔόʔ͕౰ͨΓલͳͷͰ୆਺෼࣮ߦ͞Εͯଟॏ࣮ߦ͞ΕͪΌ͏ɻଟॏ࣮ߦ͕ࠔ Βͳ͍ͳΒؾʹ͠ͳ͍͍ͯ͘ɻ • ࠔΔͳΒԿ͔͠Β੍ޚ͢ΔɻQuartz͋ͨΓͷఆ൪Ͱࡁ·ͤΒΕΔͷ͕޷·͍͠ɻ • ʮ1ίϯςφ͚ͩͰ @Scheduled ͕༗ޮʹͳΔΑ͏ʹʂʯΈ͍ͨͳ౒ྗͷํ޲͸શ෦Ͱ ಈ͔ͳ͍ͱ͔ࣄނͷݩɻશ෦Ͱಈ͍ͯ1୆Ҏ֎͸ۭৼΓͷํ͕޷·͍͠ɻ • αʔόʔ୆਺ݻఆͷ࣌୅ͳΒʮ1߸ػ͚ͩʯͱ͔Ͱ΋ྑ͔ͬͨΜ͚ͩͲͶɻ

Slide 56

Slide 56 text

εέδϡʔϧʴҰׅॲཧͷεέδϡʔϧλεΫԽ • ҰׅॲཧͰ΋ྔ͕͍ͨͨ͜͠ͱͳ͍ͳΒݕ౼ͯ͠ྑ͍ɻ • ྔ͕ࠓ͍ͨͨ͜͠ͱͳͯ͘΋૿͍͑ͯ͘΋ͷ͸஫ҙ͕ඞཁɻ • ରԠͰ͖ͳ͘ͳͬͨ࣌ʹʮεέδϡʔϧλεΫͰ͋Δ͜ͱʯʹґଘͪ͠Ό͍ͬͯΔ৔ ߹͕͋ͬͯม͑Δͷ͕೉͍͠৔߹΋͠͹͠͹ɻ • ྔ͕૿͍͑ͯ͘΋ͷͰɺྔʹΑͬͯॲཧ࣌ؒ΍Ϧιʔεফඅ͕૿େ͍ͯ͘͠΋ͷͰ͋Ε ͹ආ͚Δͷ͕ແ೉ͱࢥ͏ɻ

Slide 57

Slide 57 text

Πϕϯτʴݸผ

Slide 58

Slide 58 text

Πϕϯτʴݸผ • ॲཧ͢΂͖ΠϕϯτʹΑͬͯ͸ΠϕϯτʴҰׅॲཧʹ͋Θͤͯόονʹͯ͠͠·͏ͷ΋ ͋Γɻ • ͨͱ͑͹ϑΝΠϧड৴Ͱಛఆ੡඼ʹΛ࢖༻͍ͯ͠Δ৔߹ɺண৴ޙॲཧͷόϦΤʔγϣ ϯ͕૿͑Δͱ͔͸ݸਓతʹ͸ආ͚͍ͨɻ׳ΕͯΔͳΒ໰୊ͳ͍ͩΖ͚Ͳɻ • Πϕϯτ΋·ͪ·ͪͳΜ͚ͩͲɺϝοηʔδϯά΍ετϦʔϜΛѻ͑ΔΑ͏ʹͳΔͱ Ͱ͔͍ͬόονͰͳΜͱ͔͢ΔҎ֎ͷબ୒ࢶ͕૿͑ͯ͘Δɻͥͻಓ۩ശʹೖΕΑ͏ɻ • ؍ଌൣғͰ͸·ͩ·ͩ׳Ε͍ͯΔਓ͕ଟ͍ͱ͸ݴ͍೉͍ɻߟ͑ํࣗମ͸ੲ͔Β͋Δ͚ Ͳɺ࠷ۙʢʁʣҰؾʹ࣮༻తʹͳͬͨͳ͊ͱ͔ࢥͬͯΔɻ • ҰԠɺ͜ͷ෼ྨͩͱHTTPͳWebAPI΋HTTPϦΫΤετ͍ͬͯ͏ΠϕϯτΛτϦΨʔʹ ͨ͠ॲཧͩͬͨΓ͢Δɻ

Slide 59

Slide 59 text

ϚχϡΞϧʴݸผ

Slide 60

Slide 60 text

ϚχϡΞϧʴݸผ • Ͳ͏࡞ͬͯ΋ͦΜͳࠔΒͳ͍Ͱ͠ΐʢࡶ

Slide 61

Slide 61 text

όονࡅ͖γφϦΦ

Slide 62

Slide 62 text

• શϢʔβʔͷ৘ใΛߋ৽ͯ͠ாථΛग़ྗ͢Δɻ • SpringBatchͰ࡞Ζ͏ͱ͍ͯ͠Δɻ • ாථͷϑΥʔϚοτʹΑΔ͕ɺϓϨʔϯςΩετͳͲ௥ه͍͚ͯ͠Δ΋ͷͰͳ͚Ε͹༗ ޮͰ͸ͳ͍ɻࠓճͷʮாථग़ྗʯ͸௥هͰ͖ͳ͍΋ͷͩͬͨͱ͢Δɻ ͜Μͳ͹͕ͬͪඞཁΒ͍͠

Slide 63

Slide 63 text

ૉ௚ʹ΍ͬͨΒ͜Μͳײ͡ʁ

Slide 64

Slide 64 text

ૉ௚ʹ΍ͬͨΒ͜Μͳײ͡ʁ ChunkΛ࢖ͬͨҰׅߋ৽ TaskletΛ࢖ͬͨҰׅग़ྗ

Slide 65

Slide 65 text

ؾʹͳΔͱ͜Ζ • ʮόονΛ࡞Δʯ͋Γ͖ͩͱ͜͏ͳΔͷ͕ࣗવ • ͦͷৼΔ෣͍͕ݸਓͱͯ͠ѱ͍Θ͚Ͱ͸ͳ͍ • Ͱ΋ʮશ෦όονͰ΍Δඞཁ΋ͳ͍ʯΛߟ͑ΒΕΔ • ͱ͍͏͜ͱͰࡅ͍͍ͯΈ·͢

Slide 66

Slide 66 text

• ಺෦తʹ͸2ͭʹ෼͔ΕͯΔɻ • Ұ୴෼͚ͯΈΔɻ • લऀ͸ҰׅॲཧͬΆ͍͔Βόονʁ • ޙऀ͸Ұׅʹݟ͑Δ͚Ͳू߹ͱͯ͠ݸͷϫϯγϣοτͩͬͨΓ͢Δɻ • ͢ͺͬͱ2ͭʹ෼͚Δબ୒ࢶ΋͋Δɻ

Slide 67

Slide 67 text

• ʢ݅਺࣍ୈͰ͸͋Δ͕ʣޙऀͷாථग़ྗʹେ͖ͳίϯϐϡʔλϦιʔεΛ࢖༻͢Δͳ Βɺִ཭؀ڥͰ࣮ߦͰ͖Δ΋ͷɺಠཱϓϩηε΍ாථαʔόʔͷΑ͏ͳઐ༗؀ڥͷग़ྗ Λબ΂ΔΑ͏ʹ͢Δɻ • ͜͜ͷ࡞Γ͸Ͳ͏ͱͰ΋Ͱ͖ΔΜ͚ͩͲɺʮόονͷҰ෦ʯͷ··ͩͱબ୒ࢶʹ੍໿͕ ग़ͯ͘Δɻ • ੍໿͕ͳ͚Ε͹ຊମ͸ʮϚχϡΞϧʴݸผʯͰ࣮ߦͰ͖ΔΑ͏ʹͯ͠ɺτϦΨʔΛผ ʹͬͯߟ͑Δɻ

Slide 68

Slide 68 text

• ͜Ε͸ҰׅॲཧʹΈ͑Δ͚ΕͲɺͻͱ͔ͨ·ΓͰͳ͚Ε͹ͳΒͳ͍ཧ༝͕ബ͔ͬͨΓ͢ ΔɻChunkʹ෼͚ΕΔ࣌఺ͰChunkؒͰ੔߹ੑΛͱΒͳ͍͍ͯ͘OR่Ε͍ͯΔͷͰં Γ߹͍͸͚ͭΒΕΔɻ • ॲཧର৅ͷϦετΞοϓͱͦͷॲཧΛ͢ΔτϦΨʔɺऴྃޙ͚͕ͩ७ਮʹʮҰׅʯͰѻ ͏΋ͷɻؒͷ΋ͷ͸ʮݸผʯʹྲྀ͠ࠐΊΔɻWebAPIͰ଴ͪड͚ͨΓɺϝοηʔδϯά ʹͨ͠ΓɺͲ͏ͱͰ΋ɻʮόονʯͰѻΘͳ͚Ε͹ͳΒͳ͍ͱ͜Ζ͔Β֎ʹग़ͤΔɻ

Slide 69

Slide 69 text

• ͜Ε΋ʮ෼͚ΒΕΔʯͱͳΔͱ͜ͷॱ൪ʹͩ͜ΘΔඞཁ΋ͳ͘ͳΔɻ • લʹग़ͪ͠Ό͏ɻͳΜͳΒʮ͜ͷॲཧ͕Ͱ͖Δ৚͕݅੔ͬͨΒʯ΍͓ͬͯ͘ɻ • ʮόονʯͰ͸͍͍ͤͥʮऴΘͬͯΔ͔ʯ֬ೝ͢Δ͘Β͍ɻ ࠇ͸WebAPIͱ͔ͰɺͦΕΛτϦΨʔʹඇಉظϝοηʔδϯάͷΠϝʔδ

Slide 70

Slide 70 text

όονղମɿͳΜͰඞཁʁ • Ͳ͜ͷγεςϜ΋ѻ͏σʔλྔ͸ͲΜͲΜ૿͍͍͑ͯͬͯΔ • όονͰ΍Γ੾Δʹ΋ݶ౓͕͋Δ • Χʔυ͸͓࣋ͬͯ͘ͷ͕͍͍ɻͦͷΧʔυ͸΋͏࣋ͬͯΔ΋ͷɻ • όον͸࣮ߦػձ͕গͳ͍ʹӡ༻஌ݟ͕ͨ·Γʹ͍͘ • ݄࣍ͳΜͯ೥ؒ12ճ͔͠ӡ༻͔ΒͷϑΟʔυόοΫΛड͚ΒΕͳ͍ • Ϋϥ΢υωΠςΟϒͳྲྀΕͱόονʹִͨΓ͕͋Δ • ʮόον͔ͩΒΦϒβʔόϏϦςΟඍົʯແ͍͚ͨ͘͠ͲɺͲ͏ͯ͠΋ϑΟʔυόο Ϋ͔Βͷվળ͕ճ͠ʹ͍͘ͷͰਏ͍ɻ

Slide 71

Slide 71 text

όονΛ࡞Βͳ͖Όͱ ͳͬͨͱ͖ʹߟ͑Δ͜ͱ

Slide 72

Slide 72 text

ʮόονΛ࡞Βͳ͖Όʯ • ΄Μͱʹʁ • ʮόονʯͱݴͬͯΔ͚ͲԿΛࢦͯ͠ʮόονʯͬͯݴͬͯΔʁ • Ҋ֎߹Θͳ͍΋ͷͩ͠ɺࣝผ͢Δͱ͍͍͜ͱ͕݁ߏ͋ΔΑ • ʮͦΕ͸όονͳͷʁʯΛ໰͏ • Ұׅॲཧ͠ͳ͍͍ͯ͘΋ͷͳΒɺWebAPIͳͲͰ͜ͳ͢ํ͕Կ͔ͱར఺͕ଟ͍ɻ • Ұׅॲཧ͕ඞཁͳ΋ͷ͸όονɺͦ͏Ͱͳ͍΋ͷ͸όονΛආ͚ΔͷΛجຊతͳํ਑ ͱ্ͨ͠ͰɺͦΕͰ΋όονըචΑͳจ຺͸͋Δɻ

Slide 73

Slide 73 text

ͱ͸ݴ͑όονΛ࡞Βͳ ͖ΌͱͳͬͨͳΒ ෲΛׅͬͯ͜͏

Slide 74

Slide 74 text

͜ͷลͰ࿩ͦ͏ͱ͓΋ͬͯͨ͜ͱʹࣅͯΔ͜ͱ • 2024-06-10ʢ6೔લʣʹZOZO͞Μ͕ެ։͞ΕͨΨΠυϥΠϯΈ͍ͨͳ಺༰ • https://techblog.zozo.com/entry/batch-development-guideline • όονʢ੍ޚʣ͸ ʮϫʔΫϑϩʔΤϯδϯʯͬͯ ݺΜͰΔͷ͕͍ۙɻ

Slide 75

Slide 75 text

όονͷߏ଄

Slide 76

Slide 76 text

όον͸֊૚Λߏ੒͢Δ όον δϣϒ λεΫ λεΫ δϣϒ λεΫ λεΫ όον δϣϒ λεΫ λεΫ

Slide 77

Slide 77 text

ͬ͘͟Γ෼͚ΔͳΒ όον δϣϒ λεΫ ΞϓϦέʔγϣϯͷϓϩηε಺Ͱ໘౗Έ Δͱ͜Ζ SpringBatchͳͲͷόονϑϨʔϜϫʔ Ϋͷαϙʔτൣғ ΞϓϦέʔγϣϯ֎Ͱ ໘౗ΈΔͱ͜Ζ εέδϡʔϥʔͱ͔ όονؒͷґଘؔ܎ͱ ͔Λ੍ޚ͢Δ ݴޠʹΑΒͳ͍ͷͰϓ ϩμΫτ΋৭ʑ͋Δ

Slide 78

Slide 78 text

ڥք΋·ͪ·ͪͰඃͬͯͨΓ΋ όον δϣϒ λεΫ ࣮ࡍʹඃ͍ͬͯͨΓ΋͢Δɻ ಉ͜͡ͱ͕Ͱ͖Δͱ͖ʹͲ͜ͰͦΕΛ ѻΘͤΔ͔͕ઃܭϙΠϯτɻ

Slide 79

Slide 79 text

ೋछྨͷόον

Slide 80

Slide 80 text

όονʢ੍ޚʣ

Slide 81

Slide 81 text

όονʢ੍ޚʣ • ଟ෼Կ͔͠Β͍͍ײ͡ͷ͜ΕΛࢦ໊͢લ͕͋ΔΜ͚ͩͲݟ͚ͭΒΕͳ͔ͬͨɻ • ݱ৔ͩͱ੡඼΍αʔϏε໊ͰݺΜ͡ΌͬͨΓ͕ͪ͠ɻ • લޙؔ܎΍εςʔλε؅ཧɺશମͱͯ͠ͷίϯτϩʔϧΛ࢘Δɻ • ޙड़ͷόονʢॲཧʣΛݺͼग़ͯ͠ɺͦͷ݁ՌΛड͚ͯɺͱ͔͕͓࢓ࣄɻ • ঎༻੡඼΋৭ʑ͋Δ͠ɺࢥ͍ු͔΂Δ΋ͷ΋͋Δͱࢥ͏ɻ • ͜͜ͰΤϥʔϋϯυϦϯά΍ϞχλϦϯάɺ࠶࣮ߦͳͲΛߦ͏ɻ • ͍͔ͭ͘ͷϓϩμΫτͷϚχϡΞϧΛಡΈൺ΂ͯ໯͑Ε͹Ͳ͏͍͏͜ͱ͕໾ׂ͔͸ݟ͑ ͯ͘Δͱࢥ͏ɻ

Slide 82

Slide 82 text

όονʢॲཧʣ

Slide 83

Slide 83 text

όονʢॲཧʣ • ଟ෼Կ͔͠Β͍͍ײ͡ͷ͜ΕΛࢦ໊͢લ͕͋ΔΜ͚ͩͲݟ͚ͭΒΕͳ͔ͬͨɻ • ΞϓϦέʔγϣϯ։ൃऀ͕͍͏ʮόονʯ͸͜ͷ෦෼͚ͩͩͬͨΓ͢Δɻ • ͜͜ʹτϦΨʔ͸ؚ·Εͳ͍͜ͱ͕ଟ͍ • ʮόονʯͱݺΜͰΔͱʮJavaϓϩηεʯ͕͜ΕͱχΞϦʔͩͬͨΓɻ

Slide 84

Slide 84 text

όονʢॲཧʣΛ࡞Δͱ ͖ʹߟ͑Δ͜ͱ

Slide 85

Slide 85 text

• όονϑϨʔϜϫʔΫΛ࠷ॳ͔Β࠾༻͢Δɻ • ʮඞཁʹͳ͔ͬͯΒʯͩͱ૝૾Ҏ্ʹݥ͍͠ಓͷΓʹͳΔ • ඞཁʹͳΔ·ͰͷաఔͰόονϑϨʔϜϫʔΫͷ͍࣋ͬͯΔंྠΛ࠶ൃ໌͢Δ͜ͱ ʹͳΓ͕ͪ • ࡞ͬͨंྠ͸ͦͷ··͸࢖͑ͳ͍͠ɺंྠҎ֎ͷ͓·͚͕ॏཁͩͬͨΓ͕ͪ͠Ͱɺ ϑϨʔϜϫʔΫͷंྠͱܕ͕߹ΘͣClassCastException͕ى͜Δʢ೴಺Ͱʣ • ୯ൃͰվम༧ఆ͕ͳ͍γϯϓϧͳ΋ͷͳΒ࢖Θͳͯ͘΋͍͍͚ͲɺϑϨʔϜϫʔΫΛ ࠾༻͢Δ͜ͱʹΦʔόʔϔουΛײ͡ΔΑ͏ͳΒ͔ͦ͜Β஁͑Α͏ • ͍·͞ΒੜServlet࢖Θͳ͍Ͱ͠ΐʁʢServlet΋ϑϨʔϜϫʔΫͳΜ͚ͩͲ͞ʣ

Slide 86

Slide 86 text

• ॲཧͷਐḿΛ֎෦͔Β؍ଌͰ͖ΔΑ͏ʹ͢Δ • ϩάͰ΋͍͍͠ɺଞͷԿ͔Ͱ΋͍͍ɻͱʹ͔͘؍ଌͰ͖ΔΑ͏ʹ͠ɺ௕࣌ؒͷ΋ͷ͸ ͋ͱͲΕ͘Β͍ͰऴΘΓͦ͏͔ͳͲͷ໨͕͚҆ͭΒΕΔ΋ͷʹ͢Δɻ

Slide 87

Slide 87 text

• Ͱ͖Δ͚ͩૣ͘ຊ൪σʔλͰςετ͢Δ • ͳΜͳΒॳظ͔Βɻ • ຊ൪σʔλΛ࢖͑ͳ͍ࣄ৘͕͋ΔͳΒຊ൪૬౰σʔλʹͳΔ͕ɺͲ͏ͯ͠΋ʮ૬౰ʯ Λ࡞ΔաఔͰ΋Βͨ͠ͱ͜Ζ͕ΪϦΪϦʹͳͬͯ໰୊ʹͳΓ͕ͪɻ • ʮຊ൪σʔλͰಈ͔͘ΒOKʂʯͰ͸ͳ͍͜ͱʹ͸஫ҙ • ςετઃܭ͸͠·͠ΐ͏ɻຊ൪σʔλͰͷςετ͸ۜͷ஄ؙͰ͸ͳ͍Ͱ͢ɻ • όονʹݶΒͳ͍͚ͲͶʁ

Slide 88

Slide 88 text

• ҰͭҰͭͷόον͸ՄೳͳݶΓ୯७ͳ࡞Γʹ͢Δɻ • ҰͭͷόονͰ͋Ε΋͜Ε΋΍Βͤͳ͍ɻࡅ͍ͨ΍ͭɻ • ʮҰͭͷϓϩάϥϜʹ͸Ұͭͷ͜ͱΛ͏·͘΍ΒͤΔʯʢUNIXͱ͍͏ߟ͑ํʣ • େྔͷσʔλΛѻ͏ؔ܎্ɺ͜͜Ͱ΍Ε͹͍͍͡ΌΜͱཉ͕Ͱ͕ͪɻ͜ΕΛόονʹ ೖΕͯ͠·͏ͱख͕ग़ͤͳ͍ڊେͳύζϧʹͳΔɻ • ϚγϯϦιʔε͕ݻఆ͞ΕͯΔͳΒ࢓ํͳ͍͔΋͠Εͳ͍ɻ

Slide 89

Slide 89 text

• ҆ఆͨ͠ೖྗʹ͚ͩґଘͤ͞Δɻ • ۃྗͶɻෆ҆ఆͳೖྗʹཔΒ͟ΔΛಘͳ͍จ຺΋͋ΔɻͰ΋ՄೳͰ͋Ε͹όονͷ֎ Ͱղܾͯ͠ɺόονʹ࣋ͪࠐΉ࣌͸҆ఆͨ͠ೖྗʹ͢Δɻ࠶ݱੑ௒ॏཁɻ • όοΫΞοϓΛऔΔɻ • ೖྗΛόοΫΞοϓ͠ɺόοΫΞοϓͨ͠ೖྗ͚ͩΛ࢖༻ͯ͠ಉ͡Ξ΢τϓοτʹͳ ΔΑ͏ʹόον͸࡞Δɻ͜ΕͰ҆ఆͨ͠ೖྗ͚ͩʹґଘ͍ͯ͠Δ͔ΛݕূͰ͖Δɻ • ॲཧ͕͔͔࣌ؒΔ΋ͷ΍ɺೖྗͷ׬શͳόοΫΞοϓ͕Ͱ͖ͳ͍΋ͷ͸Ξ΢τϓοτ ΋όοΫΞοϓ͢Δɻ • όοΫΞοϓ͕औΕͳ͍ࣄ৘͕͋Δ΋ͷ͸࢓ํͳ͍ɻ

Slide 90

Slide 90 text

• όον͸ϦιʔεΛେྔʹ࢖༻͢Δ͜ͱ͕͋Γɺڞ༗͢Δऀ͕ෆҙʹӨڹΛड͚ͨΓ͢ Δɻ • ׬શʹಠཱͤ͞ΒΕΔͳΒ͍͍Μ͚ͩͲɺڞ༗͢Δ৔߹΋ଟ͍ɻ • σʔλͷ੔߹ੑΛյ͠͏Δૢ࡞Λͤ͟ΔΛಘͳ͍৔߹΋ͨ·ʹग़ͯ͘Δ͕ɺͦ͜Ͱҟৗ ऴྃͯ͠͠·͏͜ͱΛલఏʹӡ༻΋ઃܭ͢Δɻ • յͨ͜͠ͱΛݕ஌Ͱ͖ΔͨΊʹݕূͰ͖Δ࢓૊ΈΛఴ͑Δඞཁ͕͋Δɻ

Slide 91

Slide 91 text

ߟ͑ΔϙΠϯτͱࢦ਑

Slide 92

Slide 92 text

• ࠶࣮ߦ໰୊ • ్தͰΤϥʔʹͳͬͨ৔߹ͷऔΓѻ͍ɻ • ಛʹଞγεςϜʹ࿈ܞ͢Δ΋ͷɻ • ੑೳ໰୊ • େྔ݅਺Λ૬खʹ͢ΔͷͰɺ୯ମͷੑೳ໰୊͸Α͘ग़ΔɻϦΞϧλΠϜੑ͕ٻΊΒΕͳ͍͔Βͱʮ1+nͳॲཧͰ͍͍΍ʯΈ͍ͨʹઃܭͨ͠΋ͷ͕਺೥ޙʹ ͍͕͔͔ͬ࣌ؒ͢͝ΔΑ͏ʹͳͬͯͨΓɻʮ໷ؒόονͷಥ͖ൈ͚ʯͱ͔ݴͬͨΓ͢Δɻ೔࣍όον͸࢝ۀʹؒʹ߹͏͔উෛʹͳͬͨΓ͢Δ͠ɺि࣍όον ͕48࣌ؒܰ͘௒͑ͨΓͱ͔΋͋Γ͕ͪɻ͜ͷखͷνϡʔχϯά͸ϋϚΔͱָ͍͠ɻ • ୯ମ͸୯ମͱͯ͠ɺϦιʔεΛେྔʹ࢖͏ͱWebAPIʹӨڹ͕ͰͨΓ΋͕ͪ͠ɻDBʹෛՙ͔͚ͪΌͬͨΓɺಉ͡Ϛγϯʹ৐ͬͯͯCPU΍IO࢖͍੾ͬͨΓͱ ͔ɻԾ૝Խ͕ਐΜͰͲ͏͍͏ϦιʔεΛڞ༗͢Δ͔΋Θ͔ΓͮΒ͘ͳͬͯΔɻ • ഉଞ੍ޚ໰୊ • όονҎ֎ͱͷഉଞ੍ޚ͕ඞཁʹͳͬͨ࣌ʹͲ͏͢Δ͔ɻWebAPIͷ͓͔͛Ͱ • όονؒͷґଘؔ܎໰୊ • ଞͷόονͱͷґଘؔ܎͕ύζϧʹͳΓ͕ͪɻಛఆόονͷҟৗ࣌ͷ୅ସϑϩʔͱ͔ɺ͜ͷ੍ޚࣗମ͕ҰେγεςϜͱݴ͑ΔɻڊେJOBωοτͷखߝΛѲΕ Δਓʹ͸಄͕Լ͕Δɻখ͍͞͏ͪ͸؆୯ͳͤ͘ʹେ͖͘ͳΔͱෳࡶ౓͕Ճ଎తʹ্͕Δɻʢࠓճ͸͠ͳ͍࿩ʣ • WET໰୊ • όονͱWebAPIͰಉ͡Α͏ͳॲཧΛ͍͚ͨ͠Ͳɺόον͸όονɺWebAPI͸WebAPIɺΈ͍ͨͳ࡞ΓํΛ͍ͯ͠ΔͱDRYΛอͯͳ͘ͳΔɻͰʮόον͸௚ ͚ͨ͠ͲWebAPI͸Ͱ͖ͯͳ͔ͬͨʯͱ͔ͦͷٯͱ͔ɺͦΕͧΕಠࣗਐԽ੍ͯ͠ޚෆೳʹͳͬͨΓͱ͔ɺ͕ͪ͠ɻ

Slide 93

Slide 93 text

࠶࣮ߦ໰୊ • ࠶࣮ߦͰ͖ΔΑ͏ʹͭ͘Δ • ʮಉ͡ೖྗͰ͋Ε͹Կ౓࣮ߦͯ͠΋ಉ݁͡ՌʹͳΔʯͱݴ͏΋ͷ • ͨͱ͑͹ʮείΞΛ100૿Ճͤ͞Δʯ͸࠶࣮ߦͰ͖ͳ͍ɻ2ճ࣮ߦͨ͠Β200૿Ճ͢Δɻ • ʮ࠶࣮ߦͰ͖Δʯ͕֬อͰ͖Ε͹͙ͬͱָʹͳΔ • ͜ͷʮͰ͖Δʯ͸ʮ͕Μ͹Ε͹Ͱ͖ΔʯͰ͸ͳ͍ɻ • ཧ૝͸ϫϯΫϦοΫɺ͍͍ͤͥ਺ݸͷೖྗύϥϝλʢ࠶࣮ߦ͍ͨ࣌͠͸ࣗಈղܾ͞ΕΔ΋ ͷʣΛઃఆ͢Δ͚ͩͰ࣮ߦͰ͖ͳ͍ͱʮ࠶࣮ߦͰ͖Δʯͱ͸ݴ͍೉͍ • ʮ͕Μ͹Ε͹Ͱ͖Δʯ͚ͩͰ΋ʮͰ͖ͳ͍ʯΑΓΑ΄Ͳ͍͍͚ΕͲ……

Slide 94

Slide 94 text

όοΫΞοϓˍϦετΞ • ͢΂ͯͷೖྗΛ࣮ߦ࣌ʹอଘ͓͖ͯ͠ɺ࠶࣮ߦ࣌͸ʮอଘͨ͠ೖྗʯΛ࢖༻͢Δɻ • ؆୯ͳྫ • ࣮ߦ࣌ʹDBͷόοΫΞοϓΛऔΔɻ࠶࣮ߦ࣌͸ϦετΞ͔ͯ͠ΒɻʢDB͚ͩΛೖग़ྗͱ͢Δ ΋ͷͷ৔߹ʣ • ϝϦσϝ • όονࣗ਎͸γϯϓϧʹͳΔɻ • ೖྗͷόϦΤʔγϣϯ͕૿͑Δͱେมɻ • όοΫΞοϓˍϦετΞͰ͖ͳ͍ೖྗ͕͋ΔͱΞ΢τɻͨͱ͑͹֎෦γεςϜɻ • σʔλྔʹΑΔ͕༰ྔతʹͦ΋ͦ΋ݱ࣮తͰͳ͍ͱ͔΋͋Γ͕ͪɻ

Slide 95

Slide 95 text

ॲཧࡁΈ൑ผ • طʹॲཧ͔ͨ͠Λ൑ผͯ͠ɺ࠶࣮ߦ࣌ʹॲཧࡁΈͰ͋Ε͹εΩοϓ͢Δɻ • ؆୯ͳྫ • ॲཧର৅ͷPKͱόονͷIDͷ૊Έ߹ΘͤΛอ࣋͢ΔςʔϒϧΛ࡞Δɻॲཧର৅͝ͱʹॲཧ͕ऴΘͬͨΒϨίʔυΛ ࡞ΔɻͦͷϨίʔυ͕͋ͬͨΒεΩοϓɻ • ϝϦσϝ • ࠶࣮ߦ͕ऴΘΔ·Ͱ͸ෆ੔߹ͳঢ়ଶʹͳ͍ͬͯΔͱݴ͑ΔɻʮԿׂ͔ͷϢʔβʔ͚ͩॲཧ͞Ε͍ͯͯ࢒Γ͸·ͩʯͱ ݴ͏ঢ়ଶΛڐ༰͢Δͱ͔ݟ͑ͳ͍Α͏ʹ͢Δͱ͔ͳΜΒ͔ͷ੍ޚ͕ඞཁɻ • ్தΤϥʔͰதஅͨ͠৔߹ͳͲͷ࠶࣮ߦ͕୹࣌ؒͰߦ͑Δɻෳ਺ͷόον͕࿈ͳ͍ͬͯΔ৔߹ͷ࠶࣮ߦͰ༗ޮɻ • ίϝϯτ • ʮόονʯͱݴ͍ͭͭʮͻͱ͔ͨ·ΓʯͰѻ͍ͬͯͳ͍͔ΒͰ͖Δ΋ͷͰ͋Δɻ • ʮ࠶࣮ߦʯͱݴ͍ͭͭɺ࣮ߦ͔͸एׯٙ໰ɻ

Slide 96

Slide 96 text

νΣοΫϙΠϯτ • ʮॲཧ͕Ͳ͜·ͰਐΜ͔ͩʯΛه࿥ͯ͠ɺࢭ·ͬͨͱ͜Ζ͔Β࠶։͢Δ • ϝϦσϝ • ࢓૊Έ͕Θ͔Γ΍͍͢ɻऴΘͬͨ΋ͷ͕ಈ͔ͳ͍͔Β҆৺ײ͸͋Δɻײ͚ͩͲɻ • ίϝϯτ • όονશମΛͳʹ͔͠ΒͰ۠੾͍ͬͯΔɻ • ͦͷ۠੾ͬͨ୯Ґ͕ʮͻͱ͔ͨ·Γʯ͡ΌͶʁͱࢥ͏ • େྔ݅਺Λॲཧ͢Δ৔߹ͷύλʔϯͰɺόονϑϨʔϜϫʔΫͳͲͰ΋Α͘αϙʔτ͞Ε͍ͯΔɻ৐͔ͬΕΕ͹͜ ͷ੍ޚʹབྷΉෳࡶ͞Λ͓೚ͤͰ͖Δ͕ɺ৫ΓࠐΜͰઃܭ͠ͳ͍ͱඍົʹ߹Θͳͯ͘࢖͑ͳ͍͜ͱ΋ଟ͍ɻંΓ߹Θ ͳ͚Ε͹ॲཧࡁΈ൑ผͷ΄͏΁ɻ • ίϝϯτ • ʮ࠶࣮ߦʯʹׅ͚ͬͨͲ࠶࣮ߦ͸͍ͯ͠ͳ͍ɻʮ࠶։ʯͰ͋Δɻ

Slide 97

Slide 97 text

·ͱΊ

Slide 98

Slide 98 text

• ʮόονΛ࡞Βͳ͖Όʯͬͱͳͬͨͱ͖ʹɺͦΕຊ౰ʹόονʁ͔Βݟ௚͢͜ͱΛ͓ק Ί͠·͢ɻ • Ͳ͏ͯ͠΋όονͰ࡞Δͱͯ͠΋ɺόονͰѻ͏ൣғΛݮΒ͠·͠ΐ͏ɻ • Ͱ͖Ε͹όονҎ֎ͷ΋ͷͰࡁ·ͤΒΕΔΑ͏ʹଞͷॲཧܗଶʹҠৡ͠·͠ΐ͏ɻ • όον͸ϊΠζ͕গͳ͍ঢ়ଶͰ࣮ߦ͞ΕΔͨΊ࡞Γ΍͍͢Ͱ͕͢ɺݱ୅ͷ͞·͟·ͳ৘ ใ͕ඈͼަ͏ܗଶʹ͸ࠞ͡ΓͮΒ͍Ͱ͢ɻ • ͦΕͰ΋όονΛ࡞Δ࣌͸͔ͬ͠Γόονͱͯ͠࡞Γ·͠ΐ͏ɻ • όονͷ࡞Γํͷϊ΢ϋ΢͸όονϑϨʔϜϫʔΫ΍ϓϩμΫτͳͲྺ࢙ʹཪଧͪ͞ Ε࣭ͨͷ͍͍υΩϡϝϯτ͕͋Γ·͢ɻ