Slide 1

Slide 1 text

εϚʔτχϡʔεͷ ੈքల։Λࢧ͑Δϩάղੳج൫ ࡔຊ୎າ εϚʔτχϡʔεגࣜձࣾ εϚʔτχϡʔεެࣜΩϟϥ ஍ٿ͘Μ

Slide 2

Slide 2 text

"CPVU.F w ࡔຊ୎າ w HJUIVCUXJUUFS!UBLVT w εϚʔτχϡʔεגࣜձࣾ w Πϯϑϥத৺ʹαʔϏεͷԼճΓͷ໘౗ΛΈ͍ͯΔ w ೥݄ʹδϣΠϯ w ϩάղੳܥͷ࢓ࣄ͸ͦͷλΠϛϯάͰ͸͡Ίͨ

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

.-CBTFE/FXT"QQ

Slide 5

Slide 5 text

/VNCFSPG%PXOMPBET ถࠃ൛ϦϦʔε ࠃ಺Ͱ޿ࠂࣄۀΛ։࢝ Πϯλʔφγϣφϧ൛ϦϦʔε

Slide 6

Slide 6 text

."6JO64 https://www.techinasia.com/smartnews-us-1m-monthly-active-users/

Slide 7

Slide 7 text

http://aws.amazon.com/jp/solutions/case-studies/smartnews/

Slide 8

Slide 8 text

Ұߦͷϩάͷ޲͜͏ʹ͸ɺ ҰਓͷϢʔβ͕͍Δ http://ihara2525.tumblr.com/post/17029509298

Slide 9

Slide 9 text

εϚʔτχϡʔεͷ৔߹

Slide 10

Slide 10 text

,1*μογϡϘʔυ ͨͱ͑͹"#ςετͷ݁ՌΛ֬ೝͯ͠αʔϏεվળ

Slide 11

Slide 11 text

ϩάࡇΓ ࣾ௕ʙΞϓϦΤϯδχΞʙαʔόΤϯδχΞͰ։ൃ߹॓ શһͰϩάͷ໰୊Λٞ࿦ɺվળʹऔΓ૊ΉϋοΧιϯ

Slide 12

Slide 12 text

ϩάղੳج൫ͷ࿩

Slide 13

Slide 13 text

Collect Process Visualize Store ΞϓϦͰϩάΛऔಘ "1*αʔόͰड৴ ετϨʔδʹӬଓԽ લॲཧ &5- ूܭ #*πʔϧͳͲͰՄࢹԽ %BUB1JQFMJOFT

Slide 14

Slide 14 text

ΞϓϦ͔Βૹ৴͞ΕΔϩά w Ϣʔβͷߦಈ w χϡʔεهࣄΛಡΜͩ w Ϣʔβͷߦಈʹجͮ͘ϓϩύςΟ w هࣄͷ63-ɺهࣄͷ଺ࡏ࣌ؒ w ͦͷ΄͔ɺσόΠεͰ͔͠஌Γಘͳ͍৘ใ w σόΠε৘ใɺ04ͷόʔδϣϯɺΞϓϦͷόʔδϣϯ

Slide 15

Slide 15 text

+40/ϩάͷྫ { "event" : "viewArticle", "timestamp" : "2014-11-28 12:45:14", "properties" : { "userId" : 1224434, "os" : "android", "country" : "Japan", "url" : "http://www.example.com/", "duration" : 224.8 } }

Slide 16

Slide 16 text

ΞϓϦ͔Βαʔό΁ͷૹ৴ w όοϑΝϦϯάͯ͠όϧΫૹ৴ w ΫοΫύου͞Μͷ1VSFF ˞ తͳ w ΦϑϥΠϯ࣌͸ΦϯϥΠϯʹͳͬͨλΠϛϯάͰૹ৴ w ඞཁʹԠͯ͡αʔόଆͰ৘ใΛ෇༩ w "#ςετͷࢀՃঢ়گͳͲ ※ http://techlife.cookpad.com/entry/2014/11/25/132008

Slide 17

Slide 17 text

