໊শະઃఆ2013.10.16 Firefox OSษڧձ 4th @masawada
View Slide
Έͳ͞Μ
͜ΜΜ
masawada
ࣗݾհ• ిؾ௨৴େֶ ใཧֶ෦ใɾ௨৴ֶՊ 2• ΤϦΞϫϯηάͱ͔• Rubyͱ͔JavaScriptͱ͔
masawada.me
FxOS & Win8ϋοΧιϯ
αΠίʔαΠίʔ
ຊ
ؒʹ߹Θͳ͔ͬͨ
Twitter
ΈΜͳ
͍͖ͩ͢
2013/10/16 17:43
ϋογϡλά
#FxOS
͝ҙݟɾ࣭
TwitterΫϥΠΞϯτΛ࡞Ζ͏
TwitterΫϥΠΞϯτ࣍ੈͷHello, world
Hello, world TwitterΫϥΠΞϯτςΩετೖྗ × ˕ςΩετग़ྗ ˕ ˕ը૾දࣔ ˚ ○Ϧετදࣔ ˚ ○ωοτϫʔΩϯά × ˕
ి௨େੜࡏֶதʹ1TwitterΫϥΠΞϯτΛ࡞Δ
Twitter Libraries
Node.js͚ͬΆ͍
Cross Origin੍ݶ͕ݪҼʁ
→࡞Ζ͏
Ͱ͖·ͨ͠
Firefox OS͚Twitter APIϥΠϒϥϦ
Violet.js
۩ମతʹԿ͕Firefox OS͚ʁ
// XHRvar xhr = new XMLHttpRequest({mozSystem: true});// manifest.webapp"type": "privileged","permissions": {“systemXHR”: {}}
violet.js• ΄ͱΜͲͷAPIΤϯυϙΠϯτʹରԠ→ (ະςετ…)• Firefox OSΞϓϦͱͯ͠͏ʹsystemXHRͷݖݶΛཁٻ͢Δඞཁ͕͋Δ
͜͜·Ͱ͕ࠓ7݄ͷͰ͖͝ͱ
8/10
FoxBird
σϞ
FoxBird• OAuth: PIN Only• Tweet (statuses/update)• Favorite• Retweet• Streaming API (GET user)
ॏࢹͨ͜͠ͱ
Streaming APIରԠ
Streaming APIपΓΛղઆ
Streaming APIԿΛ͍ͬͯΔͷ͔
REST
Streaming API
ίωΫγϣϯΛஅ͠ͳ͍
src/streaming.js
var con = Violet.HTTPClient({method: method,uri: uri});con.onloading = function(xhr){...};
src/http.js
var xhr = new XMLHttpRequest({mozSystem: true});// தུxhr.onreadystatechange = function(){if(xhr.readyState === 3){this.onloading(xhr);}else if(xhr.readyState === 4){if(xhr.status === 200){this.onsuccess(xhr);}else{this.onerror(xhr);}}}.bind(this);
SFBEZ4UBUFͷͷϦετҎԼͷΑ͏ʹͳΓ·͢ɻɾ ॳظԽ͞Ε͍ͯ·ͤΜɾ ಡΈࠐΈதͰ͢ɾ ಡΈࠐΈྃ͠·ͨ͠ɾ ํʹѻ͑·͢ɾ ͯྃ͢͠·ͨ͠
readyState === 3ͷͱ͖ߋ৽ΞϦ
var con = Violet.HTTPClient({method: method,uri: uri});con.onloading = function(xhr){var lines = xhr.responseText.split('\r\n');if(!lines[lines.length-2]){ return false; }callback(JSON.parse(lines[lines.length-2]));};
violet.jsΛͬͯΈΔ
ΫϥΠΞϯτΛ࡞ͬͯΈΔ
ΫϥΠΞϯτΛ࡞Δ• πΠʔτػೳ• Streaming APIͰλΠϜϥΠϯಡΉ• UIBuilding BlocksΛ͏
؆୯ʹ࡞ΕΔ
ߴ։ൃͰ͖Δ
[ߴ։ൃ][Google ݕࡧ]
ੋඇͬͯΈ͍ͯͩ͘͞
࠷ޙʹ
v0.2.0
v0.2.0ͷ৽ػೳ• POST statuses/filterʹରԠ• ͬͯstreamingdeprecated• userstreamʹͳΓ·ͨ͠• v0.3.0Ͱফ͑·͢• POST statuses/update_with_mediaʹରԠ
͏͙͢ϦϦʔε
͋Γ͕ͱ͏͍͟͝·ͨ͠