Slide 1

Slide 1 text

͸͡Ίͯͷ B2B SaaS σʔλϞσϦϯά ʙ Builderscon2019 ʙ A1Aגࣜձࣾ ࠤʑ໦ Ԇ໵ @__mnc90 1

Slide 2

Slide 2 text

Name ࠤʑ໦ Ԇ໵ Company A1Aגࣜձࣾ (ΤΠϫϯΤΠ) Career ৯΂ϩά → Speee → A1AΛڞಉ૑ۀ URL twitter.com/__mnc90 manchose.hatenablog.jp About CTOͱͯ͠RFQΫϥ΢υͷσʔλϕʔεઃ ܭͱΠϯϑϥߏஙɺ૊৫ͮ͘ΓͳͲΛ୲౰ !2

Slide 3

Slide 3 text

B2BͷऔҾΛϫϯϥϯΫ্ʹ Vision !3

Slide 4

Slide 4 text

B2BͷऔҾΛϫϯϥϯΫ্ʹ Vision A1A ʢ໊ࣾͷ༝དྷʣ !4

Slide 5

Slide 5 text

ϓϨϛΞϦʔάͷڧ߽τοςφϜɾϗοτεύʔFCͷڳεϙϯαʔ !5

Slide 6

Slide 6 text

ϓϨϛΞϦʔάͷڧ߽τοςφϜɾϗοτεύʔFCͷڳεϙϯαʔ ฐࣾ͡Ό͋Γ·ͤΜ !6

Slide 7

Slide 7 text

A1A͸ΤΟϫϯψΤΟͰ͢ AIA τοςφϜͷڳεϙϯαʔΛ͍ͯ͠Δ߳ߓͷอݥձࣾɻ ΤΠΞΠΤΠ A1A B2BΛϫϯϥϯΫ্ʹ͋͛ΔA1Aɻ ΤΟϫϯψΤΟ !7

Slide 8

Slide 8 text

ελʔτΞοϓ͸೉͍͠ !8

Slide 9

Slide 9 text

1. ͓͕ۚͳ͍ ※3௶ͷΦϑΟεʹແཧ΍Γ6ਓͰೖΖ͏ͱͨ͠ͱ͖ͷγϡϛϨʔγϣϯ ஫ҙ) 60௶ͷΦϑΟεʹ11݄͔ΒҠస͠·͢ !9

Slide 10

Slide 10 text

2. Α͘ᎍΊΔ ᎍΊ͍ͯΔ࠷தͷϦΞϧͳձ࿩ʢ૑ۀ౰࣌ʣ ஫ҙ) ࠓ͸ඇৗʹ݈શͰ͢ !10

Slide 11

Slide 11 text

3. ଞʹ΋͍Ζ͍Ζ͋Δ 1 ɹ՝୊͕ຊ౰ʹ͋Δ͔ͷݕূ͕ඞཁ 2 ɹϓϩμΫτͰ՝୊ΛղܾͰ͖Δ͔ͷݕূ͕ඞཁ 3 ɹਓख͕଍ΒͣΤϯδχΞ͕࢓༷΋٧ΊΔඞཁ͕͋Δ ɾ ɾ ɾ !11

Slide 12

Slide 12 text

ࢿۚɾ࣌ؒͳͲͷଟ͘ͷ੍໿ͷ্Ͱ γεςϜΛ։ൃ͢Δඞཁ͕͋Δɻ ΍ͬͨ΄͏͕Α͍͜ͱͳΜͯ ΄ͱΜͲͰ͖ͳ͍ͱ֮ޛ͢Δɻ ελʔτΞοϓͷγεςϜ։ൃ !12

Slide 13

Slide 13 text

࠷΋ϨόϨοδͷޮ͘ϙΠϯτ ෆՄٯͳҙࢥܾఆʹ஫ྗ͢Δ ͡Ό͋Ͳ͜ʹ஫ྗ͢Δ͔ !13

Slide 14

Slide 14 text

΍ͬͨ΄͏͕ྑͦ͞͏ͳ͜ͱ TDD E2E GraphQL React TypeScript Serverless Kubernetes GitOps Design System Atomic Design DDD σʔλ ϞσϦϯά !14

Slide 15

Slide 15 text

΍ͬͨ΄͏͕ྑͦ͞͏ͳ͜ͱ TDD E2E GraphQL React TypeScript Serverless Kubernetes GitOps Design System Atomic Design DDD σʔλ ϞσϦϯά ஫ҙ) σʔλϞσϦϯάҎ֎΍͍ͬͯͳ͍Θ͚Ͱ͸ͳ͍Ͱ͢ !15

Slide 16

Slide 16 text

“DBͷण໋͸ΞϓϦέʔγϣϯΑΓ௕͍” @soudai1025 ͞Μ DBͷॏཁੑ !16

Slide 17

Slide 17 text

ෳ਺ճʹ෼͚ͨσʔλҠߦͳͲ σʔλϕʔε͸ϦϑΝΫλϦϯά͕ͮ͠Β͍ DBͷॏཁੑ !17

Slide 18

Slide 18 text

ΞϓϦέʔγϣϯͷઃܭ͸ σʔλϕʔεͷઃܭʹҾ͖ͮΒΕΔɻ ج൫ͱͳΔσʔλϕʔεͷઃܭ͕ྑ͘ͳ͍ͱ ΞϓϦέʔγϣϯͷઃܭʹ΋ແཧ͕ੜ͡Δɻ DBͷॏཁੑ !18

Slide 19

Slide 19 text