Collect Process Visualize Store ΞϓϦͰϩάΛऔಘ "1*αʔόͰड৴ ετϨʔδʹӬଓԽ લॲཧ &5- ूܭ #*πʔϧͳͲͰՄࢹԽ %BUB1JQFMJOFT ձࣾͷঢ়گ΍ٕज़ಈ޲ʹΑͬͯมԽ ࣌ܥྻͰৼΓฦͬͯΈΔ ˞ೖࣾҎલͷ࿩͸఻ฉͰ͢

Slide 18

Slide 18 text

࣌ظd ن໛d໊ ঢ়گ ʹJ04൛ϦϦʔε ৭ʑͳҙຯͰଟ͘ͷ൓ڹ

Slide 19

Slide 19 text

౰࣌ͷ՝୊ͱղܾࡦ w (PPHMF"OBMZUJDT͚ͩͰ͸ݟ͍ͨ,1*͕ΈΕͳ͍ w ๭ήʔϜձࣾͷίϗʔτ͕ݟΕΔ,1*πʔϧ͕ཉ͍͠ w ,1*πʔϧΛࣗ࡞ w ࣌୅͸'MVFOUE.POHP%#Ͱ͢Αʢŝžŕ w ϑϩϯτΤϯυ͸3BJMTΞϓϦ

Slide 20

Slide 20 text

Process Visualize Store ௚ۙ਺೔෼Λ.POHP%#ʹอଘ .POHP%#ͷ.BQ3FEVDFͰલॲཧ 3VCZͰूܭͯ͠ɺ.POHPʹอଘ 3BJMT੡ͷՄࢹԽπʔϧ

Slide 21

Slide 21 text

࣌ظd ن໛d໊ ঢ়گ ࠃ಺ͰΠϯετʔϧ਺͕૿Ճ ΞυϗοΫղੳͷधཁ͕ߴ·Γ࢝ΊΔ

Slide 22

Slide 22 text

౰࣌ͷ՝୊ͱղܾࡦ w ॲཧ࣌ؒͷ૿ՃΞυϗοΫղੳ͠ʹ͍͘ w .POHP%#ͷ.BQ3FEVDFͷॲཧ͕࣌ؒԆͼଓ͚Δ w ΞυϗοΫղੳ͢Δʹ΋.POHP%#͸௚ۙͷσʔλͷΈ w &.33FETIJGUͷಋೖ w 4ʹ͢΂ͯͷϩάΛӬଓԽɺલॲཧΛ&.3ʹҠߦ w ผγεςϜͱͯ͠3FETIJGUΛಋೖ

Slide 23

Slide 23 text

Process Visualize Store શͯͷϩάΛ4ʹอଘ &.3 NSKPC Ͱͷલॲཧ 3VCZͰूܭͯ͠ɺ.POHPʹอଘ 3BJMT੡ͷՄࢹԽπʔϧ 3FETIJGU͸λϒϩʔͳͲͰՄࢹԽ

Slide 24

Slide 24 text

࣌ظd ن໛d໊ ঢ়گ ถࠃ൛ΛϦϦʔε ޿ࠂνʔϜ্ཱͪ͛

Slide 25

Slide 25 text

౰࣌ͷ՝୊ͱղܾࡦ w ूܭ߲໨͕૿͑ͯഁ୼͔͔͠Δ w 04ຖɺࠃຖɺݴޠຖɺλΠϜκʔϯຖʹूܭ͕ඞཁ w ฒྻԽͰ͖ͯͳ͍3VCZ෦෼΋ϘτϧωοΫʹ w .POHP%#ͱ3FETIJGUͷεΩʔϚဃ཭໰୊ w )JWF1SFTUPͷݕূͱಋೖ w ௚ۙͷ໰୊Λղܾͭͭ͠ɺ஌ݟΛஷΊΔϑΣʔζ w ࣍ͷϑΣʔζ΁ͷΑ͍εςοϓʹͳͬͨ

Slide 26

Slide 26 text

Process Visualize Store શͯͷϩάΛ4ʹอଘ &.3 NSKPC )JWFͰલॲཧ 1SFTUPͰूܭ͠ɺ݁ՌΛ.POHP%#΁ ࣗ࡞ͷ3BJMT੡ՄࢹԽπʔϧ

