SlideShare a Scribd company logo
Android + JSON-RPC
shibuya.apk #10
About Me
Shinobu Okano
@operandoOS
Mercari, Inc.
Souzoh, Inc.
shinobu.apk #3
やります!!
Androidについて語る!
shinobu.apk #1 を開催しました!
http://tech.mercari.com/entry/2016/02/12/122918
shinobu.apk #2 のパネルディスカッション
録音データとShow Notesを公開しました!
http://hack-it-iron.hatenablog.com/entry/
2016/04/20/124823
http://shinobu-apk.connpass.com/event/40202/
Join!!
shinobu.apk #3
JSON-RPC??
JSON-RPC
“JSON-RPC is a stateless, light-weight
remote procedure call (RPC) protocol.”
JSON-RPC spec
http://www.jsonrpc.org/specification
RPC
• gRPC
• http://www.grpc.io/
• Go Conference 2016 SpringでgRPCの現状について
発表してきました
• http://tech.mercari.com/entry/
2016/04/27/145227
JSON-RPC 2.0
JSON-RPC
HTTP bodyのJSONでリクエストを記述する
JSON-RPC Request
{
"jsonrpc": "2.0",
"method": "subtract",
"params": [
42,
23
],
"id": 1
}
JSON-RPC Response
{
"jsonrpc": "2.0",
"result": 19,
"id": 1
}
JSON-RPC Batch
1回の通信で複数のリクエストを送れる
JSON-RPC Request
[
{
"id": 1,
"jsonrpc": "2.0",
"method": "shibuya.apk",
"params": { ... }
},
{
"id": 2,
"jsonrpc": "2.0",
"method": "shinobu.apk",
"params": { ... }
}
]
JSON-RPC Response
[
{
"id": 1,
"jsonrpc": "2.0",
"result": { ... }
},
{
"id": 2,
"jsonrpc": "2.0",
"result": { ... }
}
]
何に使うの??
何に使うの??
何に使うの??
• タイムラインの投稿を取得
• 現在地の座標を住所に変換する
• バナーを取得する
以下のリクエストが1回のリクエストでできる
GET /home??
複数の処理をまとめたAPIは
仕様が壊れやすい
JSON-RPC Batch
• APIは個々の処理をメソッドとして定義
• クライアント側で個々の処理を1つの

リクエストにまとめて呼び出す
JSON-RPC Request
[
{
"id": 1,
"jsonrpc": "2.0",
"method": "GetTimeline",
"params": { ... }
},
{
"id": 2,
"jsonrpc": "2.0",
"method": "GetBanner",
"params": { ... }
}
]
JSON-RPC Response
[
{
"id": 1,
"jsonrpc": "2.0",
"result": { ... }
},
{
"id": 2,
"jsonrpc": "2.0",
"result": { ... }
}
]
よさそう!!
じゃAndroidで実装するか!!
OkHttp使って書いてみる Request
OkHttpClient client;
JSONObject json = new JSONObject();
JsonArray params = new JsonArray();
json.put("method","subtract");
params.put(42);
params.put(23);
json.put("params",params);
RequestBody requestBody = RequestBody.create(MEDIA_TYPE,
json.toString().getBytes());
Request request = new Request.Builder()
.url("https://....")
.post(requestBody)
.build();
Response response = client.newCall(request).execute();
OkHttp使って書いてみる Response
Response response = client.newCall(request).execute();
// ... isSuccessfulのチェックとか...
ResponseBody value = response.body();
JSONObject j = new JSONObject(value.string());
int result = j.getInt("result");// return 19
これイケてますかね??
イケてないですよね...
いい感じのLibraryあるんじゃね…
検索検索
あまりない??
• jsonrpc4j
• https://github.com/briandilley/jsonrpc4j
• Batchに対応してない??
• retrofit-jsonrpc
• https://github.com/segmentio/retrofit-jsonrpc
• Batchに対応してない??
途方に暮れる日々...
あーなんでこんなAPIに
なってるんだ...
うぅ…僕はわるくない...
(。-ω-)
そうも言ってられない...
そうだ!
自分で作ればいいんだ!
作ってみた
※当日までにコードが公開できませんでした