Horizontal SaaS ৬छɾػೳʹಛԽͨ͠SaaSɻSalesforce΍SmartHR ͳͲɺۀքΛ໰Θͣಉ͡৬छͰ͋Ε͹ར༻Ͱ͖ΔΑ͏ʹ ઃܭ͞ΕͨSaaS Vertical SaaS ۀքಛԽܕͷSaaSɻoctʢݐઃϓϩδΣΫτ؅ཧ SaaSʣ΍MusubiʢిࢠༀྺγεςϜͷSaaSʣͳͲɺ ಛఆͷۀքͰͷ࢖༻Λ૝ఆͨ͠SaaSɻ Horizontal SaaSͱVertical SaaS !19

Slide 20

Slide 20 text

Vertical SaaS͸ۀքಛԽͰ͋ΔͨΊ Horizontal SaaSΑΓ͞Βʹਂ͍υϝΠϯ஌͕ࣝඞཁ σʔλϞσϦϯάͷॏཁੑ !20

Slide 21

Slide 21 text

੡଄ۀߪങ޲͚ݟੵࠪఆSaaS RFQΫϥ΢υΛجʹ ෳࡶͳυϝΠϯͷσʔλϞσϦϯάํ๏ͱɺ ϏδωεՁ஋ʹ௚݁͢Δઃܭํ๏Λઆ໌͠·͢ɻ ͜Ε͔Β࿩͢͜ͱ !21

Slide 22

Slide 22 text

Agenda !22 1 B2B SaaSͷσʔλϞσϦϯάͷਐΊํ 2 [൪֎ฤ] υϝΠϯΤΩεύʔτͱ͏·͘΍ΔͨΊʹ 3 [൪֎ฤ] υϝΠϯΛਂງ͢Δͱ͖ͷ஫ҙ఺

Slide 23

Slide 23 text

B2B SaaSͷσʔλϞσϦϯάͷਐΊํ !23

Slide 24

Slide 24 text

!24 ੡଄ۀߪങ޲͚ݟੵࠪఆSaaS RFQΫϥ΢υ Product

Slide 25

Slide 25 text

!25 ϓϩμΫτ֓ཁ

Slide 26

Slide 26 text

Topic !26

Slide 27

Slide 27 text

1 Multi Tenancyͳςʔϒϧઃܭ 2 Ͱ͖Δ͚ͩNullΛڐՄ͠ͳ͍ 3 ΠϕϯτΛநग़͢Δ 4 ֎෦Ωʔͷ࣋ͪํ͔ΒσʔλͷϥΠϑαΠΫϧΛߟ͑Δ !27

Slide 28

Slide 28 text

1. Multi Tenancyͳςʔϒϧઃܭ !28

Slide 29

Slide 29 text

“ಉ͡γεςϜ΍αʔϏεΛෳ਺ͷޓ͍ʹແؔ܎ͳར༻ ऀ͕ؒڞಉͰར༻͢ΔํࣜͰɺͦΕͧΕͷར༻ऀ͸Ξ Χ΢ϯτ໊ͳͲͷࢿ֨৘ใΛݩʹ۠ผ͞ΕɺͦΕͧΕ γεςϜ্ʹઐ༻ͷྖҬ΍ઃఆͳͲ͕༩͑ΒΕΔɻ” Multi Tenancyͱ͸ ग़ల e-words.jp/w/Ϛϧνςφϯτ.html !29

Slide 30

Slide 30 text

ར༻اۀ͔ΒݟΔͱ͕ࣗࣾγεςϜΛ ઐ༗ͯ͠ར༻͍ͯ͠ΔΑ͏ʹݟ͑Δɻ ࣮ࡍ͸ෳ਺ͷاۀʢςφϯτʣ͕ 1ͭͷγεςϜʹ૬৐Γ͍ͯ͠Δɻ !30 Multi Tenancyͱ͸

Slide 31

Slide 31 text

Single Tenancy !31 Web DB Web DB ςφϯτA ςφϯτB ֤ࣾʢAɾBʣͦΕͧΕಠཱͨ͠ઐ༻ͷΠϯϑϥΛߏங
 B޲͚ͷγεςϜʹ͸͜ͷܗଶ͕ࠓ·Ͱଟ͔ͬͨ ஫ҙ) ෼͔Γ΍͢͞Λॏࢹ͠ɺਖ਼֬ੑ͸͍͍ܽͯ·͢

Slide 32

Slide 32 text

Multi Tenancy !32 Web DB ςφϯτA ςφϯτB ֤ࣾʢAɾBʣWebɾDBαʔόʔΛڞ༗ͯ͠ར༻͢Δ ஫ҙ) ෼͔Γ΍͢͞Λॏࢹ͠ɺਖ਼֬ੑ͸͍͍ܽͯ·͢

Slide 33

Slide 33 text

Multi Tenancyͷ࣮ݱํ๏ 1 ςφϯτຖʹDatabase or SchemaΛ෼཭ 2 શςʔϒϧʹtenant_idΧϥϜΛ༻ҙ !33

Slide 34

Slide 34 text

Multi Tenancyͷ࣮ݱํ๏ 1 ςφϯτຖʹDatabase or SchemaΛ෼཭ 2 શςʔϒϧʹtenant_idΧϥϜΛ༻ҙ SmartHR͞ΜͷൃදͰ migration࣌ؒͷര૿ͳͲ εέʔϥϏϦςΟʹ໰୊͕͋Δͱ !34

Slide 35

Slide 35 text