Slide 27

Slide 27 text

࣌ظd ن໛d໊ ঢ়گ ถࠃͰͷ࠾༻͕૿͑࢝ΊΔ Πϯλʔφγϣφϧ൛ͷϦϦʔε

Slide 28

Slide 28 text

౰࣌ͷ՝୊ͱղܾࡦ w ϩάղੳܥͷλεΫ͕ಛఆͷݸਓʹूத w ඇΤϯδχΞʹπϥ͍ɻαʔόʹ44)ʁ.POHP%#ʁ w 3BJMTͷՄࢹԽπʔϧͷϝϯςΛͰ͖Δਓ͕গͳ͍ w Ϗϡʔͷ௥Ճґཔʹ͍͍͚ͭͯͳ͍ w ͞ΒʹΞυϗοΫͳػೳ௥ՃͰϝϯςίετ͕૿େ w օ͕ࣗ༝ʹσʔλʹΞΫηεͰ͖ΔΑ͏ʹ͍ͨ͠ w $IBSUJP΍4IJCͳͲͷπʔϧΛಋೖ

Slide 29

Slide 29 text

w &5-ॲཧ͕ෳࡶԽ w ௚ྻʹ࣮ߦ͢Δͱॲཧ͕࣌ؒ૿Ճ w ฒྻʹ࣮ߦ͢Δͱϑϩʔ͕ෳࡶԽɺ࠶࣮ߦ͕৬ਓܳʹ w δϣϒϑϩʔϚωʔδϟʔͷಋೖ w ґଘఆٛ΍ɺϦτϥΠɺ4-"ͳͲͷ໘౗Έͯ͘ΕΔ w ͍͔ͭ͘ࢼ͕ͨ͠"[LBCBOʹམͪண͘ ౰࣌ͷ՝୊ͱղܾࡦ

Slide 30

Slide 30 text

Process Visualize Store શͯͷϩάΛ4ʹอଘ )JWFPO&.3Ͱલॲཧ όονδϣϒΛ"[LBCBO؅ཧ ूܭ͸1SFTUP $IBSUJPͰ֤ݸਓ͕ϩάΛՄࢹԽ 4IJCͰΫΤϦ࣮ߦ݁ՌΛڞ༗

Slide 31

Slide 31 text

4ZTUFN"SDIJUFDUVSF

Slide 32

Slide 32 text

%BUB4DIFNB w ελʔεΩʔϚ w σʔλ΢ΣΞϋ΢εʹར༻͞ΕΔ࠷΋୯७ͳεΩʔϚ w 'BDUT w Ϣʔβͷߦಈϩά w %JNFOTJPOT w Ϣʔβͷଐੑ 04ɺࠃɺ"#5FTUࢀՃ৘ใͳͲ

Slide 33

Slide 33 text

%BUB4DIFNB user_id action url 1 readArticle http://example.com/1 2 readArticle http://example.com/2 3 readArticle http://example.com/3 Actions user_id os 1 ios 2 android 3 ios User OS user_id country 1 US 2 JP 3 GB User Location user_id identifier behavior 1 tutorial_04 A 2 tutorial_04 B 3 tutorial_04 A User A/B Test user_id version 1 2.2.1 2 1.9.8 3 2.2.0 User App Version

Slide 34

Slide 34 text

SELECT date, behavior, count(distinct ac.user_id) as DAU, count_if(action='readArticle') as DPV FROM actions facts LEFT JOIN abtest_users dimensions ON facts.user_id = dimensions.user_id WHERE definition = 41 AND date BETWEEN '2015-01-01' AND '2015-01-31' GROUP BY date, behavior ORDER BY date, behavior ; "#ςετผͷ,1*ΛٻΊΔ

Slide 35

Slide 35 text

API Server Archive Bucket Analysis Bucket ETL Cluster Analysis Cluster %BUB'MPX BI Tool User WebUI

Slide 36

Slide 36 text

