Slide 1

Slide 1 text

σʔλϨΠΫߏஙޙͷ࢛ํࢁ࿩
 2019-09-05
 data platform meetup #DPM
 presented by @yuzutas0 
 https://www.pexels.com/photo/autumn-clouds-conifers-daylight-221395/

Slide 2

Slide 2 text

WEBʹެ։͠·͢ #DPM
 ɹࡱӨ΍ϝϞ͸ෆཁͰ͢ɻϦϥοΫεͯ͠ฉ͍͍͚ͯͨͩΕ͹ͱࢥ͍·͢ɻ
 εϥΠυ 140+ ຕ / 15min
 ɹؤுͬͯ෇͍͖͍ͯͯͩ͘͞ɻࠓ೔͸͚ͬ͜͏͍͚Δؾ͕͠·͢ɻ
 ɹखݩͷࢿྉ܈Λίϐϖ + ԥΓॻ͖ͨ͠εϥΠυͰ͢ɻաڈࢿྉ܈ͱಉ͡಺༰Ͱ͢ɻ
 ɹਓؒ͸௥͍٧ΊΒΕΔͱ͜͏͍͏εϥΠυΛ࡞ͬͯ͠·͏ऑ͍ੜ͖෺ͳͷͰ͢ɻ Α΋΍·࿩Ͱ͢ʂϙΤϜ࿮Ͱ͢ʂ
 ɹ͓ञΛҿΈͳ͕Βগਓ਺Ͱμϥμϥͱ࿩ͨ͢ΊͷωλͰ͢ɻ
 ɹ࢒೦ͳ͕Βཱ೿ͳൃදࢿྉͰ͋Γ·ͤΜɻϙουΩϟετͩͱࢥͬͯฉ͍͍ͯͩ͘͞ɻ ɹҿΜͰ͍͜͏ͥʂ IUUQTXXXQFYFMTDPNQIPUPBMDPIPMJDCFWFSBHFCBSCFFSESJOL

Slide 3

Slide 3 text

1. ͸͡Ίʹ 2. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢOutputฤʣ
 3. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢProcessฤʣ
 4. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢInputฤʣ
 5. Guide to Data Warehouse & Mart Designʢࣗ࿦ฤʣ
 6. Guide to Data Warehouse & Mart DesignʢҰൠ࿦ฤʣ 7. ͜ͷઌੜ͖ͷ͜Δʹ͸ ɹΞδΣϯμ

Slide 4

Slide 4 text

ɹ@yuzutas0 ɹɹ 
 


Slide 5

Slide 5 text

ɹաڈͷొஃࢿྉ σʔλج൫ͷϊ΢ϋ΢ɾ஌ݟΛఏڙ͍ͯ͠·͢
 
 PyCon JP ’17
 ϕεττʔΫΞϫʔυ༏ल৆ σϒαϛՆ ’18 Ξϯέʔτຬ଍౓No.1
 ʢཌ೥ͷϕετεϐʔΧʔ৆ʹ૬౰ʣ

Slide 6

Slide 6 text

ɹྫ: ਐԽతσʔλϞσϦϯά .BSU ར༻ऀ޲͚*' 㲈σʔλϚʔτ 8BSFIPVTF υϝΠϯ஌ࣝΛද͢σʔλ 㲈σʔλ΢ΣΞϋ΢ε 4PVSDF ݩσʔλͷίϐʔ 㲈σʔλϨΠΫ σʔλύΠϓϥΠϯʹ͓͍ͯػց͕ॲཧ͢ΔྲྀΕ ࣄۀ΍γεςϜͷ
 શσʔλΛίϐʔ͢Δ μογϡϘʔυ΍
 ϨϙʔτͱରʹͳΔ ։ൃϓϩηεʹ͓͍ͯਓ͕ؒઃܭ͢ΔྲྀΕ ूܭɾ෼ੳύλʔϯΛ੔ཧ
 㲈8*5)۟ͷසग़σʔλ ᶃ ᶄ ᶅ ᶃ ᶃ ᶄ

Slide 7

Slide 7 text

ɹനӋͷ໼

Slide 8

Slide 8 text

಺ྠͰू·͓ͬͯञΛҿΈͳ͕ΒσΟεΧογϣϯ͢Δձ ʢΏ͑ʹ30ਓͷืू࿮Ͱ։࢝ͨ͠ʣ ૿࿮ʹ͙࣍૿࿮Ͱɺ૝ఆͷ6.5ഒͷԠื͕͋ͬͨͱͯ͠΋οʂ
 ͋͘·Ͱ΋ʮσΟεΧογϣϯͷࡐྉʯΛఏڙ͠·͢οʂ ɹຊ೔ͷझࢫʢओ؍ʣ

Slide 9

Slide 9 text

ʮΈΑ͏Έ·ͶͰσʔλΛૄ௨ͨ͠ʯ
 ʮ͜ͷ͋ͱج൫ΛͲ͏ਐԽ͍͚ͤͯ͞͹͍͍ͩΖ͏͔ʯ
 
 ͱࢥ͍೰ΜͰ͍ΔΞφϦετ ʢγεςϜͷ࿩΋ੵۃతʹཧղ͍ͯ͜͠͏ͱ͍͏ํʑʣ
 ͱɺͦͷΧ΢ϯλʔύʔτʹ౰ͨΔSWΤϯδχΞ ɹຊ೔ͷ૝ఆλʔήοτ

Slide 10

Slide 10 text

ɹຊ೔࿩͢͜ͱ Ͷ͐ɺࠓ͔Β࿩͢Αʂ ֓ཁ ݁࿦ ߏங௚ޙʹΑ͋͘Δࣦഊࣄྫ΍ઃܭϛε ࠓΛੜ͖Α͏ σʔλ΢ΣΞϋ΢εɾϚʔτͷσβΠϯ ຊΛಡ΋͏ ͜ͷઌੜ͖ͷ͜Δʹ͸ ϜμΛল͜͏

Slide 11

Slide 11 text

উͪʹෆࢥٞͷউͪ͋Γɻ
 ෛ͚ʹෆࢥٞͷෛ͚ͳ͠ɻ
 
 ʰ݋ஊʱΑΓҾ༻ ɹͳࣦͥഊࣄྫʁ https://www.pexels.com/photo/brown-concrete-bridge-between-trees-2091009/

Slide 12

Slide 12 text

ʮΈΑ͏Έ·ͶͰσʔλΛૄ௨ͨ͠ʯ
 ͲͷΑ͏ͳܦҢͰ͋Εɺ͜ͷঢ়گ·Ͱ౸ୡͰ͖ͨͷ͸ɺؒҧ͍ͳ͘େ͖ͳୈҰา ͦͷ࣮੷Λ࡞Δʹ͸ɺ຾Εͳ͍໷΋͋ͬͨͩΖ͏
 
 ʮ͜ͷ͋ͱج൫ΛͲ͏ਐԽ͍͚ͤͯ͞͹͍͍ͩΖ͏͔ʯ Ͳͷఔ౓ͷԹ౓ײͰ͋ΕɺઌΛݟਾ͑ͯ೰ΊΔͷ͸ɺจ۟ͳ͠ʹՁ஋ͷ͋Δ౰ࣄऀҙࣝ
 ·͞ʹࠓɺوॏͳ࣌ؒΛ࢖ͬͯɺษڧձʹࢀՃͨ͠ΓɺεϥΠυΛಡΜͰ͍ͩͬͯ͘͞Δ
 
 ͜ͷੈքઢΛબΜͰ͘Εͨ͋ͳͨͷʮԫۚͷਫ਼ਆʯʹࢲ͸ܦҢΛද͢Δοʂ ͦͯ͠ɺͦ͏͍͏ਓ͔ͩΒͦؕͬͯ͜͠·͏᠘͕ɺ͜ͷੈքʹ͸୔ࢁ͋Δͱࢥ͍·͢ ɹ͋ͳͨ͸͍͢͝ʂ

Slide 13

Slide 13 text

ද໘తͳख๏࿦΍Ωʔϫʔυʹ
 ৼΓճ͞Εͳ͍Ͱ΄͍͠ 
 े෼ͳ৘ใऩूΛܦͯ ΠγϡʔۦಈͷҙࢥܾఆΛͯ͠΄͍͠ ʮΞφϦετ͕ࢥ͍͍ͭͨཧ૝ͷج൫ʯΛ ؔ܎ऀʹԡ͠෇͚ͳ͍Α͏ʹ৺ֻ͚ͯ΄͍͠ ɹ఻͍͑ͨ͜ͱ

Slide 14

Slide 14 text

1. ͸͡Ίʹ 2. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢOutputฤʣ
 3. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢProcessฤʣ
 4. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢInputฤʣ
 5. Guide to Data Warehouse & Mart Designʢࣗ࿦ฤʣ
 6. Guide to Data Warehouse & Mart DesignʢҰൠ࿦ฤʣ 7. ͜ͷઌੜ͖ͷ͜Δʹ͸ ɹΞδΣϯμ

Slide 15

Slide 15 text

ूΊͨσʔλΛͲ͏׆༻͢Δ͔
 
 ɾൃදऀݸਓ͕࠷΋ੜ࢈తͩͱࢥ͏໰͍ͷ1ͭ
 ɾ׆༻Λߟ͑Ε͹ج൫ͷ͋Γํ͸ࣗવͱܾ·Δ
 ɾ͔ͤͬ͘ૄ௨ͨ͠ͳΒͲΜͲΜ׆༻͍ͯ͜͠͏ ɹΑ͋͘Δ૬ஊᶃ

Slide 16

Slide 16 text

ɾݱࡏͷԆ௕Ͱଊ͑ͨ΄͏͕ؔ܎ऀͷೲಘΛಘ΍͍͢
 ɾ͍͖ͳΓToBeϕʔεͩͱص্ͷۭ࿦ʹؕΓ΍͍͢ ɹ࠷ॳʹ֬ೝ͢Δ͜ͱ "T*Tͷձ࿩ɾߦಈ ɾ্ҐϨΠϠʔͷҙ޲
 ɾߏங࣌ࢿྉͰͷݟཱͯ
 ɾݱ৔Ͱطʹࢼͨ͜͠ͱ ࠓޙͷ׆༻ ʁ

Slide 17

Slide 17 text

ɹணख͠΍͍͢ˍޮՌΛग़͠΍͍͢ࢪࡦᶃ ϞχλϦϯάޮ཰Խ ػೳ։ൃͷޮՌଌఆ طଘۀ຿ͷϦϓϨΠε 1%4αΠΫϧΛճͨ͢ΊͷୈҰา https://speakerdeck.com/yuzutas0/20170909

Slide 18

Slide 18 text

ɹணख͠΍͍͢ˍޮՌΛग़͠΍͍͢ࢪࡦᶄ ू٬ɾ$3. ΠϯϑΥάϥϑΟοΫ ୹ظతʹ਺ࣈ͕৳ͼ΍͍͢ ϩΠϠϦςΟࢪࡦˍऔࡐɾόζʹܨ͕Γ͏Δ https://pitpa.jp/anniversary/half https://prtimes.jp/main/html/rd/p/000000126.000025184.html