(΄΅)શςʔϒϧʹtenant_idΧϥϜΛ༻ҙ͢ΔMulti Tenancyͷ࣮ݱํ๏ !35 Tenants Quotations Aגࣜձࣾ ஫ҙ) ෼͔Γ΍͢͞Λॏࢹ͠ɺਖ਼֬ੑ͸͍͍ܽͯ·͢ https://a-inc.a1a.com Users ᶃ subdomainΛجʹTenantsςʔ ϒϧͷIDΛಛఆ ᶄ ಉҰϦΫΤετத͸શςʔϒϧ΁ ͷΫΤϦͷWHERE۟ʹऔಘͨ͠ tenant_idͰͷߜΓࠐΈ͕ઃఆ͞ΕΔ ᶃ ᶄ ᶄ

Slide 36

Slide 36 text

Multi TenancyͷϝϦοτ !36 1 σʔλ࿙ӮͷϦεΫ͕ݮΔɻςφϯτຖʹσʔλྖҬ Λ۠੾Δ͜ͱͰɺΞϓϦέʔγϣϯ։ൃऀ͕ςφϯτ Λҙࣝ͢Δඞཁ͕ͳ͘ͳΔɻ 2 ސ٬اۀͷηΩϡϦςΟνΣοΫϦετΛಥഁ͠΍͢ ͍ɻ

Slide 37

Slide 37 text

ςφϯτؒͷ௨৴͕͋ΔMulti Tenancy !37

Slide 38

Slide 38 text

RFQΫϥ΢υͰ͸ݟੵͷतड͕ൃੜ͢Δ !38 Buyer Supplier RFQ (ݟੵґཔ) ݟੵճ౴

Slide 39

Slide 39 text

ςφϯτ͸ͳʹ୯ҐͰ࡞੒͢Δʁ !39

Slide 40

Slide 40 text

1. όΠϠʔ୯ҐͰςφϯτΛ࡞੒͢Δ tenant_id: 1 tenant_id: 2 tenant_id: 3 όΠϠʔA όΠϠʔB όΠϠʔC αϓϥΠϠD αϓϥΠϠE αϓϥΠϠD αϓϥΠϠG αϓϥΠϠF αϓϥΠϠF αϓϥΠϠH !40 αϓϥΠϠʔ͸όΠϠʔͷςφϯτʹॴଐ͢Δ

Slide 41

Slide 41 text

2. αϓϥΠϠʔ΋όΠϠʔ΋ผςφϯτʹ͢Δ όΠϠʔA όΠϠʔB όΠϠʔC αϓϥΠϠF tenant_id: 1 tenant_id: 2 tenant_id: 3 tenant_id: 4 tenant_id: 5 tenant_id: 6 αϓϥΠϠD αϓϥΠϠE !41

Slide 42

Slide 42 text

1. σʔλͷॴ༗ऀ͔Βςφϯτͷ୯ҐΛߟ͑Δ !42

Slide 43

Slide 43 text

B2B SaaSͰΑ͋͘Δཁ๬ ୀձޙͷσʔλͷ෺ཧ࡟আ !43

Slide 44

Slide 44 text

όΠϠʔ͕ղ໿ͨ͠ͱ͖αϓϥΠϠʔ͕ड৴ͨ͠ݟੵґཔ৘ใ͸࡟আ͢Δ΂͖ʁ ϝʔϧΛϝλϑΝʔͱͯ͠ߟ͑Δɻ ૹ৴ऀ͕ղ໿ͯ͠΋ɺड৴ऀͷ ϝʔϧϘοΫεʹ͸ϝʔϧ͕࢒Δɻ ୀձޙ΋αϓϥΠϠʔ͕ड৴ͨ͠ ݟੵґཔ৘ใ͸࢒ͬͯཉ͍͠͸ͣɻ !44

Slide 45

Slide 45 text

2. Ϗδωενϟϯε͔Βςφϯτͷ୯ҐΛߟ͑Δ !45

Slide 46

Slide 46 text

ಋೖͨ͠όΠϠʔ͕࿈Ε͖ͯͯ͘ΕΔαϓϥΠϠʔͱ͍͏ࢿ࢈ !46 όΠϠʔ αϓϥΠϠʔ αϓϥΠϠʔ αϓϥΠϠʔ αϓϥΠϠʔ αϓϥΠϠʔ όΠϠʔ͸ݟੵͷ΍ΓͱΓΛ͢ΔαϓϥΠϠʔͱ RFQΫϥ΢υΛ࢖༻͢ΔɻࣗಈతʹαϓϥΠϠʔ ͷΞΧ΢ϯτʢແྉʣ͕ൃߦ͞ΕΔ͜ͱʹͳΔɻ ࠓޙ͸͜ͷαϓϥΠϠʔʹ΋Ձ஋Λఏڙ͍ͯ͘͠ ͜ͱͰϏδωε֦େͷՄೳੑ͕͋Δɻ ଟ͍ͱ͖͸਺ઍࣾ࿈Ε͖ͯͯ͘ΕΔ

Slide 47

Slide 47 text

αϓϥΠϠʔʹՁ஋Λఏڙ͢ΔͨΊʹ͸ʁ !47 ҟͳΔόΠϠʔͱ΍ΓऔΓ͢Δ৔߹Ͱ΋ ಉ͡ΞΧ΢ϯτͰ΍ΓऔΓ͍ͨ͠ɻ όΠϠʔຖʹΞΧ΢ϯτΛൃߦ͢Δͱ αʔϏεମݧ͕ѱԽ͢Δɻ

Slide 48

Slide 48 text

ςφϯτͷ୯Ґ 1 αϓϥΠϠʔ͸όΠϠʔͷςφϯτʹॴଐ͢Δ 2 αϓϥΠϠʔ΋όΠϠʔ΋ผςφϯτʹ͢Δ !48

Slide 49

Slide 49 text

ςφϯτͷ୯Ґ 1 αϓϥΠϠʔ͸όΠϠʔͷςφϯτʹॴଐ͢Δ 2 αϓϥΠϠʔ΋όΠϠʔ΋ผςφϯτʹ͢Δ !49 ͪ͜ΒΛ࠾༻