ઃܭࢥ૝ w ։ൃऀɾඇΤϯδχΞɾܦӦऀ w ୭΋͕؆୯ʹେن໛ͳσʔληοτʹΞΫηεͰ͖Δ w 42- )2- Λڞ௨ݴޠʹ͢Δ w σʔλΛݟ͍ͨਓ͕ݟ͍ͨܗͰՄࢹԽ w ඞཁͰ͋Ε͹؆୯ʹυϦϧμ΢ϯ͍͚ͯ͠Δ w ӡ༻ऀ w ϩάΛઐ೚Ͱ΍Δਓ͸͍ͳ͍ɺӡ༻ίετ࠷খԽ

Slide 37

Slide 37 text

ઃܭࢥ૝ w ετϨʔδ૚ͱΞϓϦέʔγϣϯ͸෼཭͓ͯ͘͠ w SF*OWFOUͰ"VSPSB΍/FUqJYͷηογϣϯ w ےͷΑ͍ઃܭͩͱײͨ͡ w Ϋϥ΢υΒ͍͠ɺ༷ʑͳϝϦοτ w ඞཁʹԠͯ͡ॊೈʹΩϟύγςΟ௥Ճ͕Մೳ w ͍ͭམͪͯ΋͍͍ͷͰεϙοτΠϯελϯεΛ׆༻Ͱ͖Δ w ϛυϧ΢ΣΞͷόʔδϣϯΞοϓݕূ͕؆қʹ

Slide 38

Slide 38 text

(SDD415) NEW LAUNCH: Amazon Aurora: Amazon’s New Relational Database Engine | AWS re:Invent 2014

Slide 39

Slide 39 text

(BDT403) Netflix's Next Generation Big Data Platform | AWS re:Invent 2014

Slide 40

Slide 40 text

API Server Archive Bucket Analysis Bucket ETL Cluster Analysis Cluster ϩάͷอଘ BI Tool User WebUI

Slide 41

Slide 41 text

w ֤αʔό͔Β'MVFOUEͰ௚઀4ʹΞοϓϩʔυ w EBUFͱIPVSͰQSFpYΛ੾Δͷ͕Φεεϝ ϩάͷอଘ API Server Archive Bucket อଘઌͷྫ: s3://smartnews/log/production/raw_actions/date=2015-03-22/hour=00/

Slide 42

Slide 42 text

API Server Archive Bucket Analysis Bucket ETL Cluster Analysis Cluster σʔλͷલॲཧ BI Tool User WebUI

Slide 43

Slide 43 text

)JWF w &.3Ͱ)JWFͷΫϥελΛ্ཱͪ͛Δ w &YUFSOBM5BCMFʹύʔςΟγϣϯΛ௥Ճ͍ͯ͘͠ w 'BDUT w 4ʹอଘ͞ΕͯΔੜϩάͷύεΛࢦఆ͢Δ͚ͩ w %JNFOTJPOT w 3%4ͷUBCMFEVNQΛ4ʹஔ͖ɺͦͷύεΛࢦఆ w ΧϥϜφετϨʔδʹม׵ͯ͠4ʹอଘ w 03$1BSRVFUͳͲͷσʔλղੳʹదͨ͠ϑΥʔϚοτ

Slide 44

Slide 44 text

)JWFΫϥελͷىಈ w "84$-*ܦ༝Ͱىಈ͢Δ w ΠϯελϯεͷλΠϓɾ਺ͳͲΛ+40/Ͱఆٛ w #PPUTUSBQBDUJPOTͰϛυϧ΢ΣΞͷηοτΞοϓ w )JWFͷ.FUBTUPSFͷઃఆͳͲ w 1ZUIPO"84&.3ශऀͷϩάूܭ ˞ ͕ࢀߟʹͳΔ ※ http://www.slideshare.net/akirachiku/python-hive-on-emr

Slide 45

Slide 45 text

)JWFΫϥελͷىಈ Old Hive Cluster New Hive Cluster User A User B MetaStore Archive Bucket Analysis Bucket launch launch read write )JWFͷ.FUBTUPSF͸3%4Ͱڞ༗͍ͯ͠Δ ৽͘͠ΫϥελΛىಈͯ͠4ͷॻ͖ࠐΈઌΛมߋ͢Ε͹ݕূ͕༰қ read write

