Slide 1

Slide 1 text

اۀγεςϜʹ͓͚Δ Twitter APIద༻ࣄྫ @yusuke ࢁຊϢʔεέ ͱTwitter4JΞοϓσʔτ

Slide 2

Slide 2 text

w+BWB޷͖ͷ044σϕϩού w+BWBνϟϯϐΦϯ w5XJUUFS+࡞ऀ ޷͖ͳϒΩγϟʔϓϚʔΧʔ ϑϨϯυίʔυ48

Slide 3

Slide 3 text

5IFUJNFMJOF w ೥݄5XJUUFSɺ5XJUUFS"1*Λൃݟ w ೥݄5XJUUFS+ΛϦϦʔε w ೥"1*͕޷͖͗ͯ͢5XJUUFSʹೖࣾ %FWFMPQFS"EWPDBUFͱͯ͠ ࠃ಺σϕϩούͷࢧԉɺ%FWFMPQFS5FBUJNFͷ։࠵౳ w ೥ʙגࣜձࣾαϜϥΠζϜઃཱ

Slide 4

Slide 4 text

ྑ͋͘Δ5XJUUFS"1*ͷࣄྫ wΩϟϯϖʔϯ wήʔϜͰ࣮੷ΛπΠʔτ wট଴ w4/4ΞΧ΢ϯτϩάΠϯ ίϯγϡʔϚ޲͚ͷద༻͕ଟ͍

Slide 5

Slide 5 text

גࣜձࣾαϜϥΠζϜ ւ֎ͷπʔϧɺαʔϏεൢച +FU#SBJOTɺ(JU)VCɺ%BUBEPH౳ ࣗࣾ੡඼։ൃɾൢച !$*DMPOF

Slide 6

Slide 6 text

wࣾ௕ɺӦۀɺٕज़αϙʔτ໊ͷྵࡉاۀ wൢ؅γεςϜɺ&$γεςϜ౳͸಺੡ w๏ਓސ٬໿ઍɺݸਓސ٬໿ສ גࣜձࣾαϜϥΠζϜ ۀ຿ޮ཰ԽͷҰ؀ͱͯ͠Twitter APIΛར༻

Slide 7

Slide 7 text

גࣜձࣾαϜϥΠζϜγεςϜߏ੒ &$ ൢച؅ཧ ࢮ׆౳؂ࢹ ग़ୀࣾ௨஌

Slide 8

Slide 8 text

Ӧۀ࣌ؒ֎ɺॕٳ೔ʹ5XJUUFS%.Ͱ௨஌ &$ උߟཝʹ໰͍߹Θ͕ͤهࡌ ܾࡁ࣌ɺΧʔυ໊ٛ૬ҧ౳ ॕٳ೔ɾӦۀ࣌ؒ൑ఆIUUQTHJUIVCDPNZVTVLFCVTJOFTT$BMFOEBS+ ൢച؅ཧ ফ͠ࠐΈ࣌ɺֹۚෆҰக౳

Slide 9

Slide 9 text

ࢮ׆౳؂ࢹ αʔόμ΢ϯ Ϩεϙϯε஗Ԇ αʔόূ໌ॻ༗ޮظݶ 5XJUUFS%.Ͱ௨஌

Slide 10

Slide 10 text

ग़ࣾୀࣾͰπΠʔτ ग़ୀࣾ௨஌ ग़ୀࣾঢ়گΛπΠʔτ

Slide 11

Slide 11 text

اۀͷ5XJUUFS"1*ར༻ wӦۀ࣌ؒ֎ॕٳ೔౳ʹ௨஌ wγεςϜͷΠϕϯτ wࣗಈԽͰग़དྷͳ͍ঝೝϫʔΫϑϩʔ wϚʔέςΟϯά w8FCαΠτ63-ɺϋογϡλάɺ঎඼໊Τΰα w$3. w%.ɺ!πΠʔτͰސ٬ରԠ

Slide 12

Slide 12 text

5XJUUFS࿈ܞ͢ΔϝϦοτ ʮ͍ͭ΋ݟ͍ͯΔπʔϧʯΛ࢖͑Δ Ϟχλεɺʮར༻࣮ଶௐࠪϏδωενϟοτπʔϧฤʯΛൃදIUUQTNPOJUBTDPKQDIBU@UPPM

Slide 13

Slide 13 text

5XJUUFS࿈ܞ͢ΔϝϦοτ wը໘Λ࡞੒͢Δඞཁ͕ͳ͍ w૒ํ޲ͷ΍ΓͱΓ΋؆୯ wϫϯλονͰΠϯλϥΫτՄೳ 2VJDLSFTQPOTFˠ

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Ͳͷ"1*Λ࢖͏΂͖͔ w"1*W "1*W w6TFS4USFBNTͷ୅ସ͸ʁ

Slide 16

Slide 16 text

WΛ࢖͏ϝϦοτ wWʹ͔͠Ͱ͖ͳ͍͜ͱ wεϖʔεɺϒοΫϚʔΫ΁ͷΞΫηε౳

Slide 17