Slide 50

Slide 50 text

1 όΠϠʔͷୀձޙͷσʔλ࡟আͷରԠΛόΠϠʔςφϯτ ͷ࡟আͷΈͰ׬ྃ͢Δ 2 اۀຖʹݸผͷΞΧ΢ϯτ؅ཧϙϦγʔΛద༻Ͱ͖Δ ※اۀຖʹϙϦγʔ͕ҟͳΔ͜ͱ͕ଟ͍ 3 αϓϥΠϠʔςφϯτ͕ॏෳ͠ͳ͍ͨΊαϓϥΠϠʔʹͱ ͬͯ΋σʔλͷҰݩ؅ཧ͕Ͱ͖Δͱ͍͏ϝϦοτΛఏڙͰ ͖Δ όΠϠʔɾαϓϥΠϠʔͰςφϯτΛผʹ͢ΔϝϦοτ !50

Slide 51

Slide 51 text

RFQΫϥ΢υͰͷྫ ݟੵґཔʹରͯ͠ݟੵճ౴Λߦ͏ !51

Slide 52

Slide 52 text

accounts ID name tenant_id role 1 ࠤʑ໦ 1 όΠϠʔ 2 দຊ 1 αϓϥΠϠʔ 3 ਅน 2 όΠϠʔ 4 ๺໺ 2 αϓϥΠϠʔ 1. όΠϠʔςφϯτʹαϓϥΠϠʔΞΧ΢ϯτ͕ॴଐ͢Δઃܭͷ৔߹ !52 ID name 1 ձࣾA 2 ձࣾB tenants ஫ҙ) ෼͔Γ΍͢͞Λॏࢹ͠ɺਖ਼֬ੑ͸͍͍ܽͯ·͢

Slide 53

Slide 53 text

request_for_quotations(ݟੵґཔ) ID produce_number tenant_id sender_account_id receiver_account_id 1 300 1 1 2 2 60 2 3 4 3 1200 1 1 2 ID unit_price request_for_quotation_id tenant_id reply_account_id 1 100 1 1 2 2 90 2 2 4 quotations(ݟੵճ౴) 1. όΠϠʔςφϯτʹαϓϥΠϠʔΞΧ΢ϯτ͕ॴଐ͢Δઃܭͷ৔߹ !53 ஫ҙ) ෼͔Γ΍͢͞Λॏࢹ͠ɺਖ਼֬ੑ͸͍͍ܽͯ·͢

Slide 54

Slide 54 text

accounts ID name tenant_id 1 ࠤʑ໦ 1 2 দຊ 2 3 ਅน 3 2. όΠϠʔͱαϓϥΠϠʔʹͦΕͧΕಠཱͨ͠ςφϯτΛ࡞੒͢Δ৔߹ !54 ID name role 1 ձࣾA όΠϠʔ 2 ձࣾB αϓϥΠϠʔ 3 ձࣾC όΠϠʔ tenants ஫ҙ) ෼͔Γ΍͢͞Λॏࢹ͠ɺਖ਼֬ੑ͸͍͍ܽͯ·͢

Slide 55

Slide 55 text

request_for_quotations(ݟੵґཔ) ID produce_number tenant_id 1 300 1 2 60 3 ID unit_price received_request_for_quotation_id tenant_id 1 100 1 2 2 90 2 2 quotations(ݟੵճ౴) 2. όΠϠʔͱαϓϥΠϠʔʹͦΕͧΕಠཱͨ͠ςφϯτΛ࡞੒͢Δ৔߹ ID produce_number tenant_id 1 300 2 2 60 2 received_request_for_quotations(डྖݟੵґཔ) ID unit_price request_for_quotation_id tenant_id 1 100 1 1 2 90 2 3 received_quotations(डྖݟੵճ౴) !55 ஫ҙ) ෼͔Γ΍͢͞Λॏࢹ͠ɺਖ਼֬ੑ͸͍͍ܽͯ·͢

Slide 56

Slide 56 text

ςφϯτؒͷσʔλͷ΍ΓͱΓ ςφϯτΛ·͙ͨσʔλͷ΍ΓͱΓ͸ σʔλΛίϐʔͯ͠ड͚౉͢͠Δɻ !56

Slide 57

Slide 57 text

2. Ͱ͖Δ͚ͩNULLΛڐՄ͠ͳ͍ !57

Slide 58

Slide 58 text

NullableͳΧϥϜ͕͋Δ৔߹ ϥΠϑαΠΫϧͷҟͳΔσʔλ͕ ಉ͡ςʔϒϧʹೖ͍ͬͯΔ͜ͱ͕ଟ͍ NULLΛڐՄ͠ͳ͍ཧ༝ !58

Slide 59

Slide 59 text

RFQΫϥ΢υͰͷྫ !59

Slide 60

Slide 60 text

materials ID name code 1 ϒϥέοτ 391001 2 εϥΠυϘοΫε NULL 3 ݻఆۚ۩ 369221 !60 codeΧϥϜʹ͸NULL͕ೖΓ͏Δɻ

Slide 61

Slide 61 text

materials ID name 1 ϒϥέοτ 2 εϥΠυϘοΫε 3 ݻఆۚ۩ ID material_id code 1 1 391001 2 3 369221 material_codes ͱΓ͋͑ͣNULL͸ແ͘ͳͬͨʂ Ͱ΋ɺ͜ΕͰ͍͍ͷ͔ʁ !61

Slide 62

Slide 62 text

ͳͥNULLؚ͕·ΕΔͷͩΖ͏ !62

Slide 63

Slide 63 text