すいません🙇
作る前に考えたこと
• 毎回同じ処理は書きたくない
• リクエストの型が決まればレスポンスの型が決まる
• リクエストとレスポンスを型で定義
• Batch リクエストをいい感じに受け取りたい
• Rxとか使っちゃう??
• 特定の通信ライブラリに依存しない
JSON-RPCのクライアント実装で大変だったこと
• Batch リクエストの受け取り方
• エラーハンドリング
• Retrofitの恩恵が受けられない…
レスポンスのパターン
• OK 1つのレスポンス
• OK 複数のレスポンス(2,3つ)
• NG 全レスポンスエラー
• NG 一部のレスポンスエラー
Batch リクエストの受け取り方
• 複数のリクエストを作る
• 作ったリクエストをまとめてAPIに投げる
• 複数のレスポンスが返ってくる
• ハンドリングしてレスポンスを通知する
複数のレスポンス...??
複数のレスポンス...??
• List<Object> ??
• List<?> ??
• List<JSONObject> ??
どれもイケてない
そうだ...Tuple💪だ!!
💪
筋肉 2つ 💪💪
@Getter
public class Pair<F, S> {
private final F first;
private final S second;
private Pair(F first, S second) {
this.first = first;
this.second = second;
}
public static <F, S> Pair<F, S> create(F first, S second) {
return new Pair<>(first, second);
}
}
筋肉 3つ 💪💪💪
@Getter
public class Triplet<F, S, T> {
private final F first;
private final S second;
private final T thread;
private Triplet(F first, S second, T thread) {
this.first = first;
this.second = second;
this.thread = thread;
}
public static <F, S, T> Triplet<F, S, T> create(F first, S second, T
thread) {
return new Triplet<>(first, second, thread);
}
}
複数のリクエストを作る
// リクエストとレスポンスをクラスとして定義
// リクエスト : GetBanner レスポンス : GetBanner
class GetBannerResponse {
String url;
}
// リクエストの型が決まればレスポンスの型が決まる = RequestType<レスポンスの型>
class GetBanner extends RequestType<GetBannerResponse> {
@Override
public String getMethod() {
return "GetBanner";
}
@Override
protected Class<GetBannerResponse> getResponseType() {
return GetBannerResponse.class;
}
}
複数のリクエストを作る
// 同じように別APIのリクエストとレスポンスをクラスとして定義
// リクエスト : GetTimeline レスポンス : GetTimelineResponse
class GetTimelineResponse {
List<Item> items;
}
class GetTimeline extends RequestType<GetTimelineResponse> {
private final long timelineId;
GetTimeline(long timelineId) {
this.timelineId = timelineId;
}
@Override
public String getMethod() {
return "GetTimeline";
}
@Override
protected Class<GetTimelineResponse> getResponseType() {
return GetTimelineResponse.class;
}
}
作ったリクエストをまとめてAPIに投げる
GetTimeline getTimeline = new GetTimeline(1);
GetBanner getBanner = new GetBanner();
RxApiClient rxApiClient = new RxApiClient();
// Observable<Pair<GetBannerResponse, GetTimelineResponse>>
が返ってくる
rxApiClient.responseFrom(getTimeline,getBanner)
....
リクエストのクラスはJSONになって
HTTP bodyに設定される
[
{
"params": {
"timelineId": 1
},
"method": "GetTimeline",
"jsonrpc": "2.0",
"id": "1"
},
{
"params": {},
"method": "GetBanner",
"jsonrpc": "2.0",
"id": "2"
}
]
複数のレスポンスが返ってくる + 

ハンドリングしてレスポンスを通知する
// 複数のレスポンスTupleに包んでRxに流す
// responseFrom内でTupleに包む処理をしてる
rxApiClient.responseFrom(getTimeline, getBanner)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<Pair<GetTimelineResponse, GetBannerResponse>>() {
@Override
public void call(Pair<GetTimelineResponse, GetBannerResponse> pair) {
// Tupleからレスポンスを取り出す
pair.getFirst(); // return GetTimelineResponse
pair.getSecond(); // retrun GetBannerResponse
}
});
Thanks!

More Related Content

Viewers also liked

まったりAndroid Framework Code Reading #3
まったりAndroid Framework Code Reading #3まったりAndroid Framework Code Reading #3
まったりAndroid Framework Code Reading #3
Shinobu Okano
 
shinobu.apk #2
shinobu.apk #2shinobu.apk #2
shinobu.apk #2
Shinobu Okano
 
Gradle PluginとCIと俺
Gradle PluginとCIと俺Gradle PluginとCIと俺
Gradle PluginとCIと俺
Shinobu Okano
 
Inside Android N
Inside Android NInside Android N
Inside Android N
Shinobu Okano
 
まったりAndroid Framework Code Reading #4
まったりAndroid Framework Code Reading #4まったりAndroid Framework Code Reading #4
まったりAndroid Framework Code Reading #4
Shinobu Okano
 
Lightweight-Stream-APIのあるAndroidアプリ開発
Lightweight-Stream-APIのあるAndroidアプリ開発Lightweight-Stream-APIのあるAndroidアプリ開発
Lightweight-Stream-APIのあるAndroidアプリ開発
Shinobu Okano
 
