SlideShare une entreprise Scribd logo
1  sur  57
Télécharger pour lire hors ligne
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!

Contenu connexe

En vedette

まったりAndroid Framework Code Reading #3
まったりAndroid Framework Code Reading #3まったりAndroid Framework Code Reading #3
まったりAndroid Framework Code Reading #3Shinobu Okano
 
Gradle PluginとCIと俺
Gradle PluginとCIと俺Gradle PluginとCIと俺
Gradle PluginとCIと俺Shinobu Okano
 
まったりAndroid Framework Code Reading #4
まったりAndroid Framework Code Reading #4まったりAndroid Framework Code Reading #4
まったりAndroid Framework Code Reading #4Shinobu 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 AndroidTsuyoshi Yoshioka
 
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.2Shinobu 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.1Shinobu 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 FeaturesKenichi Kambara
 
Activity Transition Animation #potatotips 33
Activity Transition Animation #potatotips 33Activity Transition Animation #potatotips 33
Activity Transition Animation #potatotips 33bina1204 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 – exampleRajat 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 DevelopmentEmi Takahashi
 

En vedette (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
 

Similaire à 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_hackkimukou_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 WebRTCyoshikawa_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 + ExpressAkinari Tsugo
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Goyaegashi
 
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 urlInnami Satoshi
 
実社会で進められているサービスとLOD
実社会で進められているサービスとLOD実社会で進められているサービスとLOD
実社会で進められているサービスとLODHiroyuki 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とSPARQLTaisuke Fukuno
 
Real world android akka
Real world android akkaReal world android akka
Real world android akkaTaisuke Oe
 
PHP, Now and Then 2011
PHP, Now and Then 2011PHP, Now and Then 2011
PHP, Now and Then 2011Rui 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 Day2azumakuniyuki 🐈
 
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/18Syo Ikeda
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asioTakatoshi Kondo
 

Similaire à 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
 

Plus de 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 KnowledgeShinobu Okano
 
ChromeとAndroidの 過去・現在・未来 ver 0.1
ChromeとAndroidの 過去・現在・未来  ver 0.1ChromeとAndroidの 過去・現在・未来  ver 0.1
ChromeとAndroidの 過去・現在・未来 ver 0.1Shinobu Okano
 
5分で資料作ってSlideShareにアップロードする錬金術
5分で資料作ってSlideShareにアップロードする錬金術5分で資料作ってSlideShareにアップロードする錬金術
5分で資料作ってSlideShareにアップロードする錬金術Shinobu Okano
 
GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04Shinobu 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 #2Shinobu 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 SlackShinobu Okano
 
JobScheduler Code Reading
JobScheduler Code ReadingJobScheduler Code Reading
JobScheduler Code ReadingShinobu Okano
 
はじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイントはじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイントShinobu Okano
 
『メルカリ』のアップデート監視 を支える(かもしれない)技術
『メルカリ』のアップデート監視 を支える(かもしれない)技術『メルカリ』のアップデート監視 を支える(かもしれない)技術
『メルカリ』のアップデート監視 を支える(かもしれない)技術Shinobu Okano
 
Screenshots Test spoon + espresso
Screenshots Test spoon + espressoScreenshots Test spoon + espresso
Screenshots Test spoon + espressoShinobu Okano
 

Plus de 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
 

Dernier

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Dernier (12)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

Android + JSON-RPC