Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Modern REST Communicate for Android
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kobaken
May 23, 2016
Technology
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Modern REST Communicate for Android
社内発表用スライド
kobaken
May 23, 2016
More Decks by kobaken
See All by kobaken
DroidKaigi初登壇の舞台裏
kobaken0029
0
7
AIがレビューする時代に、 Androidエンジニアは何をレビューするのか 〜 土台づくりとレビュー再設計 〜
kobaken0029
3
1.2k
In the Age of AI Code Review, What Should Android Engineers Review? - Building the Foundation & Redesigning Code Review -
kobaken0029
0
37
複数行のTextで中間省略(…)を実現する
kobaken0029
0
90
Jetpack Compose Preview実践ガイド
kobaken0029
0
170
Serializable / Parcelableとの上手な付き合い方
kobaken0029
0
260
Kotlinの好きなところ
kobaken0029
0
1.4k
Compose駆動開発のためのマルチモジュール化
kobaken0029
0
280
DataStoreを導入してみた
kobaken0029
1
400
Other Decks in Technology
See All in Technology
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
2
290
高負荷プロダクション環境におけるAWS Lambdaのリアル 〜スケールとコストを左右する実行ライフサイクルの技術仕様〜
maimyyym
1
140
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
2
20k
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2.9k
SREは、MCPとAutopilotをこう使え!
kazumax55
3
960
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.6k
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
490
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
32
21k
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
2
460
AI感のないAWS構成図をAIエージェントに描かせたい!
sagochiko
1
200
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
人間はどの意思決定を手放せるのか
kawasima
15
8.1k
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
300
Bash Introduction
62gerente
615
220k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Side Projects
sachag
456
43k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
470
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
Statistics for Hackers
jakevdp
799
230k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.9k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Transcript
Modern REST Communicate for Android 2016.5.20 @kobaken42
Agenda • Keyword • Βͳ͍͜ͱ • RESTʹ͍ͭͯ • ༻ϥΠϒϥϦհ •
αϯϓϧΞϓϦͷ࣮(ϨϏϡϫʔ͋Γ) • Keyword(͓͞Β͍)
Keyword • REST(RESTful) • (ؔܕ)ϦΞΫςΟϒϓϩάϥϛϯά(FRP) • ReactiveX(ϦΞΫςΟϒΤΫεςϯγϣϯ) • Parse(ύʔε)
Βͳ͍͜ͱ • Androidʹؔ͢Δઆ໌(Activity, Fragment, Lifecycle etc…) • RESTɺFRPʹؔ͢Δৄࡉͳઆ໌ • ϨΨγʔͳ࣮ͱͷൺֱ
ʊਓਓਓਓʊ ʼ REST ʻ ʉY^Y^Y^Yʉ
Webͷ ΞʔΩςΫνϟελΠϧͷҰͭ
ύϥϝʔλΛࢦఆͯ͠ ಛఆURLʹHTTP(s)ͰΞΫηε XML or jsonͰ݁Ռ͕ฦ٫͞ΕΔ
ύϥϝʔλ(Input)͕ಉҰͳΒ ৗʹಉ݁͡Ռ(Output)͕ظͰ͖Δ (γεςϜͷঢ়ଶηογϣϯʹґଘ͠ͳ͍)
(ͪΐͬͱཚ͚ͩͲ) ҰߦͰݴ͏ͱ
Ϧιʔεॏࢹઃܭ
RESTful item_url -> items/:id new_item_url -> items/new edit_item_url -> items/:id/edit
items_url -> items
Not RESTful
ίϨͰΘ͔Βͳ͍ਓ ϫγϫγMAXͰʙʂʂ ͦΜͳͷ͋Μ·Γʹ͜ʙʂʂ
ຊ
ϦΞΫςΟϒͳ REST௨৴Λ࣮ݱͨ͠ αϯϓϧΞϓϦΛ࡞͍͖ͯ͠·͢
༏लͳϨϏϡϫʔͷྗΛ आΓͳ͕Β࣮͍͖ͯ͠·͢Αʂ
༻ϥΠϒϥϦͷհ
༻ϥΠϒϥϦ(Plugin) • Retrofit • RxAndroid • Retrolambda • Lombok •
butterknife(DataBindingʹஔ͖͑·ͨ͠)
Retrofit v2.0.2 • AndroidͱJavaͷͨΊͷܕ҆શͳ HTTPΫϥΠΞϯτ • ෦ͰOkhttpΛ༻ • AsyncLoaderͱ͏͓͞Β •
jsonύʔεͱ͔ॾʑͬͯ͘ΕΔ • Apache HTTP ClientʁūŬťƀŘŶƂŜƃūŘ!!
RxAndroid v1.2.0 • RxJavaΛแ͍ͯ͠ΔAndroid͚ ReactiveX • ϦΞΫςΟϒϓϩάϥϛϯάग़དྷΔ • ඇಉظॲཧ͕؆୯ʹॻ͚Δ (AsyncTaskͳΜͯͳ͔ͬͨ)
• ڞ௨ͷΠϯλʔϑΣʔεͱͯ͠׆༻ • View͔ΒͷΠϕϯτΛड͚औΔ • ίʔϧόοΫͷҰݩཧ etc…
Retrolambda • AndroidͰϥϜμ͕ࣜॻ͚ΔΑ͏ʹ ͳΔPlugin • Method ReferenceʹରԠ • RxAndroid, Stream
APIͱͷซ༻ར ༻Ͱ΄΅Java8ڥʹʂ
Lombok v1.16.8 • JavaͰΑ͋͘ΔϘΠϥʔϓϨʔτ ίʔυΛγϯϓϧʹͯ͘͠ΕΔ • getter, setterͷهड़ෆཁʹ • nullνΣοΫΛࣗಈͰͬͯ͘ΕΔ
• MITϥΠηϯε
ϥΠϒϥϦհ͜͜·Ͱ
Δ͜ͱ
Δ͜ͱ • ༻ϥΠϒϥϦΛGradleͰએݴ • REST௨৴ͷͨΊͷAPIΠϯλʔϑΣʔε࡞ • Ϩεϙϯε༻ͷΦϒδΣΫτΛ࡞ • ϦΞΫςΟϒϓϩάϥϛϯάͰREST௨৴ʂ
Ͱૣ
gradleʹهड़ͯ͘͠Ͱ
build.gradle(appԼ)
None
None
࣍
WebAPIͷInterface ࡞ΔͰ
ࠓճొෆཁͳ͓खܰAPIΛ ར༻͍ͨ͠Μʂ
༻API • WeatherHacks
WeatherHacksApi.java
None
None
ResponseObject(Entity) ࡞ΔͰ
ResponseObject.java
None
None
Լ४උऴΘΓ
ͦΕ͡Όɺຊ൪ߦ͘Ͱ
͜Ε͔ΒΔ͜ͱ
ࡾߦͰ
Activity(Fragment)ʹ RetrofitΦϒδΣΫτΛੜͯ͠ subscribeʂ
MainActivity.java
MainActivity.java
MainActivity.java
͜Ε͚ͩʂ
ͱ
ࢥΘͤͯ
AndroidManifest.xmlʹ Internet௨৴ͷͨΊͷ Permissionهड़͕ඞཁͦ͏ɾɾɾ
None
AndroidManifest.xml
AndroidManifest.xml
None
Keyword(͓͞Β͍) • REST(RESTful) • (ؔܕ)ϦΞΫςΟϒϓϩάϥϛϯά(FRP) • ReactiveX(ϦΞΫςΟϒΤΫεςϯγϣϯ) • Parse(ύʔε) •
ঁਆͷΜͨΜ
ΈΜͳϦΞΫςΟϒʹ REST௨৴͠Αͬˑ
None
https://github.com/kobaken0029/RestSample