Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ ఆྔతʹվળ͍ͯ͘͠ Server side engineer @ota42y
Slide 2
Slide 2 text
3ͭͷ࣭
Slide 3
Slide 3 text
1/3 ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ 3ͭͷ࣭
Slide 4
Slide 4 text
2/3 ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ 3ͭͷ࣭
Slide 5
Slide 5 text
BEFORE AFTER 3/3 ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ 3ͭͷ࣭
Slide 6
Slide 6 text
࠷ޙ͚ͩҙݟׂ͕ΕΔ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ 3ͭͷ࣭
Slide 7
Slide 7 text
“ͷ͞͠”Λ୳ͦ͏
Slide 8
Slide 8 text
ɾಉ͡ʮͷ͞͠ʯͳΒಉ͡ൺֱ݁Ռ ɾಉ͡ೝࣝΛڞ༗Ͱ͖Δ Կ͔ͷج४ʮͷ͞͠ʯΛͬͯൺֱ ମॏ ڑ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ୳ͦ͏
Slide 9
Slide 9 text
ɾܧଓ ɾετʔϦʔϙΠϯτ ɾॲཧ࣌ؒ ࣄʹ͏ʮͷ͞͠ʯͨ͘͞Μ͋Δ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ୳ͦ͏
Slide 10
Slide 10 text
ɾͬͪ͜ͷํ͕ͳΜ͔͍͍ ɾ͋ͱগ͠ͰऴΘΓ·͢ ɾྑ͍ײ͡ʹ࣮͠ͱ͍ͯ ňͷ͞͠ʯ͕ͳ͍ͱೝࣝͷζϨ͕ى͖Δ → ίϛϡχέʔγϣϯϛε ਓʹΑͬͯೝ͕ࣝζϨ͍͢ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ୳ͦ͏
Slide 11
Slide 11 text
ňͷ͞͠ʯศར ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ୳ͦ͏
Slide 12
Slide 12 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ୳ͦ͏ ܧଓDAU, ച্, རӹ, ߘ, ϨϏϡʔͷ, ͍߹Θͤ PV, ΫϦοΫ, ฏۉߪങֹۚ, όά etc… ܭΓ͍͢ͷ ܭΓʹ͍͘ͷ Ξχϝʔγϣϯͷྑ͞, ͔ͬ͜Α͞, Θ͔Γ͢͞, ϥϯΩϯάͷྑ͞, Ϣʔβͷຬɾෆຬɾ͖۩߹ etc…
Slide 13
Slide 13 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ୳ͦ͏ ɾࣗͷ࣋ͭʮͷ͞͠ʯ͕ରԠͰ͖ͳ͍࣌ ɾརӹച্ͱ͔ͰؒతʹܭΕΔ͚Ͳ…Կϲ݄͔͔Δʁ ܭΓʹ͍͘έʔεʹग़͘Θ͔͢
Slide 14
Slide 14 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ୳ͦ͏ ɾ୳͠ํͷ࣮ྫΛհ ɹ— ͍͠ಉ͡ೝࣝͰͤΔ ɹ— ྑ͍ѱ͍Λૉૣ͘அͰ͖Δ ɹ— ࣗಈԽͷԸܙಘΒΕΔ ࣗͰɺඞཁͳʮͷ͞͠ʯΛ୳ͦ͏
Slide 15
Slide 15 text
ࣗݾհ
Slide 16
Slide 16 text
גࣜձࣾFiNC Technologies — αʔόʔαΠυΤϯδχΞ @ota42y → Twitter, GitHub ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ ࣗݾհ ۀ — rubyͱ͔rustͱ͔goͱ͔C++ͱ͔ — αʔόϨεͨ͠Γ — GPUͰ༡ΜͩΓ — ػցֶशͨ͠Γ — ElasticSearchͨ͠Γ৭ʑ…
Slide 17
Slide 17 text
എܠઆ໌
Slide 18
Slide 18 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌
Slide 19
Slide 19 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌
Slide 20
Slide 20 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌ ɾDBͷσʔλΛొ ɾ໊લΛݕࡧͯ͠બͿ ొ
Slide 21
Slide 21 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌ ݕࡧγεςϜ
Slide 22
Slide 22 text
→ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌ ɾσʔλࣗମ݁ߏ͋Δ ୳ͯ͠Δσʔλ͕ ͳ͔ͳ͔ݟ͔ͭΒͳ͍ ɹɾ20ສ݅͘Β͍ ɹɾશ͘ݟ͔ͭΒͳ͍ମݧʹͳΒͳ͍ͣ ྑ͍ݕࡧΛఏڙ͍ͨ͠ʂ ɾΑ͘ݟΔͱԼͷํʹग़͍ͯΔ ɹɾ̏̌൪ͱ͔
Slide 23
Slide 23 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌ ɾ͋Δ1ͭͷ݁Ռͷྑ͞ͳΜͱͳ͘Θ͔Δ ɾਓʹΑͬͯྑ͞ͷج४͕ҧ͏ ɾଞͷΫΤϦͷѱӨڹௐ͖Εͳ͍ ɹ — ຯḩϥʔϝϯͷॱҐΛ্͛ΔͨΊʹຯḩͷॏΈΛ্͛Δ ɹ— ผͷΫΤϦͰຯḩΧπຯḩ͓ͰΜ͕1൪্ʹ… ྑ͍ݕࡧͱԿ͔? ͦͯ͠Ͳ͏ܭΔͷ͔?
Slide 24
Slide 24 text
ɾňྑ͘ͳͬͨؾ͕͢Δʯͱ͔͠ݴ͑ͳ͍ ɾ࣮είΞͷॏΈ͚͕ਖ਼͍͔͠ղΒͳ͍ ɾશମͱͯ͠ࠅ͘ͳ͍ͬͯΔՄೳੑेʹ͋Δ ݕࡧ݁Ռͷʮͷ͞͠ʯ͕ͳ͍ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌
Slide 25
Slide 25 text
ɾ݁Ռ͕Θ͔Δͷ͕͔࣌ؒͨͬͯΒ ɹ— ѱ͍ঢ়ଶͷΞϓϦΛϢʔβʹఏڙͯ͠͠·͏ ɾී௨ѱ͍ͷΛੈʹग़͢͜ͱແ͍ ɹ— ͋Δఔྑ͍֬৴Λ࣋ͬͯϢʔβʹग़͢ ɹ— ࠓճྑ͍͔ѱ͍͔Θ͔Βͳ͍ ɹɹɹ— ѱ͍ͷΛੈʹग़ͯ͠͠·͏ύλʔϯ͋Δ ϢʔβͷԠΛݟΔ͔? ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌
Slide 26
Slide 26 text
ɾͲΕ͘Β͍ྑ͘ͳ͔͕ͬͨΘ͔Δ ɾಉ͡ج४Λڞ༗Ͱ͖Δ ɾѱ͍ঢ়ଶͰϦϦʔε͢ΔͷΛආ͚ΕΔ ɹ— ଟ͘ͷݕࡧ݁Ռ͕ྑ͘ͳͬͯΔͱΘ͔Δ ňͷ͞͠ʯ͕͋Ε ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌ 75 Έ͍ͨͳ
Slide 27
Slide 27 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌ ňͷ͞͠ʯ͕ཉ͍͠
Slide 28
Slide 28 text
“ͷ͞͠”Λ༻ҙ͢Δ
Slide 29
Slide 29 text
ɾͦͷܭΓํ͖ͪΜͱྑ͞Λө͍ͯ͠Δ? ɾಛఆͷύλʔϯͰมʹͳͬͨΓ͠ͳ͍͔ ňͷ͞͠ʯΛθϩ͔Β࡞Δͷେม ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ༻ҙ͢Δ
Slide 30
Slide 30 text
ɾ͜ͷΞϓϦݻ༗ͷ…Ͱແͦ͞͏ ɾใݕࡧใՊֶͷதͰҰେ ɹ— ेͷྺ࢙͕͋Δ ɹ— ΫΤϦͰରͷจॻΛ୳͢ύλʔϯසग़ ɹ— ݕࡧϥϯΩϯάఆྔԽࢦඪ͕͋Δ աڈʹ୭͔͕໘͍ͯ͠Δͷͣ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ༻ҙ͢Δ
Slide 31
Slide 31 text
ɾզʑͷΛաڈͷʹϚοϐϯά͍ͨ͠ ɾաڈͷՌΛదԠͰ͖Δ ɾňͷ͞͠ʯͷಘखෆಘख͋ΔఔΘ͔Δ ڊਓͷݞʹΓ͍ͨ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ༻ҙ͢Δ ࣗୡͷΛϚοϐϯάͰ͖Δ͔?Λߟ͑Δ
Slide 32
Slide 32 text
ɾϢʔβ͕ΫΤϦΛೖྗ ɾෳͷจॻΛ݁ՌͰฦ͢ ɾϢʔβ͕ΫϦοΫͨ͠ෳͷͷ͕ਖ਼ղ Ұൠతͳจॻݕࡧͷ֓೦ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ༻ҙ͢Δ
Slide 33
Slide 33 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ༻ҙ͢Δ ɾݕࡧ୯ޠΛೖྗ͠ɺͷϦετΛฦ͢ ɾϢʔβΛબΜͰొ͢Δ ɾొ͢Δ(ଟͯ͘)1ͭ ɹ— ͦͦཉ͍͕͠ແ͍ύλʔϯ͋Γ͏Δ ɹ— Ұ୴ແࢹͯ݁͠ՌͷϥϯΩϯάʹྗ ࠓճͷػೳ
Slide 34
Slide 34 text
ɾࠓճͷػೳจॻݕࡧͷҰ෦ʹͰ͖Δ ɹ— ໊͚͕ͩॻ͔ΕͨจॻͱΈͳ͢ ɹ— ొ͞ΕͨΛ།Ұͷਖ਼ղͱΈͳ͢ ΛϚοϐϯά͢Δ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ༻ҙ͢Δ ɾਖ਼ղσʔλ͋Δఔϩά͔Β࡞ΕΔ ɹ— ݕࡧ୯ޠͱ݁ՌͷॱҐΛϩάΛอଘ͢Δ ɹ— ొͨ࣌͠ʹݕࡧϩάͱ͖ͭ͋ΘͤΔ ɹ— ͋ΔݕࡧͰԿ͕ొ͞Εͨʢʹਖ਼ղ͔ʣղΔ
Slide 35
Slide 35 text
طଘͷʮͷ͞͠ʯ͕͑ͦ͏ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λ༻ҙ͢Δ
Slide 36
Slide 36 text
“ͷ͞͠”ΛબͿ
Slide 37
Slide 37 text
MRR (Mean Reciprocal Rank) ࠷ॳʹͰͨਖ਼ղͷΈΛߟྀ͢ΔධՁख๏ ݕࡧ݁ՌͷධՁख๏ͱͯ͠MRRΛ࠾༻ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”ΛબͿ
Slide 38
Slide 38 text
ɾ֓೦͕؆୯Ͱଟ͘ͷਓ͕ཧղ͍͢͠ ɾ݁Ռ͕୯ҰͷࣈͳͷͰγϯϓϧ ɾָ࣮͕Ͱૣ͘վળͰ͖Δ ɾਖ਼ղ͕1ͭͳͷͰܽͷ1ͭແࢹͰ͖Δ ɹ— ࠷ॳͷਖ਼ղ͔͠ݟͳ͍͕ɺ࠷ॳ͔͠ͳ͍ ɹ— ෳߟྀ͢ΔMAPͱಉ݁͡ՌʹͳΔͣ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”ΛબͿ ख๏બఆཧ༝
Slide 39
Slide 39 text
ňͷ͞͠ʯΛखʹೖΕͨ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”ΛબͿ
Slide 40
Slide 40 text
“ͷ͞͠”Λͬͯվળ
Slide 41
Slide 41 text
ɾݱࡏͷঢ়ଶΛܭΔ ɾվળํ๏Λߟ͑Δ ɾࢼ͢ ɾ݁ՌΛʮͷ͞͠ʯͰܭΔ ɾϦϦʔε͢Δ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λͬͯվળ ͲͷΑ͏ʹվળ͍ͯ͘͠ͷ͔
Slide 42
Slide 42 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λͬͯվળ ݱࡏͷঢ়ଶΛܭΔ ɾొ͞Εͨͷ্Ґ2000݅ΛͬͯMRRΛܭࢉ ɹ— શ෦ߟྀ͢Δͷେ ɹ— ૯ొͷ͔ͳΓͷׂ߹ΛΊΔ্ҐʹߜΔ ɹɹ — ԼҐͷӨڹখ͍͞ͷͰ… ɾ݁Ռͱͯ͠MRR=0.55͙Β͍ ɹ— ݕࡧϩάͱొϩά͔Βਖ਼ղΛܭࢉͰ͖Δ ɹ— ݕࡧϩά͔ΒॱҐΛऔΓग़͠MRRΛܭࢉ͢Δ
Slide 43
Slide 43 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λͬͯվળ վળํ๏Λߟ͑Δ ɾMRRΛ্ঢͤ͞Εྑ͘ͳͬͨͱݴ͑Δ ɾ্ঢ͢ΔύϥϝʔλΛߟ͑Δ ɹ— ݕࡧ෦Elasticsearch ɹɹɹ— ύϥϝʔλΛมߋ͢ΔͱϥϯΩϯά͕͍͡ΕΔ ɹɹɹ— ͲͷཁૉͷॏΈΛॏ͘͢Δ͔ ɹɹɹ— ొɺͷଐੑɺetc…
Slide 44
Slide 44 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λͬͯվળ ࢼ͢ ɾElasticsearchͷύϥϝʔλͷॏΈΛม͑Δ ɹ— ύϥϝʔλશ෦ొ ɹ— ݕࡧΫΤϦͰॏΈΛม͑Δ ɹ— MRR͕େ͖͘ͳΔॏΈͷΈ߹ΘͤΛߟ͑Δ
Slide 45
Slide 45 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λͬͯվળ ɾΑ͍ॏΈ(ύϥϝʔλ)ͷ߹ͤ୳ࡧػցֶशܥͩͱසग़ ύϥϝʔλͷ߹ͤΛ୳ࡧ͢Δ ɾHyperopt ɹ— ྑ͍ύϥϝʔλΛ୳ࡧ͢ΔPythonϥΠϒϥϦ ɹ— MRR͕ྑ͘ͳΔΑ͏ʹ୳ࡧΛߦ͏ ɹɹ — ElasticsearchʹΫΤϦΛ͛ͯMRRΛܭࢉͯ͘͠ ɹɹ — ྑ͍ݕࡧ㲈ྑ͍MRRΛࣗಈͰ୳ࡧͰ͖Δ ྑ͞Λ୯ҰͷࣈͰఆٛͯ͠ΔͷͰ୳ࡧ؆୯
Slide 46
Slide 46 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λͬͯվળ ྑ͍݁ՌʹͳΔΫΤϦΛ୳ࡧ
Slide 47
Slide 47 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λͬͯվળ ɾखಈͰௐͨ͠߹ΑΓྑ͘ͳͬͨ ɹ— ॏཁࢹͯ͠ͳ͔ͬͨύϥϝʔλͷӨڹ͕େ͖͘ɺखಈͰ͔ͬͨ݁͠Ռʹ ݁ՌΛʮͷ͞͠ʯͰܭΔ MRR ແௐ 0.55 खಈௐ 0.68 Hyperopt 0.76
Slide 48
Slide 48 text
ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “ͷ͞͠”Λͬͯվળ ϦϦʔε͢Δ ɾA/BςετͰ࠷ऴ֬ೝ ɹ— ݕࡧͷྑ͕͞ͲΕ͘Β͍KPIʹڹ͔͘ະ ɹ— ྑ͍ͷΛϢʔβٻΊͯͳ͔ͬͨՄೳੑ ɾ݁Ռͱͯ͠ޭ ɹ— ແௐύϥϝʔλͷϢʔβΑΓߘ͕5%૿Ճͨ͠ ɹ— ৯ࣄʹؔ͢Δ͝ҙݟϨϏϡʔ10͔݅ۙ͘Β΄΅0
Slide 49
Slide 49 text
·ͱΊ
Slide 50
Slide 50 text
ɾͳΜͱͳ͔͘Βɺڞ௨ೝࣝʹ͢Δ ɾݟ͑ʹ͍͘ͷΛݟ͑ΔΑ͏ʹ͢Δ ňͷ͞͠ʯ͕େࣄ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ ·ͱΊ ňͷ͞͠ʯΛ୳͢ ɾ͍͔ʹطଘͷʹམͱ͠ࠐΉ͔ ɾΛཧͯ͠ڊਓͷݞʹΔ ɾňͷ͞͠ʯ͕Ͱ͖ΕԠ༻ޮ͘
Slide 51
Slide 51 text
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ - Thank You -
Slide 52
Slide 52 text
ɾͳΜͱͳ͔͘Βɺڞ௨ೝࣝʹ͢Δ ɾݟ͑ʹ͍͘ͷΛݟ͑ΔΑ͏ʹ͢Δ ňͷ͞͠ʯ͕େࣄ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ ·ͱΊ ňͷ͞͠ʯΛ୳͢ ɾ͍͔ʹطଘͷʹམͱ͠ࠐΉ͔ ɾΛཧͯ͠ڊਓͷݞʹΔ ɾňͷ͞͠ʯ͕Ͱ͖ΕԠ༻ޮ͘