Slide 46

Slide 46 text

)JWFʹΑΔ&5- -- External Table ͱͯ͠ɺFluentd ͷϩάܗࣜΛఆٛ CREATE EXTERNAL TABLE IF NOT EXISTS raw_actions ( timestamp STRING, tag STRING, data STRING ) PARTITIONED BY ( date STRING, hour STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 's3://smartnews/log/production/raw_actions/'; ; -- ύʔςΟγϣϯΛ௥Ճ͢Δ ALTER TABLE raw_actions ADD IF NOT EXISTS PARTITION (`date`='${DATE}', `hour`='${HOUR}') LOCATION 's3://smartnews/log/production/raw_actions/date=${DATE}/hour=${HOUR}'; 'MVFOUEͷϩάΛಡΉͨΊͷςʔϒϧΛఆٛ͠ɺύʔςΟγϣϯΛ௥Ճ

Slide 47

Slide 47 text

)JWFʹΑΔ&5- -- ΧϥϜφετϨʔδͷ External Table Λఆٛ CREATE EXTERNAL TABLE IF NOT EXISTS orc_actions ( timestamp INT, user_id INT, os STRING, country STRING, action STRING, data STRING ) PARTITIONED BY ( date STRING, hour STRING ) STORED AS ORC LOCATION 's3://smartnews/log/production/raw_actions/'; TBLPROPERTIES ("orc.compress"="SNAPPY"); ΧϥϜφετϨʔδͷςʔϒϧΛఆٛ

Slide 48

Slide 48 text

-- ΧϥϜφετϨʔδͷ External Table ʹΠϯϙʔτ INSERT OVERWRITE TABLE orc_actions PARTITION (`date` = '${DATE}', `hour` = '${HOUR}') SELECT user_id, timestamp, COALESCE(os, "undefined"), COALESCE(country, "undefined"), action modify_json(data, 'unnecessary1', 'unnecessary2') FROM raw_actions LATERAL VIEW json_tuple( raw_actions.json, 'userId', 'timestamp', 'platform', 'country', 'action', 'data' ) a as user_id, timestamp, os, country, action, data WHERE date = '${DATE}' and hour = '${HOUR}' ORDER BY os,country, action, user_id; )JWFʹΑΔ&5- KTPO@UVQMFؔ਺΍FYQMPEFؔ਺ͳͲͰ+40/Λల։͢Δ ࣗ࡞6%'ͰɺಛఆϑΟʔϧυͷ+40/͔ΒෆཁͳϑΟʔϧυ࡟আ

Slide 49

Slide 49 text

"[LBCBO w δϣϒϑϩʔ؅ཧπʔϧ w -JOLFE*O͕044ͱͯ͠ެ։͍ͯ͠Δ w ओͳػೳ w ґଘఆٛɺґଘؔ܎ͷՄࢹԽ w δϣϒͷఆظ࣮ߦɺΞυϗοΫ࣮ߦɺϦτϥΠ w ੒ޭɾࣦഊ࣌ʹϝʔϧ௨஌

Slide 50

Slide 50 text

"[LBCBOͷ͍͍ͱ͜Ζ w δϣϒ؅ཧ͕͠΍͍͢ w δϣϒͷґଘؔ܎ͱͲ͜·Ͱ׬͔ྃͨ͠ͷՄࢹԽ w δϣϒΛίʔυͱͯ͠؅ཧ w λΠϜΞ΢τ 4-" ઃఆ ྫ࣌ؒͰऴྃ͠ͳ͚Ε͹௨஌ type=command command=hive-wrapper -d 2015-02-02 -q query_c dependencies=query_a, query_b δϣϒఆٛϑΝΠϧͷྫ

Slide 51

Slide 51 text

δϣϒͷґଘؔ܎ͷྫ User Features Raw table Intermediate Table ྘͸੒ޭࡁΈɺ੺͸ࣦഊ͍ͯ͠ΔͷͰ࠶࣮ߦ͕ඞཁ ࠶࣮ߦ͕ඞཁͳδϣϒ͚ͩ༗ޮʹͯ͠࠶࣮ߦ͕Մೳ

