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
Sliceのアレコレ
Search
Yuki Mima
May 29, 2018
Technology
170
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Sliceのアレコレ
Yuki Mima
May 29, 2018
More Decks by Yuki Mima
See All by Yuki Mima
スタディサプリENGLISHの今と攻めの開発 ~MotionLayout入れてみた~
amyu
0
1.9k
RecyclerViewで 折れ線グラフを作る
amyu
2
450
ビルド時間を1分短くするためにやったこと
amyu
0
830
ミスを少なくする明日からのCustom Lint Rules
amyu
0
2k
Other Decks in Technology
See All in Technology
KiCAD講習会②
tutcreators
0
110
知らん間に、回ってる
ming_ayami
0
570
Claude Code公式skillで 自分の仕事を少しずつ手放そう!(Claude Code開発ノウハウ大公開スペシャル by クラスメソッド)
kaym
1
320
ゴールデンパスは敷いただけでは道にならない ─ 企画部門のエンジニアが技術標準を事業価値に変えるまで
mhrtech
0
140
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
「最後に責任を取るのはチーム」— 人間のPRレビューを最小化してアップデートしたメンタルモデル
jnishime_dresscode
0
620
ポストモーテム! DDoSからサイトは守れた。 でもビジネスは守れなかった。
bengo4com
1
2.9k
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
1
180
しくみを学んで使いこなそう GitHub Copilot app
torumakabe
2
240
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
シンガポールで登壇してきます
yama3133
0
120
“それは自分の仕事じゃない"を越えて行け
yuukiyo
0
230
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
220
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.7k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
260
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
220
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
300
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
Transcript
4MJDFTͷΞϨίϨ (PPHMF*0ࢀՃใࠂձ !BNZV@TBO
"CPVUNF w .JNB:VLJ w !BNZV@TBO w /&95$633&/$: */$ w "OESPJE&OHJOFFS
͋Γ͕ͱ͏Ŋฐࣾ
͋Γ͕ͱ͏Ŋฐࣾ
None
"HFOEB w (PPHMF*0ͷײͱݟ w 4MJDFTͷ w ·ͱΊ
(PPHMF*0ͷݟ w ։࠵ͷલલೖΓ͕ྑͦ͞͏ w ࣌ࠩϘέ·͡ਏ͍ w ૣΊͷ#BEHF1JDLVQͰΑΓྑ͍੮Ͱ,FZOPUFΛݟΕΔ w ௨ͷγϟτϧόε͕ग़Δϗςϧ͕Α͍ w
IUUQTXXXDPVOUSZJOOTDPN w #BEHF1JDLVQͷ࣌ؒޕલ࣌͘Β͍͕ྑͦ͞͏ w ன൧͕ޱʹ߹Θͳ͍ w 6CFS࠷ߴ
(PPHMF*0ͷײ w ·ͨདྷߦ͖͍ͨ
4MJDFTͷ
͜͜ͷ෦
None
࡞ͬͯΈͨ
None
PO#JOE4MJDF 4MJDF1SPWJEFS GFUDI"1* 4FSWJDF TUBSU4FSWJDF DPOUFOU3FTPMWFSOPUJGZ$IBOHF VSJ
class CryptoSliceProvider : SliceProvider() { private val path = "/crypto"
override fun onCreateSliceProvider(): Boolean = true override fun onBindSlice(sliceUri: Uri): Slice? = when (sliceUri.path) { path -> { context.startService(Intent(context, CryptoService::class.java)) createCryptoSlice(sliceUri) } else -> null } private fun createCryptoSlice(sliceUri: Uri): Slice? = ListBuilder(context, sliceUri, ListBuilder.INFINITY) .addGridRow { it.apply { addCell { it.apply { addImage(IconCompat.createWithResource(context, R.drawable.ic_bitcoin), SMALL_IMAGE) addTitleText("Bitcoin") addText(CryptoService.bitcoin, true) } } ... } } .build() }
class CryptoSliceProvider : SliceProvider() { private val path = "/crypto"
override fun onCreateSliceProvider(): Boolean = true override fun onBindSlice(sliceUri: Uri): Slice? = when (sliceUri.path) { path -> { context.startService(Intent(context, CryptoService::class.java)) createCryptoSlice(sliceUri) } else -> null } private fun createCryptoSlice(sliceUri: Uri): Slice? = ListBuilder(context, sliceUri, ListBuilder.INFINITY) .addGridRow { it.apply { addCell { it.apply { addImage(IconCompat.createWithResource(context, R.drawable.ic_bitcoin), SMALL_IMAGE) addTitleText("Bitcoin") addText(CryptoService.bitcoin, true) } } ... } } .build() }
class CryptoSliceProvider : SliceProvider() { private val path = "/crypto"
override fun onCreateSliceProvider(): Boolean = true override fun onBindSlice(sliceUri: Uri): Slice? = when (sliceUri.path) { path -> { context.startService(Intent(context, CryptoService::class.java)) createCryptoSlice(sliceUri) } else -> null } private fun createCryptoSlice(sliceUri: Uri): Slice? = ListBuilder(context, sliceUri, ListBuilder.INFINITY) .addGridRow { it.apply { addCell { it.apply { addImage(IconCompat.createWithResource(context, R.drawable.ic_bitcoin), SMALL_IMAGE) addTitleText("Bitcoin") addText(CryptoService.bitcoin, true) } } ... } } .build() }
class CryptoSliceProvider : SliceProvider() { private val path = "/crypto"
override fun onCreateSliceProvider(): Boolean = true override fun onBindSlice(sliceUri: Uri): Slice? = when (sliceUri.path) { path -> { context.startService(Intent(context, CryptoService::class.java)) createCryptoSlice(sliceUri) } else -> null } private fun createCryptoSlice(sliceUri: Uri): Slice? = ListBuilder(context, sliceUri, ListBuilder.INFINITY) .addGridRow { it.apply { addCell { it.apply { addImage(…) addTitleText("Bitcoin") addText(CryptoService.bitcoin, true) } } ... } } .build() }
class CryptoSliceProvider : SliceProvider() { private val path = "/crypto"
override fun onCreateSliceProvider(): Boolean = true override fun onBindSlice(sliceUri: Uri): Slice? = when (sliceUri.path) { path -> { context.startService(Intent(context, CryptoService::class.java)) createCryptoSlice(sliceUri) } else -> null } private fun createCryptoSlice(sliceUri: Uri): Slice? = ListBuilder(context, sliceUri, ListBuilder.INFINITY) .addGridRow { it.apply { addCell { it.apply { addImage(…) addTitleText("Bitcoin") addText(CryptoService.bitcoin, true) } } ... } } .build() }
class CryptoService : Service() { companion object { var bitcoin:
String? = null ... } override fun onBind(p0: Intent?): IBinder? = null override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int = START_NOT_STICKY.also { _ -> apiClient.getCryptoList() .doOnFinish { stopSelf() } .subscribe({ bitcoin = "ˇ${it.toNumberformat()}" ... applicationContext.contentResolver.notifyChange(uri, null) }, { }) } }
class CryptoService : Service() { companion object { var bitcoin:
String? = null ... } override fun onBind(p0: Intent?): IBinder? = null override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int = START_NOT_STICKY.also { _ -> apiClient.getCryptoList() .doOnFinish { stopSelf() } .subscribe({ bitcoin = "ˇ${it.toNumberformat()}" applicationContext.contentResolver.notifyChange(uri, null) }, { }) } }
class CryptoService : Service() { companion object { var bitcoin:
String? = null ... } override fun onBind(p0: Intent?): IBinder? = null override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int = START_NOT_STICKY.also { _ -> apiClient.getCryptoList() .doFinally { stopSelf() } .subscribe({ bitcoin = "ˇ${it.toNumberformat()}" ... applicationContext.contentResolver.notifyChange(uri, null) }, { }) } }
None
ͱͬͯ؆୯ͩͶ
None
·ͱΊ
w IUUQTUFDICMPHQJDBQQJODKQHPPHMFJ P&"&&#& #&"&#&# "&$&"&'TMJD FT&"&&"#EFCC
·ͨདྷߦ͔ͤͯ͘ ͍ͩ͞