Slide 1

Slide 1 text

)FSPLVΛར༻ͨ͠ 2VJQQFSͷ։ൃࣄྫ঺հ 5FDI$PNQBTTl-PWF)FSPLV z /PWFNCFS ,FOTVLF/BHBF!LZBOOZ

Slide 2

Slide 2 text

w2VJQQFSͷ঺հ w2VJQQFSϓϥοτϑΥʔϜͰͷ )FSPLVͷ׆༻ࣄྫ঺հ w)FSPLVͷ࢖͍Ͳ͜ΖΛݟۃΊΔ w·ͱΊ ຊ೔ͷΞδΣϯμ

Slide 3

Slide 3 text

!LZBOOZ͕͓ૹΓ͠·͢ w௕Ӭ݈հ /BHBF,FOTVLF w೥݄d2VJQQFS w8FC%FWFMPQFS 3VCZ IUUQLZBOOZNF

Slide 4

Slide 4 text

2VJQQFS͸ɺϞόΠϧྖҬͷ ֶशϓϥοτϑΥʔϜΛఏڙ͍ͯ͠Δ ڭҭܥελʔτΞοϓاۀͰ͢ IUUQXXXRVJQQFSDPNKBQBODBSFFST

Slide 5

Slide 5 text

ຊࣾ͸ϩϯυϯͰ͕͢౦ژΦϑΟε΋͋Γ·͢ χϡʔϤʔΫʹ΋ελοϑ͕ৗற͍ͯ͠·͢ ৬छʹΑͬͯ͸ϩϯυϯɾΞδΞॾࠃ΁ͷग़ு΋

Slide 6

Slide 6 text

IUUQHBLVNPTUVEZDPN தߴੜ޲ֶ͚शαʔϏεʮ(",6.0ʯ

Slide 7

Slide 7 text

IUUQXXXRVJQQFSTDIPPMDPN ΞδΞ޲ֶ͚शαʔϏεʮ2VJQQFS4DIPPMʯ

Slide 8

Slide 8 text

$SFBUJPO$FOUFS ίϯςϯπΛ࡞Δ 2-JOL ֶशঢ়گΛ Ϟχλʔ͢Δ 2-FBSO (",6.0 ֶश͢Δ 2VJQQFSϓϥοτϑΥʔϜ͸ࡾͭͷػೳΛ࣠ʹ ֤छαʔϏεΛల։͍ͯ͠·͢

Slide 9

Slide 9 text

ಉ͡ΞϓϦέʔγϣϯΛ ผʑͷϒϥϯυͰల։͢Δ͜ͱ΋͋Γ·͢

Slide 10

Slide 10 text

ΞϓϦέʔγϣϯͷಈ࡞֬ೝͷͨΊʹ ςετ༻ͷ؀ڥ΋ඞཁͰ͢Ͷ 5FTUJOH 5FTUJOH

Slide 11

Slide 11 text

ɾɾɾ͞ΒʹσϓϩΠલͷ࠷ऴνΣοΫ༻ʹ εςʔδϯά؀ڥ΋༻ҙ͠ͳ͍ͱ 5FTUJOH 5FTUJOH 4UBHJOH 4UBHJOH

Slide 12

Slide 12 text

Ӧۀͷਓ ʮ΍͋ɺ͓٬͞ΜʹݟͤΔσϞ͸ແ͍ͷʁʯ 5FTUJOH 5FTUJOH 4UBHJOH 4UBHJOH %FNP %FNP

Slide 13

Slide 13 text

5FTUJOH 5FTUJOH 4UBHJOH 4UBHJOH %FNP %FNP αʔόʔ͕͍ͭ͋ͬͯ͘΋଍Γͳ͍Αʂ ͍͍ͪͪηοτΞοϓͯ͠ΒΕͳ͍Αʂ ͜Μͳʹͨ͘͞Μ؅ཧͰ͖ͳ͍Αʂ

Slide 14

Slide 14 text

)FSPLVΛ࢖͍·͠ΐ͏

Slide 15

Slide 15 text

͢΂ͯ)FSPLVͰӡ༻ͯ͠·͢

Slide 16

Slide 16 text

