RubyWorld Conference 2014 「月間38億PVメディアを 支える広告配信システムのRubyによる内製開発の挑戦」講演資料
݄ؒԯ17ϝσΟΞΛ ࢧ͑Δࠂ৴γεςϜͷ3VCZʹΑΔ։ൃͷઓ!CBTI$খࣳහ໌ϐΫγϒגࣜձࣾ公開版
View Slide
ࣗݾհw খࣳහ໌!CBTI$w QJYJW։ൃϚωδϝϯτw ΤϯδχΞ࠾༻ɾҭw ࠂܥٕज़୲ΤϯδχΞIUUQXXXBUNBSLJUDPKQBJUBSUJDMFTOFXTIUNM
Ωʔϫʔυw ࣄۀձࣾw εϞʔϧͳνʔϜw 3VCZSBJMT1BESJOP'MVFOUEw ۀγεςϜͱͯ͠ͷෳࡶ͞w Ϣʔβ͚ͷଟେͳτϥϑΟοΫ
w ։ൃͷഎܠw ઃܭͱ࣮w ൃੜͨ͠ͱղܾw ࠓޙͷల։ͱ·ͱΊ
։ൃͷഎܠ
ϐΫγϒגࣜձࣾͱw ࣾһ໊ɾฏۉྸࡀͷࣄۀձࣾw ʮ͓ֆ͔͖͕ͬͱָ͘͠ͳΔॴΛΔʯw ࡞׆ಈΛָ͘͢͠ΔͨΊͷ֤छऔΓΈ
ʮͨͷ͍͠ʯΛऩӹ໘ͰԼࢧ͑
ࢲͨͪͳΓͷࠂ৴w ऩӹΛ͍͍͍ͨͩͯΔw ऩӹΛ্͛ΔͨΊʹͷαʔϏεͰͳ͍w αʔϏεΛ৳ͨ͢Ίͷݩख
ࣗࣾऔΓѻ͍w ७ࠂw λΠΞοϓҊ݅w ࣗࣾͷΠϕϯτࠂw αʔϏεͰͷ༠ಋw ผαʔϏεͷ༠ಋ
IUUQXXXTMJEFTIBSFOFU)JSPTIJ,POEPKQDIBPTNBQ
ࠂӡ༻େม
ࣾࠂ৴γεςϜw ֤छϓϥοτϑΥʔϜͷҰݩཧw ҆શ͔ͭޮతʹࠂͷӡ༻w ߴ͍ՌΛࢦͯ͠ॊೈʹରԠ
γεςϜͷཁw ҆ఆͯ͠ӡ༻Ͱ͖Δw τϥϑΟοΫʹ͑Δw ͍উखͷྑ͍ۀγεςϜw ϥϯχϯάίετw ਝͳରԠ͕ߦ͑Δ
ݱߦγεςϜ
w ʢΞʔΩςΫνϟʣ5PLZP5ZSBOU.Z42-ཧ"1,ZPUP5ZDPPO"1$JNQDMJDLΧϯτ"1$৴σʔλΩϟογϡ5PLZP5ZSBOUཧ"1ϨϓϦέʔγϣϯఆظөఆظө৴༧༧ө৴ใ৴ใ৴݁Ռը૾σʔλಉظը૾"1
ಛw ࣗࣾ։ൃw ʮރΕͨʯ͍͍γεςϜw ҆ఆͨ͠ύϑΥʔϚϯεw Ҏདྷͷ։ൃӡ༻࣮w खʹೃછΜͰ͍Δ
৽γεςϜ
.Z42-ཧ"1ςΩετܭଌϩάNFNDBDIFEϩάऩूఆظө৴ઃఆ৴ใ'MVFOUEूܭ"1'MVFOUE৴ใΫϩʔϥʔ৴"1৴ใ৴݁Ռ৴ใऔಘ
ϑϧ3VCZͰ࣮Λઓw ༏Εͨهड़ੑw ࡞Γख͕ݟ͑Δw ίϛϡχςΟw ΤίγεςϜ
։ൃνʔϜߏ!w ৽ଔw ΠϯϑϥɺϛυϧΣΞw σϓϩΠɺϩάॲཧw *46$0/४༏উ!w ࠂ৴ܦݧw શମͷΞʔΩςΫνϟܾఆw ओʹ৴αʔόΛ୲w SBJMTΞϓϦέʔγϣϯΤϯδχΞw ࠂ৴ॳΊ͕ͯͩ։ൃܦݧ๛w ओʹཧαʔόΛ୲
ॳظ։ൃͷظؒw ϲ݄w ࣗࣾ։ൃͷͨΊௐՄೳw ऴΘΓΛఆΊͯௐΛߦ͏
.Z42-ཧ"1ςΩετܭଌϩάNFNDBDIFEϩάऩूఆظө৴ઃఆ৴ใ'MVFOUEूܭ"1'MVFOUE৴ใΫϩʔϥʔ৴"1৴ใ৴݁Ռ৴ใऔಘཧαʔό ৴αʔό
ཧαʔόʹٻΊΒΕΔͷw ۀγεςϜw ϛεͳ͘ۀͰ͖Δ͜ͱw ֦ு༰қੑw ඞཁेͳύϑΥʔϚϯε
ཧαʔόͷ࣮w OHJOYw VOJDPSOw SBJMTw .Z42-w మ൘ߏw ࣾʹݟ͕͋ͬͨ
l͘͝ී௨ͷߏzw ձࣾΛ͑ͯී௨ͷߏͱ͍͏͕Ͱ͖Δw ґવͱͯ͠ઃܭ؆୯Ͱͳ͍w ۀͷϞσϦϯά
৴αʔόʹٻΊΒΕΔͷw ߴτϥϑΟοΫw Մ༻ੑw θϩμϯλΠϜw ࠷େݶͷύϑΥʔϚϯε
৴αʔόͷ࣮w OHJOYw VOJDPSOw 1BESJOPw NFNDBDIFEw ܰྔͳετϨʔδ ͔ΒಡΈࠐΈw SBJMTͷϦονͳػೳཁΒͳ͍w ϑϨʔϜϫʔΫͷੜ࢈ੑͷߴ͞΄͍͠
NFNDBDIFE1BESJOPw NFNDBDIFEར༻ͷ࣮͕๛w 1BESJOP4JOBUSBϕʔεͷϑϨʔϜϫʔΫw ։ൃʹඞཁͳΈ͕උΘ͍ͬͯΔw ඞཁͳίϯϙʔωϯτΛΈ߹Θͤw ύονΛૹͬͨࣄ͕͋ͬͨ
ཁૉؒΛૄ݁߹ʹw ࣮֬ʹ৴ՌΛूܭ͢Δw ৴Λܧଓ͠ଓ͚Δw ӨڹΛہॴԽ͢Δ.Z42-ཧ"1ςΩετܭଌϩάNFNDBDIFEϩάऩूఆظө৴ઃఆ৴ใ'MVFOUEूܭ"1'MVFOUE৴ใΫϩʔϥʔ৴"1৴ใ৴݁Ռ৴ใऔಘ
Ռूܭͷࣦഊ࣌ରࡦ.Z42-ςΩετܭଌϩάϩάऩूఆظө'MVFOUEूܭ"1w 'MVFOUE3VCZϩάऩूπʔϧw ๛ͳϓϥάΠϯͱγϯϓϧͳઃఆϑΝΠϧw ετϦʔϜʹΑΔηϛϦΞϧλΠϜॲཧw ࣦഊ࣌ͷϦτϥΠػೳ
Ռूܭͷࣦഊ࣌ରࡦw 'MVFOUEΛͬͯϩάͷճऩͱҰ࣍ूܭw IUUQTHJTUHJUIVCDPNLBU[DIBOHࠂ৴ͷઌୡͷઃܭΛར༻IUUQTHJTUHJUIVCDPNLBU[DIBOH
TPVSDFUZQFUBJMQBUIQBUIUPTIBSFELTLLTLMPH[email protected][email protected]GPSNBUKTPOUBHLTLTPVSDF!NBUDILTLUZQFFYFDDPNNBOEDEQBUIUPDVSSFOUCVOEMFMPH[email protected]@[email protected][email protected]@MPHSCFQSPEVDUJPOGPSNBUKTPO[email protected][email protected][email protected]@CVGGFSLTLCVGGFSNBUDIܭଌϩάΛ ৗ࣌ಡΈࠐΈඵຖʹूܭ.Z42-ʹ ॻ͖ग़͠
1VMMܕͷใऔಘ.Z42-ཧ"1ςΩετܭଌϩάNFNDBDIFEϩάऩूఆظө৴ઃఆ৴ใ'MVFOUEूܭ"1'MVFOUE৴ใΫϩʔϥʔ৴"1৴ใ৴݁Ռ৴ใऔಘ৴αʔό
ཧ"1৴"1৴"1৴"1৴"1৴"1
ಘΒΕͨࣄw ࣮֬ʹ৴ՌΛूܭ͢Δw ৴Λܧଓ͠ଓ͚Δw ӨڹΛہॴԽ͢Δ.Z42-ཧ"1ςΩετܭଌϩάNFNDBDIFEϩάऩूఆظө৴ઃఆ৴ใ'MVFOUEूܭ"1'MVFOUE৴ใΫϩʔϥʔ৴"1৴ใ৴݁Ռ৴ใऔಘᶃ৴ܧଓੑɹҡ͕࣋༰қᶆूܭ݁Ռө͕ඇΫϦςΟΧϧԽᶅεέʔϧΞτ͕༰қᶄཧը໘ͱ৴ใߋ৽͕ɹඇΫϦςΟΧϧԽ
ൃੜͨ͠ͱղܾ
ཧαʔόw ٕज़తͳ͋·Γͳ͍w ۀతͳw ར༻ଆ։ൃଆཉ͍͠ͷ͔Βͳ͍w ີʹΛ͠ͳ͕ΒΔ͔͠ͳ͍w ࠓޙͷۀͷਐలʹ͍͍͍͚ͭͯΔ͔
৴αʔόw ٕज़త͔͠ͳ͍w σϓϩΠ࣌ʹϦΫΤετΛऔΓ͜΅͞ͳ͍w ύϑΥʔϚϯεΛอͭదͳΩϟογϡw Τϥʔϩάͷճऩͱదͳ௨
ύϑΥʔϚϯε
τϥϑΟοΫΛ͚͞ͳ͍w Ͳ͏͢Δʁw νϡʔχϯάw εέʔϧΞτw άϨʔυΞοϓ
νϡʔχϯάw ͻͨ͢Βʹجຊʹ࣮ʹਐΊΔ ϓϩϑΝΠϦϯά ϘτϧωοΫՕॴͷಛఆ ϘτϧωοΫՕॴͷνϡʔχϯά
ϦΫΤετॲཧΛߴԽw ॲཧ࣌ؒॖΊͯεϧʔϓοτΛ্͛Δw SVCZQSPGΛͬͯॏ͍෦ΛՄࢹԽw ΞϓϦέʔγϣϯͷϘτϧωοΫՕॴվળw ϑϨʔϜϫʔΫ෦͚͕ͩදʹग़ͯ͘Δw 1BESJOPґଘ෦Λ֎ͯ͠ 4JOBUSBΞϓϦέʔγϣϯԽ
εϧʔϓοτ্Λࢦ͢ ΞϓϦέʔγϣϯαʔόมߋΛࢼΈΔw UIJOɺSBJOCPXTͳͲw զʑͷ༻్ͰVOJDPSO͕࠷ ॲཧܥมߋΛࢼΈΔw $3VCZ͔Β+3VCZҠߦw SCFOWͰΓସ͑Δ͚ͩw $3VCZ΄ͲͷύϑΥʔϚϯεΛग़ͤͣ
࠷ऴతͳղܾ
w ͨ·ͨ·ࢥཱ͍ͬͯͰ࣮ࢪw ઃܭશ͘ಉ͡w νϡʔχϯάͷ༨͕ߴ͔ͬͨͷͰ վΊͯύϑΥʔϚϯενϡʔχϯάw SVCZͰ͖ͬͪΓ࡞͍͓͔ͬͯͨ͛IUUQTHPMBOHPSHEPDHPQIFSHPQIFSDPMPSQOH
ࠓޙͷల։ͱ·ͱΊ
ࠓޙͷల։w ӡ༻վળΛଓ͚Δw ৽ػೳՃΛߦ͏w ϝϯςφϯε͠ଓ͚Δw ར༻֦େΛߦ͏
ӡ༻w ଟ͘ͷαʔόΛࣗࣾӡ༻͖ͯͨ͠ϊϋw ଟ͍͕ྔখ͍͞τϥϑΟοΫw ίΞαʔϏεͱಉϨϕϧͷମ੍w σϓϩΠγεςϜɺϩάऩूγεςϜw άϥϑԽɺΞϥʔτɺࢹମ੍
·ͱΊਅ໘ͳ։ൃw ৴པͰ͖Δಓ۩ͱؒͨͪw ʹண͍ͨɺجຊʹ࣮ͳγεςϜઃܭw ԦಓͷύϑΥʔϚϯενϡʔχϯά
ٕज़ࣄۀΛࢧ͑Δྗͦͷͷ