1 material_codeΛͦ΋ͦ΋؅ཧ͍ͯ͠ͳ͍اۀ͕͋Δ 2 ࢼ࡞඼ͷஈ֊Ͱ͸material_codeΛൃ൪ͤͣʹݟੵґཔ Λߦ͍ɺίετͷ֓ࢉΛ֬ೝ͔ͯ͠ΒcodeΛൃ൪͢Δͱ ͍͏ۀ຿ϑϩʔ͕͋Δ !63

Slide 64

Slide 64 text

1 material_codeΛͦ΋ͦ΋؅ཧ͍ͯ͠ͳ͍اۀ͕͋Δ 2 ࢼ࡞඼ͷஈ֊Ͱ͸material_codeΛൃ൪ͤͣʹݟੵґཔ Λߦ͍ɺίετͷ֓ࢉΛ֬ೝ͔ͯ͠ΒcodeΛൃ൪͢Δͱ ͍͏ۀ຿ϑϩʔ͕͋Δ ࢼ࡞඼ͷݟੵґཔۀ຿ͱ͍͏Ϣʔεέʔε͕ͬͦ͝Γൈ͚͍ͯΔ !64

Slide 65

Slide 65 text

materials ID name 1 ϒϥέοτ 2 εϥΠυϘοΫε 3 ݻఆۚ۩ ID material_id code 1 1 391001 2 3 369221 production_materials prototype_materials ID material_id 1 2 !65

Slide 66

Slide 66 text

֓೦͕ҟͳΔΤϯςΟςΟ͸ผΤϯςΟςΟʹ͢Δ !66 ݱঢ়͸ಉ͡ϑΟʔϧυΛ͍࣋ͬͯͯ΋ຊདྷ֓ ೦͕ҟͳΔΤϯςΟςΟͰ͋Ε͹ผΤϯςΟ ςΟʹ͢Δ΂͖ɻ ͞΋ͳ͍ͱϓϩμΫτͷਐԽʹ൐͍ͦΕͧΕ ͷΤϯςΟςΟʹඞཁͳΧϥϜ͕௥Ճ͞Ε NullableΧϥϜ͕Ͱ͖͕͋Δ͜ͱʹͳΔɻ

Slide 67

Slide 67 text

Nullable͸ΤϯςΟςΟΛࠞಉ͍ͯ͠Δष͍ !67

Slide 68

Slide 68 text

3. ΠϕϯτΛநग़͢Δ !68

Slide 69

Slide 69 text

ΤϯςΟςΟʹ͸ϦιʔεͱΠϕϯτ͕͋Δɻ ϦιʔεͱΠϕϯτ !69

Slide 70

Slide 70 text

ΤϯςΟςΟ໊+೔ͱݺΜͰҧ࿨ײͷͳ͍Τ ϯςΟςΟ͸Πϕϯτɻ Πϕϯτ !70

Slide 71

Slide 71 text

ݟੵґཔͱ͔ݟੵճ౴ͱ͔ൃ஫ͱ͔ Example !71

Slide 72

Slide 72 text

Πϕϯτ͸ۀ຿ͷه࿥Ͱ͋Γɺ B2BγεςϜͷத৺తଘࡏɻ
 Πϕϯτ(ۀ຿)Λه࿥͢Δ͜ͱ͕ B2BγεςϜͷ໾ׂͱ΋ݴ͑Δɻ Πϕϯτ !72

Slide 73

Slide 73 text

ͦͷͨΊɺΠϕϯτ͸Πϛϡʔλϒϧͳσʔ λͱͯ͠ѻ͏΂͖ɻ ΠϛϡʔλϒϧσʔλϞσϧ !73 ※͜ͷ͋ͨΓ͸ @kawasima ͞Μͷࢿྉ΍ ʮָʑERDϨοεϯ ʯ͕͍͢͝ษڧʹͳΓ·͢

Slide 74

Slide 74 text

Πϕϯτ͕ಈࢺͳͷʹର͠Ϧιʔε͸໊ࢺɻ Ϧιʔεͷߋ৽ॲཧΛΠϕϯτͱͯ͠நग़͢ Δ͜ͱ͕Մೳɻ Ϧιʔε !74

Slide 75

Slide 75 text

͋ΒΏΔϦιʔεʹର͢Δߋ৽ΛΠϕϯτͱ ͯ͠நग़͢Δͱ࣮૷ίετ͕ߴ͘ͳΔɻ ղܾ͍ͨ͠υϝΠϯͷத৺ʹҐஔ͢Δۀ຿ͷ ΈΠϕϯτͱͯ͠ϞσϦϯά͢Δɻ Πϕϯτͷநग़ΛͲ͜·Ͱߦͳ͏΂͖͔ʁ !75

Slide 76

Slide 76 text

RFQΫϥ΢υͰͷྫ αϓϥΠϠʔɺλάͷߋ৽ʹ͍ͭͯߟ͑Δ !76

Slide 77

Slide 77 text

suppliers ID name rating updated_at 1 औҾઌA 80 2019-05-16 09:10:11 2 औҾઌB 35 2019-05-17 12:51:02 suppliersςʔϒϧʹ͸αϓϥΠϠʔͷQCDධՁ͕ೖ͓ͬͯΓɺαϓϥΠ Ϡʔબఆʹ͓͍ͯॏཁͳ໾ׂΛ୲͏ɻ ͦͷͨΊɺ୭͕͍ͭͲͷΑ͏ʹมߋ͔ͨ͠ΛϢʔβʔ͕ӾཡͰ͖ΔΑ͏ʹ ͓͖͍ͯͨ͠ɻ !77 αϓϥΠϠʔͷ৔߹

Slide 78

Slide 78 text

