Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Modern REST Communicate for Android
Search
kobaken
May 23, 2016
Technology
1.6k
0
Share
Modern REST Communicate for Android
社内発表用スライド
kobaken
May 23, 2016
More Decks by kobaken
See All by kobaken
複数行のTextで中間省略(…)を実現する
kobaken0029
0
64
Jetpack Compose Preview実践ガイド
kobaken0029
0
130
Serializable / Parcelableとの上手な付き合い方
kobaken0029
0
130
Kotlinの好きなところ
kobaken0029
0
1.3k
Compose駆動開発のためのマルチモジュール化
kobaken0029
0
250
DataStoreを導入してみた
kobaken0029
1
380
Epoxyを用いたレイアウト構築術
kobaken0029
1
250
Androidエンジニアが1週間でiOSアプリ開発を学び、1ヶ月で大規模アプリ開発にJOINした話
kobaken0029
0
3.7k
AndroidでモダンREST通信してみたった
kobaken0029
0
270
Other Decks in Technology
See All in Technology
情シスがMCP環境導入時に打ちのめされる認可の崖
oidfj
0
670
Python開発環境にハーネス適用を検討する
yuuka51
1
540
AIガバナンス実践 - 生成AIコネクタのデータ漏洩リスクと実務対策
knishioka
0
110
NFLコンペ2026 解法
lycorptech_jp
PRO
0
120
類似画像検索モデルの開発ノウハウ
lycorptech_jp
PRO
4
960
Amazon Bedrock 経由の Claude Cowork を試してみよう・MCP にも繋いでみよう
sugimomoto
0
210
APIテストとは?
nagix
0
110
オンコールの負荷軽減のためのBits Assistant 活用方法 / How to Use Bits Assistant to Reduce the Workload on On-Call Staff
sms_tech
1
200
キャリア25年目にしてTypeScript に出会うまで - 「型」を通じて振り返るプログラミング言語遍歴 / Meeting TypeScript After 25 Years in Tech - Looking Back at My Programming Language Journey Through "Types"
bitkey
PRO
2
290
AI駆動開発でなんでもハンズオン環境をつくってみた
yoshimi0227
0
160
脅威をエンジニアリングの糧にして:恐怖を乗り越えた先にあったもの / Turn threats into fuel for engineering: what lay beyond overcoming fear
nrslib
1
320
大学生が本気でDatabricksを活用してDiscordサークルをデータ駆動させてみた
phantomjuju
0
210
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
190
The untapped power of vector embeddings
frankvandijk
2
1.7k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
390
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
360
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Between Models and Reality
mayunak
4
300
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Skip the Path - Find Your Career Trail
mkilby
1
130
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Discover your Explorer Soul
emna__ayadi
2
1.1k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.5k
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