Slide 52

Slide 52 text

"[LBCBOΛ࢖͏্Ͱͷ޻෉ w "NB[PO&.3ͱ"[LBCBOʹͦΕͧΕ੍໿ w &.3ͷεςοϓ͸ৗʹ௚ྻʹ࣮ߦ͞ΕΔ w "[LBCBOͷ&YFDVUPS͸୆͔࣋ͯ͠ͳ͍ w #FFMJOF͔Β5ISJGUܦ༝ͰδϣϒΛ࣮ߦ w ґଘղܾͨ͠+"3Λ&YFDVUPSʹ഑ஔ w &.3ͷλά͔Βϗετ໊Λղܾͯ͠ΫϥελʹΞΫηε

Slide 53

Slide 53 text

"[LBCBOΛ࢖͏্Ͱͷ޻෉ Production Hive Cluster Development Hive Cluster User A User B Archive Bucket Analysis Bucket read write submit job register job beeline azkaban Temp Hive Cluster &.3ͷλά͔ΒCFFMJOFʹ౉͢ϗετ໊ΛٻΊ࣮ͯߦ

Slide 54

Slide 54 text

API Server Archive Bucket Analysis Bucket ETL Cluster Analysis Cluster ϩάղੳ༻Ϋϥελ BI Tool User Web UI

Slide 55

Slide 55 text

1SFTUP w ෼ࢄ42-ΫΤϦ࣮ߦΤϯδϯ w 'BDFCPPL͕044ͱͯ͠ެ։ w "/4*42-ʹ४ڌ͠ɺҰൠతͳूܭؔ਺ͳͲΛαϙʔτ w 1SFTUP͸ετϨʔδΛ࣋ͨͳ͍ w ༷ʑͳσʔλιʔε )JWFɺ.Z42- ʹΞΫηε w ৄࡉ͸5SFBTVSF%BUB༷ͷεϥΠυʹͯ

Slide 56

Slide 56 text

Presto: Interactive SQL Query Engine for Big Data | Hadoop Conference in Japan 2014

Slide 57

Slide 57 text

1SFTUPͷ͍͍ͱ͜Ζ w ΫΤϦͷ࣮ߦ͕ߴ଎ w ਺ेԯߦͷεΩϟϯʹ਺ඵʙ਺ेඵ w ਺ेԯYҰઍສ͘Β͍ͷ+0*/ͯ͠΋਺ेඵʙ਺෼ w νϡʔχϯά΍ϊʔυ૿΍ͤ͹͞Βʹߴ଎ԽͰ͖ͦ͏

Slide 58

Slide 58 text

1SFTUPͷ͍͍ͱ͜Ζ w ෳ਺σʔλιʔεΛ+0*/Ͱ͖Δ w ྫ)JWFͷϩάͱ.Z42-ͷϚελ w .Z42-͸ϑϧεΩϟϯ૸ΔͷͰ஫ҙ w ྫΞϓϦͷ)JWFͷϩάͱΞυͷ)JWFͷϩά w ૄ݁߹ͳγεςϜಉ࢜ͷϩάΛܨ͗ࠐΊΔ w "NB[PO"VSPSBͱ΋+0*/Ͱ͖Δ͸ͣ w ݕূͨ͠Θ͚Ͱ͸ͳ͍

Slide 59

Slide 59 text

1SFTUPͷ͍͍ͱ͜Ζ w ӡ༻͕Χϯλϯ w "84͕&.3ͷCPPUTUSBQBDUJPOΛఏڙ w IUUQTHJUIVCDPNBXTMBCTFNSCPPUTUSBQBDUJPOT w ࣾ಺޲͚ʹҰ෦֦ு͍ͯ͠Δ w #MVF(SFFO%FQMPZNFOUͰόʔδϣϯΞοϓ w ৽όʔδϣϯ͕ग़ͨΒ৽ͨʹΫϥελىಈ w ݕূͯ͠໰୊ͳ͚Ε͹ɺ%/45BHΛ੾Γସ͑Δ