Goodbye progress dialog mess on Android
Goodbye progress dialog mess on AndroidGoodbye progress dialog mess on Android
Goodbye progress dialog mess on Android
Tsuyoshi Yoshioka
 
Kotlinにお触り
Kotlinにお触りKotlinにお触り
Kotlinにお触り
Shinobu Okano
 
Android Framework Code Readingのしおり ver 1.2
Android Framework Code Readingのしおり ver 1.2Android Framework Code Readingのしおり ver 1.2
Android Framework Code Readingのしおり ver 1.2
Shinobu Okano
 
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみたAndroidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
Hiroshi Kikuchi
 
Android Framework Code Readingのしおり ver 1.1
Android Framework Code Readingのしおり ver 1.1Android Framework Code Readingのしおり ver 1.1
Android Framework Code Readingのしおり ver 1.1
Shinobu Okano
 
RxSwiftでの実装練習の記録ノートとはじめの一歩
RxSwiftでの実装練習の記録ノートとはじめの一歩RxSwiftでの実装練習の記録ノートとはじめの一歩
RxSwiftでの実装練習の記録ノートとはじめの一歩
Fumiya Sakai
 
Kotlin 使いになりました
Kotlin 使いになりましたKotlin 使いになりました
Kotlin 使いになりました
健一 辰濱
 
ElasticBeanstalk で新規事業を爆速ローンチする
ElasticBeanstalk で新規事業を爆速ローンチするElasticBeanstalk で新規事業を爆速ローンチする
ElasticBeanstalk で新規事業を爆速ローンチする
Ryo Shibayama
 
Android Studio 2.3 New Features
Android Studio 2.3 New FeaturesAndroid Studio 2.3 New Features
Android Studio 2.3 New Features
Kenichi Kambara
 
Activity Transition Animation #potatotips 33
Activity Transition Animation #potatotips 33Activity Transition Animation #potatotips 33
Activity Transition Animation #potatotips 33
bina1204 Hozuki
 
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
Shinobu Okano
 
Android json parser tutorial – example
Android json parser tutorial – exampleAndroid json parser tutorial – example
Android json parser tutorial – example
Rajat Ghai
 
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃんRetrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Yukari Sakurai
 
[Growth hack]RakutenTravel App Development
[Growth hack]RakutenTravel App Development[Growth hack]RakutenTravel App Development
[Growth hack]RakutenTravel App Development
Emi Takahashi
 

Viewers also liked (20)

まったりAndroid Framework Code Reading #3
まったりAndroid Framework Code Reading #3まったりAndroid Framework Code Reading #3
まったりAndroid Framework Code Reading #3
 
shinobu.apk #2
shinobu.apk #2shinobu.apk #2
shinobu.apk #2
 
Gradle PluginとCIと俺
Gradle PluginとCIと俺Gradle PluginとCIと俺
Gradle PluginとCIと俺
 
Inside Android N
Inside Android NInside Android N
Inside Android N
 
まったりAndroid Framework Code Reading #4
まったりAndroid Framework Code Reading #4まったりAndroid Framework Code Reading #4
まったりAndroid Framework Code Reading #4
 
Lightweight-Stream-APIのあるAndroidアプリ開発
Lightweight-Stream-APIのあるAndroidアプリ開発Lightweight-Stream-APIのあるAndroidアプリ開発
Lightweight-Stream-APIのあるAndroidアプリ開発
 
Goodbye progress dialog mess on Android
Goodbye progress dialog mess on AndroidGoodbye progress dialog mess on Android
Goodbye progress dialog mess on Android
 
Kotlinにお触り
Kotlinにお触りKotlinにお触り
Kotlinにお触り
 
Android Framework Code Readingのしおり ver 1.2
Android Framework Code Readingのしおり ver 1.2Android Framework Code Readingのしおり ver 1.2
Android Framework Code Readingのしおり ver 1.2
 
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみたAndroidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
 
Android Framework Code Readingのしおり ver 1.1
Android Framework Code Readingのしおり ver 1.1Android Framework Code Readingのしおり ver 1.1
Android Framework Code Readingのしおり ver 1.1
 
RxSwiftでの実装練習の記録ノートとはじめの一歩
RxSwiftでの実装練習の記録ノートとはじめの一歩RxSwiftでの実装練習の記録ノートとはじめの一歩
RxSwiftでの実装練習の記録ノートとはじめの一歩
 
Kotlin 使いになりました
Kotlin 使いになりましたKotlin 使いになりました
Kotlin 使いになりました
 