Slide 19

Slide 19 text

͜ͷਤΛॻ্͍ͨͰ߈ΊΔॱ൪ΛܾΊΔ / ࢒Δબ୒ࢶ͸ଟ͘ͳ͍͸ͣ ɹࠜڌΛ΋ͬͯҙࢥܾఆ͠Α͏ ଧͪखᶃ YYYYY ଧͪखᶄ YYYYY ଧͪखᶅ YYYYY ޮՌ਺ࣈ ίετ ϦεΫ σϦόϦ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ޮՌମݧ ̋˚✕ ̋˚✕ ̋˚✕ ޮՌ࣋ଓ ̋˚✕ ̋˚✕ ̋˚✕

Slide 20

Slide 20 text

Ωʔͷͳ͍தؒςʔϒϧ ɹΑ͋͘Δ૬ஊᶄ

Slide 21

Slide 21 text

ɹ෼ੳऀ͕ݟ΍͍͢Α͏ʹઃܭ JUFNUBCMF DPMVNO TBNQMF JE OBNF ʹΜ͡Μ UZQF@JE UZQFUBCMF DPMVNO TBNQMF JE OBNF ໺ࡊ QBZNFOUUBCMF DPMVNO TBNQMF JE BCDEF JUFN@JE DSFBUFE@BU QBZNFOUJOUFSNFEJBUFUBCMF DPMVNO TBNQMF JUFN@OBNF ʹΜ͡Μ UZQF@OBNF ໺ࡊ DSFBUFE@BU Ωʔ৘ใΛ
 ࡟͗མͱͨ͠

Slide 22

Slide 22 text

ɹ݁ہ͸Ωʔ͕ཉ͘͠ͳΔ ʮ໺ࡊJEʯͱʮ໺ࡊJEʯͰ
 දࣔը໘͕Ұ෦ҟͳΔͷͰ෼͚ͯूܭ͍ͨ͠
 ʢσʔλϨΠΫΛࢀর͢Δ͜ͱʹͳΔʣ ౷ܭϓϩάϥϜͰ෼ੳ͢Δʹ͋ͨͬͯ
 ࣗવݴޠΑΓΩʔͷ΄͏͕ॲཧ͠΍͍͢
 ʢ֤෦ॺͷεΫϦϓτͰಠࣗʹ࠾൪͢Δ͜ͱʹͳΔʣ

Slide 23

Slide 23 text

ɾॳ৺ऀͷઃܭ͸ӡ༻։࢝௚ޙʹഁ୼͢Δ
 ɾ͔ͦ͜ΒֶͿ΂͖͸ʮΩʔΛೖΕ͓ͯ͜͏ʯ͚ͩͰͳ͘ʮΠςϨʔγϣϯΛճͦ͏ʯ
 ɾσʔλϨΠΫͷ࣌఺Ͱܽଛ͢Δͱ෮چࠔ೉ͳͷͰ͚ͦͩ͜͸࠷ॳʹ๷͙
 ɾݱ৔ʹଇ͍ͯ͠ͳ͍தؒςʔϒϧ͕ੜ͖࢒Δ͜ͱ͸ͳ͍
 ɾ͋͘·Ͱ΋σʔλϚʔτΛى఺ʹͯ͠෼཭ͱ݁߹Λ܁Γฦ͢ ɹʮ͜ΕͳΒݟ΍͍͢ʯ͸͋͘·ͰԾઆ σʔλϚʔτ σʔλ
 ΢ΣΞϋ΢ε σʔλϚʔτ σʔλϚʔτ https://speakerdeck.com/yuzutas0/20190213

Slide 24

Slide 24 text

தؒςʔϒϧΛἧ͑ͨͷʹ࢖ΘΕͳ͍ ɹΑ͋͘Δ૬ஊᶅ

Slide 25

Slide 25 text

தؒςʔϒϧͷར༻ऀ਺ = σʔλར༻ऀ਺ * தؒςʔϒϧར༻཰ ɹσʔλͷຽओԽ͸ग़དྷ͍ͯΔ͔ʁ νʔϜ" νʔϜ# νʔϜ$ νʔϜ% νʔϜ& νʔϜ' νʔϜ( νʔϜ) νʔϜ* νʔϜ+ νʔϜ, ੜϩά
 ಠࣗར༻ σʔλ5ࢧԉ
 ۀ຿ґཔ σʔλ5ࢧԉ
 σʔλग़ྗ ࣗओత
 σʔλग़ྗ ୲౰ऀґଘ ୲౰ऀґଘ ୲౰ऀґଘ ࣗओత
 σʔλੜ੒ ଞνʔϜґཔ ج൫ߩݙʂ ୲౰ऀґଘ ୲౰ऀґଘ ہॴԽͷน ࣗ૸ͷน վળͷน https://speakerdeck.com/yuzutas0/20180402

Slide 26

Slide 26 text

ɹσʔλͷຽओԽΛଅਐ͢Δࢪࡦ https://speakerdeck.com/yuzutas0/20180402

Slide 27

Slide 27 text

ɹͦͷσʔλ͸࢖ΘΕ͍ͯΔ͔ʁ ΞφϦετ͕ʮઈର࢖͏͔Βʂʯͱ࡞ͬͨதؒςʔϒϧͷJoinݩ σʔλར༻ΛPVɾUUͰιʔτ͢ΔͱɺύϨʔτͷ๏ଇ͕ޮ͘͜ͱ͕෼͔Δ ར༻ස౓ͷগͳ͍σʔλΛ࢖͍΍ͯ͘͢͠΋ࢫຯ͸গͳ͍ ͜ͷ΁Μ

Slide 28

Slide 28 text

ɹ࢖ΘΕ͍ͯΔσʔλʹॏ఺Λஔ͘ PV * UU ͷ2࣠ͰϚοϐϯά͢ΔͱҰ໨Ͱ෼͔Δɻ PV or UU ͷ΢ΤΠτΛՄࢹԽ͢ΔͱҰ໨Ͱ෼͔Δɻ

Slide 29

Slide 29 text

ɹ10෼ͰՄࢹԽ͢Δ ͜ͷهࣄͷԠ༻Ͱ࠶ݱՄೳɹhttp://yuzutas0.hatenablog.com/entry/2018/12/18/160000

Slide 30

Slide 30 text

ɹαϯϓϧSQL WITH tables AS ( SELECT table_id FROM `{project_id}.{dataset_name}`.__TABLES__ WHERE table_id NOT LIKE ‘LOAD_TEMP_%' AND table_id NOT LIKE ‘TMP_%' ), log AS ( SELECT REGEXP_REPLACE(data.resource, ‘projects/{project_id}/datasets/{dataset_name}/tables/‘, '') AS table, protopayload_auditlog.authenticationInfo.principalEmail AS user, DATE(timestamp) AS day FROM `{project_id}.{source__cloudaudit__bigquery}.cloudaudit_googleapis_com_data_access_*`, UNNEST(protopayload_auditlog.authorizationInfo) AS data WHERE data.permission = 'bigquery.tables.getData' ), calc AS ( SELECT table, day, COUNT(*) AS PV, COUNT(DISTINCT user) AS UU FROM log WHERE table NOT LIKE ‘LOAD_TEMP_%' AND table != ‘__TABLES__' AND table NOT LIKE 'TMP_%' GROUP BY 1, 2 ) SELECT tables.table_id, calc.PV, calc.UU, REGEXP_REPLACE(CAST(calc.day AS STRING), '-', '') AS day FROM tables LEFT JOIN calc ON tables.table_id = calc.table

Slide 31

Slide 31 text

http://yuzutas0.hatenablog.com/entry/2019/06/05/233000 ɹσʔλۦಈʹΑΔϓϩμΫτվળ ࢲ͸σʔλج൫ΛͭͷϓϩμΫτͩͱҐஔ෇͚͍ͯ·͢ɻ
 ࣾ֎޲͚ʹ8αʔϏεΛӡӦ͢Δͷͱಉ͡Ͱ͢ɻ
 ΍Δ͜ͱ͸ʮࣗ෼͕ߏ૝ͨ͠ϓϩμΫτʯͷߏஙɾӡӦͰ͢ɻ

Slide 32

Slide 32 text

ᶃूΊͨσʔλΛͲ͏׆༻͢Δ͔
 ᶄΩʔͷͳ͍தؒςʔϒϧ
 ᶅதؒςʔϒϧΛἧ͑ͨͷʹ࢖ΘΕͳ͍ ɹ૬ஊᶃʙᶅ

Slide 33

Slide 33 text

σʔλΛ׆༻͢ΔՕॴʹ͓͍ͯ
 ROIΛ࠷େԽ͢ΔͨΊͷҙࢥܾఆ͕Ͱ͖͍ͯΔ͔ʁ
 ΞφϦετͱͯ͠࠷ߴͷৼΔ෣͍͕Ͱ͖͍ͯΔ͔ʁ ɹσʔλۦಈ for Output

Slide 34

Slide 34 text

1. ͸͡Ίʹ 2. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢOutputฤʣ
 3. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢProcessฤʣ
 4. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢInputฤʣ
 5. Guide to Data Warehouse & Mart Designʢࣗ࿦ฤʣ
 6. Guide to Data Warehouse & Mart DesignʢҰൠ࿦ฤʣ 7. ͜ͷઌੜ͖ͷ͜Δʹ͸ ɹΞδΣϯμ

Slide 35

Slide 35 text

ར༻ऀ͕σʔλΛյͯ͠͠·͏ ɹΑ͋͘Δ૬ஊᶆ

Slide 36

Slide 36 text

ɹݖݶ؅ཧͱϙϦγʔఏࣔʢྫʣ jobUser N/A ˚ ̋ dataViewer N/A ̋ ̋ dataEditor N/A ✕ ̋ γεςϜࢀর Read Only Read & Write ౿Έ୆ σʔλϨΠΫ σʔλϚʔτ GCS BigQuery Project A BigQuery
 Project B

Slide 37

Slide 37 text

ʮॻ͍ͯ͋Δ௨Γʹ΍Ζ͏ʯͱ͸ݴ͍ͬͯͳ͍ ࠷ॳ͔ΒGCPϓϩδΣΫτΛ෼͚ΔͷͰ͸ͳ͘ Πγϡʔ͕ݱ৔Ͱڍ͕ͬͨஈ֊ͰਐԽΛݕ౼͢Δ ͋͘·Ͱ΋ʮࠓͷʯʮݱ৔ͷʯʮΠγϡʔʯʹج͍ͮͯ
 ଥ౰ͳଧͪखΛ1ͭ1ͭΠϯΫϦϝϯλϧʹ࠾୒͢Δ ɹྫͰ͋ͬͯɺਪ঑Ͱ͸ͳ͍

Slide 38

Slide 38 text