Slide 60

Slide 60 text

API Server Archive Bucket Analysis Bucket ETL Cluster Analysis Cluster ՄࢹԽ BI Tool User Web UI

Slide 61

Slide 61 text

$IBSUJP w ༷ʑͳσʔλιʔεΛ૊Έ߹ΘͤͯμογϡϘʔυ࡞ΕΔ w όοΫΤϯυ͕੾Γସ͑ΒΕΔ,JCBOBͷΠϝʔδ w .Z42-ɺ3FETIJGUɺ(PPHMF"OBMZUJDT #JH2VFSZ FUD w 1SFTUP͸1SFTUPHSFTPSTTIUVOOFMͰ઀ଓ w ՄࢹԽपΓͷ࢓ࣄΛָʹͯ͘͠ΕΔ w υϥοάυϩοϓ42-Ͱνϟʔτ࡞੒ w 6*΋ΩϨΠͰຖ೔ݟΔؾ͕ى͖Δ

Slide 62

Slide 62 text

μογϡϘʔυͷ࡞Γํ ΫΤϦΛ૊ΈཱͯΔ υϥοάυϩοϓ42-௚઀ೖྗ σʔλΛϓϨϏϡʔ͠ͳ͕Β੔ܗ ߜΓࠐΈɺฒͼସ͑ɺΧϥϜ௥Ճ ༷ʑͳܗࣜͰՄࢹԽ දɺԁάϥϑɺ๮άϥϑͳͲ

Slide 63

Slide 63 text

μογϡϘʔυͷྫ

Slide 64

Slide 64 text

$IBSUJPͷ͍͍ͱ͜Ζ w ϑϩϯτΤϯυͷࡉ͔͍࡞ΓࠐΈ͕ෆཁʹ w όοΫΤϯυΛ࡞Ε͹ɺޙ͸ՄࢹԽ͍ͨ͠ਓʹ೚ͤΔ w 42-ͷൣғͰ͋Ε͹ɺ͔ͳΓ৭ʑͱͰ͖Δ w $BUFHPSJDBM%SPQEPXOͰଐੑΛߜΓࠐΜͰ͍͚Δ w શମूܭ w ಛఆͷ04YಛఆͷࠃYಛఆͷνϟϯωϧ w σʔλΛ৭Μͳ֯౓͔Βݟ͍͖ͯ΍͍͢

Slide 65

Slide 65 text

༷ʑͳଐੑͰߜΓࠐΉྫ ӳࠃͰ iOS ͷ bbc.co.uk ͷهࣄͷϥϯΩϯάͲ͏ͳͬͯΔʁ ྫϝσΟΞϦϨʔγϣϯͷਓͷґཔ

Slide 66

Slide 66 text

༷ʑͳଐੑͰߜΓࠐΉྫ ΧϦϑΥϧχΞͰ࣮ࢪதͷɺ͋Δ A/B ςετͷঢ়گͲ͏͚ͩͬʁ iPhone 6 Ͱͷௐࢠ͕ѱ͍Έ͍ͨͳͷ͚ͩͲ֬ೝͰ͖Δʁ ྫΞϓϦ։ൃऀͷґཔ

Slide 67

Slide 67 text

SF*OWFOUͰަྲྀ

Slide 68

Slide 68 text

ϩάղੳج൫ͷվળʹΑΔޮՌ w ༷ʑͳ࣠ͰߜΓࠐΈΛ্ͨ͠ͰͷϝτϦΫεՄࢹԽ w ࠃผɺ04ผɺνϟϯωϧผɺσόΠεผ w "#5FTUͷ݁ՌΛ֬ೝ w هࣄબ୒ΞϧΰϦζϜɺνϡʔτϦΞϧվળ w ࠓ·ͰݟΕͯͳ͔ͬͨࢦඪ͕ݟΕΔΑ͏ʹ w େن໛σʔληοτ޲͚ͷػցֶशϥΠϒϥϦͷར༻ w )JWFNBMM΍4QBSL.-MJCͳͲ

Slide 69

Slide 69 text

(PPHMF#JH2VFSZͷ࿩ w ͔ͳΓഁյతͳςΫϊϩδʔ w ਺ઍ୆ن໛ͷίϯςφͰϩάΛϑϧεΩϟϯ w )JWFͰ࣋ͬͯΔϩάΛ#2ʹ΋ૹͬͯݕূத w 4ˠ($4ˠ#2ʹϩʔυ HTVUJMTZOD w ετϨʔδͱΫΤϦ՝ۚʹؔͯ͠͸͍҆ w ,1*ूܭ͢Δ͚ͩͳΒίϨ͚ͩͰΑ͍ͷͰ͸ͱ͍͏ҹ৅

Slide 70

Slide 70 text

શ෦#2೚ͤͰ͍͍ͷ͔ʁ w ԿΛࣗ෼ͨͪͰ΍ΓɺԿΛଞਓʹ೚ͤΔͷ͔ҙࣝ͢Δ w ࣗ෼Ͱ΍Ε͹ܦݧ΍஌͕ࣝ஝ੵ͞Ε͍ͯ͘ w ଞਓʹ೚ͤΔͱֶͼ͸গͳ͍͕ίετ͸Լ͕Δ w ๻Βʹͱͬͯ͸σʔλΛѻ͏ٕज़͸େࣄʹ͢΂͖ཁૉ w ͋Δఔ౓͸ࣗ෼ͨͪͰ΋௥͍͔͚Δ΂͖ w ݁Ռͱͯ͠)JWFNBMM΍4QBSL.-MJC͕ར༻Ͱ͖ͨΓ w Ͱ΋ɺ#2͕׆༻Ͱ͖Δ෦෼͸ੵۃతʹ࢖͍ͬͯ͘༧ఆ w 6%'΋ग़Δͱ͍͏΢ϫα

Slide 71

Slide 71 text

ࠓޙͷల๬ͳͲ w ͞ΒͳΔར༻έʔεͷ֦େ w ༷ʑͳϩάΛ༷ʑͳ࣠Ͱ੾ͬͯղੳ͠ɺαʔϏεվળ w ྫ͑͹ΞϓϦͷόʔδϣϯผͷϨεϙϯελΠϜ֬ೝͱ͔ w αʔϏεͷҟৗݕ஌ w ಛఆͷ04Yಛఆͷόʔδϣϯ͚ͩϨεϙϯε஗͍ͱ͔ w ػցֶशͷΤΩεύʔτ͕ଟ͍ɺܙ·Εͨ؀ڥ

Slide 72

Slide 72 text

·ͱΊ w εϚʔτχϡʔεͷϩάղੳج൫ͷաڈͱݱࡏ w ձࣾͷن໛΍ঢ়گʹԠͯ͡ਐԽ͖ͯͨ͠ w "84ɺ044ɺ9BTB4FSWJDFͷྗΛआΓͯվળ w &.3'MVFOUE)JWF"[LBCBO1SFTUP$IBSUJP w ΑΓεϚʔτͳχϡʔεΞϓϦʹਐԽ͍ͯ͘͠༧ఆ w ͓ख఻͍͍͚ͨͩΔํɺઈࢍืूதͰ͢ʂʂʂ

Slide 73

Slide 73 text

ࠂ஌

Slide 74

Slide 74 text

https://atnd.org/events/64096

Slide 75

Slide 75 text

4NBSU/FXT5(*' w 4NBSU/FXT5(*'ͱ͸ʁ w ֎෦ͷਓΛট଴ͯ͠ΦϑΟεͰަྲྀձ w ඒຯ͍͠έʔλϦϯάͱΞϧίʔϧ͕ग़·͢ʢແྉʂʣ w ڵຯ͕͋Δํ͸!UBLVT·Ͱ࿈བྷ͍ͩ͘͞ w ࠓ೔ͷ࿩Λ΋ͬͱৄ͘͠ฉ͖͍ͨ w ΞϓϦͰ"#ςετΛ͕Γ͕Γճ͢࿩͕ฉ͖͍ͨ w ޿ࠂαΠυͷϩά΍"#ςετͷ࿩͕ฉ͖͍ͨ