ElasticBeanstalk で新規事業を爆速ローンチする
ElasticBeanstalk で新規事業を爆速ローンチするElasticBeanstalk で新規事業を爆速ローンチする
ElasticBeanstalk で新規事業を爆速ローンチする
 
Android Studio 2.3 New Features
Android Studio 2.3 New FeaturesAndroid Studio 2.3 New Features
Android Studio 2.3 New Features
 
Activity Transition Animation #potatotips 33
Activity Transition Animation #potatotips 33Activity Transition Animation #potatotips 33
Activity Transition Animation #potatotips 33
 
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
 
Android json parser tutorial – example
Android json parser tutorial – exampleAndroid json parser tutorial – example
Android json parser tutorial – example
 
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃんRetrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
 
[Growth hack]RakutenTravel App Development
[Growth hack]RakutenTravel App Development[Growth hack]RakutenTravel App Development
[Growth hack]RakutenTravel App Development
 

Similar to Android + JSON-RPC

Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hack
kimukou_26 Kimukou
 
Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発
Kentaro Iizuka
 
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration勉強会force#4 Chatter Integration
勉強会force#4 Chatter IntegrationKazuki Nakajima
 
Let's begin WebRTC
Let's begin WebRTCLet's begin WebRTC
Let's begin WebRTC
yoshikawa_t
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + Express
Akinari Tsugo
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Go
yaegashi
 
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法についてDart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
Kosuke Saigusa
 
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニックOSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
庸介 高橋
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http url
Innami Satoshi
 
実社会で進められているサービスとLOD
実社会で進められているサービスとLOD実社会で進められているサービスとLOD
実社会で進められているサービスとLOD
Hiroyuki Sato
 
Google I/O 2016 報告会
Google I/O 2016 報告会Google I/O 2016 報告会
Google I/O 2016 報告会
shingo suzuki
 
WordBench京都 9月号:kintone×WordPressハンズオン
WordBench京都 9月号:kintone×WordPressハンズオンWordBench京都 9月号:kintone×WordPressハンズオン
WordBench京都 9月号:kintone×WordPressハンズオン
Takashi Hosoya
 
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQLハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
Taisuke Fukuno
 
Real world android akka
Real world android akkaReal world android akka
Real world android akka
Taisuke Oe
 
PHP, Now and Then 2011
PHP, Now and Then 2011PHP, Now and Then 2011
PHP, Now and Then 2011
Rui Hirokawa
 
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
azumakuniyuki 🐈
 
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
Syo Ikeda
 
第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo
yayamamo @ DBCLS Kashiwanoha
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
Takatoshi Kondo
 

Similar to Android + JSON-RPC (20)

Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hack
 
Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発Knockout を用いた Firefox OS アプリケーションの開発
Knockout を用いた Firefox OS アプリケーションの開発
 
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
 
Let's begin WebRTC
Let's begin WebRTCLet's begin WebRTC
Let's begin WebRTC
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + Express
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Go
 
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法についてDart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
 
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニックOSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
 
RとWeb API
RとWeb APIRとWeb API
RとWeb API
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http url
 
実社会で進められているサービスとLOD
実社会で進められているサービスとLOD実社会で進められているサービスとLOD
実社会で進められているサービスとLOD
 
Google I/O 2016 報告会
Google I/O 2016 報告会Google I/O 2016 報告会
Google I/O 2016 報告会
 
WordBench京都 9月号:kintone×WordPressハンズオン
WordBench京都 9月号:kintone×WordPressハンズオンWordBench京都 9月号:kintone×WordPressハンズオン
WordBench京都 9月号:kintone×WordPressハンズオン
 
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQLハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
 
Real world android akka
Real world android akkaReal world android akka
Real world android akka
 
PHP, Now and Then 2011
PHP, Now and Then 2011PHP, Now and Then 2011
PHP, Now and Then 2011
 
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
 
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
 
第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
 

More from Shinobu Okano

Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Shinobu Okano
 
ChromeとAndroidの過去・現在・未来
ChromeとAndroidの過去・現在・未来ChromeとAndroidの過去・現在・未来
ChromeとAndroidの過去・現在・未来
Shinobu Okano
 
Android Dev Tools Knowledge
Android Dev Tools KnowledgeAndroid Dev Tools Knowledge
Android Dev Tools Knowledge
Shinobu Okano
 
shinobu.apk #1
shinobu.apk #1shinobu.apk #1
shinobu.apk #1
Shinobu Okano
 
ChromeとAndroidの 過去・現在・未来 ver 0.1
ChromeとAndroidの 過去・現在・未来  ver 0.1ChromeとAndroidの 過去・現在・未来  ver 0.1
ChromeとAndroidの 過去・現在・未来 ver 0.1
Shinobu Okano
 
