Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
pmconf2017
Search
Shuhei Kimura
November 15, 2017
0
3.5k
pmconf2017
Shuhei Kimura
November 15, 2017
Tweet
Share
More Decks by Shuhei Kimura
See All by Shuhei Kimura
Akka streamsを活用したログ集計に優しいデータフローの構築
kimurashuhei
2
5.2k
MDH-LT-Thursday-20170126
kimurashuhei
0
1.6k
AWS Summit Tokyo 2015
kimurashuhei
0
90
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
GitHub's CSS Performance
jonrohan
1030
460k
Fireside Chat
paigeccino
34
3.1k
Building an army of robots
kneath
302
44k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Writing Fast Ruby
sferik
628
61k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Side Projects
sachag
452
42k
Being A Developer After 40
akosma
87
590k
Unsuck your backbone
ammeep
669
57k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Transcript
ʰΤϯδχΞ͕ϓϩμΫτϚωʔδϟʔͱͯ͠ͷ ׂΛશ͏͢ΔͨΊʹͳʹΛ͢Δ͖͔ʱ גࣜձࣾαΠόʔΤʔδΣϯτ ΞυςΫελδΦ%ZOBMZTU ଜऺฏ
1SPpMF ໊લ ଜऺฏ4IVIFJ,JNVSB IUUQTXXXGBDFCPPLDPNTIVIFJLJNVSB ॴଐ גࣜձࣾαΠόʔΤʔδΣϯτ
ΞυςΫຊ෦"E5FDI4UVEJP%ZOBMZTU 1SPEVDU.BOBHFS4PGUXBSF&OHJOFFS ܦྺ dࠂޮՌܭଌγεςϜͷ։ൃdBT&OHJOFFSd d1$ͷ35#ࠂ৴ʹ͓͚Δ࠷దԽΤϯδϯͷઃܭ։ൃdBT&OHJOFFSd d41͚ւ֎%41γεςϜͷઃܭ։ൃdBT&OHJOFFSd d41͚μΠφϛοΫϦλʔήςΟϯάࠂ৴γεςϜͷઃܭ։ൃ dBT&OHJOFFS˰BT1SPEVDU.BOBHFSd
"HFOEBPGUIJTTFTTJPO 5IFOFFETPG1SPEVDU.BOBHFS ΤϯδχΞ͔ΒΈͨϓϩμΫτϚωʔδϟʔͷׂ ͦͷׂΤϯδχΞʹͰ͖Δʁ ׂΛશ͏͢ΔͨΊʹඞཁͩͱࢥ͏͜ͱY 1SPEVDU.BOBHFSJO"DUJPO %ZOBMZTU தن৫ͷ1SPEVDU.BOBHFNFOU$ZDMF 5SZ
$PODMVTJPO
5IF/FFETPG1SPEVDU.BOBHFS
ΤϯδχΞ͔ΒΈͨϓϩμΫτϚωʔδϟʔͷׂ 4PGUXBSF&OHJOFFST 1SPEVDU.BOBHFS ͜ͷػೳ͜͏͍͏༷ Ͱ͍͍ͷ͔͠Βʁ ͜ͷ-JCSBSZ࣮ͬͯ͢ Ε؆୯ʹ࣮ݱͰ͖ͦʔ ͜Ε͍ͭ·Ͱʹ։ൃ ऴΘͬͯΕ͍͍Μ ͚ͩͬʁ
͜ͷػೳͳΜͷͨ ΊʹඞཁͳΜʁ ͋ͷػೳͱඍົʹ ඃΔ͔Βཧͨ͠ ͍Ͷ ʓʓͳਓ͕ͨͪ99ͳ͜ͱͰࠔ͍ͬͯͯɺ :::ͳػೳΛ༻ҙͯ͋͛͠Δ͜ͱͰɺղܾ ͍ͨ͠ΜͩΑͶɻ ظݶಛʹͳ͍Μ͚ͩͲɺ ͦΜͳʹେมͳ։ൃͰͳ͍ͱࢥ͏͔Βɺ αΫοͱ͓ئ͍͍ͨ͠ɻ 1SPEVDU.BOBHFSʢ 1SPKFDU.BOBHFSʣ ͳͻͱͩͱߟ͑ΒΕΔ͜ͱ͕ଟ͍Α͏ʹࢥ͍·͢ɻ
ͲΜͳͷΛ࡞Δ͔ʁ 8)"58): Ͳ͏͍͏෩ʹ࡞Δ͔ʁ 8)&/)08 ΤϯδχΞʹͦͷׂͬͯͰ͖Δͷʁ ʓʓͳਓ͕ͨͪ99ͳ͜ͱͰࠔ͍ͬͯͯɺ :::ͳػೳΛ༻ҙͯ͋͛͠Δ͜ͱͰɺղܾ ͍ͨ͠ΜͩΑͶɻ ظݶಛʹͳ͍Μ͚ͩͲɺ ͦΜͳʹେมͳ։ൃͰͳ͍ͱࢥ͏͔Βɺ
αΫοͱ͓ئ͍͍ͨ͠ɻ
ͲΜͳͷΛ࡞Δ͔ʁ ୭͕ҝͷϞϊ͔Λ͍ͬͯΔ͜ͱ ػೳϦϦʔεͷํʢใͷྲྀ௨ʣ ϦϦʔεޙͷʮӡ༻ʯͷݟཱͯ Ͳ͏͍͏෩ʹ࡞Δ͔ʁ Ͳ͏͍͏෩ʹ࣮ݱ͢Δ͔ͷ͋ΔఔͷΞς ݱঢ়ͷΤϯδχΞνʔϜͷঢ়گѲ ͍ͭ·Ͱʹ࡞Δ͔ͷܾΊ ΤϯδχΞʹͦͷׂͬͯͰ͖Δͷʁ ʓʓͳਓ͕ͨͪ99ͳ͜ͱͰࠔ͍ͬͯͯɺ
:::ͳػೳΛ༻ҙͯ͋͛͠Δ͜ͱͰɺղܾ ͍ͨ͠ΜͩΑͶɻ ظݶಛʹͳ͍Μ͚ͩͲɺ ͦΜͳʹେมͳ։ൃͰͳ͍ͱࢥ͏͔Βɺ αΫοͱ͓ئ͍͍ͨ͠ɻ ͜Ε͕ҙ֎ͱ͍͠ΜͰ͢ɻɻɻ
Կ͕͍͠ͷ͔ʁd1.ΛऔΓר͘ڥd 4PGUXBSF&OHJOFFST .BSLFU&OWJSPONFOU 1SPEVDU4BMFT #VTJOFTT&YFDVUJWF ͋ΒΏΔྗֶ͕ಇ͍͍ͯΔڥԼͰɺʮྫྷ੩ʹʯʮྫྷ੩ʹʯ ҙࢥܾఆΛ͢ΔɺεϖοΫͰ͍͏ͱϝϞϦ͕݁ߏཁٻ͞ΕΔׂ FUD
Կ͕͍͠ͷ͔ʁd࡞ΔͷചΔͷങ͏ͷώτd ʮཧతʹʯਖ਼͍͠ϞϊΛਖ਼͍ͭͬͯ͘͘͠Δ͚ͩͰμϝͳ߹͕͋Δ ࡞͚ͬͨΕͲηʔϧεͮ͠Β͍Ϟϊ ηʔϧε͍͚͢͠Ͳɺ͔ͳΓ࣮ݱ͕ͮ͠Β͍Ϟϊ ࠂओʹͱͬͯΑ͍Ϟϊ͚ͩͲɺཧళʹͱͬͯΑ͘ͳ͍Ϟϊ ΤϯδχΞόοΫάϥϯυ͔Βߟ͑Δͱɺ ࠷Ϊϟοϓʹۤ͠Ήੈք؍ͷͻͱͭ
ʢܦݧଇʣׂΛશ͏͢ΔͨΊʹඞཁͩͱࢥ͏͜ͱ ҙࢥܾఆΛ͢Δ มԽΛଊ͑Δ ྔͱ৴೦
ҙࢥܾఆΛ͢Δ
ҙࢥܾఆʹ͓͚ΔΤϯδχΞతͳཁૉ ྫʣJ04͔Β*51ࡌ͞ΕΔ͚ͲɺӨڹͲΜ͚ͩʔʁ σʔλʹجͮ͘ҙࢥܾఆ Ծઆཱͯ σʔλੳͳͲ ΞυϗοΫʹσʔλΛग़ͤΔεΩϧʹཱͭ ҙࢥܾఆʮਫ਼ʯʮεϐʔυʯ J04ͷͱ͖ͲΕ͘Β͍ ͷීٴεϐʔυͩͬͨʁ
ݱঢ়ͷ৴ʹ͓͚ΔJ04 "OESPJEͷൺͲΕ͘Β ͍ͩͬͨʁ ֤&YDIBOHFͰΈΔͱʁ ֤͓٬͞ΜͰΈΔͱʁ ཧళͷ୲ऀͷݟղ ͓٬͞ΜͲ͏͔ʁ *"#ͷํʁ ڝ߹Ͳ͏͍͏ରԠΛݕ ౼͍ͯ͠Δ͔ʁ
ҙࢥܾఆʹ͓͚ΔඇΤϯδχΞతʹΈ͑Δཁૉ ྫʣ1MBO"Λ࣮ࢪ͢ΔͳΒ1MBO#࣮ࢪͰ͖ͳ͍ɾɾ ཧతʹ͕͑ग़ʹ͍͘՝ʹର͢Δҙࢥܾఆ 1MBO" 1MBO# σʔλʹجͮ͘ҙࢥܾఆҾ͖͚ Ͳ͏͢Δʁ ৫ώτ͕νϥͭ͘ ܾΊΔ݁Ռ1. ܾΊ·͠ΐ͏
˞ܾΊΔ༐ؾ͚ͩͰͳ͘ɺ ՊֶʹཔͬͯΈ·͠ΐ͏ɻ ώτ͕ೲಘ͍͢͠ϞσϧΛར༻͠·͠ΐ͏ɻ
ֶͼ ՄೳͳݶΓɺσʔλʹج͍ͮͯਫ਼ߴ͘ҙࢥܾఆͰ͖Δͱؾ࣋ ͪਵͱָʹͳΓ·͢ɻ ͨͩ͠ɺΘ͔Βͳ͍͔ΒܾΊΒΕͳ͍ͱ͍͏ͷɺҰ൪ͬͯ ͍͚ͳ͍ߦҝͩͱࢥ͍·͢ɻʢޙճ͠ʹ͢Δͱ͍͏ͷॏཁ ͳҙࢥܾఆʣ σʔλੳج൫ͷॏཁੑΛޠΕΔɺ ࡞ΕΔͱ͍͏ҙຯͰΤϯδχΞͱͯ͠ͷόοΫάϥϯυ ͍ʹͳΔͱײͯ͡·͢ɻ
มԽΛଊ͑Δ͜ͱ
มԽΛଊ͑Δ͏͑ͰͷΤϯδχΞతͳཁૉ ྫʣ$͕ࣾ"UUSJCVUJPO"XBSF#JEEJOHͱ͍͏จΛग़ͨ͠ ྫʣ(ࣾͷࠂΞΧϯτߏ͕ͲΜͲΜγϯϓϧԽ͍ͯͬͯ͠Δ ද͚ͩͰͳ͘ɺຊ࣭Λଊ͑Δ ΞυςΫϊϩδʔ ͦͷ໊ͷ௨Γɺ ςΫϊϩδʔ͕ॏཁͳྖҬ ώτͷೖࡳΛ͑ΔςΫ ϊϩδʔ͕ຊ֨తʹ্ ͕͖ͬͯͨʁ
ػցֶशʹجͮ͘ɺ $53$73༧ଌͷ࠷ઌͲ ͏͍͏ͱ͜Ζ·Ͱ͍ͬͯΔͷ ͔ʁ%FFQ-FBSOJOHΛԠ༻͢ ΔࣄྫͰ͖ͯͨʁ ཧళͷϓϨθϯε ࠓޙͲ͜ʹͳΔʁ ചΕͯΔͱ͍͏ࣄɺ ड͚ೖΕΒΕ͍ͯΔʁ
มԽΛଊ͑Δ͏͑ͰͷඇΤϯδχΞతʹΈ͑Δཁૉ ྫʣ"͕ࣾ̋̋ͱ͍͏Λ։ൃͨ͠ɺചΕͯΔΒ͍͠ ྫʣ#ࣾಉ༷ͷΛ։ൃதΒ͍͠ ਓ৫ʹඥͮ͘ߦಈͷมԽ ಛʹ֎෦ڥཧղͮ͠Β͍ ͳͥͦ͏ͳ͍ͬͯΔͷ͔ʁ ཧళʹώΞϦϯάͯ͠ΈΔ ͓٬͞ΜʹώΞϦϯάͯ͠ΈΔ σʔλʹදΕͳ͍৺ཧͷมԽॏཁ ײతͳԾઆཱͯ
Ͳ͏͍͏ྗֶͰ৫ಈ͍͍ͯΔͷ͔ ඪઃܭͱώτͷಈ͖
ֶͼ ઐతͳٕज़͕ࣝඞཁͳมԽݕڧΈͱͯ͠ੵۃతʹ׆͔͢ ͠ɻ มԽ͍Ζ͍Ζͳ͔֯Βى͖ΔͷͰɺ ઐ֎ͷදͷมԽΈΔΑ͏ʹ͓ͯ͘͠ͱɺͱ͕ઢʹมΘ Δॠؒ͋ΔΑ͏ʹࢥ͍·͢ɻ Ϗδωεཧ͚ͩͰཱ͍ͯ͠ͳ͍͜ͱ͋ΔͷͰɺ ͦ͜Λڐ༰͢ΔϚΠϯυηοτॏཁͦ͏Ͱ͢ɻ
ྔͱ৴೦
ֶͼ ։ൃ͢Δͷɺηʔϧε͢Δͷɺ͏ͷجຊతʹώτ Ͱ͢ɻ ։ൃ͢Δώτʹ։ൃ͢Δώτ͚ͷݴ༿Ͱɺηʔϧε͢ Δώτʹηʔϧε͢Δώτ͚ͷݴ༿Ͱ͔ͬ͠Γ͑Δ ྗඞཁͰ͢ɻ গͮͭ͠ڞ௨ݴޠΛ૿͢ͷ1.ͷࣄͷޮʹӨڹ͠ ͦ͏ͷࢥ͍·͢ɻ
ʢվΊͯʣׂΛશ͏͢ΔͨΊʹඞཁͩͱࢥ͏͜ͱ ҙࢥܾఆΛ͢Δ มԽΛଊ͑Δ ྔͱ৴೦
1SPEVDU.BOBHFSJO"DUJPO %ZOBMZTU
%ZOBMZTUͱ͍͏αʔϏεࣄۀ
%ZOBMZTUʹ͓͚Δ1SPEVDU.BOBHFS 4PGUXBSF&OHJOFFST #VTJOFTT4BMFT 1.T &OHJOFFS1. Y #VTJOFTT1. ͰνʔϜΛΜͰ 1SPEVDU.BOBHFNFOU Λ࣮ࢪ͍ͯ͠·͢
&OHJOFFS1.#VTJOFTT1. 4PGUXBSF&OHJOFFST #VTJOFTT4BMFT 1.T .BSLFU&OWJSPONFOU %FW1.͕ಘҙͳྖҬ #J[1.͕ಘҙͳྖҬ 1BQFST 044UFDI
FUD 1SFTT 3FMFBTF "E"HFODJFT FUD
8FFLMZ1SPEVDU%FW1MBOOJOH.5( 4PGUXBSF&OHJOFFST #VTJOFTT4BMFT 1.T .BSLFU&OWJSPONFOU %FW1. #J[1. 1BQFST 044UFDI
FUD 1SFTT 3FMFBTF "E"HFODJFT FUD $BQBCJMJUZ 0QQPSUVOJUZ 3JTLFUD 1SPEVDU3PBE.BQ
8FFLMZ1SPEVDU%FW1MBOOJOH4IBSF.5( 4PGUXBSF&OHJOFFST #VTJOFTT4BMFT 1.T .BSLFU&OWJSPONFOU %FW1. #J[1. 1BQFST 044UFDI
FUD 1SFTT 3FMFBTF "E"HFODJFT FUD $BQBCJMJUZ 0QQPSUVOJUZ 3JTLFUD 1SPEVDU3PBE.BQ
1%$"GPS&BDI4UPSZJO&BDI5FBN 4PGUXBSF&OHJOFFST #VTJOFTT4BMFT 1.T .BSLFU&OWJSPONFOU %FW1. #J[1. 1BQFST 044UFDI
FUD 1SFTT 3FMFBTF "E"HFODJFT FUD $BQBCJMJUZ 0QQPSUVOJUZ 3JTLFUD 1SPEVDU3PBE.BQ
8FFLMZ,15JO&BDI5FBN 4PGUXBSF&OHJOFFST #VTJOFTT4BMFT 1.T .BSLFU&OWJSPONFOU %FW1. #J[1. 1BQFST 044UFDI
FUD 1SFTT 3FMFBTF "E"HFODJFT FUD $BQBCJMJUZ 0QQPSUVOJUZ 3JTLFUD 1SPEVDU3PBE.BQ
8FFLMZ,15JO&BDI5FBN 4PGUXBSF&OHJOFFST #VTJOFTT4BMFT 1.T .BSLFU&OWJSPONFOU %FW1. #J[1. 1BQFST 044UFDI
FUD 1SFTT 3FMFBTF "E"HFODJFT FUD $BQBCJMJUZ 0QQPSUVOJUZ 3JTLFUD 1SPEVDU3PBE.BQ ใৗʹಁ໌ੑͷ͋Δ ঢ়ଶʹ͓ͯ͘͠ ίϝϯτ ίϝϯτ
.POUIMZ1SPEVDU1MBOOJOH,15 4PGUXBSF&OHJOFFST #VTJOFTT4BMFT 1.T .BSLFU&OWJSPONFOU %FW1. #J[1. 1BQFST 044UFDI
FUD 1SFTT 3FMFBTF "E"HFODJFT FUD
Ұ࿈ͷྲྀΕͷதͰ1.ͱͯ͠ؾΛ͚͍ͭͯΔ͜ͱ ҙࢥܾఆΛ͢Δ มԽΛଊ͑Δ ྔͱ৴೦ ܾ·͍ͬͯͳ͍͜ͱ͕૿͑Δͱɺ ৫͕ػೳෆશʹؕΓ·͢ ͍·͍ͬͯΔ͜ͱ͔Βํస͢Δ͜ ͱ͋Γ·͢ʢͪΖΜͳ͍Α͏ʹ͍ͨ͠ʣ Ռʹ݁ͼ͔ͭͳ͍͜ͱ͕૿͑Δͱ৫ ͷ৺ཧঢ়ଶมΘΓ·͢
ΤϯδχΞͱηʔϧεͷڞ ௨ݴޠΛ૿ͭͭ͠ɺجຊ తʹͦΕͧΕʹ࠷దԽ
$PODMVTJPO
$PODMVTJPOdී௨ͷΤϯδχΞ͔ΒͰ1.Ͱ͖Δd 1SPEVDU.BOBHFSGSPN&OHJOFFS ϓϩμΫτʹ͓͚ΔςΫϊϩδʔͰͷڧΈʹ݁ ࢥ͍ͬͯΔҎ্ʹͨ͘͞Μͷ͜ͱ͕σʔλͰޠΕΔͱࢥ͍·͢ ཧతʹཧղͰ͖ͳ͍͜ͱ͕ൃੜ͢Δ͜ͱʹ׳ΕΔ͔͠ͳ͍ Α͍ϓϩμΫτʹͳΔͨΊʹ ϓϩμΫτͷྑ͍ͱ͜ΖΛΘ͔Δݴ༿Ͱ͑·͠ΐ͏
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