suppliers ID name rating 1 औҾઌA 80 2 औҾઌB 35 !78 ID supplier_id name rating reason updated_at 1 1 औҾઌA 75 ೥࣍ධՁͷͨΊ 2019-03-03 19:42:01 2 1 औҾઌA 80 ࠓظ͔Βઃඋ౤ࢿ͕େ෯ʹ૿ ͑ڙڅ͕҆ఆ͖ͯͨͨ͠Ί 2019-05-16 09:10:11 supplier_updates αϓϥΠϠʔͷ৔߹

Slide 79

Slide 79 text

!79 αϓϥΠϠʔͷ৔߹ ͜ͷέʔεͰ͸αϓϥΠϠʔߋ৽ΛΠϕϯτͱ ͯ͠நग़͢Δ͜ͱͰϢʔβʔʹߋ৽৘ใʢ୭͕ ͍ͭͲͷΑ͏ʹߋ৽͔ͨ͠ʣΛӾཡͰ͖ΔΑ͏ ʹͨ͠ɻ

Slide 80

Slide 80 text

material_tags ID name 1 Ξϧϛ 2 εςϯϨε !80 λάͷ৔߹ λάͷઃఆ͸RFQΫϥ΢υͱ͍͏ϓϩμΫτ͕ఏڙ͢ΔՁ஋ͷத৺ʹ͸ͳ͍ɻ ͋͘·Ͱศརʹ࢖͏ͨΊͷػೳͰ͋Γɺ؂ࠪతͳূ੻΋ෆཁͳͨΊɺλάߋ৽ΛΠ ϕϯτͱͯ͠நग़͢Δඞཁ͸ͳ͍ɻ ΧελϚʔαϙʔτͰτϨʔε͢Δඞཁ͕͋Δ৔߹͸ผ్ϩάج൫Λ࡞ͬͯ౷ҰԽ ͢Δͱྑ͍ɻ

Slide 81

Slide 81 text

֎෦ΩʔΛ࣋ͭͱ͍͏͜ͱ͸ࢀরઌ ͷσʔλ͕ొ࿥͞Εͳ͍ݶΓɺࢀরݩ ͷσʔλΛొ࿥Ͱ͖ͳ͍ͱ͍͏͜ͱɻ 4. ֎෦Ωʔͷ࣋ͪํ͔ΒσʔλͷϥΠϑαΠΫϧΛߟ͑Δ !81

Slide 82

Slide 82 text

֎෦Ωʔͷ࣋ͪํΛؒҧ͑ΔͱΞϓϦέʔγϣ ϯ͔Βͷσʔλొ࿥ॲཧ͕ෳࡶʹͳͬͨΓɺ Ϣʔβʔͷۀ຿ʹଇ͞ͳ͍ػೳʹͳΔ͜ͱͰ ϢʔβϏϦςΟͷ௿ԼΛট͘͜ͱʹͳΔɻ ֎෦Ωʔͷ࣋ͪํͷॏཁੑ !82

Slide 83

Slide 83 text

Example ݟੵґཔ(request_for_quotations)ʹਤ໘ (diagram_images)Λఴ෇ͯ͠ૹ৴͢Δɻ !83

Slide 84

Slide 84 text

diagram_images ID name path request_for_quotation_id 1 ਤ໘_ver1 /images/xxxx/sample.jpeg 1 2 ਤ໘_ver2 /images/xxxx/sample2.jpeg 1 3 ਤ໘_ver3 /images/xxxx/sample3.jpeg 2 request_for_quotations ID produce_number 1 300 2 60 !84

Slide 85

Slide 85 text

diagram_images ID name path request_for_quotation_id 1 ਤ໘_ver1 /images/xxxx/sample.jpeg 1 2 ਤ໘_ver2 /images/xxxx/sample2.jpeg 1 3 ਤ໘_ver3 /images/xxxx/sample3.jpeg 2 request_for_quotations ID produce_number 1 300 2 60 diagram_iamges͸ඞͣ request_for_quotationsͷ࡞ ੒ޙʹొ࿥͢Δʁ !85

Slide 86

Slide 86 text

ۀ຿Λߟ͑Δ 1 ݟੵґཔ࡞੒લʹઃܭ෦໳͔Βਤ໘ϑΝΠϧ͚ͩڞ༗͞Ε Δͱ͍͏Ϣʔεέʔε 2 ਤ໘ϑΝΠϧΛ౎౓ΞοϓϩʔυͤͣʹϚελʔͱͯ͠ొ ࿥͓͖ͯ͠ɺݟੵґཔ࣌ʹ͸ͦΕΛࢀরར༻͢Δͱ͍͏Ϣ ʔεέʔε !86

Slide 87

Slide 87 text

ۀ຿Λߟ͑Δ 1 ݟੵґཔ࡞੒લʹઃܭ෦໳͔Βਤ໘ϑΝΠϧ͚ͩڞ༗͞Ε Δͱ͍͏Ϣʔεέʔε 2 ਤ໘ϑΝΠϧΛ౎౓ΞοϓϩʔυͤͣʹϚελʔͱͯ͠ొ ࿥͓͖ͯ͠ɺݟੵґཔ࣌ʹ͸ͦΕΛࢀরར༻͢Δͱ͍͏Ϣ ʔεέʔε ඞͣ͠΋ݟੵґཔ࡞੒ޙʹਤ໘Λొ࿥͢Δͱ͍͏Θ͚Ͱ͸ͳ͍ !87

Slide 88

Slide 88 text

