Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データ基盤のメタデータを継続的に管理できる仕組みを作る(ペパボ編) / pepabohatena

データ基盤のメタデータを継続的に管理できる仕組みを作る(ペパボ編) / pepabohatena

ペパボ・はてな技術大会〜@オンライン
https://pepabo.connpass.com/event/174331/

Ken’ichiro Oyama

May 14, 2020
Tweet

More Decks by Ken’ichiro Oyama

Other Decks in Technology

Transcript

  1. খࢁ݈Ұ࿠(.01FQBCP *OD
    ϖύϘɾ͸ͯͳٕज़େձʙ!ΦϯϥΠϯ
    σʔλج൫ͷϝλσʔλΛ
    ܧଓతʹ؅ཧͰ͖Δ࢓૊ΈΛ࡞Δ
    ʢϖύϘฤʣ

    View Slide

  2. ϓϦϯγύϧΤϯδχΞ
    খࢁ݈Ұ࿠!L-P8
    ϗεςΟϯάࣄۀ෦ϗεςΟϯάάϧʔϓϚωʔδυΫϥ΢υνʔϜ
    IUUQTHJUIVCDPNL-P8

    View Slide


  3. View Slide

  4. View Slide

  5. ຊ୊

    View Slide

  6. IUUQTEFWFMPQFSIBUFOBTUB⒎DPNFOUSZ

    View Slide

  7. ຊൃදʹ͓͚Δ
    lσʔλج൫ͷϝλσʔλzͱ͸

    View Slide

  8. σʔλ෼ੳΛਖ਼֬ʹߦͳ͏ͨΊʹ͸ɺσʔλࣗ਎ʹؔ͢Δ஌ࣝ ϝλσʔλ
    ͕
    ඞཁͰ͢ɻ
    ʢதུʣ
    ͜͏͍ͬͨϝλσʔλ͸Ͳ͜ʹ͋ΔͰ͠ΐ͏͔ɻ
    ΞϓϦέʔγϣϯͷίʔυɺ(JU)VC্ͷJTTVFͰͷ΍ΓऔΓɺXJLJͳͲͷΩʔ
    ϫʔυϖʔδɺ༷ʑͩͱࢥ͍·͢ɻΞϓϦέʔγϣϯΤϯδχΞͰ͋Ε͹ɺඞཁ
    ʹԠͯ͡ίʔυͳͲΛࢀর͠ɺྺ࢙Λඥղ͘͜ͱͰϝλσʔλΛखʹ͢Δ͜ͱ͕
    Ͱ͖ΔͰ͠ΐ͏ɻ
    JETZPV
    ʮσʔλج൫ͷϝλσʔλΛܧଓతʹ؅ཧͰ͖Δ࢓૊ΈΛ࡞ΔʯΑΓ

    View Slide

  9. w ͜ͷςʔϒϧΧϥϜ͸ԿͷͨΊͷςʔϒϧͳͷ͔
    w ࣅͨΑ͏ͳΧϥϜͱͷҧ͍
    w ूܭ৚݅ͷҧ͍ɺͳͲ
    w σʔλ͕ͲͷΑ͏ͳ஋ΛऔΓಘΔ͔
    w 4&-&$5DPMVNO $06/5
    '30.NZ@UBCMF(3061#:DPMVNOͰςʔϒϧத
    ʹग़ͯ͘Δ஋ΛྻڍͰ͖Δ͕ɺͨ·ͨ··ͩग़͍ͯͳ͍஋͕͋Δ͔΋͠Εͳ͍
    w σʔλ͚ͩݟͯ$"4&Ͱ෼ذ͍ͯ͠Δͱߟྀ࿙Ε͕ى͜Δ
    w 99೥::݄Ҏલ͸ඞͣ/6--ʹͳ͍ͬͯΔ
    ϝλσʔλʢσʔλϕʔεͷ৔߹ʣ
    ʮσʔλج൫ͷϝλσʔλΛܧଓతʹ؅ཧͰ͖Δ࢓૊ΈΛ࡞ΔʯΑΓ

    View Slide

  10. ຊൃදʹ͓͚Δ༻ޠ
    w ϝλσʔλʜσʔλࣗ਎ʹؔ͢Δ஌ࣝɻ
    w ྫ͑͹σʔλιʔεʹͳ͍ͬͯΔσʔλϕʔε΍ςʔϒϧɺΧϥϜͳͲͷઆ໌ͳ
    Ͳɻ#JH2VFSZʹ͓͍ͯ͸σʔληοτςʔϒϧΧϥϜͷ%FTDSJQUJPOɺλάʹ
    ϝλσʔλ͕ه࿥͞ΕΔɻ
    w σʔλΧλϩάʜσʔλج൫ͷϝλσʔλΛࢀরɾ؅ཧͰ͖Δج൫ɻ#JH2VFSZ͕อ
    ࣋͑͠ͳ͍ϝλσʔλΛ࣋ͭ৔߹΋͋Δɻ

    View Slide

  11. #JHGPPU

    View Slide

  12. #JHGPPU
    w ߦಈϩά׆༻ج൫ͱͯ͠஀ੜ
    w ౰ॳ͔Βࠃ಺࠷େڃϋϯυϝΠυϚʔέοτNJOOFΛࢧ͑Δϩάج൫ͱͯ͠׆༻͞
    Ε͍ͯͨ
    w ͦͷ׆༻ൣғΛ޿͛ͨ݁Ռɺzߦಈϩάzج൫͔ΒΑΓଟ༷ͳσʔλ͕ू໿͞ΕΔ
    σʔλج൫ʹਐԽ͍ͯ͠ΔʢݱࡏਐߦܗͰ֦ு͍͍ͯͬͯ͠Δʣ
    w ʢݱࡏ͸ʣόοΫΤϯυͷσʔλ΢ΣΞϋ΢εͱͯ͠#JH2VFSZΛར༻

    View Slide

  13. #JHGPPU

    View Slide

  14. #JHGPPUʢ#JH2VFSZʣʹू໿͞ΕΔσʔλྫ
    w ߦಈϩά
    w σʔλϕʔεͷσʔλʢશͯɺҰ෦ɺՃ޻ʣ
    w ΧελϚʔαʔϏεج൫ͷϩά
    w αʔόϩά
    w αʔόϝτϦΫε
    w (JU)VC*TTVFT
    ू໿͞ΕΔσʔλͷछྨ͸ଟذʹΘͨΓɺ͜Ε͔Β΋૿͑Δ

    View Slide


  15. View Slide

  16. σʔλΧλϩάʹٻΊΔཁ݅

    View Slide

  17. σʔλΧλϩάʹٻΊΔཁ݅
    ϝλσʔλͷߋ৽͸ɺΤϯδχΞҎ֎Ͱ΋Ͱ͖ΔΑ͏ʹͳ͍ͬͯΔ͜ͱ
    w ϝλσʔλͷߋ৽ͷෑډΛͰ͖ΔݶΓԼ͛Δ͜ͱͰϝλσʔλΛॆ࣮ͤ͞Δ
    ಈతʹมԽ͠͏ΔσʔληοτςʔϒϧΧϥϜʹରԠͰ͖Δ͜ͱ
    w ऩू͞ΕΔσʔλ΋छྨ΋૿ݮ͕͋Δɻͦͷঢ়ଶͷมԽʹ௥ैͰ͖Δ͜ͱ
    ϝλσʔλͷೋॏ؅ཧΛආ͚ΒΕΔΑ͏ͳ࢓૊ΈΛ࣋ͯΔ͜ͱ
    w ಉ͡Α͏ͳ%%-ͳΒϝλσʔλΛڞ௨ԽͰ͖ΔΑ͏ʹ
    w σʔλιʔε͕3%#ͳΒʢςʔϒϧΧϥϜίϝϯτ͕ϝλσʔλʣɺ3%#͔Β
    ϝλσʔλΛऔಘͰ͖ΔΑ͏ʹ

    View Slide

  18. σʔλΧλϩάʹٻΊΔཁ݅ʢղܾʣ
    ϝλσʔλͷߋ৽͸ɺΤϯδχΞҎ֎Ͱ΋Ͱ͖ΔΑ͏ʹͳ͍ͬͯΔ͜ͱ
    ˠ :".-ʹΑΔϝλσʔλͷఆٛͱߋ৽ऀϑϨϯυϦͳ1VMM3FRVFTUϕʔεͷϝ
    λσʔλߋ৽ػߏ
    ಈతʹมԽ͠͏ΔσʔληοτςʔϒϧΧϥϜʹରԠͰ͖Δ͜ͱ
    ˠ ఆظతͳσʔληοτҰཡͷऔಘͱಈతͳσʔλΧλϩάੜ੒ػߏ
    ϝλσʔλͷೋॏ؅ཧΛආ͚ΒΕΔΑ͏ͳ࢓૊ΈΛ࣋ͯΔ͜ͱ
    ˠ ϨΠϠʔػߏΛ࣋ͭઐ༻ͷϚʔδػߏ

    View Slide

  19. #JHGPPU

    View Slide


  20. View Slide

  21. UCMT
    w $*ϑϨϯυϦͳσʔλϕʔευΩϡϝϯτੜ੒πʔϧ
    w IUUQTHJUIVCDPNL-P8UCMT
    w $*ϑϨϯυϦϫϯόΠφϦ
    w 1PTUHSF42- .Z42-ͳͲͷ3%#.4͚ͩͰͳ͘ɺ#JH2VFSZ΍"NB[PO
    %ZOBNP%# $MPVE4QBOOFSͱ͍ͬͨσʔλιʔεʹ΋ରԠ
    wυΩϡϝϯτΛॆ࣮ͤ͞Δػೳͱͯ͠Ծ૝తͳϝλσʔλΛఆٛ͢Δ͜ͱ͕Մೳ
    w ςʔϒϧɺΧϥϜͳͲͷίϝϯτ෇༩͚ͩͰͳ͘λάɺϦϨʔγϣϯͳͲ
    w UCMTͷ਺͋ΔػೳͷதͰσʔλΧλϩάΛ࡞Δ্Ͱத৺ͱͳΔػೳ

    View Slide

  22. Ծ૝తͳϝλσʔλ
    w σʔλιʔεͷ৘ใ͔ΒυΩϡϝϯτΛੜ੒͢Δͷ͕UCMTͷجຊͷػೳʢUCMTEPDʣ
    w͞ΒʹUCMTZNMʹهࡌ͞Εͨίϝϯτ΍ϦϨʔγϣϯΛϚʔδͯ͠υΩϡϝϯτԽͰ
    ͖Δ
    w "-5&35"#-&ͳͲΛ͢Δඞཁͳ͘υΩϡϝϯτΛߋ৽Ͱ͖Δ
    w σʔλιʔεଆ͕ίϝϯτ΍',ͷػೳΛ͍࣋ͬͯͳͯ͘΋υΩϡϝϯτͰ͸දݱͰ
    ͖ΔʢʹԾ૝తʣ

    View Slide

  23. :".-ʹΑΔϝλσʔλͷఆٛͱ
    ߋ৽ऀϑϨϯυϦͳ
    1VMM3FRVFTUϕʔεͷϝλσʔλߋ৽ػߏ

    View Slide

  24. ߋ৽ऀϑϨϯυϦͳ1VMM3FRVFTUϕʔεͷϝλσʔλߋ৽ػߏ
    w ʮ:".-ʹΑΔϝλσʔλͷఆٛʯ͸UCMTͷجຊػೳ
    w ʮ1VMM3FRVFTUϕʔεʯ΋$*ͰUCMTEPDͰग़ྗͨ͠υΩϡϝϯτΛίϛοτ͢Ε͹
    ͍͍
    w ʮߋ৽ऀϑϨϯυϦʯʮ:".-ͷߋ৽Λ೗ԿʹΘ͔Γ΍͘͢͢Δ͔ʯ
    ϚχϡΞϧͷॆ࣮
    ʮҙਤͨ͠ߋ৽͕͞ΕΔ͔ʯΛΘ͔Γ΍ࣔ͘͢͢
    ʮ:".-ͷهड़ϛεͳͲͷΤϥʔʯΛΘ͔Γ΍ࣔ͘͢͢

    View Slide

  25. $*ͷ݁ՌΛΘ͔Γ΍͘͢1VMM3FRVFTUʹίϝϯτͰొ࿥͢Δ
    w UCMTEJ⒎ͰɺʮݩͷυΩϡϝϯτʯͱʮੜ੒͞ΕΔυΩϡϝϯτʯͷࠩ෼ΛEJ⒎දࣔ
    ͕Ͱ͖Δ
    w UCMTMJOUͰɺϝλσʔλ͕ࢦఆͷϧʔϧʹԊ͍ͬͯΔ͔Ͳ͏͔ΛνΣοΫͰ͖Δ
    w ʮλά͕#JH2VFSZͷλάϑΥʔϚοτʹ४ڌ͍ͯ͠Δ͔Ͳ͏͔ʯͳͲ
    w UCMTEJ⒎΍UCMTMJOUͷ݁ՌΛ$*؀ڥ͔Βऔಘͯ͠1VMM3FRVFTUʹΘ͔Γ΍͘͢ίϝϯ
    τͰొ࿥͢Δ
    w :".-ͷγϯλοΫεΤϥʔͳͲΘ͔Γʹ͍͘Τϥʔ͸ʮΤϥʔͷಡΈํʯ΋ί
    ϝϯτͰొ࿥͢Δ

    View Slide

  26. HIQVU
    w (JU)VCʹ͍ΖΜͳ΋ͷΛ165ʢొ࿥ʣͰ͖Δπʔϧ
    w IUUQTHJUIVCDPNL-P8HIQVU
    w 3BLFλεΫ಺Ͱ&3#Λۦ࢖ͯ͠ίϝϯτจষΛ࡞੒ɻHIQVUͰ1VMM3FRVFTUʹί
    ϝϯτΛొ࿥ʢPO$*ʣ

    View Slide

  27. ఆظతͳσʔληοτҰཡͷऔಘͱ
    ಈతͳσʔλΧλϩάੜ੒

    View Slide

  28. ఆظతͳσʔληοτҰཡͷऔಘͱಈతͳσʔλΧλϩάੜ੒
    w UCMT͸ෳ਺ͷσʔλιʔεͷυΩϡϝϯτੜ੒͸૝ఆ͍ͯ͠ͳ͍
    w #JH2VFSZʹ͋ΔσʔληοτҰཡ͕ඞཁ
    w Ұཡ͔Β֤σʔληοτͷUCMTZNMΛੜ੒Ͱ͖Ε͹͍͍
    w LVSBHFNΛ࢖ͬͯ#JH2VFSZ͔ΒσʔληοτҰཡΛऔಘ͢Δ3BLFλεΫͱͯ͠
    هड़

    View Slide


  29. # kura.gem
    # https://github.com/nagachika/kura/
    # Fukuoka.rbͷओ࠵ͷҰਓͰ΋͋Δid:nagachika͞Μ࡞੒ͷBigQuery APIϥούʔ
    ˌҎԼͷίʔυ͚ͩͰೝূ͔ΒσʔληοτҰཡऔಘ·ͰͰ͖Δ
    require 'kura'
    client = Kura.client('/path/to/client_secrets.json')
    client.datasets(project_id: 'xxxxxxx').each do |dataset|
    puts dataset.id
    end

    View Slide

  30. ఆظతͳσʔληοτҰཡͷऔಘͱಈతͳσʔλΧλϩάੜ੒
    w ͜ͷ࣌఺Ͱ͸ϝλσʔλ͸#JH2VFSZυΩϡϝϯτͷҰํ௨ߦ
    w ߋ৽ͨ͠ϝλσʔλͷ৘ใΛ#JH2VFSZʹ൓өͤ͞Δඞཁ͕͋Δ

    View Slide


  31. View Slide

  32. UCMTNFUB
    w UCMT͕อ࣋͢ΔϝλσʔλΛɺσʔλιʔεʹϑΟʔυόοΫͯ͠ߋ৽͢Δ֎෦αϒ
    ίϚϯυ
    w IUUQTHJUIVCDPNL-P8UCMTNFUB
    w $*ͷσʔληοτҰཡऔಘͷ࣍ͷεςοϓʹ૊ΈࠐΜͰఆظ࣮ߦ
    ֎෦αϒίϚϯυʜHJUHTVCΛHJUHTVCͰ࣮ߦͰ͖ΔΑ͏ʹͳΔΞϨ

    View Slide

  33. ϨΠϠʔػߏΛ࣋ͭઐ༻ͷϚʔδػߏ

    View Slide

  34. ཁ݅࠶ܝ
    wʮϝλσʔλͷೋॏ؅ཧΛආ͚ΒΕΔΑ͏ͳ࢓૊ΈΛ࣋ͯΔ͜ͱʯ
    w ಉ͡Α͏ͳ%%-ͳΒϝλσʔλΛڞ௨ԽͰ͖ΔΑ͏ʹ
    ˠ ಉ͡σʔλιʔεͷςʔϒϧΛαʔϏε͝ͱʹ෼ׂ͍ͯ͠Δ৔߹ͳͲ
    w σʔλιʔε͕3%#ͳΒʢςʔϒϧΧϥϜίϝϯτ͕ݩϝλσʔλʣɺ3%#͔
    ΒϝλσʔλΛऔಘͰ͖ΔΑ͏ʹ
    ˠ σʔλج൫ͱ͸ผʹ3%#͸3%#ͰͦΕΛར༻͍ͯ͠ΔΞϓϦέʔγϣϯͷ։
    ൃνʔϜͰ؅ཧӡ༻͍ͯ͠Δ
    w͔͠͠ɺUCMT͕ઃఆͱͯ͠ಡΈࠐΉUCMTZNM͸ͭͷ:".-ϑΝΠϧͰɺ%4-Λ΋ͬ
    ͍ͯΔΘ͚Ͱ͸ͳ͍

    View Slide


  35. View Slide

  36. UCMTCVJME
    w UCMTZNMʹଞͷઃఆͷαϒηοτ:".-ϑΝΠϧ΍ɺσʔλιʔε͔Βੜ੒ͨ͠
    TDIFNBKTPOΛɺϨΠϠʔߏ଄Λҙࣝͨ͠ܗͰϚʔδͰ͖Δ֎෦αϒίϚϯυ
    w IUUQTHJUIVCDPNL-P8UCMTCVJME
    w ϕʔεͷUCMTZNMʹରͯ͠ɺσϑΥϧτ஋ͳͲ͸Լ૚ʹʢŠVOEFSMBZʣɺڧ੍తʹ
    ্ॻ͖Λ͍ͨ͠஋͸ϕʔεʹର্ͯ͠૚ʹʢŠPWFSMBZʣ഑ஔͯ͠Ϛʔδ͢Δ
    w LVTUPNJ[FʹӨڹΛड͚ͨπʔϧ

    View Slide

  37. #JHGPPUʢ࠶ܝʣ

    View Slide

  38. ·ͱΊͱࠓޙͷల๬

    View Slide

  39. ·ͱΊͱࠓޙͷల๬
    w σʔλج൫ͷϝλσʔλΛܧଓతʹ؅ཧͰ͖Δ࢓૊ΈΛ࡞ͬͨ
    w ͨͩɺॏཁͳͷ͸ʮϝλσʔλͷߋ৽͕ܧଓతʹ࣮ࢪ͞ΕΔ͜ͱʯͰɺͦͷ఺ʹؔ
    ͯ͠͸·ͩԿ΋Ͱ͖͍ͯͳ͍ͷͰ֤ॴʹڠྗΛ΋Β͍ͳ͕ΒਐΊ͍͖͍ͯͨ
    w ݱࡏ͸#JHGPPU #JH2VFSZ
    ͕த৺ͱͳ͍ͬͯΔ͕ɺྫ͑͹ϖύϘ͕อ࣋͢Δશͯͷ
    σʔλιʔεͷσʔλΧλϩάΛ࡞Γ͍ͨͱߏ૝͍ͯ͠Δ
    w ࠓճ঺հͨ͠πʔϧνΣΠϯΛ࢖͑͹ɺ֤σʔλιʔεʹରͯ͠UCMTPVUUKTPO
    Ͱग़ྗͨ͠TDIFNBKTPOΛHIQVUͰͭͷϦϙδτϦʹίϛοτ͢Δ͚ͩͰ৘ใΛ
    ू໿Ͱ͖ΔɹͳͲ
    w ͜ͷλεΫΛ೚ͤͯ͘ΕͨJEVE[VSBʹײँ͠·͢ʂ

    View Slide

  40. 5IBOLZPV
    ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ !QC@SFDSVJU

    View Slide