https://cloud.google.com/docs/enterprise/best-practices-for-enterprise-organizations?hl=ja ɹࢀߟɿΫϥ΢υαʔϏεͷެࣜҊ಺

Slide 39

Slide 39 text

ɹࣗಈԽͳΒTerraformͰίʔυ؅ཧ 
 resource "google_project_iam_custom_role" “datalake_user” { project = “${module.xxx.gcp_project_id}” role_id = "DatalakeUser" title = “BigQuery Reader and Writer” description = “Can use job, read and write data” permissions = [“bigquery.jobUser”, "bigquery.dataViewer", "bigquery.dataEditor",] } resource "google_project_iam_member" “analytics_team_is_datalake_user” {
 project = "${module.xxx.gcp_project_id}" role = "projects/${module.xxx.gcp_project_id}/roles/${google_project_iam_custom_role.datalake_user.role_id}" count = “${length(var.analytics_team)}”
 member = "user:${var.analytics_team[count.index]}" } 
 variable “analytics_team" { description = “Analytics team members" type = "list" default = [“xxx@example.com”,] }


Slide 40

Slide 40 text

Ϧʔϯ΍ΞδϟΠϧ΍εΫϥϜͷىݯʹ౰ͨΔେ໺଱Ұࢯ͕࠷ॳʹ΍ͬͨ͜ͱ
 ʹυΩϡϝϯτԽʢۀ຿ͷඪ४Խʣ ɹखಈӡ༻ͳΒखॱॻ͸ෆՄܽ τϤλࣗ޻ʹసग़͔ͯ͠Βɺࢲ͕·ͣඪ४࡞ۀදΛͭ͘Εͱ
 ݺͼ͔͚ͨ͜ͱ͸͍͏·Ͱ΋ͳ͍ɻ ੜ࢈ݱ৔ͷجຊͱ΋͍͏΂͖ඪ४࡞ۀදͮ͘Γ͔ΒɺτϤλੜ࢈ํࣜ
 ͮ͘Γ΁ͷࡾޒ೥ʹΘͨΔಓఔΛา·ͤΔ΋ͱΛͳ͍ͯ͠ΔΑ͏ʹࢥ͏ɻ
 ʰτϤλੜ࢈ํࣜ - ୤ن໛ͷܦӦΛΊͯ͟͠ʱΑΓҾ༻ https://speakerdeck.com/yuzutas0/20170703

Slide 41

Slide 41 text

ɹखॱॻ͸Ձ஋ʹ௚݁͢Δ ɹɹɹɹར༻Ҋ಺ɾखॱॻʢ0QTࢹ఺ʣ #BE (PPE πʔϧ
 ʢ%FWࢹ఺ʣ (PPE ࡞ͬͨਓ͔͠࢖͑ͳ͍
 ʢຊਓʹ͸ศརʣ ࠷ߴ #BE ࡞ͬͨਓ͔͠࢖͑ͳ͍
 ʢຊਓʹ΋ෆศʣ ·͊࢖͑Δ ͕Μ͹ͬͯͬͪ͜Λ
 ໨ࢦ͕ͪ͠ ͬͪ͜ͷ΄͏͕؆୯Ͱ
 ޮՌ΋ߴ͍ʢ͔΋ʣ

Slide 42

Slide 42 text

ɹυΩϡϝϯτΛίʔυͷΑ͏ʹѻ͏16ͷύλʔϯ (Document Design Pattern) 
 ● Ϣʔεέʔε෼ੳ
 ● ϦϑΝΫλϦϯά
 ● ϖΞϓϩάϥϛϯά
 ● Ϟϒϓϩάϥϛϯά
 ● όʔδϣϯ؅ཧ
 
 ● ΞʔΩςΫτνʔϜ
 ● ίϯ΢ΣΠͷ๏ଇ
 ମ੍ͷύλʔϯ 
 ● ٕज़తෛ࠴
 ● ϙʔτϑΥϦΦ
 ● ίʔσΟϯάΛଅ͢
 ● ίʔυϨϏϡʔ
 ● ϘʔΠεΧ΢τ
 ● Rule of Three จԽͷύλʔϯ 
 ● MVCϞσϧ
 ● GoFσβΠϯύλʔϯ
 ● ܧଓతσϦόϦʔ /
 ΠςϨʔγϣϯ ߏ੒ͷύλʔϯ ࡞ۀͷύλʔϯ ˞ମ੍΍จԽ͸σβΠϯʢઃܭʣʹӨڹΛ༩͑ΔͷͰσβΠϯύλʔϯʹؚΊ͍ͯ·͢ ࢀরʰDevOpsͱυΩϡϝϯτσβΠϯύλʔϯʱ http://yuzutas0.hatenablog.com/entry/2017/07/06/083000

Slide 43

Slide 43 text

σʔλͷߋ৽͕஗͍ ɹΑ͋͘Δ૬ஊᶇ

Slide 44

Slide 44 text

ʮQ. Ͳͷॲཧ͕஗͍ʁʯ ʮA. ෼͔Βͳ͍ʯ͕ѹ౗తେଟ਺
 צͱܦݧͱ౓ڳͰ͸ͳ͘ɺσʔλۦಈͰ໰୊Λ෼ੳɾղܾ͠Α͏ ɹܭଌ͔Β࢝ΊΑ ॲཧ͕࣌ؒ࠷΋௕͍ՕॴʢʹϘτϧωοΫʣΛνϡʔχϯά͢Δ

Slide 45

Slide 45 text

͜ͷॱ൪Ͱࢥߟ͠·͠ΐ͏ ɹΞφϦετ΋SWΤϯδχΞ΋ಉ͡ Ұൠతͳ࿦఺ ࠓճͷ͓୊ 8IBU ԿΛୡ੒͍͔ͨ͠ʁ ٻΊΔߋ৽ස౓͸ʁ 8IFSF Ͳ͜ʹ໰୊͕͋Δ͔ʁ ͲͷՕॴͷॲཧ͕஗͍͔ʁ 8IZ ͳͥ໰୊͕ى͖͍ͯΔ͔ʁ ͳͥͦͷॲཧ͕஗͍͔ʁ )PX ͲͷΑ͏ʹղܾ͢Δ͔ʁ ͲͷΑ͏ʹνϡʔχϯά͢Δ͔ʁ

Slide 46

Slide 46 text

ಛʹʮγεςϜ෦໳ͷରԠ͕஗͍ʯͱݴͬͯ෼ੳ෦໳͕ಠࣗʹܧ͗଍ͨ͠έʔε ɹܭଌ͠ʹ͍͘γεςϜ ݩσʔλ ֤෦ॺ͕σʔλࢀরγεςϜΛܧ͗଍͠ https://speakerdeck.com/yuzutas0/20170909

Slide 47

Slide 47 text

ɹද໘͸ҧ͑Ͳ՝୊͸ಉ͡ ※10ࣾҎ্ͰݟͨΞϯνύλʔϯ http://yuzutas0.hatenablog.com/entry/2018/12/04/190000

Slide 48

Slide 48 text

ෳ਺ͷσʔλιʔεʢDataʣͱ ෳ਺ͷར༻ऀʢOpsʣΛ
 ϦϘϯͷΑ͏ʹ݁ͼ෇͚Δ΋ͷ ※͜͜Ͱ͍͏ʮෳ਺ʯ͸ʮn=1ʯͷ৔߹ΛؚΉ ɹࢲ͕ߟ͑Δσʔλج൫ͷఆٛ σʔλج൫ https://speakerdeck.com/yuzutas0/20190213

Slide 49

Slide 49 text

SREνʔϜ* ͕શମઃܭ͔Βݟ௚ͯ͠σʔλج൫Λ੔උ
 Modelʢऩूɾ஝ੵɾՃ޻ʣͱ Viewʢࢀরɾར༻ʣ ɹγϯϓϧʹͯ͠γεςϜશମΛ࠷దԽ *͜ͷ࿦఺ͷऔΓ·ͱΊ͸SRE͕๬·͍͠ɻϏδωεܦӦʹཱ͍ۙ৔ͷϩʔϧ͕൑அͯ͠΋
 ৘ใγεςϜઃܭͷઐ໳ՈͰͳ͍ͱɺσʔλϞσϦϯά΍γεςϜ͸ઃܭഁ୼͕ͪ͠ɻ https://speakerdeck.com/yuzutas0/20180727

Slide 50

Slide 50 text

σʔλ͕ະߋ৽ˍܽམͨ͠··์ஔ ɹΑ͋͘Δ૬ஊᶈ

Slide 51

Slide 51 text

ϫʔΫϑϩʔΤϯδϯ͔Βಠཱͨ͠QAγεςϜ܈ ɹσʔλ඼࣭Λ୲อ͢Δ &5- ςετίʔυ ݅਺Ұக؂ࢹ ߋ৽؂ࢹ ஗Ԇঢ়گ
 ՄࢹԽ

Slide 52

Slide 52 text

PythonͰSQLΛϥοϓͯ͠unittestͰexpectedͱactualΛൺֱ 
 https://speakerdeck.com/yuzutas0/20170909 ɹςετίʔυ

Slide 53

Slide 53 text

BQͷϝλσʔλΛຖ࣌όονͰE2E؂ࢹ 
 https://speakerdeck.com/yuzutas0/20190719 ɹߋ৽؂ࢹ

Slide 54

Slide 54 text

೔࣍όονͳΒ “check_date" ϚΠφε “updated_at” >= 1 ͕஗Ԇର৅ ɹ஗Ԇঢ়گՄࢹԽ

Slide 55

Slide 55 text

