Slide 1

Slide 1 text

Re:valua t ion https://fril.jp/ L ead & Delight User F irst Ownership Fail Smart αʔΩοτϒϨʔΧʔΛಋೖ͠Α͏ͱ͍ͯ͠Δ࿩

Slide 2

Slide 2 text

3BLVNB4FSWJDF%FWFMPQNFOU(SPVQ 3BLVUFO JOD :VTVLF.JZB[BLJ !ZTL@QSP !ZTL

Slide 3

Slide 3 text

αʔΩοτϒϨʔΧʔͱ͸ʁ

Slide 4

Slide 4 text

αʔΩοτϒϨʔΧʔͱ͸ʁ "1*Λར༻͢Δͱ͖ʹɺར༻͢Δ"1*ͷো֐͕ࣗ෼ͷ αʔϏε΁࿈࠯ͯ͠͠·Θͳ͍Α͏ʹ͢ΔͨΊͷ࢓૊Έ

Slide 5

Slide 5 text

αʔΩοτϒϨʔΧʔͱ͸ʁ ௨ৗ࣌ ࣗ෼ͷαʔϏε "1* ϦΫΤετ Ϩεϙϯε

Slide 6

Slide 6 text

αʔΩοτϒϨʔΧʔͱ͸ʁ "1*Ͱো֐͕ൃੜͨ࣌͠ ࣗ෼ͷαʔϏε "1* ϦΫΤετ Ԡ౴଴ͪͷϦΫΤετ͕૿Ճ͠ɺ ϦιʔεΛઐ༗ͨ݁͠Ռɺ "1*ͷো֐͕࿈࠯ͯ͠͠·͏͓ͦΕ͕͋Δ

Slide 7

Slide 7 text

αʔΩοτϒϨʔΧʔͱ͸ʁ "1*Ͱো֐͕ൃੜͨ࣌͠ ࣗ෼ͷαʔϏε "1* ϦΫΤετ Ԡ౴଴ͪͷϦΫΤετ͕૿Ճ͠ɺ ϦιʔεΛઐ༗ͨ݁͠Ռɺ "1*ͷো֐͕࿈࠯ͯ͠͠·͏͓ͦΕ͕͋Δ

Slide 8

Slide 8 text

αʔΩοτ ϒϨʔΧʔ αʔΩοτϒϨʔΧʔͱ͸ʁ ௨ৗ࣌ ࣗ෼ͷαʔϏε "1* ϦΫΤετ Ϩεϙϯε ϦΫΤετ Ϩεϙϯε

Slide 9

Slide 9 text

αʔΩοτ ϒϨʔΧʔ αʔΩοτϒϨʔΧʔͱ͸ʁ "1*Ͱো֐͕ൃੜͨ࣌͠ ࣗ෼ͷαʔϏε "1* 5JNFPVU ҟৗΛݕ஌͢Δͱɺ"1*ʹϦΫΤετ͢Δ͜ͱͳ͘ɺϨεϙϯεΛฦ͢

Slide 10

Slide 10 text

αʔΩοτϒϨʔΧʔͱ͸ʁ ͭͷϞʔυ͕ଘࡏ $-04&% ௨ৗϞʔυ 01&/ GBJMGBTUϞʔυ )"-'01&/ ෮چ֬ೝϞʔυ Τϥʔ਺͕ᮢ஋ಥഁ ࣌ؒܦա Τϥʔ͠ͳ͍͜ͱΛ֬ೝ Τϥʔͷঢ়گෆม

Slide 11

Slide 11 text

αʔΩοτϒϨʔΧʔͷಋೖ

Slide 12

Slide 12 text

αʔΩοτϒϨʔΧʔͷಋೖ ಋೖ͢Δํ๏ ಠࣗͰ࣮૷ (FNΛ࢖͏ 1SPT ΧελϚΠζࣗ༝ ࠷దͳ(FN͕͋Ε͹ɺ࣮૷͕ૣ͍ $POT ͕͔͔࣌ؒΔ ΧελϚΠζੑ͕ݶΒΕΔ (FN͕ϝϯςφϯε͞ΕΔ͔ෆ໌

Slide 13

Slide 13 text

αʔΩοτϒϨʔΧʔͷಋೖ ಋೖ͢Δํ๏ ಠࣗͰ࣮૷ (FNΛ࢖͏ 1SPT ΧελϚΠζࣗ༝ ࠷దͳ(FN͕͋Ε͹ɺ࣮૷͕ૣ͍ $POT ͕͔͔࣌ؒΔ ΧελϚΠζੑ͕ݶΒΕΔ (FN͕ϝϯςφϯε͞ΕΔ͔ෆ໌

Slide 14

Slide 14 text

αʔΩοτϒϨʔΧʔͷಋೖ (FNͷબఆ XTBSHFOUDJSDVJU@CSFBLFS ZBNNFSDJSDVJUCPY 4UBS -BUFTUDPNNJU 3&"%.&ͷॆ࣮౓ ˓ ˕

Slide 15

Slide 15 text

αʔΩοτϒϨʔΧʔͷಋೖ (FNͷબఆ XTBSHFOUDJSDVJU@CSFBLFS ZBNNFSDJSDVJUCPY 4UBS -BUFTUDPNNJU 3&"%.&ͷॆ࣮౓ ˓ ˕

Slide 16

Slide 16 text

αʔΩοτϒϨʔΧʔͷಋೖʙ(FNͷίΞ෦෼ def run if open? # ϩάग़ྗͳͲ else begin response = execution_timer.time(service, notifier, 'execution_time') do yield end success! # HALF-OPENͩͬͨ৔߹ɺCLOSEDʹ͢Δ rescue response = nil failure! # HALF_OPENͩͬͨ৔߹ɺOPENʹ / CLOSEDͩͬͨ৔߹ɺ৚݅ʹΑͬͯOPENʹ End end response end def http_get circuit.run do Zephyr.new('http://example.com').get('/api/messages') end end ˞͔ͳΓ؆ૉԽ͍ͯ͠·͢ɻࢀߟɿ(JU)VCͷ֘౰Օॴ

Slide 17

Slide 17 text

αʔΩοτϒϨʔΧʔͷಋೖʙ'BSBEBZͱ૊Έ߹Θ࣮ͤͨ૷ํ๏ require 'faraday' require 'circuitbox/faraday_middleware' conn = Faraday.new(:url => "http://example.com") do |c| c.use Circuitbox::FaradayMiddleware end response = conn.get("/api") if response.success? # success else # failure or open circuit end ˞3&"%.&͔Βͷൈਮ ˞'BSBEBZ͸ɺศརͳ)551ΫϥΠΞϯτϥΠϒϥϦʢ3VCZ,BJHJͰ΋঺հ͞Ε͍ͯ·ͨ͠ʣ

Slide 18

Slide 18 text

࣮ࡍͷ࣮૷ɺϦϦʔε͸͜Ε͔Β 5P#FDPOUJOVFEʜ

Slide 19

Slide 19 text

·ͱΊ

Slide 20

Slide 20 text

·ͱΊ w αʔΩοτϒϨʔΧʔͱ͸ɺ"1*Λར༻͢Δͱ͖ʹɺ ར༻͢Δ"1*ͷো֐͕ࣗ෼ͷαʔϏε΁࿈࠯ͯ͠͠· Θͳ͍Α͏ʹ͢ΔͨΊͷ࢓૊Έ w (FN ZBNNFSDJSDVJUCPY Λ࢖ͬͯؾܰʹ࣮૷Ͱ ͖ͦ͏ w ࣍ճ͸ɺ࣮ࡍʹ࣮૷ͯ͠ϦϦʔεͨ͠ޙʹͲ͏ͩͬͨ ͔Λڞ༗͠·͢

Slide 21

Slide 21 text

͋Γ͕ͱ͏͍͟͝·ͨ͠

Slide 22

Slide 22 text

ิ଍

Slide 23

Slide 23 text

ิ଍ w αʔΩοτϒϨʔΧʔͷ໊લͷ༝དྷ w αʔΩοτϒϨʔΧʔͱ͍͏ͷ͸ɺిؾճ࿏ͷϒ ϨʔΧʔͷ͜ͱʢࣄނ΍ނোͰେ͖ͳిྲྀ͕ྲྀΕͨ ͱ͖ʹࣗಈతʹःஅͯ͠഑ઢΛอޢ͢Δػߏͷ͜ ͱʣ

Slide 24

Slide 24 text

ิ଍ w ԿճΤϥʔͨ͠Β01&/ʹͳΔ͔ɺͳͲ͸ΧελϚΠ ζͰ͖Δ w σϑΥϧτ͸ɺ௚ۙϦΫΤετͰճҎ্Τϥʔ ͍ͯͨ͠Βɺ෼ؒ01&/ͱͳΔ w DJSDVJUCPYͷTUPSBHF Կճࣦഊ͔ͨ͠ͱ͔ ͸ɺ .POFUBͱ͍͏γϯϓϧͳLFZWBMVFTUPSFΛඪ४Ͱ ࢖༻͍ͯ͠Δ