Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ruby_adsystem

 ruby_adsystem

RubyWorld Conference 2014
「月間38億PVメディアを
支える広告配信システムのRubyによる内製開発の挑戦」講演資料

3f1fad1dcac9f7e38db511df060a192d?s=128

Toshiaki Koshiba

November 14, 2014
Tweet

Transcript

  1. ݄ؒԯ17ϝσΟΞΛ
 ࢧ͑Δ޿ࠂ഑৴γεςϜͷ 3VCZʹΑΔ಺੡։ൃͷ௅ઓ !CBTI$খࣳහ໌ ϐΫγϒגࣜձࣾ 公開版

  2. ࣗݾ঺հ w খࣳහ໌!CBTI$ w QJYJW։ൃϚωδϝϯτ w ΤϯδχΞ࠾༻ɾҭ੒ w ޿ࠂܥٕज़୲౰ΤϯδχΞ IUUQXXXBUNBSLJUDPKQBJUBSUJDMFTOFXTIUNM

  3. Ωʔϫʔυ w ࣄۀձࣾ w εϞʔϧͳ಺੡νʔϜ w 3VCZ SBJMT 1BESJOP 'MVFOUE

    w ۀ຿γεςϜͱͯ͠ͷෳࡶ͞ w Ϣʔβ޲͚ͷଟେͳτϥϑΟοΫ਺
  4. w ։ൃͷഎܠ w ઃܭͱ࣮૷ w ൃੜͨ͠໰୊ͱղܾ w ࠓޙͷల։ͱ·ͱΊ

  5. ։ൃͷഎܠ

  6. ϐΫγϒגࣜձࣾͱ͸ w ࣾһ਺໊ɾฏۉ೥ྸࡀͷࣄۀձࣾ w ʮ͓ֆ͔͖͕΋ͬͱָ͘͠ͳΔ৔ॴΛ૑Δʯ w ૑࡞׆ಈΛָ͘͢͠ΔͨΊͷ֤छऔΓ૊Έ

  7. ʮͨͷ͍͠ʯΛ ऩӹ໘ͰԼࢧ͑

  8. ࢲͨͪͳΓͷ޿ࠂ഑৴ w ऩӹΛ͍͍͍ͨͩͯΔ w ऩӹΛ্͛ΔͨΊʹͷαʔϏεͰ͸ͳ͍ w αʔϏεΛ৳͹ͨ͢Ίͷݩख

  9. None
  10. ࣗࣾऔΓѻ͍ w ७޿ࠂ w λΠΞοϓҊ݅ w ࣗࣾͷΠϕϯτࠂ஌ w αʔϏε಺Ͱͷ༠ಋ w

    ผαʔϏε΁ͷ༠ಋ
  11. IUUQXXXTMJEFTIBSFOFU)JSPTIJ,POEPKQDIBPTNBQ

  12. ޿ࠂӡ༻େม

  13. ࣾ಺޿ࠂ഑৴γεςϜ w ֤छϓϥοτϑΥʔϜͷҰݩ؅ཧ w ҆શ͔ͭޮ཰తʹ޿ࠂͷӡ༻ w ߴ͍੒ՌΛ໨ࢦͯ͠ॊೈʹରԠ

  14. γεςϜ΁ͷཁ੥ w ҆ఆͯ͠ӡ༻Ͱ͖Δ w τϥϑΟοΫʹ଱͑Δ w ࢖͍উखͷྑ͍ۀ຿γεςϜ w ௿ϥϯχϯάίετ w

    ਝ଎ͳରԠ͕ߦ͑Δ
  15. ݱߦγεςϜ

  16. w ʢΞʔΩςΫνϟʣ 5PLZP 5ZSBOU .Z42- ؅ཧ"1 ,ZPUP 5ZDPPO "1$ JNQDMJDL

    Χ΢ϯτ "1$ ഑৴σʔλ Ωϟογϡ 5PLZP 5ZSBOU ؅ཧ"1 ϨϓϦέʔγϣϯ ఆظ ൓ө ఆظ ൓ө ഑৴ ༧໿ ༧໿ ൓ө ഑৴ ৘ใ ഑৴ ৘ใ ഑৴ ݁Ռ ը૾σʔλಉظ ը૾ "1
  17. ಛ௃ w ࣗࣾ։ൃ w ʮރΕͨʯ͍͍γεςϜ w ҆ఆͨ͠ύϑΥʔϚϯε w ೥Ҏདྷ௕೥ͷ։ൃӡ༻࣮੷ w

    खʹೃછΜͰ͍Δ
  18. ৽γεςϜ

  19. .Z42- ؅ཧ"1 ςΩετ ܭଌϩά NFNDB DIFE ϩάऩू ఆظ൓ө ഑৴ ઃఆ

    ഑৴ ৘ใ 'MVFOUE  ूܭ"1 'MVFOUE  ഑৴৘ใ Ϋϩʔϥʔ ഑৴"1 ഑৴ ৘ใ ഑৴ ݁Ռ ഑৴৘ใऔಘ
  20. ϑϧ3VCZͰ࣮૷Λ௅ઓ w ༏Εͨهड़ੑ w ࡞Γख͕ݟ͑Δ w ίϛϡχςΟ w ΤίγεςϜ

  21. ։ൃνʔϜߏ੒ ! w ೥৽ଔ w Πϯϑϥɺϛυϧ΢ΣΞ w σϓϩΠɺϩάॲཧ w *46$0/४༏উ

    ! w ޿ࠂ഑৴ܦݧ w શମͷΞʔΩςΫνϟܾఆ w ओʹ഑৴αʔόΛ୲౰ w SBJMTΞϓϦέʔγϣϯΤϯδχΞ w ޿ࠂ഑৴͸ॳΊ͕ͯͩ։ൃܦݧ๛෋ w ओʹ؅ཧαʔόΛ୲౰
  22. ॳظ։ൃͷظؒ w ϲ݄ w ࣗࣾ։ൃͷͨΊௐ੔Մೳ w ऴΘΓΛఆΊͯௐ੔Λߦ͏

  23. .Z42- ؅ཧ"1 ςΩετ ܭଌϩά NFNDB DIFE ϩάऩू ఆظ൓ө ഑৴ ઃఆ

    ഑৴ ৘ใ 'MVFOUE  ूܭ"1 'MVFOUE  ഑৴৘ใ Ϋϩʔϥʔ ഑৴"1 ഑৴ ৘ใ ഑৴ ݁Ռ ഑৴৘ใऔಘ ؅ཧαʔό ഑৴αʔό
  24. .Z42- ؅ཧ"1 ςΩετ ܭଌϩά NFNDB DIFE ϩάऩू ఆظ൓ө ഑৴ ઃఆ

    ഑৴ ৘ใ 'MVFOUE  ूܭ"1 'MVFOUE  ഑৴৘ใ Ϋϩʔϥʔ ഑৴"1 ഑৴ ৘ใ ഑৴ ݁Ռ ഑৴৘ใऔಘ ؅ཧαʔό ഑৴αʔό
  25. ؅ཧαʔόʹٻΊΒΕΔ΋ͷ w ۀ຿γεςϜ w ϛεͳ͘ۀ຿Ͱ͖Δ͜ͱ w ֦ு༰қੑ w ඞཁे෼ͳύϑΥʔϚϯε

  26. ؅ཧαʔόͷ࣮૷ w OHJOY w VOJDPSO w SBJMT w .Z42- w

    మ൘ߏ੒ w ࣾ಺ʹ஌ݟ͕͋ͬͨ
  27. l͘͝ී௨ͷߏ੒z w ձࣾΛ௒͑ͯී௨ͷߏ੒ͱ͍͏࿩͕Ͱ͖Δ w ґવͱͯ͠ઃܭ͸؆୯Ͱ͸ͳ͍ w ۀ຿ͷϞσϦϯά

  28. .Z42- ؅ཧ"1 ςΩετ ܭଌϩά NFNDB DIFE ϩάऩू ఆظ൓ө ഑৴ ઃఆ

    ഑৴ ৘ใ 'MVFOUE  ूܭ"1 'MVFOUE  ഑৴৘ใ Ϋϩʔϥʔ ഑৴"1 ഑৴ ৘ใ ഑৴ ݁Ռ ഑৴৘ใऔಘ ؅ཧαʔό ഑৴αʔό
  29. ഑৴αʔόʹٻΊΒΕΔ΋ͷ w ߴτϥϑΟοΫ w Մ༻ੑ w θϩμ΢ϯλΠϜ w ࠷େݶͷύϑΥʔϚϯε

  30. ഑৴αʔόͷ࣮૷ w OHJOY w VOJDPSO w 1BESJOP w NFNDBDIFE w

    ܰྔͳετϨʔδ
 ͔ΒಡΈࠐΈ w SBJMTͷϦονͳػೳ ͸ཁΒͳ͍ w ϑϨʔϜϫʔΫͷੜ ࢈ੑͷߴ͞΋΄͍͠
  31. NFNDBDIFE 1BESJOP w NFNDBDIFEར༻ͷ࣮੷͕๛෋ w 1BESJOP4JOBUSBϕʔεͷϑϨʔϜϫʔΫ w ։ൃʹඞཁͳ࢓૊Έ͕උΘ͍ͬͯΔ w ඞཁͳίϯϙʔωϯτΛ૊Έ߹Θͤ

    w ύονΛૹͬͨࣄ͕͋ͬͨ
  32. ޻෉఺

  33. ཁૉؒΛૄ݁߹ʹ w ࣮֬ʹ഑৴੒ՌΛूܭ͢Δ w ഑৴Λܧଓ͠ଓ͚Δ w ӨڹΛہॴԽ͢Δ .Z42- ؅ཧ"1 ςΩετ

    ܭଌϩά NFNDB DIFE ϩάऩू ఆظ൓ө ഑৴ ઃఆ ഑৴ ৘ใ 'MVFOUE  ूܭ"1 'MVFOUE  ഑৴৘ใ Ϋϩʔϥʔ ഑৴"1 ഑৴ ৘ใ ഑৴ ݁Ռ ഑৴৘ใऔಘ
  34. ੒Ռूܭͷࣦഊ࣌ରࡦ .Z42- ςΩετ ܭଌϩά ϩάऩू ఆظ൓ө 'MVFOUE  ूܭ"1 w

    'MVFOUE3VCZ੡ϩάऩूπʔϧ w ๛෋ͳϓϥάΠϯͱγϯϓϧͳઃఆϑΝΠϧ w ετϦʔϜʹΑΔηϛϦΞϧλΠϜॲཧ w ࣦഊ࣌ͷϦτϥΠػೳ
  35. ੒Ռूܭͷࣦഊ࣌ରࡦ w 'MVFOUEΛ࢖ͬͯϩάͷճऩͱҰ࣍ूܭ w IUUQTHJTUHJUIVCDPNLBU[DIBOH ޿ࠂ഑৴ͷઌୡͷઃܭΛར༻ IUUQTHJTUHJUIVCDPNLBU[DIBOH

  36. TPVSDF UZQFUBJM QBUIQBUIUPTIBSFELTLLTLMPH QPT@pMFQBUIUPTIBSFELTLLTLQPT SPUBUF@XBJUT GPSNBUKTPO UBHLTL TPVSDF ! NBUDILTL

     UZQFFYFD DPNNBOEDEQBUIUPDVSSFOUCVOEMFMPH BHHSFHBUF@LTL@MPHMPHMPHqVFOUE@FSSPSMPH FYFDQBESJOPSVOOFSTDSJQUBHHSFHBUF@LTL@MPHSCF QSPEVDUJPO GPSNBUKTPO CVGGFS@UZQFpMF qVTI@JOUFSWBMT CVGGFS@QBUIQBUIUPTIBSFELTLqVFOUE@CVGGFS LTL CVGGFS NBUDI ܭଌϩάΛ
 ৗ࣌ಡΈࠐΈ ඵຖʹूܭ .Z42-ʹ
 ॻ͖ग़͠
  37. 1VMMܕͷ৘ใऔಘ .Z42- ؅ཧ"1 ςΩετ ܭଌϩά NFNDB DIFE ϩάऩू ఆظ൓ө ഑৴

    ઃఆ ഑৴ ৘ใ 'MVFOUE  ूܭ"1 'MVFOUE  ഑৴৘ใ Ϋϩʔϥʔ ഑৴"1 ഑৴ ৘ใ ഑৴ ݁Ռ ഑৴৘ใऔಘ ഑৴αʔό
  38. ؅ཧ"1 ഑৴"1 ഑৴"1 ഑৴"1 ഑৴"1 ഑৴"1

  39. ಘΒΕͨࣄ w ࣮֬ʹ഑৴੒ՌΛूܭ͢Δ w ഑৴Λܧଓ͠ଓ͚Δ w ӨڹΛہॴԽ͢Δ .Z42- ؅ཧ"1 ςΩετ

    ܭଌϩά NFNDB DIFE ϩάऩू ఆظ൓ө ഑৴ ઃఆ ഑৴ ৘ใ 'MVFOUE  ूܭ"1 'MVFOUE  ഑৴৘ใ Ϋϩʔϥʔ ഑৴"1 ഑৴ ৘ใ ഑৴ ݁Ռ ഑৴৘ใऔಘ ᶃ഑৴ܧଓੑ ɹҡ͕࣋༰қ ᶆूܭ݁Ռ൓ө͕ඇΫϦςΟΧϧԽ ᶅεέʔϧΞ΢τ͕༰қ ᶄ؅ཧը໘ͱ഑৴৘ใߋ৽͕ ɹඇΫϦςΟΧϧԽ
  40. ൃੜͨ͠໰୊ͱղܾ

  41. ؅ཧαʔό w ٕज़తͳ໰୊͸͋·Γͳ͍ w ۀ຿తͳ໰୊ w ར༻ଆ΋։ൃଆ΋ཉ͍͠΋ͷ͸෼͔Βͳ͍ w ີʹ࿩Λ͠ͳ͕Β΍Δ͔͠ͳ͍ w

    ࠓޙͷۀ຿ͷਐలʹ௥͍͍͍͚ͭͯΔ͔
  42. ഑৴αʔό w ٕज़త໰୊͔͠ͳ͍ w σϓϩΠ࣌ʹϦΫΤετΛऔΓ͜΅͞ͳ͍ w ύϑΥʔϚϯεΛอͭద੾ͳΩϟογϡ w Τϥʔϩάͷճऩͱద੾ͳ௨஌

  43. ύϑΥʔϚϯε໰୊

  44. τϥϑΟοΫΛ͞͹͚ͳ͍ w Ͳ͏͢Δʁ w νϡʔχϯά w εέʔϧΞ΢τ w άϨʔυΞοϓ

  45. νϡʔχϯά w ͻͨ͢Βʹجຊʹ஧࣮ʹਐΊΔ  ϓϩϑΝΠϦϯά  ϘτϧωοΫՕॴͷಛఆ  ϘτϧωοΫՕॴͷνϡʔχϯά

  46. ϦΫΤετॲཧΛߴ଎Խ w ॲཧ࣌ؒॖΊͯεϧʔϓοτΛ্͛Δ w SVCZQSPGΛ࢖ͬͯॏ͍෦෼ΛՄࢹԽ w ΞϓϦέʔγϣϯͷϘτϧωοΫՕॴվળ w ϑϨʔϜϫʔΫ෦෼͚͕ͩදʹग़ͯ͘Δ w

    1BESJOPґଘ෦෼Λ֎ͯ͠
 4JOBUSBΞϓϦέʔγϣϯԽ
  47. εϧʔϓοτ޲্Λ໨ࢦ͢  ΞϓϦέʔγϣϯαʔόมߋΛࢼΈΔ w UIJOɺSBJOCPXTͳͲ w զʑͷ༻్Ͱ͸VOJDPSO͕࠷଎  ॲཧܥมߋΛࢼΈΔ w

    $3VCZ͔Β+3VCZҠߦ w SCFOWͰ੾Γସ͑Δ͚ͩ w $3VCZ΄ͲͷύϑΥʔϚϯεΛग़ͤͣ
  48. ࠷ऴతͳղܾ

  49. w ͨ·ͨ·ࢥཱ͍ͬͯ൒೔Ͱ࣮ࢪ w ઃܭ͸શ͘ಉ͡ w νϡʔχϯάͷ༨஍͕ߴ͔ͬͨͷͰ
 վΊͯύϑΥʔϚϯενϡʔχϯά w SVCZͰ͖ͬͪΓ࡞͍͓͔ͬͯͨ͛ IUUQTHPMBOHPSHEPDHPQIFSHPQIFSDPMPSQOH

  50. ࠓޙͷల։ͱ·ͱΊ

  51. ࠓޙͷల։ w ӡ༻վળΛଓ͚Δ w ৽ػೳ௥ՃΛߦ͏ w ϝϯςφϯε͠ଓ͚Δ w ར༻֦େΛߦ͏

  52. ӡ༻ w ਺ଟ͘ͷαʔόΛࣗࣾӡ༻͖ͯͨ͠ϊ΢ϋ΢ w ਺͸ଟ͍͕ྔ͸খ͍͞τϥϑΟοΫ w ίΞαʔϏεͱಉϨϕϧͷମ੍ w σϓϩΠγεςϜɺϩάऩूγεςϜ w

    άϥϑԽɺΞϥʔτɺ؂ࢹମ੍
  53. ·ͱΊਅ໘໨ͳ։ൃ w ৴པͰ͖Δಓ۩ͱ஥ؒͨͪ w ஍ʹ଍ண͍ͨɺجຊʹ஧࣮ͳγεςϜઃܭ w ԦಓͷύϑΥʔϚϯενϡʔχϯά

  54. ٕज़͸ࣄۀΛ ࢧ͑Δྗͦͷ΋ͷ