5分で資料作ってSlideShareにアップロードする錬金術
5分で資料作ってSlideShareにアップロードする錬金術5分で資料作ってSlideShareにアップロードする錬金術
5分で資料作ってSlideShareにアップロードする錬金術
Shinobu Okano
 
Logcatの話
Logcatの話Logcatの話
Logcatの話
Shinobu Okano
 
GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04
Shinobu Okano
 
Android Framework Code Readingのしおり
Android Framework Code ReadingのしおりAndroid Framework Code Readingのしおり
Android Framework Code Readingのしおり
Shinobu Okano
 
まったりAndroid framework code reading #2
まったりAndroid framework code reading #2まったりAndroid framework code reading #2
まったりAndroid framework code reading #2
Shinobu Okano
 
隕石という名のスクリーンショットをSlackに落下させる話
隕石という名のスクリーンショットをSlackに落下させる話隕石という名のスクリーンショットをSlackに落下させる話
隕石という名のスクリーンショットをSlackに落下させる話
Shinobu Okano
 
Upload a screenshot to Slack
Upload a screenshot to SlackUpload a screenshot to Slack
Upload a screenshot to Slack
Shinobu Okano
 
JobScheduler Code Reading
JobScheduler Code ReadingJobScheduler Code Reading
JobScheduler Code Reading
Shinobu Okano
 
はじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイントはじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイント
Shinobu Okano
 
『メルカリ』のアップデート監視 を支える(かもしれない)技術
『メルカリ』のアップデート監視 を支える(かもしれない)技術『メルカリ』のアップデート監視 を支える(かもしれない)技術
『メルカリ』のアップデート監視 を支える(かもしれない)技術
Shinobu Okano
 
Screenshots Test spoon + espresso
Screenshots Test spoon + espressoScreenshots Test spoon + espresso
Screenshots Test spoon + espresso
Shinobu Okano
 
App Permissions
App PermissionsApp Permissions
App Permissions
Shinobu Okano
 

More from Shinobu Okano (17)

Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
 
ChromeとAndroidの過去・現在・未来
ChromeとAndroidの過去・現在・未来ChromeとAndroidの過去・現在・未来
ChromeとAndroidの過去・現在・未来
 
Android Dev Tools Knowledge
Android Dev Tools KnowledgeAndroid Dev Tools Knowledge
Android Dev Tools Knowledge
 
shinobu.apk #1
shinobu.apk #1shinobu.apk #1
shinobu.apk #1
 
ChromeとAndroidの 過去・現在・未来 ver 0.1
ChromeとAndroidの 過去・現在・未来  ver 0.1ChromeとAndroidの 過去・現在・未来  ver 0.1
ChromeとAndroidの 過去・現在・未来 ver 0.1
 
5分で資料作ってSlideShareにアップロードする錬金術
5分で資料作ってSlideShareにアップロードする錬金術5分で資料作ってSlideShareにアップロードする錬金術
5分で資料作ってSlideShareにアップロードする錬金術
 
Logcatの話
Logcatの話Logcatの話
Logcatの話
 
GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04
 
Android Framework Code Readingのしおり
Android Framework Code ReadingのしおりAndroid Framework Code Readingのしおり
Android Framework Code Readingのしおり
 
まったりAndroid framework code reading #2
まったりAndroid framework code reading #2まったりAndroid framework code reading #2
まったりAndroid framework code reading #2
 
隕石という名のスクリーンショットをSlackに落下させる話
隕石という名のスクリーンショットをSlackに落下させる話隕石という名のスクリーンショットをSlackに落下させる話
隕石という名のスクリーンショットをSlackに落下させる話
 
Upload a screenshot to Slack
Upload a screenshot to SlackUpload a screenshot to Slack
Upload a screenshot to Slack
 
JobScheduler Code Reading
JobScheduler Code ReadingJobScheduler Code Reading
JobScheduler Code Reading
 
はじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイントはじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイント
 
『メルカリ』のアップデート監視 を支える(かもしれない)技術
『メルカリ』のアップデート監視 を支える(かもしれない)技術『メルカリ』のアップデート監視 を支える(かもしれない)技術
『メルカリ』のアップデート監視 を支える(かもしれない)技術
 
Screenshots Test spoon + espresso
Screenshots Test spoon + espressoScreenshots Test spoon + espresso
Screenshots Test spoon + espresso
 
App Permissions
App PermissionsApp Permissions
App Permissions
 

Recently uploaded

TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 

Recently uploaded (14)

TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 

Android + JSON-RPC