diagram_images ID name path 1 ਤ໘_ver1 /images/xxxx/sample.jpeg 2 ਤ໘_ver2 /images/xxxx/sample2.jpeg 3 ਤ໘_ver3 /images/xxxx/sample3.jpeg request_for_quotations ID produce_number 1 300 2 60 ID diagram_image_id request_for_quotation_id 1 1 1 2 2 1 3 3 2 attached_diagram_images diagram_imagesͱ request_for_quotationsͷ σʔλొ࿥͸ॱෆಉʹͳͬͨ !88

Slide 89

Slide 89 text

·ͱΊ !89

Slide 90

Slide 90 text

1 ςφϯτؒͰ௨৴ͷ͋ΔMulti Tenancy͸σʔλͷॴ ༗ऀ͔Βߟ͑Δ 2 NullableͳΧϥϜ͕Ͱ͖ͨΒຊདྷผςʔϒϧʹ͢΂͖ ΋ͷ͕Ұॹʹͳ͍ͬͯΔ͜ͱΛٙ͏ 3 ΠϕϯτͱϦιʔεΛ੾Γ෼͚ɺϦιʔε͔ΒΠϕϯτ Λநग़͢Δ͔͸ۀ຿ཁ݅Λجʹ൑அ͢Δ 4 ֎෦ΩʔΛอ࣋͢Δςʔϒϧ͸ࢀরઌʹڧ͘ґଘ͢Δ ͱ͍͏͜ͱΛೝࣝ͢Δ !90

Slide 91

Slide 91 text

υϝΠϯΤΩεύʔτͱ͏·͘΍ΔͨΊʹ ൪֎ฤᶃ !91

Slide 92

Slide 92 text

1 ୟ͖୆ͱͳΔERDΛ࡞Δ 2 ERDͷؔ࿈͝ͱʹυϝΠϯʹదͨ͠ྫΛ༻͍ͳ͕Β࣮ମΛ ൓өͰ͖͍ͯΔ͔υϝΠϯΤΩεύʔτʹ֬ೝ͢Δ 3 ϢʔβʔετʔϦʔϚοϐϯά͕༗ޮ !92

Slide 93

Slide 93 text

Example ֎෦Ωʔͷ࣋ͪํɺNULLͷՄೳੑɺςʔϒϧ ͷؔ࿈(1:n/1:1/n:n)ʹ͍ͭͯ1ͭͣͭྫΛग़ ͠ͳ͕Βʮ○○͕ෳ਺ʹͳΔ͜ͱͬͯ͋Γ·͢ ͔ʁʯͳͲͱ࣭໰͍ͯ͘͠ɻ !93

Slide 94

Slide 94 text

Example diagram_images ID path request_for_quotation_id 1 /images/xxxx/sample.jpeg 1 2 /images/xxxx/sample2.jpeg 1 3 /images/xxxx/sample3.jpeg 2 request_for_quotations ID produce_number 1 300 2 60 !94

Slide 95

Slide 95 text

Example diagram_images ID path request_for_quotation_id 1 /images/xxxx/sample.jpeg 1 2 /images/xxxx/sample2.jpeg 1 3 /images/xxxx/sample3.jpeg 2 request_for_quotations ID produce_number 1 300 2 60 ਤ໘ϑΝΠϧͬͯݟੵґཔΛϝʔϧͰ͢ Δͱ͖ʹෳ਺ૹͬͯ·ͨ͠ʁ me !95

Slide 96

Slide 96 text

Example diagram_images ID path request_for_quotation_id 1 /images/xxxx/sample.jpeg 1 2 /images/xxxx/sample2.jpeg 1 3 /images/xxxx/sample3.jpeg 2 request_for_quotations ID produce_number 1 300 2 60 ݟੵґཔΛૹΔલʹਤ໘ϑΝΠϧ͚ͩଞ෦ ໳͔Βڞ༗͞ΕΔ͜ͱ͸͋Γ·͔͢ʁ me !96

Slide 97

Slide 97 text

͋͘·ͰυϝΠϯΤΩεύʔτͷطଘۀ຿ͷதͷݴ༿Ͱ۩ମྫΛग़͢ɻ !97 ✕ RFQʹରͯ͠ఴ෇ϑΝΠϧ͸ෳ਺͖ͭ·͔͢ʁ ̋ ͍··ͰݟੵґཔΛ͢Δͱ͖ɺϝʔϧʹਤ໘Λෳ਺ ఴ෇ͯ͠ૹ৴ͯ͠·ͨ͠ʁ

Slide 98

Slide 98 text

υϝΠϯΤΩεύʔτ΁ͷґཔͷ࢓ํ υϝΠϯΤΩεύʔτ͔Β͢Δͱɺʮͦͷࡉ͔ ͍࣭໰ඞཁʁʯͱ͍͏ؾ࣋ͪʹͳΓ΍͍͢ɻ ͔ͩΒɺʮ૝ఆ֎ͷϢʔεέʔεʹؾͮ͘͜ͱ ͕ࠓޙͷγεςϜ։ൃͷεϐʔυΛ଎͘͢Δʯ ͱ͍͏͜ͱΛ఻͑ͯɺ͍ΖΜͳέʔεͷ૝૾Λ ๲Β·ͤͯ΋Β͏Α͏ʹ͢Δɻ !98

Slide 99

Slide 99 text

ϢʔβʔετʔϦʔϚοϐϯά ڞ௨ݴޠ͕গͳ͍͔Βɺ͓ޓ͍ͷೝࣝ΍ཧղ౓ Λ߹Θͤͯ࿙ΕΛ๷͙ͨΊʹϢʔβʔετʔϦʔ Ϛοϐϯά͕༗ޮ !99

Slide 100

Slide 100 text