MySQL Read ReplicaͱBigQueryͷ݅਺Λൺֱ
 ※୲౰Ҋ݅ͩͱෛՙܰݮ؍఺ͰʮϝλςʔϒϧΛࢀরͯ͠99.5%ҰகΛ໨ࢦ͢ʯͳͲͷ
 Τϯϋϯε։ൃΛ͍ͯ͠Δ͕ϕʔεͱͳΔίϯηϓτ͸্هαϯϓϧίʔυ ɹ݅਺Ұக؂ࢹ 
 # BQ query = f""" SELECT COUNT(*) AS row_count FROM `xxxxx.xxxxx.xxxxx` WHERE CAST(created AS DATE) = DATE(‘2019-01-01') """ result_bq = pd.read_gbq(query, project_id=‘xxxxx', dialect='standard') # MySQL con = mysql.connector.connect(host = ‘x.x.x.x’, port = xxxxx, user = ‘xxxxx’, password = 'xxxxx', database = 'xxxxx') read_sql = f"""
 SELECT COUNT(*) AS row_count FROM `xxxxx` WHERE created BETWEEN '2019-01-01 00:00:00' AND '2019-01-01 23:59:59' """ result_mysql = psql.read_sql(read_sql, con) result_bq.equals(result_mysql)


Slide 56

Slide 56 text

ࢀߟʰσʔλϚωδϝϯτ஌ࣝମܥΨΠυʱ ɹσʔλ඼࣭Λ୲อ͢Δ ඼࣭ ςετίʔυ ߋ৽؂ࢹ ஗Ԇঢ়گՄࢹԽ ݅਺Ұக؂ࢹ σʔλϨΠΫ ੜ੒ςʔϒϧ ҆શੑ
 ʢϚΠφεˠʣ ਖ਼֬ੑ ׬શੑ Ұ؏ੑ ੔߹ੑ ଥ౰ੑ ద࣌ੑ Ұҙੑ ༗ޮੑ རศੑ
 ʢˠϓϥεʣ

Slide 57

Slide 57 text

ද໘తʹπʔϧΛ࡞੒ɾಋೖ͢ΔͷͰ͸ͳ͘
 ITαʔϏεϚωδϝϯτͷ࿮૊ΈΛݱ৔՝୊ʹ౰ͯ͸ΊΔ https://speakerdeck.com/yuzutas0/20180402 ɹαʔϏεϨϕϧ

Slide 58

Slide 58 text

ɹSLA σʔλͷ༻్ɾར༻ऀ͝ͱʹظ଴͞Ε͍ͯΔαʔϏεϨϕϧΛՄࢹԽ ɾ৴པੑ͸ʮ࣮ࡍʹγεςϜΛ࢖͏ਓɾ໨తɾ࣌ؒʯΛલఏʹ͢Δ
 ɾͳͷͰαʔϏεϨϕϧ͸ϢʔεέʔεۦಈͰઃܭ͢Δ͜ͱʹͳΔ
 ɾ୭΋࢖Θͳ͍ػೳ΍࣌ؒଳͰγεςϜՔಇ཰͕Ͱ͋ͬͯ΋࢓ํͳ͍ ྫ ༻్ ໿ଋ૬ख ࿈བྷઌɾप஌ઌ ར༻σʔλ ໿ଋࣄ߲ʢ4-"ʣ ҧ൓࣌ͷӨڹൣғ ೔࣍Ϩϙʔτ σΟϨΫλʔ 4MBDL
 NPOJUPSJOH #JH2VFSZͷ
 ച্ςʔϒϧ ຖӦۀ೔ͷޕલY࣌·Ͱʹ
 ܽଛͳ͘લ೔ͷച্͕
 Ϩϙʔτ͞ΕΔ͜ͱ ച্ঢ়گʹԠͨ͡
 ࢪࡦ͕ଧͯͳ͘ͳΔ
 ʢػձଛࣦʣ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ʜ ࣮෺ˠ

Slide 59

Slide 59 text

ɹOLA αʔϏεϨϕϧʹର͢ΔڴҖʢʹΠϯγσϯτʣൃੜ࣌ͷΦϖϨʔγϣϯ ରԠεϐʔυ ิঈɾ୅ସखஈɹɹɹɹɹɹϫʔΫΞϥ΢ϯυʢճආࡦʣɹɹɹɹɹɹɹϨϙʔςΟϯάˍه࿥

Slide 60

Slide 60 text

ɹSLAˍOLAΛվળ͢Δᶃ ຖεϓϦϯτऴྃ࣌ͷ;Γ͔͑ΓͰɺ࣮ଶʢ"T*Tʣͱظ଴஋ʢ5P#FʣΛൺֱ͢Δ What ԿΛ͢Δ͔ εϓϦϯτ
 ϨϏϡʔ σΠϦʔ
 εΫϥϜ How Ͳ͏΍ͬͯ͢Δ͔ εϓϦϯτ
 ϓϥϯχϯά Ϩτϩ
 εϖΫςΟϒ

Slide 61

Slide 61 text

ɹSLAˍOLAΛվળ͢Δᶄ վળΞΫγϣϯ 
 ɾ໨ඪΛຬͨͤΔΑ͏ʹվળ͢Δɿج൫γεςϜͷվमҊ݅Λىථ
 ɾ໨ඪࣗମΛमਖ਼͢Δɿա৒ͳΒ໨ඪΛԼํमਖ਼ɺ࢖༻ఀࢭ#*πʔϧ͸ΫϦʔχϯάɺ؍఺࿙Ε͸௥Ճ ˣ࣮෺ʢϨτϩεϖΫςΟϒͷΞδΣϯμʣ

Slide 62

Slide 62 text

ᶆར༻ऀ͕σʔλΛյͯ͠͠·͏ ᶇσʔλͷߋ৽͕஗͍ ᶈσʔλ͕ະߋ৽ˍܽམͨ͠··์ஔ ɹ૬ஊᶆʙᶈ

Slide 63

Slide 63 text

σʔλΛૄ௨͢ΔՕॴʹ͓͍ͯ
 ROIΛ࠷େԽ͢ΔͨΊͷҙࢥܾఆ͕Ͱ͖͍ͯΔ͔ʁ
 ΞφϦετͱͯ͠࠷ߴͷৼΔ෣͍͕Ͱ͖͍ͯΔ͔ʁ ɹσʔλۦಈ for Process

Slide 64

Slide 64 text

1. ͸͡Ίʹ 2. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢOutputฤʣ
 3. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢProcessฤʣ
 4. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢInputฤʣ
 5. Guide to Data Warehouse & Mart Designʢࣗ࿦ฤʣ
 6. Guide to Data Warehouse & Mart DesignʢҰൠ࿦ฤʣ 7. ͜ͷઌੜ͖ͷ͜Δʹ͸ ɹΞδΣϯμ

Slide 65

Slide 65 text

ෆ੔߹σʔλΛͲ͜Ͱٵऩ͢Δ͔ ɹΑ͋͘Δ૬ஊᶉ

Slide 66

Slide 66 text

σʔλϨΠΫ → σʔλ΢ΣΞϋ΢ε ͷETLͰΫϨϯδϯά ɹੈͰଟ͍ճ౴ ʰσʔλϚωδϝϯτ஌ࣝମܥΨΠυʱΑΓҾ༻

Slide 67

Slide 67 text

ΞφϦετʮ͜ͷσʔλ͸ෆ੔߹ͩʂʯ ↓ ΞφϦετʮΫϨϯδϯάͯ͠෼ੳ͠Α͏ʯ ↓
 σʔλ෼ੳ͸ແࣄʹ׬ྃ ↓ ཌ݄ ↓ DBͷσʔλෆ੔߹ʹΑΔ঎༻όονো֐ ɹຊ౰ʹ͋ͬͨා͍࿩

Slide 68

Slide 68 text

ɹσʔλʹ͸ੜ੒ݩ͕͋Δ ΞϓϦ Ϣʔβʔ %# #2 ͜͜ʹෆ੔߹͕͋ΔͳΒ ঎༻؀ڥ Ͳ͔͜Ͱ໰୊͕ى͖͍ͯΔ
 ʢՄೳੑ͕͋Δʣ ͚ͩ͜͜Λ௚ͯ͠΋ຊ຤స౗
 ͦͷҙࢥܾఆ͸ຊ౰ʹ,(*ʹج͍͍ͮͯΔ͔
 σʔλۦಈͩͱݴ͑Δͷ͔ ఏڙՁ஋Λ࠷େԽ͢ΔͨΊʹ
 σʔλ෼ੳΛ࢝Ίͨ͸ͣ ྑ͍ϓϩμΫτΛ࡞ΔͨΊʹ
 σʔλ෼ੳΛ࢝Ίͨ͸ͣ

Slide 69

Slide 69 text

ʮ૬ஊ͍ͤͯͩ͘͞͞ʯʮDBͷσʔλʹෆ੔߹͕͋ΔΑ͏Ͱ͢ʯͷҰݴͰɺ
 1ճͷύον౰ͯͰɺ1ߦͷίʔυվमͰɺ1ਓͷ͓٬༷ͷਓੜ͕180౓มΘΔ͔΋͠Εͳ͍
 ͦΕ͕ITαʔϏεʹܞΘΔ୉ޣຯʢͷ1ͭʣͳͷͰɺੵۃతʹຯΘ͍͖ͬͯ·͠ΐ͏ ɹސ٬ΛݟΑ͏ɺ੡඼Λຏ͜͏ ΞϓϦ Ϣʔβʔ %# #2 ঎༻؀ڥ

Slide 70

Slide 70 text

ϓϩμΫτνʔϜ͕ͦ͜ओਓެύʔςΟʔ΍ͶΜʂ ΞφϦετ͸ఢύʔςΟʔͷ2൪໨ʹڧ͍΍ͭΛͬͦ͜ΓཪͰ౗͢ϙδγϣϯ΍ͶΜʂ ΜͰઓ͍ͷߦํΛࠨӈ͢ΔεΠονΛԡ͠ͱ͘ͶΜʂͦΕ͕͋Δ͔Β࠷ޙͷ࠷ޙͰओਓެ͸ٯస͢ΔͶΜʂ ʮ;ͬɺ͔͜͜Βઌ͸͓લୡ࣍ୈͩʯͬͯݴͬͯҋͷதʹফ͍͑ͯ͘ϙδγϣϯ΍ͶΜʂ
 ෢ಓձฤͩͬͨΒ෭কʹͳΔ΍ͭ΍ͶΜʂখઆ൛ͰΑ͏΍͘ϑΟʔνϟʔ͞Εͯաڈ͕໌͔͞ΕΔͶΜʂ
 ຊࢽͩͱʮ΍Ε΍Εʯͱ͔ݴ͍ͳ͕ΒओਓެύʔςΟʔʹύε͢Δͱ͜Ζ·Ͱ͕࢓ࣄ΍ͶΜʂ
 ʮ͓લ΄Ͳͷ࠽Λ࣋ͭऀ͕ͳͥ͋ΜͳΨΩͲ΋ʹྗΛି͢ͷͩʂʁʯͬͯݴΘΕͨΒ
 ʮ·͓ͬͨ͘ΊͰ͍ͨ΍ͭΒͩΑͳʯ͔Β࢝·ͬͯɺҒͦ͏ʹʢͰ΋ͪΐͬͱخͦ͠͏ʹʣओਓެͨͪͷັྗΛղઆ͢ΔΜ΍ʂ
 ͦ͏͍͏ϙδγϣϯͳͷʹ͞ʂ͏͔ͬΓαϙʔτ๨ΕͯͨΒ͞ʂ͍ͩ͞͡ΌΜʂ ͔ͩΒϓϩμΫτνʔϜʹ΋ͬͱΤεΧϨ͍ͯ͜͠ʂͶʂ
 େৎ෉ʂ͖ͬͱ܅ͷؾ࣋ͪ͸఻ΘΔ͞ʂ෼͔Δ΍ͭ͸෼͔ͬͯ͘ΕΔ͞ʂ
 ͓΋͍͖ͬΓڳΛுͬͯԿճͩͬͯශ๡͘͡ΛҾ͍͍ͯ͜͏ͥʂपΓͷ୭ΑΓ΋ஏΛ͔͍͍ͯ͜͏ͥʂ
 ͜ΜͳεϥΠυΛެ։͢ΔΞϗ͕͍ΔΜͩʂσʔλෆ੔߹Λ૬ஊ͢ΔͷʹڪΕΔඞཁͳΜͯͳ͍ͬͯʂ ؾ෇͍ͪΌͬͨͳΒߦಈ͢Δ͔͠ͳ͍ͩΖʂଞͷ୭Ͱ΋ͳ͍ʂ܅ͳΜͩʂ܅͕܅ͷपΓͷੈքΛม͑ΔΜͩʂ ɹগ೥ອըͰྫ͑Δͱ Inspired byʰԶ͔ɺԶҎ֎͔ɻϩʔϥϯυͱ͍͏ੜ͖ํʱ

Slide 71

Slide 71 text

ٖࣅతʹཤྺσʔλΛੜ੒͍ͨ͠ ɹΑ͋͘Δ૬ஊᶊ

Slide 72

Slide 72 text

೔࣍όονʹΑΔεφοϓγϣοτ ɹ؆୯ʹग़དྷͯ͠·͏ํ๏ VQEBUF͞ΕΔΧϥϜ ྫQBZNFOU@TUBUVT
 ୯ମͰ͸ਪҠΛ෼ੳͰ͖ͳ͍ ਖ਼֬Ͱ͸ͳ͍͕ ೔୯Ґͷࠩ෼ɾਪҠ͸
 ݟΔ͜ͱ͕Ͱ͖Δ

Slide 73

Slide 73 text

ߋ৽ස౓Λͻͨ͢Β޲্͢Δʁ ɹਫ਼౓͕ཉ͘͠ͳΔ

Slide 74

Slide 74 text

ཤྺΛ࣋ͭσʔλͷઃܭ https://speakerdeck.com/kawasima/lu-li-wochi-tudetafalseshe-ji 
 ΠϛϡʔλϒϧσʔλϞσϧ(ೖ໳ฤ) https://www.slideshare.net/kawasima/ss-40471672 ɹDBͰཤྺΛ࣋ͭͷ͕ࠜຊղܾ ΞϓϦ Ϣʔβʔ %# #2

Slide 75

Slide 75 text

߹ΘͤͯಡΈ͍ͨɿʮΞΠσΞΛग़͢͜ͱ͕اըͩͱࢥͬͯΔౕ͸100ສճࢮΜͰ͍͍ʯ
 http://dochikushow.blog3.fc2.com/blog-entry-3003.html ɹཤྺ΋ؚΊͯϓϩμΫτϚωδϝϯτ ๏ྩ९कɾফඅऀอޢ ໰͍߹ΘͤରԠ ߪೖ௚ޙʹ঎඼ͷઆ໌จ͕
 Ξοϓσʔτ͞ΕͨΒʁ
 Ԡื௚ޙʹٻਓͷใुཝ͕
 Ξοϓσʔτ͞ΕͨΒʁ
 
 ʮݴͬͨʯʮݴΘͳ͍ʯͷ
 ໰୊͕ى͖͏ΔͷͰ
 ه࿥อ࣋Λٛ຿෇͚Δ
 ๏཯ɾΨΠυϥΠϯ͸ଟ͍ ཤྺΛௐ্ࠪͨ͠Ͱ
 ճ౴Λฦ͢ػձ͕ଟ͍ 
 ΧελϚʔαϙʔτπʔϧͷ
 ػೳཁ݅ͱͯ͠
 ཤྺอ͕࣋ٻΊΒΕΔ
 
 ໰͍߹ΘͤରԠ΋ؚΊͯ
 ϓϩμΫτͷར༻ମݧ

Slide 76

Slide 76 text

ೖͬͯ͘Δϩά͕ྑ͘ͳ͍ ɹΑ͋͘Δ૬ஊᶋ

Slide 77

Slide 77 text

ɹप஌͠ͳ͍ͱݕ஌Ͱ͖ͳ͍

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

ɹҰ൪ͷ౰ࣄऀ͕PDSαΠΫϧΛճ͢ ɾSWΤϯδχΞ͕P/L੹೚Λ࣋ͬͯҊ݅ىҊ͔ΒޮՌଌఆ·ͰΛ୲͏ͷ͕ཧ૝
 ɾࣗ෼ͰϞχλϦϯά͢Ε͹ɺϩάͷෆඋΛ࣮ײ͢ΔͷͰɺ͔࣍Βվળ͞ΕΔ ɾ֎͔ΒҰํతʹԡ͠෇͚Δ͚ͩͩͱɺ͍ͭ·Ͱ΋ޓ͍ʹ෼͔Γ͋͑ͳ͍··
 ɾݡऀ͸ྺ࢙͔Βֶͼɺ۪ऀ͸ܦݧ͔ΒֶͿ → զʑ͸۪ऀ → ·ͣܦݧ͠Α͏ https://speakerdeck.com/rtechkouhou/enziniadakedeqi-hua-kai-fa-fen-xi-subetewosui-xing-surutimuwoli-tishang-getahua

Slide 83

Slide 83 text


 ·ͣछΛ·͖ɺ࣍ʹͦΕΛמΓऔΔͷ͕మଇͰ͋Δʢʰ෋Λஙٕ͘ज़ʱΑΓʣ ɹ෺ࣄʹ͸ॱং͕͋Δ ΤϯδχΞνʔϜʹ͓͚Δ
 DevˍOps҆ఆԽʢʹ૊৫ͷITԽʣ͕ઌ ͦͷ͋ͱʹγεςϜ͔Βੜ੒͞ΕΔ
 σʔλΛ׆༻ͯ͠ࣄۀΛ͞Βʹ৳͹͢ https://speakerdeck.com/yuzutas0/20170909 https://speakerdeck.com/yuzutas0/20171013

Slide 84

Slide 84 text

ʮࣗ෼͕ͨͪ෼ੳ͠΍͍͢ʯ͚ͩͷখखઌͷ޻෉ʹಀ͛ͯ΋ɺ८Γ८ͬͯࣗ෼ͷटΛకΊΔ͚ͩɻ
 ϓϩμΫτΛྑ͘͢ΔͨΊʹσʔλΛݟ͍ͯΔΜͩΑͳ͊Զͨͪ͸ʂ উखʹઢΛҾ͘ͷ͸΋͏΍ΊΑ͏ɻࣗ෼Ͱࣗ෼ͷ৺Λด͡ࠐΊ͍ͯΔ͜ͱʹؾ෇͜͏ɻ
 ͳͥ෼ੳ͕ਐ·ͳ͍ʁϩά͕͓͔͍͠ʁͯΊ͕͐ϓϧϦΫΛग़ͤʂ ͳͥͰ͖ͳ͍ʁؾܰʹϓϧϦΫΛग़ͤΔ૊৫͡Όͳ͍ʁͯΊ͕͐૊৫Λཱͯ௚ͤʂ
 ͳͥͰ͖ͳ͍ʁ૊৫Λཱͯ௚͢ݖݶ͕ͳ͍ʁݖݶ͕͋Δ΍ͭΛཪ͔ΒૢΕʂ ͳͥͰ͖ͳ͍ʁૢΔํ๏͕෼͔Βͳ͍ʁʰਓΛಈ͔͢ʱʰ෦ԼྗʱΛಡΊʂ
 ͳͥͰ͖ͳ͍ʁͦΜͳʹ༏ल͡Όͳ͍͔Βʁ͡Ό͋༏लͳͻͱʹॿ͚ͯ΋Β͓͏ʂ Ծʹ੹೚෼ղ఺Λଚॏ͢Δେਓͳੈքઢʹ͍Δͱͯ͠ɺϓϩμΫτΛվળͰ͖Δ͔΋͠Εͳ͍ΞΠσΞ͕͋ΔͳΒɺ
 ͤΊͯ୲౰ऀʹ૬ஊ͢Δ͘Β͍͸΍ͬͯΈͯ͸͍͔͕Ͱ͠ΐ͏͔ɻ
 τΠϨͰ΋λόί෦԰Ͱ΋څ౬ࣨͰ΋Կ͔͠Βνϟϯε͸͋Δ͸ͣͩΑͶϋϜଠ࿠ʢʰ૊৫ύλʔϯʱΑΓʣ
 ෼͔Δɻ෼͔ΔΑɻͦ͜·Ͱ΍Γͨ͘ͳ͍ΑͶɻ໘౗ͩΑͶɻ
 Ͱ΋͞ɺจ۟Λݴ͍ଓ͚Δ͘Β͍ͩͬͨΒɺখͯ͘͞΋ྑ͍ͷͰҰา͚ͩߦಈͯ͠Έ·ͤΜ͔ɻ ͨͱ͑ߑਫΛࢭΊΔ͜ͱ͕Ͱ͖ͳͯ͘΋ɺਫʹྲྀ͞Εͳ͍Ͱཱͪਚ͘͢Ұຊͷ໦Ͱ͋Γ͍ͨ͡Όͳ͍Ͱ͔͢ɻ
 શͯ͸͔ͦ͜ΒͰ͢Αɻ0.01cmͷް͞ͷࢴͩͬͯ25ճંΕ͹෋࢜ࢁʹͩͬͯಧ͘ΜͩͥοʂʢʰຐԦʱΑΓʣ ɹ໌೔͸΋ͬͱ͍͍೔ʹͳΔΑͶʂ

Slide 85

Slide 85 text

ᶉෆ੔߹σʔλΛͲ͜Ͱٵऩ͢Δ͔ ᶊٖࣅతʹཤྺσʔλΛੜ੒͍ͨ͠ ᶋೖͬͯ͘Δϩά͕ྑ͘ͳ͍ ɹ૬ஊᶉʙᶋ

Slide 86

Slide 86 text

σʔλΛੜ੒͢ΔՕॴʹ͓͍ͯ
 ROIΛ࠷େԽ͢ΔͨΊͷҙࢥܾఆ͕Ͱ͖͍ͯΔ͔ʁ
 ΞφϦετͱͯ͠࠷ߴͷৼΔ෣͍͕Ͱ͖͍ͯΔ͔ʁ ɹσʔλۦಈ for Input

Slide 87

Slide 87 text

ʮԿͷͨΊʹ͜Ε΍ͬͯΔΜ͚ͩͬʁʯʢΰʔϧʣ
 ʮࠓͰ͖Δ͜ͱͬͯͳΜ͚ͩͬʁʯʢΞΫγϣϯʣ ͜ͷ2ͭͷ࣭໰͔Β໨Λഎ͚ͨॠؒʹ Ξϯνύλʔϯ΁ͱؕΔ ͜ͷ2ͭͷ࣭໰ʹ౴͑ଓ͚͍ͯΔͳΒ
 ඞͣಓ͸։͚Δ ɹࠜڌͷ͋ΔҙࢥܾఆΛ͠Α͏

Slide 88

Slide 88 text

ʲҊ݅ΛϦετʹͯ͠༏ઌॱҐΛ෇͚Δʳ → ʲఆظతʹৼΓฦͬͯيಓमਖ਼͢Δʳ
 ஍ຯͰ౰ͨΓલͳ͜ͱΛ೔ʑੵΈॏͶͨઌʹͦ͜উར͕͋Δ Ώ͘Ώ͘͸ηϨϞχʔˍΞΠςϜ͕੔උ͞Ε͍ͯ͘͸ͣ ɹ۩ମతʹԿΛͲ͏΍Ε͹͍͍ͷ͔ https://speakerdeck.com/yuzutas0/20180727

Slide 89

Slide 89 text

ࠓΛੜ͖Α͏ ɹ݁࿦

Slide 90

Slide 90 text

1. ͸͡Ίʹ 2. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢOutputฤʣ
 3. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢProcessฤʣ
 4. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢInputฤʣ
 5. Guide to Data Warehouse & Mart Designʢࣗ࿦ฤʣ
 6. Guide to Data Warehouse & Mart DesignʢҰൠ࿦ฤʣ 7. ͜ͷઌੜ͖ͷ͜Δʹ͸ ɹΞδΣϯμ

Slide 91

Slide 91 text

ɹ͓୊ʢ࠶ܝʣ

Slide 92

Slide 92 text

ɹઃܭ࿦ʢ࠶ܝʣ .BSU ར༻ऀ޲͚*' 㲈σʔλϚʔτ 8BSFIPVTF υϝΠϯ஌ࣝΛද͢σʔλ 㲈σʔλ΢ΣΞϋ΢ε 4PVSDF ݩσʔλͷίϐʔ 㲈σʔλϨΠΫ σʔλύΠϓϥΠϯʹ͓͍ͯػց͕ॲཧ͢ΔྲྀΕ ࣄۀ΍γεςϜͷ
 શσʔλΛίϐʔ͢Δ μογϡϘʔυ΍
 ϨϙʔτͱରʹͳΔ ։ൃϓϩηεʹ͓͍ͯਓ͕ؒઃܭ͢ΔྲྀΕ ूܭɾ෼ੳύλʔϯΛ੔ཧ
 㲈8*5)۟ͷසग़σʔλ ᶃ ᶄ ᶅ ᶃ ᶃ ᶄ

Slide 93

Slide 93 text

ɹઃܭ࿦ʢղઆهࣄʣ http://yuzutas0.hatenablog.com/entry/2018/12/02/180000 https://speakerdeck.com/yuzutas0/20190213

Slide 94

Slide 94 text

1ɿਓؒ͸࠷ॳ͔Β׬ᘳͳγεςϜΛઃܭͰ͖ͳ͍ 2ɿϏδωεͷมԽʹ߹ΘͤͯγεςϜͷઃܭ͸มΘΔ ɹઃܭΛߟ͑ΔͨΊͷ༩݅

Slide 95

Slide 95 text

ॳظ࣌఺ͷઃܭΛ׬ᘳʹ͢ΔΑΓ΋ 
 ΠςϨʔγϣϯΛ܁Γฦ͢͜ͱͰ “σʔλϞσϧΛվળ͠΍͍͢؀ڥ” ͷߏங͕伴 ʢਐԽతσʔλϞσϦϯάʣ ɹઃܭʹ͓͚ΔΩʔίϯηϓτ

Slide 96

Slide 96 text

ʮσʔλϨΠΫߏங௚ޙʯͷ૊৫ʹ͓͍ͯ͸ σʔλϞσϧΛߟ͑Δલʹ΍Δ͜ͱ͕ࢁఔ͋Δ ɹҙݟද໌

Slide 97

Slide 97 text

ɹ࠷ॳ͸σʔλϨΠΫ͚ͩͰ͍͍ http://yuzutas0.hatenablog.com/entry/2018/12/08/235900

Slide 98

Slide 98 text

1. ΞφϦετ͕TableauͳͲͷBIπʔϧͰ࣮ݧతʹσʔλϚʔτΛ࡞Δ
 ʢμογϡϘʔυΛ࡞ΔͨΊͷσʔλूܭϩδοΫʣ
 
 2. ܧଓར༻͢Δ৔߹͸SQL on σʔλύΠϓϥΠϯʹϩδοΫΛऔΓࠐΉ
 ɹʢ࢖Θͳ͚Ε͹আ٫ɾΫϦʔχϯά͢Δʣ ɹ࠷খͷσʔλϚʔτ࡞੒खॱ .BSU ར༻ऀ޲͚*' 㲈σʔλϚʔτ https://speakerdeck.com/yuzutas0/20190213

Slide 99

Slide 99 text

ఏڙऀ͔͠࢖Θͳ͍σʔληοτʹͳΓ͕ͪ ɹ൚༻తʢࣗশʣ͸ආ͚Α͏ https://speakerdeck.com/yuzutas0/20190213

Slide 100

Slide 100 text

ܦӦͷΞδϦςΟΛࢧ͑ΔDevOpsͱ૊৫ https://www.slideshare.net/recruitcojp/devops-51085988/52 ɹ࠷ॳ͸൚༻తͰͳ͍͍ͯ͘

Slide 101

Slide 101 text

ɾԿΛڞ௨Խ͢Δ͔ʁ ɾԿΛ෼͚Δ͔ʁ ɹιϑτ΢ΣΞ։ൃͷ໰͍ https://github.com/yuzutas0/my100tales

Slide 102

Slide 102 text

ɹઃܭख๏ʹ·ͭΘΔ਺ଟͷࢹ఺ https://speakerdeck.com/yuzutas0/20170916

Slide 103

Slide 103 text

γεςϜվળͷಛੑ ʢσʔλج൫ͳͲͷITγεςϜ΋ɺձࣾ૊৫ͳͲͷࣾձγεςϜ΋ɺಉ͡ߏ଄ಛੑΛ࣋ͭʣ ɹཐટͷΑ͏ʹ܁Γฦ͢͜ͱͰ੒௕͢Δ ݸผԽW ʢ෼཭ʣ ڞ௨ԽW ʢ༥߹ʣ ݸผԽW ʢ෼཭ʣ ڞ௨ԽW ʢ༥߹ʣ ݸผԽW ʢ෼཭ʣ ڞ௨ԽW ʢ༥߹ʣ http://yuzutas0.hatenablog.com/entry/2018/07/12/083000

Slide 104

Slide 104 text

যΒͳͯ͘΋ڞ௨Խͨ͘͠ͳΔ͕࣌དྷΔ
 ͦͷ࣌ʹڞ௨Խ͢Ε͹͍͍ͱࢥ͍·͢ʂ
 
 ීஈ͔Β໨ͷલͷΠγϡʔͱਅ伨ʹ޲͖߹͍ͬͯΕ͹ ʮ͜͏͍͏՝୊͕͋Δ͔Βʯʢཁٻʣ ʮ͜͏͍͏ڞ௨Խ͕͍ͨ͠ʯʢཁ݅ʣ
 ͱ͍࣮ͬͨײͷ൐͏ݴ༿͕ग़ͯ͘Δ͸ͣ ඞཁͳͱ͖ʹػձ͸ࣗવͱ८ͬͯ͘Δ ͔ͩΒ৺ͷ··ʹਐΊ͹͍͍ͱࢥ͍·͢ʂ ɹ͍ͣΕ࣌͸དྷΔ http://yuzutas0.hatenablog.com/entry/2018/07/08/083000

Slide 105

Slide 105 text

ɹ͚ͩ͜͜Λ཈͑Δ ҆શ໘ ࣦഊͯ͠΋΍Γ௚ͤΔΑ͏ʹ
 ੔ܗલσʔλͷίϐʔΛ஝ੵ͢Δ σʔλϨΠΫ ޮ཰໘ ϦϑΝΫλϦϯά͠΍͍͢Α͏ʹ
 ಉҰͷٕज़ཁૉͰ؅ཧ͢Δ SQL on Worflow Engine ܧଓ໘ ʮվળʯΛश׳ԽͰ͖ΔΑ͏ʹ
 σʔλར༻ऀ͕ϓϩάϥϛϯάͱϦʔϯͷݪଇΛ
 ֶ΂ΔΑ͏ࢧԉ͢Δ σʔλͷຽओԽ
 ʢΞδϟΠϧίʔνεΫϥϜϚελʔʣ

Slide 106

Slide 106 text

͜ͷਤΛॻ্͍ͨͰձ࿩Ͱ͖͍ͯΔ͔ʁ ɹ͋͘·Ͱଧͪखͷ1ͭ *TTVF ଧͪखᶃ YYYYY ଧͪखᶄ YYYYY ଧͪखᶅ தؒςʔϒϧ ޮՌ ίετ ϦεΫ σϦόϦ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕ ̋˚✕

Slide 107

Slide 107 text

ɹ෼ੳ༻σʔλϞσϦϯάͷROIಛੑ ! ෼ੳۀ຿ͷ2$%4ʹϙδςΟϒӨڹ
 ࢖͍ճ͠ͰޮՌ͕ੵΈॏͳΔ ៉ྷͳதؒςʔϒϧ͕͋ͬͯ΋
 ച্͕૿͑ΔΘ͚Ͱ͸ͳ͍ Ұׅ౤ࢿͰϩʔυϚοϓΛඳ͘ͷͰ͸ͳ͘ʢճऩΛ࣮ײͰ͖ͳ͍ʣ
 ඞཁʹͳͬͨ࣌ʹͦͷ৔Ͱϓϧϕʔεʹ࡞੒ɾڞ௨Խɾ෼཭͢Δ

Slide 108

Slide 108 text

ͦͷ࣌ʑͰ໨ͷલͷΠγϡʔΛ੔ཧͰ͖͍ͯͨΒ ͋Δ΂͖σʔλϞσϧʢͷԾઆʣ͸ࣗવͱݟ͑Δ͸ͣ ܧଓతվળͷΧϧνϟʔɾϓϩηε͕ఆணͰ͖͍ͯͨΒ
 Ծʹࣦഊ͕͋ͬͯ΋ωΫετΞΫγϣϯʹ׆͔ͤΔ͸ͣ ΋͠ෆ҆Λ๊͍͑ͯΔͳΒɺਅҼ͸ͦ͜ʹ͋ΔͷͰ͸ʁ
 ʢͳͷͰ͜ΕҎ্ͷٞ࿦Λ͢Δͭ΋Γ͸ͳ͍ʣ
 ʢͳͷͰ։ൃͰ͸ͳ͘ίϯαϧͰҊ݅Λ੥͚͍ͯΔʣ ɹ୭ͷͨΊͷઃܭʁ

Slide 109

Slide 109 text

ΞφϦετ͕σʔλϞσϦϯάʹؔ৺Λ࣋ͭͱ͖
 ΠγϡʔۦಈͰͳ͍͜ͱ͕ଟ͔ͬͨʢൃදऀݸਓͷҙݟͰ͢ʣ
 
 σʔλϞσϦϯάΛ੾Γޱʹͯ͠σΟεΧογϣϯ͢Δͱ
 खஈͱ໨త͕ೖΕସΘΓ΍͍͢Α͏ʹࢥ͑ΔʢൃදऀݸਓͷҙݟͰ͢ʣ 
 ࣗݾ౤ࢿͷֶशͳΒ͍͘ΒͰ΋পʹਁ͔Ε͹ྑ͍͕
 ΞφϦετ͕ۀ຿ͰϑΥʔΧε͢Δͷ͸ඇਪ঑ʢൃදऀݸਓͷҙݟͰ͢ʣ ɹσʔλϞσϦϯάͷপ

Slide 110

Slide 110 text

1. ͸͡Ίʹ 2. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢOutputฤʣ
 3. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢProcessฤʣ
 4. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢInputฤʣ
 5. Guide to Data Warehouse & Mart Designʢࣗ࿦ฤʣ
 6. Guide to Data Warehouse & Mart DesignʢҰൠ࿦ฤʣ 7. ͜ͷઌੜ͖ͷ͜Δʹ͸ ɹΞδΣϯμ

Slide 111

Slide 111 text

Ͳ͏ͯ͠΋σʔλ΢ΣΞϋ΢ε΍ σʔλϚʔτΛઃܭ͍ͨ͠ 
 ͱ͍͏ਓ޲͚ʹώϯτΛ͝঺հ
 ʢͪΌΜͱ஌͍ͬͯΔͱศརͳͷ͸ࣄ࣮ʣ
 ʢͦͷՁ஋͕͋Δ͔Βͦ͜਺ଟͷࢿྉ͕ੈʹग़͍ͯΔʣ ɹͱ͸͍͑

Slide 112

Slide 112 text

Bill Inmon ࢯͱ Ralph Kimball ࢯ͕20೥Ҏ্ʹ౉ͬͯٞ࿦
 ʢData Warehouse ͸ Inmon ࢯͷ଄ޠʣ https://en.wikipedia.org/wiki/Bill_Inmonɹhttps://en.wikipedia.org/wiki/Ralph_Kimball ɹEnterprise Data Warehouse Architecture Design

Slide 113

Slide 113 text

ʰσʔλϚωδϝϯτ஌ࣝମܥΨΠυʱΑΓҾ༻ ɹInmon’s CPI & Kimball’s Dimensional Modeling

Slide 114

Slide 114 text


 
 “Star Schema The Complete Reference” Λ΋ͱʹղઆͨ͠ͱͷ͜ͱ
 ʢ೔ຊޠͰ୳ͨ͠ͱ͜Ζ͜ͷαΠτͷҰ࿈ͷهࣄ͕࠷΋ϑΣΞͰ؆ܿͩͬͨʣ
 http://www.dbstories.com/entry/datawarehouse_architecture_01 ɹ30෼Ͱ֓ཁ͕෼͔Δهࣄ

Slide 115

Slide 115 text

ɾReadable & Practical ͳࢿྉ͕ଟ͍
 ɾணख͠΍͍͢ “The Star Schema / Dimensional Modeling”
 
 ɹThe Kimball Architecture

Slide 116

Slide 116 text

ɾཚ๫ʹݴ͏ͱʮୈೋਖ਼نܗʯͰʮJoin͠·ͬͯ͘ศརͳςʔϒϧΛ࡞Ζ͏ͥʯͷΨνٞ࿦
 ɾݟΔࢦඪʢϑΝΫτʣʹ੾Δ࣠ʢσΟϝϯγϣϯʣΛ෇͚͍ͯ͘
 ɾJoinͷදݱ͕੕ܕͰඳ͔ΕΔ͜ͱ͕ଟ͍ͷͰ “The Star Schema”
 
 ʰ10೥ઓ͑Δσʔλ෼ੳೖ໳ SQLΛ෢ثʹσʔλ׆༻࣌୅Λੜ͖ൈ͘ʱΑΓҾ༻ ɹThe Star Schema, Dimensional Modeling

Slide 117

Slide 117 text

σʔλ΢ΣΞϋ΢εϞσϦϯάೖ໳ʢμΠδΣετ൛ʣ
 https://www.slideshare.net/snaga/ss-135048443
 σΟϝϯγϣφϧϞσϦϯάͷ͢͢Ί
 https://speakerdeck.com/ojima_h/deimensiyonarumoderingufalsesusume
 
 DWH: ελʔεΩʔϚΛϕʔεʹ͋ΒͨΊͯߟ͑ͯΈͨσʔλϞσϦϯάͷͭ̕ͷ͜ͱ
 http://crmprogrammer38.hatenablog.com/entry/2017/02/21/155943
 
 σʔλ΢ΣΞϋ΢εʗBIٕज़Λֶ΅͏ʂ https://el.jibun.atmarkit.co.jp/dwbi/2011/05/post-da3f.html ɹThe Kimball Architecture / JP

Slide 118

Slide 118 text

ɾஶऀ͸࣌୅എܠͷࠩҟ΍֤ࣾࣄ৘Λ
 ɹ౿·্͑ͨͰ࣮ફతͳελϯεΛఏࣔ
 
 ɾൃදऀʢࢲʣ͕ PyCon JP 2017 Ͱ
 ɹຊॻΛҾ༻͔ͯ͠Β2೥
 
 ɾ͜ͷຊΛಡΊ͹ॻ͍ͯ͋Δ͜ͱΛ
 ɹࢲʹ࣭໰͞ΕΔ͜ͱ͕ଟʑ͋ͬͯ൵͍͠ ɹ͜ͷ͋ͨΓͷ࿩ɺ͍͍ͩͨॻ͍ͯ͋Δ

Slide 119

Slide 119 text


 ࢐৽ͳΞΠσΞΛࢥ͍͔ͭͳ͍͍ͯ͘ ແཧʹ஌͍ͬͯΔ৘ใΛ౰ͯ͸Ίͳ͍͍ͯ͘ ද໘తͳख๏࿦΍ΩʔϫʔυʹৼΓճ͞Εͳ͍͍ͯ͘ ΞφϦετ͕σʔλ෼ੳͰ஫ҙ͍ͯ͠Δ͜ͱΛ
 ಉ͡Α͏ʹ஫ҙͯ͠ɺ࢓ࣄΛਐΊΕ͹ͦΕͰ͍͍ ɹطଘͷઃܭख๏΍ࢿྉ͸ࢁఔ͋Δ https://www.pexels.com/photo/pile-of-books-in-shallow-focus-photography-264635/

Slide 120

Slide 120 text

զʑຌਓ๊͕͑Δఔ౓ͷ೰Έ͸
 ʢےͷྑ͍೰ΈͰ͋Ε͹ʣ աڈʹڊਓୡ͕ٞ࿦͍ͯ͠Δ͸ͣ
 ɹແ஌ͷ஌ɾυϦϒϯɾϦαʔν https://www.pexels.com/photo/parthenon-greece-landmark-951531/

Slide 121

Slide 121 text

ຊΛಡ΋͏ ɹ݁࿦

Slide 122

Slide 122 text

1. ͸͡Ίʹ 2. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢOutputฤʣ
 3. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢProcessฤʣ
 4. ߏங௚ޙʹΑ͋͘Δ૬ஊτϐοΫʢInputฤʣ
 5. Guide to Data Warehouse & Mart Designʢࣗ࿦ฤʣ
 6. Guide to Data Warehouse & Mart DesignʢҰൠ࿦ฤʣ 7. ͜ͷઌੜ͖ͷ͜Δʹ͸ ɹΞδΣϯμ

Slide 123

Slide 123 text

ੜ͖࢒Δͷ͸͜ͷੈͷʮਅ࣮ʯ͚ͩͩ
 ਅ࣮͔Βग़ͨʮ੣ͷߦಈʯ͸ܾͯ͠໓ͼ͸͠ͳ͍ ͓ͦͯ͠લͷߦಈ͕ਅ࣮͔Βग़ͨ΋ͷͳͷ͔ ͦΕͱ΋͏Θͬ໘͚ͩͷअѱ͔Βग़ͨ΋ͷͳͷ͔
 ͦΕ͸͜Ε͔ΒΘ͔Δ ʰδϣδϣͷحົͳ๯ݥʱΑΓ ɹੜ͖࢒Δͷ͸ʁ

Slide 124

Slide 124 text

When you have eliminated the impossible,
 whatever remains, however improbable, must be the truth. “His Last Bow” 
 ෆՄೳΛফڈͯ͠࠷ޙʹ࢒ͬͨ΋ͷ͕
 ೗Կʹحົͳ͜ͱͰ͋ͬͯ΋ͦΕ͕ਅ࣮ͱͳΔ 
 ʰγϟʔϩοΫɾϗʔϜζ࠷ޙͷѫࡰʱΑΓ ɹਅ࣮ͱ͸ʁ

Slide 125

Slide 125 text

“σʔλ෼ੳͰɺʮϦιʔεΛ౤͡ͳͯ͘ྑ͍৔ॴʯΛ୳͢” https://note.mu/shinya_nagai/n/n4d80f667dff1 ɹෆՄೳΛফڈ͢Δʹ͸ʁ ͜ͷεςοϓΛվળ͢ΔࣄͰɺ
 શମͷίϯόʔδϣϯϨʔτ͕
 վળ͢Δࣄ͸΄΅ͳ͍ͩΖ͏ɻ

Slide 126

Slide 126 text

ࢹ࠲͕௿͍ूஂ͸ɺ͋͋ͩ͜͏ͩબ୒ࢶΛٞ࿦Ͱ͖Δ͕ɺ
 ͦΕ͸௿͍໨ඪʹࢸΔಓ͸ͨ͘͞Μ͋Δ͔Βʹա͗ͳ͍ɻ
 Ұ൪্ʹߦ͜͏ͱ͢Ε͹બ୒ࢶ͸΄ͱΜͲͳ͍ɻ ࢲͷύϑΥʔϚϯεཧ࿦ vol.16 -ूஂʹ͍ͭͯ-
 http://tamesue.jp/blog/archives/think/20190422 ɹԿΛ΋ͬͯ൑அ͢Δʁ

Slide 127

Slide 127 text

ɹɹɹᶃߴ͍໨ඪΛઃఆ͢Δ
 ɹɹɹᶄϦιʔεΛ౤͡ͳͯ͘ྑ͍৔ॴΛ୳͢ ɹɹɹˠ Ͳ͏͍͏ࢥߟϑϨʔϜϫʔΫ܈Λ࢖͏ʁ ɹ͜ͷઌੜ͖ͷ͜Δσʔλઃܭ

Slide 128

Slide 128 text

ੈք࠷ݹͷσʔλج൫ [ཁग़య] ɹ“ધ৐ΓͷḺ” ϝλϑΝʔ ਫͷ࢒ྔ ໋ʹؔΘΔ࠷ॏཁ,1* ʮҰʯͷઢ ଈ࠲ʹಡΊΔ௚ײతͳ6* અ໿PSফඅ Ξϩέʔγϣϯͷҙࢥܾఆ ۩ମతͳߦಈʹ௚݁ https://www.irasutoya.com/2015/12/blog-post_694.htmlɹhttps://www.irasutoya.com/2013/05/blog-post_2062.html

Slide 129

Slide 129 text


 ʮધ৐Γʹͱͬͯͷਫͷ࢒ྔʯʹϑΥʔΧε͠Α͏ ໷΋຾Εͳ͘ͳΔΑ͏ͳ໰୊͸ԿͩΖ͏ʁ ʢΠϯηϓγϣϯσοΩʣ ΋͠ΘΕΘΕ͕௥͍ग़͞Εɺऔక໾ձ͕৽͍͠CEOΛ
 ೚໋ͨ͠ͱͨ͠Βɺͦͷਓ෺͸ɺ͍͍ͬͨͲΜͳࡦΛऔΔͱࢥ͏͔͍ʁ ʢΞϯυϦϡʔɾSɾάϩʔϰʣ ɹIssue Driven

Slide 130

Slide 130 text

ɹData Lifecycle ϓϩμΫτ Ϣʔβʔ DBɾϩά ࢪࡦɾۀ຿ ෼ࢄܕ
 σʔλετΞ
 e.g. BigQuery ऩू ૄ௨ ׆༻ Ձ஋ %BUB0QTʹ͓͍ͯ ࠷େԽ͢΂͖໨తม਺

Slide 131

Slide 131 text

޻ఔʢδϣϒʣ ʹ͓͍ͯ “ϦλʔϯΛ্͛Δ” or “ίετΛԼ͛Δ” ɹData Driven Development / Ұൠݪଇ ۀ຿" ۀ຿# ۀ຿$ ΦϖϨʔγϣϯ ΦϖϨʔγϣϯ ΦϖϨʔγϣϯ ҙࢥܾఆ ҙࢥܾఆ ҙࢥܾఆ Ձ஋ #*.-Ҋ݅
 ΞφϦςΟΫε "1.-Ҋ݅
 ιϦϡʔγϣϯ

Slide 132

Slide 132 text

ΧελϚʔδϟʔχʔ ʹ͓͍ͯ “ϦλʔϯΛ্͛Δ” or “ίετΛԼ͛Δ” ɹData Driven Development for User ྫɿϨίϝϯυʹΑͬͯߪങۀ຿ʢ৘ใऩूˠൺֱݕ౼ˠҙࢥܾఆˠߪങΞΫγϣϯʣΛࢧԉ͢Δ

Slide 133

Slide 133 text

όϦϡʔετϦʔϜ ʹ͓͍ͯ “ϦλʔϯΛ্͛Δ” or “ίετΛԼ͛Δ” ɹData Driven Development for Company ྫɿϚʔέςΟϯάۀ຿΍ΧελϚʔαϙʔτۀ຿ͷҰ෦ࣗಈԽͳͲ ʮ೔ຊͷDevOpsมֵΛଅਐ͢ΔόϦϡʔετϦʔϜϚοϐϯάʯΑΓҾ༻
 http://gihyo.jp/dev/column/01/devops/2017/value-stream-mapping

Slide 134

Slide 134 text


 σʔλ࢓༷ʹৄ͍͠ʢগͳ͘ͱ΋ௐࠪ͢ΔεΩϧΛ΋͍ͬͯΔʣݱ৔୲౰ऀ͕
 ୲౰ྖҬΛ޿͛Δ͜ͱͰલޙ޻ఔͷϦʔυλΠϜΛ୹ॖ
 ɹݱ৔͕ओମతʹPDSαΠΫϧΛճ͢ʢ࠶ܝʣ ੡଄ ઃܭ ࢼݧ ϦϦʔε ޮՌ
 ଌఆ ཁ݅
 ఆٛ ཁٻ
 ੔ཧ ੡଄ ઃܭ ࢼݧ ϦϦʔε ޮՌ
 ଌఆ ཁ݅
 ఆٛ ཁٻ
 ੔ཧ طʹ΍͍ͬͯΔ ෼ੳཁٻ ϩάཁ݅ ܭଌ ΞΠσΞ

Slide 135

Slide 135 text

ɾݱ৔ͷ1ਓ1ਓ͕ओ໾ͱͳΓɺσʔλΛ׆༻ ͯ͠ ϓϩμΫτ΍ۀ຿ Λຏ͖ࠐΉ ɾ͜ͷੵΈॏͶʹΑͬͯࣄۀ͕੒௕͠ɺސ٬ʹՁ஋Λಧ͚Δ͜ͱʹͳΔ ɹຊ౰ͷҙຯͰͷσʔλۦಈ૊৫ 4&$*Ϟσϧ ސ٬Ձ஋ উͪےɾUVP ΤϯδχΞ ू٬ σβΠϯ ηΩϡϦςΟ ๏຿ ΧελϚʔαϙʔτ ޿ใ ࢧԉऀɾ։୓ऀͱͯ͠ͷ
 αΠΤϯςΟετɾΞφϦετ σʔλ

Slide 136

Slide 136 text

σʔλ ͱ ۀ຿ Λܨ͛Δ ςΫϊϩδʔ ͱ Ϗδωεݱ৔ Λܨ͛Δ σʔλΛ׆༻͢Δ͜ͱͰ ୭ͷͲΜͳ՝୊Λղܾ͢Δͷ͔ ͱ໰͍௚͢ ɹDataͱOpsΛܨ͛Α͏

Slide 137

Slide 137 text

ɹ͋ΒΏΔࢪࡦ͸KGIʹܨ͕Δ ૑଄͢Δ Ձ஋ͷ࠷େԽ ੡඼ఏڙ ू٬ Ξϩέʔγϣϯ࠷దԽ αʔϏεϨϕϧͷҡ࣋ ෼ੳۀ຿ தؒςʔϒϧ੔උ σʔλෆ੔߹ͷղফ ۀ຿ͷ2$%ޮ཰Λ
 վળ͢Δࢪࡦ ଞͷࢪࡦ ଞͷࢪࡦ ͜ͷࢪࡦͰಘΔ༧ఆͷReturn͸ʁ
 ͜͜ʹ౤Լ͢΂͖Investment͸ʁ
 ΞφϦετͱͯ͠ΠϯύΫτΛ
 ࠷େԽ͢Δҙࢥܾఆ͕Ͱ͖͍ͯΔ͔ʁ બ୒ࢶΛͪΌΜͱݮΒ͍ͤͯΔ͔ʁ

Slide 138

Slide 138 text

༨ܭͳબ୒ࢶʢʹϜμʣΛݮΒ͢
 ࡟͗མͱͨ͠ঢ়ଶʢʹϦʔϯʣͰۀ຿Λ਱ߦ͠Α͏ σΟεΧογϣϯλΠϜ͸
 ʮ৽͘͠΍Δ͜ͱΛ୳͢ʯͷͰ͸ͳ͘
 ʮ΍Βͳ͍͜ͱΛܾΊΔʯ৔ʹͯ͠΄͍͠ ʮֶͿ͜ͱʯΛ໨తԽ͢ΔͷͰ͸ͳ͘
 ʮߦಈ͢Δ͜ͱʯΛݟਾ͑ͯ΄͍͠ ɹ͍͔ʹબ୒ࢶΛݮΒ͔͢

Slide 139

Slide 139 text

ɾYAGNIɿૣ͗͢Δ࠷దԽΛආ͚Δɻա৒࣮૷Λճආ͢Δɻ
 ɾϦʔϯ։ൃͷݪଇ4ɿܾఆΛͰ͖Δ͚ͩ஗ΒͤΔɻ
 ɾδϟετΠϯλΠϜɿඞཁͳͱ͖ʹɺඞཁͳ΋ͷΛɺඞཁͳ͚ͩ࡞Δɻ
 ɾRule of threeɿ3ճಉ͡࿩͕ग़ͨΒɺͦͷ3ճʹରԠͰ͖Δఔ౓ʹ൚༻తͳ࢓૊ΈΛ࡞Δɻ
 ɾεΫϥοϓˍϏϧυɿ࡞ͬͯ͸յ͢͏ͪʹܦݧ஋͕ཷ·Γɺ࣍ͷ࢓૊Έ͕ચ࿅͞ΕΔɻ
 ɾϘʔΠεΧ΢τݪଇɿͦͷ৔Ͱ͍ͭͰʹ௚͢ɻࢁΛ๚ΕͨΒɺΰϛ͸रͬͯɺ๚ΕΔલΑΓ៉ྷʹ͔ͯ͠ΒؼΔɻ
 ɾ৬ೳԣஅɿεΩϧͰ͸ͳ͘ΠγϡʔͰಈ͘ɻඞཁͳۀ຿Λɺඞཁͱ͢Δऀ͕ɺඞཁͳͱ͖ʹɺඞཁͳ͚ͩ਱ߦ͢Δɻ
 ɾϖΞϫʔΫɺϞϒϫʔΫɿྡͰҰॹʹ΍ΔɻεΩϧͷ͋ΔਓͱҰॹʹ࡞ۀ͢Ε͹ɺ͔࣍Βࣗ෼1ਓͰ࡞ۀͰ͖Δɻ ɹෆ࣮֬ੑΛΤϯδχΞϦϯά͢Δݪཧɾݪଇɾ఩ֶɾϓϥΫςΟεetc… / ओ؍Ͱ͢

Slide 140

Slide 140 text

ϜμΛল͜͏ ɹ݁࿦

Slide 141

Slide 141 text

ද໘తͳख๏࿦΍Ωʔϫʔυʹ
 ৼΓճ͞Εͳ͍Ͱ΄͍͠ 
 े෼ͳ৘ใऩूΛܦͯ ΠγϡʔۦಈͷҙࢥܾఆΛͯ͠΄͍͠ ʮΞφϦετ͕ࢥ͍͍ͭͨཧ૝ͷج൫ʯΛ ؔ܎ऀʹԡ͠෇͚ͳ͍Α͏ʹ৺ֻ͚ͯ΄͍͠ ɹ఻͍͑ͨ͜ͱʢ࠶ܝʣ

Slide 142

Slide 142 text

ɹຊ೔࿩͢͜ͱ ֓ཁ ݁࿦ ߏங௚ޙʹΑ͋͘Δࣦഊࣄྫ΍ઃܭϛε ࠓΛੜ͖Α͏ σʔλ΢ΣΞϋ΢εɾϚʔτͷσβΠϯ ຊΛಡ΋͏ ͜ͷઌੜ͖ͷ͜Δʹ͸ ϜμΛল͜͏

Slide 143

Slide 143 text

ͲͷϑΣʔζͰɺͲ͜Λ໨ࢦͯ͠ɺ
 Ͳͷ՝୊͕ੜͯ͡ɺͲͷଧͪखΛߨ͡Δ͔ ੩తͳܭըॻͷࡦఆͱ९क͚ͩͰ͸ͳ͘ ಈతͳݕࠪͱదԠΛ܁Γฦ͢͜ͱ͕伴
 ໨ͷલͷΠγϡʔΛݟۃΊͯղ͜͏ ஍ಓʹϕετΛਚ͍ͯ͘͜͠͏ ɹ΍͍͖ͬͯ

Slide 144

Slide 144 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 
 https://www.pexels.com/photo/autumn-clouds-conifers-daylight-221395/