はじめてのB2B SaaSデータモデリング in Builderscon 2019

はじめてのB2B SaaSデータモデリング in Builderscon 2019

593d3386f15e6b97737c0cfb048992e6?s=128

sasaki nobuya

August 30, 2019
Tweet

Transcript

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

    @__mnc90 1
  2. Name ࠤʑ໦ Ԇ໵ Company A1Aגࣜձࣾ (ΤΠϫϯΤΠ) Career ৯΂ϩά → Speee

    → A1AΛڞಉ૑ۀ URL twitter.com/__mnc90 manchose.hatenablog.jp About CTOͱͯ͠RFQΫϥ΢υͷσʔλϕʔεઃ ܭͱΠϯϑϥߏஙɺ૊৫ͮ͘ΓͳͲΛ୲౰ !2
  3. B2BͷऔҾΛϫϯϥϯΫ্ʹ Vision !3

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

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

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

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

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

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

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

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

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

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

  14. ΍ͬͨ΄͏͕ྑͦ͞͏ͳ͜ͱ TDD E2E GraphQL React TypeScript Serverless Kubernetes GitOps Design

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

    System Atomic Design DDD σʔλ ϞσϦϯά ஫ҙ) σʔλϞσϦϯάҎ֎΍͍ͬͯͳ͍Θ͚Ͱ͸ͳ͍Ͱ͢ !15
  16. “DBͷण໋͸ΞϓϦέʔγϣϯΑΓ௕͍” @soudai1025 ͞Μ DBͷॏཁੑ !16

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

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

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

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

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

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

    υϝΠϯΛਂງ͢Δͱ͖ͷ஫ҙ఺
  23. B2B SaaSͷσʔλϞσϦϯάͷਐΊํ !23

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

  25. !25 ϓϩμΫτ֓ཁ

  26. Topic !26

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

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

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

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

  31. Single Tenancy !31 Web DB Web DB ςφϯτA ςφϯτB ֤ࣾʢAɾBʣͦΕͧΕಠཱͨ͠ઐ༻ͷΠϯϑϥΛߏங


    B޲͚ͷγεςϜʹ͸͜ͷܗଶ͕ࠓ·Ͱଟ͔ͬͨ ஫ҙ) ෼͔Γ΍͢͞Λॏࢹ͠ɺਖ਼֬ੑ͸͍͍ܽͯ·͢
  32. Multi Tenancy !32 Web DB ςφϯτA ςφϯτB ֤ࣾʢAɾBʣWebɾDBαʔόʔΛڞ༗ͯ͠ར༻͢Δ ஫ҙ) ෼͔Γ΍͢͞Λॏࢹ͠ɺਖ਼֬ੑ͸͍͍ܽͯ·͢

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

  34. Multi Tenancyͷ࣮ݱํ๏ 1 ςφϯτຖʹDatabase or SchemaΛ෼཭ 2 શςʔϒϧʹtenant_idΧϥϜΛ༻ҙ SmartHR͞ΜͷൃදͰ migration࣌ؒͷര૿ͳͲ

    εέʔϥϏϦςΟʹ໰୊͕͋Δͱ !34
  35. (΄΅)શςʔϒϧʹtenant_idΧϥϜΛ༻ҙ͢ΔMulti Tenancyͷ࣮ݱํ๏ !35 Tenants Quotations Aגࣜձࣾ ஫ҙ) ෼͔Γ΍͢͞Λॏࢹ͠ɺਖ਼֬ੑ͸͍͍ܽͯ·͢ https://a-inc.a1a.com Users

    ᶃ subdomainΛجʹTenantsςʔ ϒϧͷIDΛಛఆ ᶄ ಉҰϦΫΤετத͸શςʔϒϧ΁ ͷΫΤϦͷWHERE۟ʹऔಘͨ͠ tenant_idͰͷߜΓࠐΈ͕ઃఆ͞ΕΔ ᶃ ᶄ ᶄ
  36. Multi TenancyͷϝϦοτ !36 1 σʔλ࿙ӮͷϦεΫ͕ݮΔɻςφϯτຖʹσʔλྖҬ Λ۠੾Δ͜ͱͰɺΞϓϦέʔγϣϯ։ൃऀ͕ςφϯτ Λҙࣝ͢Δඞཁ͕ͳ͘ͳΔɻ 2 ސ٬اۀͷηΩϡϦςΟνΣοΫϦετΛಥഁ͠΍͢ ͍ɻ

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

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

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

  40. 1. όΠϠʔ୯ҐͰςφϯτΛ࡞੒͢Δ tenant_id: 1 tenant_id: 2 tenant_id: 3 όΠϠʔA όΠϠʔB

    όΠϠʔC αϓϥΠϠD αϓϥΠϠE αϓϥΠϠD αϓϥΠϠG αϓϥΠϠF αϓϥΠϠF αϓϥΠϠH !40 αϓϥΠϠʔ͸όΠϠʔͷςφϯτʹॴଐ͢Δ
  41. 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
  42. 1. σʔλͷॴ༗ऀ͔Βςφϯτͷ୯ҐΛߟ͑Δ !42

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

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

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

  46. ಋೖͨ͠όΠϠʔ͕࿈Ε͖ͯͯ͘ΕΔαϓϥΠϠʔͱ͍͏ࢿ࢈ !46 όΠϠʔ αϓϥΠϠʔ αϓϥΠϠʔ αϓϥΠϠʔ αϓϥΠϠʔ αϓϥΠϠʔ όΠϠʔ͸ݟੵͷ΍ΓͱΓΛ͢ΔαϓϥΠϠʔͱ RFQΫϥ΢υΛ࢖༻͢ΔɻࣗಈతʹαϓϥΠϠʔ

    ͷΞΧ΢ϯτʢແྉʣ͕ൃߦ͞ΕΔ͜ͱʹͳΔɻ ࠓޙ͸͜ͷαϓϥΠϠʔʹ΋Ձ஋Λఏڙ͍ͯ͘͠ ͜ͱͰϏδωε֦େͷՄೳੑ͕͋Δɻ ଟ͍ͱ͖͸਺ઍࣾ࿈Ε͖ͯͯ͘ΕΔ
  47. αϓϥΠϠʔʹՁ஋Λఏڙ͢ΔͨΊʹ͸ʁ !47 ҟͳΔόΠϠʔͱ΍ΓऔΓ͢Δ৔߹Ͱ΋ ಉ͡ΞΧ΢ϯτͰ΍ΓऔΓ͍ͨ͠ɻ όΠϠʔຖʹΞΧ΢ϯτΛൃߦ͢Δͱ αʔϏεମݧ͕ѱԽ͢Δɻ

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

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

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

    όΠϠʔɾαϓϥΠϠʔͰςφϯτΛผʹ͢ΔϝϦοτ !50
  51. RFQΫϥ΢υͰͷྫ ݟੵґཔʹରͯ͠ݟੵճ౴Λߦ͏ !51

  52. accounts ID name tenant_id role 1 ࠤʑ໦ 1 όΠϠʔ 2

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

    3 ਅน 3 2. όΠϠʔͱαϓϥΠϠʔʹͦΕͧΕಠཱͨ͠ςφϯτΛ࡞੒͢Δ৔߹ !54 ID name role 1 ձࣾA όΠϠʔ 2 ձࣾB αϓϥΠϠʔ 3 ձࣾC όΠϠʔ tenants ஫ҙ) ෼͔Γ΍͢͞Λॏࢹ͠ɺਖ਼֬ੑ͸͍͍ܽͯ·͢
  55. 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 ஫ҙ) ෼͔Γ΍͢͞Λॏࢹ͠ɺਖ਼֬ੑ͸͍͍ܽͯ·͢
  56. ςφϯτؒͷσʔλͷ΍ΓͱΓ ςφϯτΛ·͙ͨσʔλͷ΍ΓͱΓ͸ σʔλΛίϐʔͯ͠ड͚౉͢͠Δɻ !56

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

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

  59. RFQΫϥ΢υͰͷྫ !59

  60. materials ID name code 1 ϒϥέοτ 391001 2 εϥΠυϘοΫε NULL

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

    material_id code 1 1 391001 2 3 369221 material_codes ͱΓ͋͑ͣNULL͸ແ͘ͳͬͨʂ Ͱ΋ɺ͜ΕͰ͍͍ͷ͔ʁ !61
  62. ͳͥNULLؚ͕·ΕΔͷͩΖ͏ !62

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  80. material_tags ID name 1 Ξϧϛ 2 εςϯϨε !80 λάͷ৔߹ λάͷઃఆ͸RFQΫϥ΢υͱ͍͏ϓϩμΫτ͕ఏڙ͢ΔՁ஋ͷத৺ʹ͸ͳ͍ɻ

    ͋͘·Ͱศརʹ࢖͏ͨΊͷػೳͰ͋Γɺ؂ࠪతͳূ੻΋ෆཁͳͨΊɺλάߋ৽ΛΠ ϕϯτͱͯ͠நग़͢Δඞཁ͸ͳ͍ɻ ΧελϚʔαϙʔτͰτϨʔε͢Δඞཁ͕͋Δ৔߹͸ผ్ϩάج൫Λ࡞ͬͯ౷ҰԽ ͢Δͱྑ͍ɻ
  81. ֎෦ΩʔΛ࣋ͭͱ͍͏͜ͱ͸ࢀরઌ ͷσʔλ͕ొ࿥͞Εͳ͍ݶΓɺࢀরݩ ͷσʔλΛొ࿥Ͱ͖ͳ͍ͱ͍͏͜ͱɻ 4. ֎෦Ωʔͷ࣋ͪํ͔ΒσʔλͷϥΠϑαΠΫϧΛߟ͑Δ !81

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

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

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

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

  88. 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
  89. ·ͱΊ !89

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

    4 ֎෦ΩʔΛอ࣋͢Δςʔϒϧ͸ࢀরઌʹڧ͘ґଘ͢Δ ͱ͍͏͜ͱΛೝࣝ͢Δ !90
  91. υϝΠϯΤΩεύʔτͱ͏·͘΍ΔͨΊʹ ൪֎ฤᶃ !91

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ͍ͯΔɻ Dual Track Agile !110
  111. ൪֎ฤ·ͱΊ !111

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

  113. We are hiring! A1A !113