ϢʔβʔετʔϦʔϚοϐϯά !100 ΦϑΟεͷนҰ໘ʹ෇ᝦͰ֤εςʔΫϗϧμʔͷؔΘΓํΛϢʔ βʔετʔϦʔϚοϐϯάͱͯ͠ચ͍ग़͍ͯ͠Δࣸਅ

Slide 101

Slide 101 text

׳Εͳ͍υϝΠϯΛਂງΓ͗ͨ͢͠ͱ͖ͷ஫ҙ఺ ൪֎ฤᶄ !101

Slide 102

Slide 102 text

׳Εͳ͍ۀքͷۀ຿͸ਂງΓͯ͠Πϯϓοτ͢Δ ͷʹਫ਼ҰഋʹͳΓ͕ͪɻ ͦͷ݁ՌɺਂງΓͨ͠ۀ຿Λͦͷ··ϓϩμΫτ ͷػೳ΍σʔλϞσϦϯάʹ൓өͯ͠͠·͏ͱ͍ ͏ϛεΛͨ·ʹ͢Δɻ طଘۀ຿Λͦͷ··ϞσϦϯάͯ͠͠·͏ !102

Slide 103

Slide 103 text

طଘۀ຿ΛਂງΓ্ͨ͠Ͱɺཧ૝ͷۀ຿Λߟ͑ͯ ͔ΒσʔλϞσϦϯάΛ͢Δ΂͖ɻ ͭ·Γɺ࡞Δ΂͖ػೳΛ ॴ༩ͷ΋ͷͱͯ͠ѻΘͳ͍͜ͱɻ طଘۀ຿Λཧղ্ͨ͠Ͱཧ૝ͷۀ຿Λߟ͑Δඞཁ͕͋Δ !103

Slide 104

Slide 104 text

඼໨(materials)ͷσʔλϞσϦϯά RFQΫϥ΢υͰͷྫ !104

Slide 105

Slide 105 text

ੜ࢈؅ཧγεςϜͰ͸BOM(Bills of materials)ͱ͍͏෦඼ද͕͋Δɻ BOMʹ͸ੜ࢈ʹඞཁͳࡐྉ͸શͯొ࿥͞ΕΔɻ લఏ !105

Slide 106

Slide 106 text

BOMͷ֓೦Λ΋ͱʹRFQΫϥ΢υʹ materialsςʔϒϧΛ࡞੒͕ͨ͠ɺࡐྉͷछྨʹ Αͬͯௐୡ୲౰΋มΘΔ͠ɺങ͍ํ΋มΘΔ͔Β ςʔϒϧ͕Ұॹ͸·͍ͣͷͰ͸ʁ ੜͨٙ͡೦ !106

Slide 107

Slide 107 text

ௐୡ඼ͷछผ͝ͱʹςʔϒϧΛผͰ࡞੒͢ΔΑ͏ ʹมߋ͠Α͏ͱ͍͕ͯͨ͠ɺௐୡ඼ຖʹRFQΫ ϥ΢υ্ͷۀ຿͕มΘΔͷ͔Λߟ͍͑ͯͳ͍͜ͱ ʹؾ෇͍ͨɻ ௐୡ඼͝ͱʹςʔϒϧͷ෼཭Λߟ͕͑ͨ… !107

Slide 108

Slide 108 text

ݱঢ়ͩͱௐୡ඼ʹΑͬͯϓϩμΫτͷػೳ͕มΘ Δ͜ͱ͸ͳ͔ͬͨɻ ͞ΒʹϓϩμΫτͷະདྷʹ͍ͭͯ΋ٞ࿦͕ͨ͠ɺ ౰໘͸ݱঢ়ͷςʔϒϧߏ੒Ͱ໰୊ͳͦ͞͏ͩͬͨɻ ϓϩμΫτͷະདྷʹ͍ͭͯߟ͍͑ͯͳ͔ͬͨ !108

Slide 109

Slide 109 text

ΑΓྑ͍σʔλϞσϦϯάΛ͢ΔͨΊͷώϯτ͸ɺ ۀ຿ʢυϝΠϯ஌ࣝʣͱϓϩμΫτͷະདྷʹ͋Δɻ υϝΠϯ஌ࣝΛಘΔ͚ͩͰͳ͘ɺϓϩμΫτͷະདྷ ʢͭ·ΓPMʣʹ΋ੵۃతʹؔΘ͍ͬͯ͘΂͖ɻ σʔλϞσϦϯάʹ͸ϓϩμΫτͷະདྷ͕ॏཁ !109

Slide 110

Slide 110 text

A1AͰ͸Dual Track AgileΛ࠾༻ Ծઆݕূ(Prototyping)ͱ։ൃ (Develop)ͷαΠΫϧΛฒߦͯ͠·Θ ͢ਐΊํɻ ΤϯδχΞ΋PrototypingʹࢀՃ͢ ΔʢΤϯδχΞࢹ఺ͰʣͨΊɺͦ͜Ͱ ͷϓϩμΫτͷະདྷΛٞ࿦͠ɺΑΓྑ ͍σʔλϞσϦϯάʹܨ͛ΔΑ͏ʹ͠ ͍ͯΔɻ Dual Track Agile !110

Slide 111

Slide 111 text

൪֎ฤ·ͱΊ !111

Slide 112

Slide 112 text

1 υϝΠϯΤΩεύʔτʹ͸࣮ۀ຿ΛΠϝʔδͯ͠΋Β͍ ͳ͕Β࣭໰͠Α͏ 2 ϢʔβʔετʔϦʔϚοϐϯά͕༗ޮ 3 ΑΓྑ͍σʔλϞσϦϯάͷώϯτ͸υϝΠϯ஌ࣝͱ ϓϩμΫτͷະདྷʹ͋Δ !112

Slide 113

Slide 113 text

We are hiring! A1A !113