wαʔόʔͷηοτΞοϓ࡞ۀ͕ෆཁ wΞϓϦέʔγϣϯͷઃఆ࡞ۀ͕؆୯ wαʔόʔͷࢮ׆؂ࢹ͕ෆཁ wαʔόʔͷεέʔϧΞ΢τ͕؆୯ w๛෋ͳΞυΦϯͰ֦ு΋؆୯ )FSPLVͷڧΈ͸ ʮӡ༻ͷෛ୲͕গͳ͍ʯ఺ʹ͋Γ·͢

Slide 17

Slide 17 text

IFSPLVDSFBUF".&> ηοτΞοϓ͸ίϚϯυҰ͚ͭͩ Πϯετʔϧ࡞ۀ͸ෆཁͰ͢

Slide 18

Slide 18 text

HJUQVTIIFSPLVNBTUFS ΞϓϦέʔγϣϯͷσϓϩΠʹ͸ (JUΛ࢖͍·͢

Slide 19

Slide 19 text

IFSPLVDPOpHTFU,&:7"-6& IFSPLVDPOpH ؀ڥม਺ͷઃఆɾ֬ೝ΋ίϚϯυͰ

Slide 20

Slide 20 text

EJ⒎Va IFSPLVDPOpHBQQNZBQQQSPEVDUJPO a IFSPLVDPOpHBQQNZBQQTUBHJOH 1SP5JQ؀ڥม਺ͷࠩ෼νΣοΫ

Slide 21

Slide 21 text

IFSPLVQTTDBMFXFC εέʔϧΞ΢τ΋ίϚϯυҰ͚ͭͩʂ αʔόʔػثͷख഑ɾηοτΞοϓෆཁ ਺ඵͰϦιʔεΛ૿ڧͰ͖·͢

Slide 22

Slide 22 text

IFSPLVGPSL&8/".&> ΞϓϦέʔγϣϯͷෳ੡΋Ͱ͖·͢ ςετ༻ɾσϞ༻؀ڥ΋͙͢࡞Ε·͢

Slide 23

Slide 23 text

IFSPLVDSFBUFBQQ HJUQVTIIFSPLVNBTUFS IFSPLVGPSLBQQEFNP IFSPLVDPOpHTFU%&.0BQQBQQEFNP σϞ༻ͷ؀ڥΛ࡞Δͱͨ͠Β͜Μͳײ͡

Slide 24

Slide 24 text

๛෋ͳΞυΦϯ /FX3FMJD ύϑΥʔϚϯεܭଌ

Slide 25

Slide 25 text

๛෋ͳΞυΦϯ 4FOE(SJE ϝʔϧ഑৴

Slide 26

Slide 26 text

ͦͷଞ͍͔ͭ͘࢖ͬͯ·͢ w.FNDBDIJFS Ωϟογϡ w3FEJT5P(P ,FZ7BMVFετΞ w)FSPLV4DIFEVMFS DSPO w44-

Slide 27

Slide 27 text

͋͑ͯΞυΦϯΛ࢖Θͳ͍͜ͱ΋

Slide 28

Slide 28 text

.POHP-BC .POHP%#ϗεςΟϯά wෳ਺ΞϓϦέʔγϣϯ͔Βڞ༗ wݸผܖ໿ͷ΄͏͕ྉ͕͍ۚ҆ wΞΫηεݖݶͷద੾ͳ੍ݶ wBEEPOTSFNPWFϛε๷ࢭ

Slide 29

Slide 29 text

͔͜͜Β͸۩ମతͳϢʔεέʔεΛ ঺հ͠·͢ wϩάه࿥ϛυϧ΢ΣΞ w"1*αʔόʔͷϚΠάϨʔγϣϯ w#J[%FW͕1VMM3FRVFTUΛςετ

Slide 30

Slide 30 text

Ϣʔεέʔε ϩάه࿥ϛυϧ΢ΣΞ

Slide 31

Slide 31 text

Ϣʔεέʔε ϩάه࿥ϛυϧ΢ΣΞ wϦΫΤετɾϨεϙϯεΛ͢΂ͯه࿥ wௐࠪ໨తͰ୹࣌ؒͷར༻Λ૝ఆ w3BDLϛυϧ΢ΣΞͱ࣮ͯ͠૷

Slide 32

Slide 32 text

Ϣʔεέʔε ϩάه࿥ϛυϧ΢ΣΞ class LoggingMiddleware def initialize(app) @app = app end def call(env) ENV['ENABLE_LOGGING'] ? call_with_logging(env) : call_without_logging(env) end def call_with_logging(env) request = Rack::Request.new env status, headers, body = call_without_logging(env) Log.create(request: request, response: [status, headers, body]) [status, headers, body] end def call_without_logging(env) @app.call env end end

Slide 33

Slide 33 text

Ϣʔεέʔε ϩάه࿥ϛυϧ΢ΣΞ w؀ڥม਺Ͱ༗ޮɾແޮͷ੾Γସ͑ wίʔυͷมߋɾσϓϩΠͱ΋ʹෆཁ wτϥϒϧ࣌ʹ͙͢࢖͑Δ

Slide 34

Slide 34 text

Ϣʔεέʔε "1*αʔόʔͷϚΠάϨʔγϣϯ

Slide 35

Slide 35 text

Ϣʔεέʔε "1*αʔόʔͷϚΠάϨʔγϣϯ w(SBQF 3BDL ͔Β3BJMTϕʔε΁ wNBTUFSͱSBJMTϒϥϯνΛฒߦՔಇ w༷ࢠΛݟͳ͕ΒΏͬ͘Γ੾Γସ͑Δ

Slide 36

Slide 36 text

αʔόʔߏ੒ Database API

Slide 37

Slide 37 text

αʔόʔߏ੒ Database API API (Rails)

Slide 38

Slide 38 text

αʔόʔߏ੒ Database API API (Rails)

Slide 39

Slide 39 text

"1*αʔόʔଆͷ࡞ۀ IFSPLVGPSLBQJSBJMTBQQBQJ IFSPLVEPNBJOTBEEBQJSBJMTRVJQQFSDPN HJUQVTIIFSPLVSBJMTNBTUFS

Slide 40

Slide 40 text

ΞϓϦέʔγϣϯଆͷ࡞ۀ ʢ˞؀ڥม਺"1*@63-ͰΤϯυϙΠϯτΛࢦఆʣ IFSPLVDPOpHTFUa "1*@63-IUUQTBQJSBJMTRVJQQFSDPN

Slide 41

Slide 41 text

࠷খݶͷΦϖϨʔγϣϯͰҠߦ׬ྃ ʢ˞ΞϓϦέʔγϣϯͷ࣮૷ʹ΋ΑΓ·͕͢ɾɾɾʣ wμ΢ϯλΠϜແ͠ɺʮΏͬ͘ΓʯҠߦ w৽چαʔόʔΛฒߦՔಇ wαʔόʔΛʮ෦඼ʯͱͯ͠ѻ͏ w%JTQPTBCMF$PNQPOFOUT

Slide 42

Slide 42 text

wσϓϩΠɾ࠶ىಈɾઃఆมߋͷཤྺ wʮ୭͕ʯʮ͍ͭʯʮԿΛ͔ͨ͠ʯ w(JUͷίϛοτ͕ه࿥͞ΕΔ wෳ਺ਓͰͷӡ༻ʹ͸ඞਢ 1SP5JQIFSPLVSFMFBTFT

Slide 43

Slide 43 text

Ϣʔεέʔε #J[%FW͕1VMM3FRVFTUΛςετ ඇ։ൃऀ΋(JU)VC'MPXʹר͖ࠐΜͰ ΈΜͳϋοϐʔʹͳͬͨ࿩ IUUQCMPHNBEPSPPSHNO

Slide 44

Slide 44 text

։ൃऀ͕1VMM3FRVFTU ʢςελʔ޲͚ͷνΣοΫϦετ෇͖ʣ

Slide 45

Slide 45 text

+FOLJOT͕1VMM3FRVFTUϒϥϯνΛςετ (SFFOͩͬͨΒ)FSPLVʹσϓϩΠ

Slide 46

Slide 46 text

ςελʔ͸σϓϩΠ͞Εͨ63-Λ։͍ͯ ϒϥ΢βͰಈ࡞νΣοΫ

Slide 47

Slide 47 text

ίʔυϨϏϡʔςελʔͷಈ࡞νΣοΫ ྆ํ0,ͳΒଞͷ։ൃऀ͕Ϛʔδ

Slide 48

Slide 48 text

%FNPOTUSBCMF1VMM3FRVFTUT wϚʔδ͕શһʹͱͬͯͷʮ׬ྃʯʹ wίϛϡχέʔγϣϯ͠΍͘͢ͳͬͨ wνʔϜશମͷεϐʔυײ͕͕͋ͬͨ wϦϦʔεɾσϓϩΠࣄނ͕ݮͬͨ IUUQTCMPHIFSPLVDPNBSDIJWFTIFSPLVGPSL

Slide 49

Slide 49 text

˞࣮ࡍͷίϚϯυ͸ ΋ͬͱటष͍Ͱ͕͢ɾɾɾ IFSPLVGPSLBQJGFBUVSF(*5@#3"/$)BQQBQJ HJUQVTIa HJU!IFSPLVDPNBQJGFBUVSF(*5@#3"/$)HJUa (*5@#3"/$)NBTUFS

Slide 50

Slide 50 text

ٯʹ)FSPLVͰΠϚΠνͳͱ͜Ζʁ w؀ڥม਺ʹґଘ͗͢͠ΔϦεΫ w)FSPLVʹ׳Ε͗ͯ͢ΨϥύΰεԽ͢ΔϦεΫ wݸਓͰ࢖͏ʹ͸ͪΐͬͱׂߴʢແྉ࿮আ͘ʣ wʢਖ਼௚ͦΜͳʹෆຬແ͍ʂʣ

Slide 51

Slide 51 text

؀ڥม਺ʹґଘ͗͢͠ΔϦεΫ wಈతʹܾ·Δ؀ڥม਺͸೺Ѳͮ͠Β͍ཁૉ wຊདྷ͸όʔδϣϯ؅ཧ͢΂͖ʢઃఆϑΝΠϧʣ wΞϓϦέʔγϣϯ͕؀ڥม਺ʹґଘ͗͢͠Δ wʮਖ਼͍͠஋ʯΛ஌Βͳ͍ͱಈ͔ͤͳ͍ wυΩϡϝϯτͱίϛϡχέʔγϣϯͰΧόʔ

Slide 52

Slide 52 text

ʢࣗ෼͕ʣΨϥύΰεԽ͢ΔϦεΫ w)FSPLVҎ֎ͷ؀ڥͰԿ΋Ͱ͖ͳ͘ͳΔ wྲྀߦͷ%FW0QTٕज़Λࢼ͢ػձ͕ແ͍ wศར͗ͯ͢ΠϯϑϥͷτϨϯυʹૄ͘ͳΔ w)FSPLVϓϥοτϑΥʔϜʹғ͍ࠐ·ΕΔ w༨ՋΛར༻ͯ͠1BB4*BB4Λݚڀ͠·͠ΐ͏

Slide 53

Slide 53 text

ݸਓͰ࢖͏ʹ͸ͪΐͬͱׂߴʢແྉ࿮আ͘ʣ wʮ͘͞Βͷ714ʯ͕҆͗͢Δ͚ͩʁ w౤ࢿͱࢥͬͯద౓ʹ՝ۚ͢Δͷ͕٢ʁ w)FSPLV͕Ṷ͔ͬͯ஋Լ͛͢ΔͱΈΜͳخ͍͠ wզʑ։ൃऀ͕੝Γཱ͍͖ͯͯ·͠ΐ͏

Slide 54

Slide 54 text

·ͱΊ w2VJQQFSͷ։ൃࣄྫΛ঺հ͠·ͨ͠ w)FSPLV͸༏ΕͨϓϥοτϑΥʔϜͰ͢ w࢓ࣄʢϓϩμΫγϣϯ༻్ʣͰ࢖͑·͢ w)FSPLVΤίγεςϜΛཧղ͢Δͱ͞Βʹศར

Slide 55

Slide 55 text

5IBOLZPV