Slide 17 text

৽نʹAPIΛѻ͏ͳΒv2͕ѹ౗తʹ෼͔Γ΍͍͢ WΛ࢖͏ϝϦοτ w࣮ࡍͷ6*༻ޠͱ"1*༻ޠ͕౷Ұ͞Ε͍ͯΔ ྫ w"1*WGPMMPXFSGSJFOE w"1*WGPMMPXFSGPMMPXJOH

Slide 18

Slide 18 text

WΛ࢖͏ϝϦοτ w"1*ઃܭ͕ϞμϯྫϑΥϩʔΛ֎͢ w7 %&-&5&VTFST\TPVSDF@VTFS@JE^GPMMPXJOH\UBSHFU@VTFS@JE^ w7 1045GSJFOETIJQTEFTUSPZKTPO VTFS@JE\VTFS@JE^

Slide 19

Slide 19 text

"1*WͰ͸ग़དྷͳ͍͜ͱ΋͋Δ wྫμΠϨΫτϝοηʔδૹड৴ IUUQTUSFMMPDPNCNZGS,X7UXJUUFSEFWFMPQFSQMBUGPSNSPBENBQ

Slide 20

Slide 20 text

"1*WʁWʁ w"1*WͰग़དྷΔ͜ͱ͸"1*WͰ wطଘΞϓϦ͸ٸ͍ͰҠߦ͢Δඞཁ͸ͳͦ͞͏

Slide 21

Slide 21 text

ΈΜͳେ޷͖6TFS4USFBNTͷ୅ସ͸ʁ w"DDPVOU"DUJWJUZ"1* w8FCIPPLͰϑΥϩʔɺ%.౳ͷ௨஌Λड৴ w࠶઀ଓॲཧෆཁ IUUQTEFWFMPQFSUXJUUFSDPNKBEPDTUVUPSJBMTHFUUJOHTUBSUFEXJUIUIFBDDPVOUBDUJWJUZBQJ

Slide 22

Slide 22 text

ΈΜͳେ޷͖6TFS4USFBNTͷ୅ସ͸ʁ w"DDPVOU"DUJWJUZ"1* w8FCIPPLͰϑΥϩʔɺ%.౳ͷ௨஌Λड৴ w࠶઀ଓॲཧෆཁ IUUQTEFWFMPQFSUXJUUFSDPNKBEPDTUVUPSJBMTHFUUJOHTUBSUFEXJUIUIFBDDPVOUBDUJWJUZBQJ ΫϥΠΞϯτΞϓϦ։ൃʹ͸ෆ޲͖

Slide 23

Slide 23 text

5XJUUFS+ϩʔυϚοϓ wཁ+BWB w"1*Wαϙʔτ wϞμϯͳΠϯλʔϑΣʔε wϞδϡʔϧαϙʔτ w!/VMMBCMF!/PU/VMM!3BOHFΞϊςʔτ w"DDPVOU"DUJWJUZ"1*αϙʔτ

Slide 24

Slide 24 text

ϞμϯͳΠϯλʔϑΣʔε Twitter twitter = new TwitterFactory(new ConfigurationBuilder() .setOAuthConsumerKey("my consumer key") .setOAuthConsumerSecret("my consumer secret") .build()).getInstance(); Twitter twitter = Twitter.newBuilder() .oAuthConsumerKey("my consumer key") .oAuthConsumerSecret("my consumer secret") .build();

Slide 25

Slide 25 text

Ϟδϡʔϧαϙʔτ

Slide 26

Slide 26 text

!/VMMBCMF!/PU/VMM!3BOHFΞϊςʔτ ݱߦ 3BOHFΞϊςʔτ෇͖

Slide 27

Slide 27 text

"DDPVOU"DUJWJUZ"1*αϙʔτ var activity = TwitterAccountActivity.newBuilder() .onDirectMessageReceived(dm -> System.out.printf("direct message received:%s" , dm.getText())) .onMention(tweet -> System.out.printf("mention received:%s" , tweet.getText())) .onPort(8080).build(); activity.start(); activity.await();

Slide 28

Slide 28 text

3&45"1*ΠϕϯτυϦϒϯ var restActivity = TwitterRestBasedAccountActivity .newBuilder() .onDirectMessageReceived(dm -> System.out.printf("direct message received:%s" , dm.getText())) .onMention(tweet -> System.out.printf("direct message received:%s" , tweet.getText())) .pollIntervalSeconds(60).build(); restActivity.start(); restActivity.await();

Slide 29

Slide 29 text

IUUQTHJUIVCDPN5XJUUFS+5XJUUFS+

Slide 30

Slide 30 text

ਐԽ͢Δ5XJUUFS ਐԽ͢Δ5XJUUFS"1* "1*Λ׆༻ͯ͠ҰॹʹਐԽ͠·͠ΐ͏ʂ

Slide 31

Slide 31 text

اۀγεςϜʹ͓͚Δ Twitter APIద༻ࣄྫ @yusuke ࢁຊϢʔεέ ͱTwitter4JΞοϓσʔτ