SlideShare a Scribd company logo
LINE Creators Studio
Android with Kotlin.
⾃⼰紹介
李 性賢
LINE Fukuoka 株式会社
開発1チーム所属
LEE
SUNGHYUN(Dave)
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Android with Kotlin.
・LINE Creators Studio Android with Kotlin
・LINE Creators Studio Androidのアプリ設計
・AndroidでUIテスト⾃動化 with Firebase Test Lab
⽬次
LINE Creators Studio Android with Kotlin.
技術概要
⾔語:Kotlin
Layout:Anko
Network:Retrofit2, OkHttp3
DB:Realm
Reactive Programming:RxJava1, RxBinding, RxLifecycle
Dependecy Injection:Dagger2
Test:Espresso, Mockito-Kotlin
LINE Creators Studio Android with Kotlin.
Why Kotlin?
null	safe
lambda extension
property
型推論
anko
100%	java	相互運用性
LINE Creators Studio Android with Kotlin.
Why Kotlin?
・チームの開発⽣産性を向上させたい
・メンテしやすいコードを書きたい
・NPEから発⽣するバグを減らしたい
背景
LINE Creators Studio Android with Kotlin.
Null Safe
・NPEによるバグ発⽣率↓
・annotationを作成するコスト↓
・メンテしやすさ↑
No more needed @NonNull, @Nullable annotations in
kotlin.
LINE Creators Studio Android with Kotlin.
Lambda
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v(TAG, "clicked");
}
});
Java
LINE Creators Studio Android with Kotlin.
Lambda
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v(TAG, "clicked");
}
});
button.setOnClickListener { Log.v(TAG, "clicked") }
Java
Kotlin
LINE Creators Studio Android with Kotlin.
Lambda
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v(TAG, "clicked");
}
});
button.setOnClickListener { Log.v(TAG, "clicked") }
button.onClick { Log.v(TAG, "clicked") }
Java
Kotlin
Kotlin with anko
・コード量↓
・読みやすさ↑
Extension
fun View.onGlobalLayout(once: Boolean = true, init: View.() -> Unit) {
val view = this
viewTreeObserver.addOnGlobalLayoutListener(object : OnGlobalLayoutListener {
override fun onGlobalLayout() {
init()
if (once) {
view.viewTreeObserver.removeOnGlobalLayoutListener(this)
}
}
})
}
ViewExtension.kt
LINE Creators Studio Android with Kotlin.
Extension + Anko
frameLayout {
val button = button()
button.onClick {
// click event.
}
}.onGlobalLayout {
// view update codes.
}
MainUi.kt
LINE Creators Studio Android with Kotlin.
Anko
LINE Creators Studio Android with Kotlin.
Anko
・Dialog or PopupWindowを使う
・layout.xmlに定義し、tooltip layoutをvisible, gone
・別のxmlを作り、必要に応じて動的に <include>
考えられる実装⽅法
LINE Creators Studio Android with Kotlin.
Anko
ToolTipLayout.kt
fun ViewManager.toolTipLayout() =
verticalLayout {
gravity = Gravity.CENTER_VERTICAL
textView(R.style.ToolTipDescriptionStyle) {
text = "This is ToolTip Layout!"
}
... // more tool tip views.
}
LINE Creators Studio Android with Kotlin.
Anko
ToolTipLayout.kt
fun ViewManager.toolTipLayout() =
verticalLayout {
gravity = Gravity.CENTER_VERTICAL
textView(R.style.ToolTipDescriptionStyle) {
text = "This is ToolTip Layout!"
}
... // more tool tip views.
}
frameLayout {
... // main views.
if (shouldShowToolTip) {
toolTipLayout()
}
StickerListUi.kt
LINE Creators Studio Android with Kotlin.
Anko
・Custom Layoutを作ったり使ったりすることが簡単
・Xml parsingが必要ないので早い
・Business logicとui codeを分離しやすい
Pros
LINE Creators Studio Android with Kotlin.
Anko
・Custom Layoutを作ったり使ったりすることが簡単
・Xml parsingが必要ないので早い
・Business logicとui codeを分離しやすい
Pros
・DSLなので学習コストがある
・data binding libaryをサポートしてない
・constraintlayoutをサポートしてない
Cons
LINE Creators Studio Android with Kotlin.
Anko Preview (Android Studio 2.4+)
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
ButtonのClick Eventを変更しましょう
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
1. 変更したい画⾯のactivityを探す
ButtonのClick Eventを変更しましょう
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
1.変更したい画⾯のactivityを探す
2.Activityからlayout xmlを探してxmlを確認する
ButtonのClick Eventを変更しましょう
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
1.変更したい画⾯のactivityを探す
2.Activityからlayout xmlを探してxmlを確認する
3.変更したいボタンのidを覚えてactivityに戻る
ButtonのClick Eventを変更しましょう
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
1.変更したい画⾯のactivityを探す
2.Activityからlayout xmlを探してxmlを確認する
3.変更したいボタンのidを覚えてactivityに戻る
4.Activityで覚えたidとbindingされてるviewを探す
ButtonのClick Eventを変更しましょう
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
1.変更したい画⾯のactivityを探す
2.Activityからlayout xmlを探してxmlを確認する
3.変更したいボタンのidを覚えてactivityに戻る
4.Activityで覚えたidとbindingされてるviewを探す
5.Viewのclick listenerを探してeventを変更する
ButtonのClick Eventを変更しましょう
LINE Creators Studio Androidのアプリ設計
1.変更したい画⾯のactivityを探す
ButtonのClick Eventを変更しましょう with anko
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
1.変更したい画⾯のactivityを探す
2.Activityからui componentを探す
ButtonのClick Eventを変更しましょう with anko
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
1.変更したい画⾯のActivityを探す
2.Activityからui componentを探す
3.Ui componentの中でviewを探し、click eventを変更する
(click listenerはviewと⼀緒にあるので探す必要はありません)
ButtonのClick Eventを変更しましょう with anko
LINE Creators Studio Android with Kotlin.
Activity	/	Fragment
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
Ui	Component
Activity	/	Fragment
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
Ui	Component
Activity	/	Fragment
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
Ui	Component
Activity	/	Fragment
Repository Realm
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
Ui	Component
Activity	/	Fragment
Repository Realm
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
User	interaction
Ui	Component
Activity	/	Fragment
Repository Realm
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
var profileLayout : ProfileLayout
frameLayout {
button {
text = "save button"
}.onClick {
onwer.save(profile)
}
profileLayout = profileLayout()
}
fun updateLayout(profile: Profile) {
profileLayout.set(profile)
}
UserProfileUi.kt
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
var profileLayout : ProfileLayout
frameLayout {
button {
text = "save button"
}.onClick {
onwer.save(profile)
}
profileLayout = profileLayout()
}
fun updateLayout(profile: Profile) {
profileLayout.set(profile)
}
UserProfileUi.kt
var ui : UserProfileUi
fun save(profile: Profile) {
profileRepository.save(profile)
}
fun load() {
profileRepository.load()
.subscribe(ui.updateLayout(it))
}
UserProfileActivity.kt
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
・Layout, user interaction -> ui component
・Activity, fragment -> lifecycle管理, 窓⼝役割
・Business logic -> repository
ここまでのまとめ
LINE Creators Studio Android with Kotlin.
LINE Creators Studio Androidのアプリ設計
AndroidでUIテスト⾃動化 with Firebase Test
Lab
・ LINE Creators Studio AndroidはAndroid 4.1からサポートしています
・端末種類やOS version依存のbugが多い
・たくさんの端末を⼿動で確認するのはコストがかかりすぎる
背景
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
・テストコードを書いといたら(あるいは書かない)
やりたいこと
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
・テストコードを書いといたら(あるいは書かない)
・コードの変更があった時に
やりたいこと
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
・テストコードを書いといたら(あるいは書かない)
・コードの変更があった時に
・いろんな端末とOSで
やりたいこと
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
・テストコードを書いといたら(あるいは書かない)
・コードの変更があった時に
・いろんな端末とOSで
・⾃動的にテストして欲しい!!!
やりたいこと
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
・テストコードを書いといたら(あるいは書かない)- espressoで書く(あるいはroboテスト)
やるぞ!
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
・テストコードを書いといたら(あるいは書かない)- espressoで書く(あるいはroboテスト)
・コードの変更があった時に - Githubに新しいPull Requestが来たら
やるぞ!
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
・テストコードを書いといたら(あるいは書かない)- espressoで書く(あるいはroboテスト)
・コードの変更があった時に - Githubに新しいPull Requestが来たら
・いろんな端末とOSで - ざっくり44個の端末、api level 18~26までサポート
やるぞ!
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
・テストコードを書いといたら(あるいは書かない)- espressoで書く(あるいはroboテスト)
・コードの変更があった時に - Githubに新しいPull Requestが来たら
・いろんな端末とOSで - ざっくり44個の端末、api level 18~26までサポート
・⾃動的にテストしてくれてます! - Jenkinsでビルド
やるぞ!
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
・正直全ての画⾯に対してUIテストを書くのは難しいと思います
テストコードについて
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
・正直全ての画⾯に対してUIテストを書くのは難しいと思います
・たとえすごく頑張って全画⾯に書いたとしても画⾯の変更があったらテストコードも変更しないとい
けないのでメンテコストがたくさんかかりますね
テストコードについて
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
テストコードの優先順位を決めましょう
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
1.お⾦にかかわる画⾯(決済画⾯や購⼊画⾯)
テストコードの優先順位を決めましょう
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
1.お⾦に関わる画⾯(決済画⾯や購⼊画⾯)
2.データ(状態)によってUIが変わる画⾯
- コードの変更によってバグが発⽣する可能性が⾼いです
テストコードの優先順位を決めましょう
LINE Creators Studio Android with Kotlin.
AndroidでUIテスト⾃動化 with Firebase Test
Lab
・Firebase test labのroboテストから使ってみてください
・テストコードなしで動きます
・いつも同じフローでテストしてくれます
・Edittextなどに任意のテキストを⼊れることも可能です
・テストの様⼦を画像や動画が⾒ることもできます
テストコード書く時間なんてないよ、、
LINE Creators Studio Android with Kotlin.
⽬指そう!バグのないアプリ!
(実現出来るとは⾔っていない)
発表は以上となります。
ご清聴ありがとうございました。
LINE Creators Studio Android with Kotlin.
Thank you.
Ad

Recommended

LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
LINE Corporation
 
LIFFとLINE SDKの昨今
LIFFとLINE SDKの昨今
LINE Corporation
 
もっと良くなるHTMLアプリケーション設計と実装
もっと良くなるHTMLアプリケーション設計と実装
Mitsue-Links
 
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
 
マイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語について
sz yudppp
 
The Fastest Possible Way to Develop an Interactive App
The Fastest Possible Way to Develop an Interactive App
LINE Corporation
 
Vtecxlt20151201
Vtecxlt20151201
Shinichiro Takezaki
 
Onsen UI 2.0とUIライブラリの未来
Onsen UI 2.0とUIライブラリの未来
アシアル株式会社
 
building HTML hybrid app
 with ionic
building HTML hybrid app
 with ionic
Nakano Kyohei
 
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Shin Ogata
 
いま考えられる限り最も速く対話型アプリを開発する方法
いま考えられる限り最も速く対話型アプリを開発する方法
Kenichiro Nakamura
 
CordovaでAngularJSアプリ開発
CordovaでAngularJSアプリ開発
アシアル株式会社
 
HTML5ハイブリッドアプリ開発のベストプラクティス
HTML5ハイブリッドアプリ開発のベストプラクティス
アシアル株式会社
 
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
Shinichiro Yoshida
 
CodePushとReact Nativeで緊急OTAリリース!了解!
CodePushとReact Nativeで緊急OTAリリース!了解!
Masayuki Iwai
 
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
Hikaru Ito
 
大なごやJS vol.6 Titanium Mobile と Alloy の解説をするよ!
大なごやJS vol.6 Titanium Mobile と Alloy の解説をするよ!
Mori Shingo
 
Androidでもサクサク動くHTML5ハイブリッドアプリの作り⽅
Androidでもサクサク動くHTML5ハイブリッドアプリの作り⽅
アシアル株式会社
 
エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発
エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発
日本Cordovaユーザー会
 
アプリエンジニアのデザインに対するこころがまえの話
アプリエンジニアのデザインに対するこころがまえの話
Shingo Sato
 
はやわかりHTML5ハイブリッドアプリ開発事情
はやわかりHTML5ハイブリッドアプリ開発事情
Monaca
 
smartFXにおけるApache Cordovaの活用について
smartFXにおけるApache Cordovaの活用について
剛志 森田
 
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
Kazuaki Hidaka
 
Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発
Osamu Monoe
 
nanapiにおける継続的インテグレーション
nanapiにおける継続的インテグレーション
晃 遠山
 
Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①
Tomokatsu Iguchi
 
Sf素人が2週間でアプリケーションビルダーに挑戦してみた
Sf素人が2週間でアプリケーションビルダーに挑戦してみた
政雄 金森
 
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
LINE Corporation
 
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
bitbank, Inc. Tokyo, Japan
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
Takashi Okawa
 

More Related Content

What's hot (20)

building HTML hybrid app
 with ionic
building HTML hybrid app
 with ionic
Nakano Kyohei
 
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Shin Ogata
 
いま考えられる限り最も速く対話型アプリを開発する方法
いま考えられる限り最も速く対話型アプリを開発する方法
Kenichiro Nakamura
 
CordovaでAngularJSアプリ開発
CordovaでAngularJSアプリ開発
アシアル株式会社
 
HTML5ハイブリッドアプリ開発のベストプラクティス
HTML5ハイブリッドアプリ開発のベストプラクティス
アシアル株式会社
 
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
Shinichiro Yoshida
 
CodePushとReact Nativeで緊急OTAリリース!了解!
CodePushとReact Nativeで緊急OTAリリース!了解!
Masayuki Iwai
 
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
Hikaru Ito
 
大なごやJS vol.6 Titanium Mobile と Alloy の解説をするよ!
大なごやJS vol.6 Titanium Mobile と Alloy の解説をするよ!
Mori Shingo
 
Androidでもサクサク動くHTML5ハイブリッドアプリの作り⽅
Androidでもサクサク動くHTML5ハイブリッドアプリの作り⽅
アシアル株式会社
 
エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発
エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発
日本Cordovaユーザー会
 
アプリエンジニアのデザインに対するこころがまえの話
アプリエンジニアのデザインに対するこころがまえの話
Shingo Sato
 
はやわかりHTML5ハイブリッドアプリ開発事情
はやわかりHTML5ハイブリッドアプリ開発事情
Monaca
 
smartFXにおけるApache Cordovaの活用について
smartFXにおけるApache Cordovaの活用について
剛志 森田
 
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
Kazuaki Hidaka
 
Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発
Osamu Monoe
 
nanapiにおける継続的インテグレーション
nanapiにおける継続的インテグレーション
晃 遠山
 
Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①
Tomokatsu Iguchi
 
Sf素人が2週間でアプリケーションビルダーに挑戦してみた
Sf素人が2週間でアプリケーションビルダーに挑戦してみた
政雄 金森
 
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
LINE Corporation
 
building HTML hybrid app
 with ionic
building HTML hybrid app
 with ionic
Nakano Kyohei
 
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Shin Ogata
 
いま考えられる限り最も速く対話型アプリを開発する方法
いま考えられる限り最も速く対話型アプリを開発する方法
Kenichiro Nakamura
 
HTML5ハイブリッドアプリ開発のベストプラクティス
HTML5ハイブリッドアプリ開発のベストプラクティス
アシアル株式会社
 
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
Shinichiro Yoshida
 
CodePushとReact Nativeで緊急OTAリリース!了解!
CodePushとReact Nativeで緊急OTAリリース!了解!
Masayuki Iwai
 
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
Hikaru Ito
 
大なごやJS vol.6 Titanium Mobile と Alloy の解説をするよ!
大なごやJS vol.6 Titanium Mobile と Alloy の解説をするよ!
Mori Shingo
 
Androidでもサクサク動くHTML5ハイブリッドアプリの作り⽅
Androidでもサクサク動くHTML5ハイブリッドアプリの作り⽅
アシアル株式会社
 
エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発
エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発
日本Cordovaユーザー会
 
アプリエンジニアのデザインに対するこころがまえの話
アプリエンジニアのデザインに対するこころがまえの話
Shingo Sato
 
はやわかりHTML5ハイブリッドアプリ開発事情
はやわかりHTML5ハイブリッドアプリ開発事情
Monaca
 
smartFXにおけるApache Cordovaの活用について
smartFXにおけるApache Cordovaの活用について
剛志 森田
 
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
Kazuaki Hidaka
 
Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発
Osamu Monoe
 
nanapiにおける継続的インテグレーション
nanapiにおける継続的インテグレーション
晃 遠山
 
Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①
Tomokatsu Iguchi
 
Sf素人が2週間でアプリケーションビルダーに挑戦してみた
Sf素人が2週間でアプリケーションビルダーに挑戦してみた
政雄 金森
 
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
LINE Corporation
 

Similar to Line Creators Studio Android With Kotlin (20)

ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
bitbank, Inc. Tokyo, Japan
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
Takashi Okawa
 
新しい Visual Studio & .NET と新時代のアーキテクチャ
新しい Visual Studio & .NET と新時代のアーキテクチャ
慎一 古賀
 
Android Studioの魅力
Android Studioの魅力
Keiji Ariyama
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
 
Azure IoT Edge - EdgeAI #5
Azure IoT Edge - EdgeAI #5
Jingun Jung
 
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
Yasuhiko Yamamoto
 
スマ研第2回レポート
スマ研第2回レポート
Shinpei Niiyama
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
Akira Inoue
 
Metroアプリケーションのwin8/wp7の効率的ソース運用を考える
Metroアプリケーションのwin8/wp7の効率的ソース運用を考える
Takahito Sugishita
 
Efsta cod2012 master_for_slideshare
Efsta cod2012 master_for_slideshare
Takahito Sugishita
 
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
慎一 古賀
 
~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション
~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション
Akira Inoue
 
IBM Blluemix を Pepper とつないでみよう
IBM Blluemix を Pepper とつないでみよう
Takuji Kawata
 
Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会
mokelab
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
 
「Camelog」Android開発秘話
「Camelog」Android開発秘話
Shoya Tsukada
 
Klocworkのご紹介
Klocworkのご紹介
Masaru Horioka
 
ABS2015 のセッション紹介
ABS2015 のセッション紹介
l_b__
 
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
bitbank, Inc. Tokyo, Japan
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
Takashi Okawa
 
新しい Visual Studio & .NET と新時代のアーキテクチャ
新しい Visual Studio & .NET と新時代のアーキテクチャ
慎一 古賀
 
Android Studioの魅力
Android Studioの魅力
Keiji Ariyama
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
 
Azure IoT Edge - EdgeAI #5
Azure IoT Edge - EdgeAI #5
Jingun Jung
 
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
Yasuhiko Yamamoto
 
スマ研第2回レポート
スマ研第2回レポート
Shinpei Niiyama
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
Akira Inoue
 
Metroアプリケーションのwin8/wp7の効率的ソース運用を考える
Metroアプリケーションのwin8/wp7の効率的ソース運用を考える
Takahito Sugishita
 
Efsta cod2012 master_for_slideshare
Efsta cod2012 master_for_slideshare
Takahito Sugishita
 
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
慎一 古賀
 
~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション
~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション
Akira Inoue
 
IBM Blluemix を Pepper とつないでみよう
IBM Blluemix を Pepper とつないでみよう
Takuji Kawata
 
Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会
mokelab
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
 
「Camelog」Android開発秘話
「Camelog」Android開発秘話
Shoya Tsukada
 
ABS2015 のセッション紹介
ABS2015 のセッション紹介
l_b__
 
Ad

More from LINE Corporation (20)

JJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LT
LINE Corporation
 
Reduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin Coroutines
LINE Corporation
 
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
LINE Corporation
 
Use Kotlin scripts and Clova SDK to build your Clova extension
Use Kotlin scripts and Clova SDK to build your Clova extension
LINE Corporation
 
The Magic of LINE 購物 Testing
The Magic of LINE 購物 Testing
LINE Corporation
 
GA Test Automation
GA Test Automation
LINE Corporation
 
UI Automation Test with JUnit5
UI Automation Test with JUnit5
LINE Corporation
 
Feature Detection for UI Testing
Feature Detection for UI Testing
LINE Corporation
 
LINE 新星計劃介紹與新創團隊分享
LINE 新星計劃介紹與新創團隊分享
LINE Corporation
 
​LINE 技術合作夥伴與應用分享
​LINE 技術合作夥伴與應用分享
LINE Corporation
 
LINE 開發者社群經營與技術推廣
LINE 開發者社群經營與技術推廣
LINE Corporation
 
日本開發者大會短講分享
日本開發者大會短講分享
LINE Corporation
 
LINE Chatbot - 活動報名報到設計分享
LINE Chatbot - 活動報名報到設計分享
LINE Corporation
 
在 LINE 私有雲中使用 Managed Kubernetes
在 LINE 私有雲中使用 Managed Kubernetes
LINE Corporation
 
LINE TODAY高效率的敏捷測試開發技巧
LINE TODAY高效率的敏捷測試開發技巧
LINE Corporation
 
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE Corporation
 
LINE Things - LINE IoT平台新技術分享
LINE Things - LINE IoT平台新技術分享
LINE Corporation
 
LINE Pay - 一卡通支付新體驗
LINE Pay - 一卡通支付新體驗
LINE Corporation
 
LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Corporation
 
Keynote - ​LINE 的技術策略佈局與跨國產品開發
Keynote - ​LINE 的技術策略佈局與跨國產品開發
LINE Corporation
 
JJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LT
LINE Corporation
 
Reduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin Coroutines
LINE Corporation
 
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
LINE Corporation
 
Use Kotlin scripts and Clova SDK to build your Clova extension
Use Kotlin scripts and Clova SDK to build your Clova extension
LINE Corporation
 
The Magic of LINE 購物 Testing
The Magic of LINE 購物 Testing
LINE Corporation
 
UI Automation Test with JUnit5
UI Automation Test with JUnit5
LINE Corporation
 
Feature Detection for UI Testing
Feature Detection for UI Testing
LINE Corporation
 
LINE 新星計劃介紹與新創團隊分享
LINE 新星計劃介紹與新創團隊分享
LINE Corporation
 
​LINE 技術合作夥伴與應用分享
​LINE 技術合作夥伴與應用分享
LINE Corporation
 
LINE 開發者社群經營與技術推廣
LINE 開發者社群經營與技術推廣
LINE Corporation
 
日本開發者大會短講分享
日本開發者大會短講分享
LINE Corporation
 
LINE Chatbot - 活動報名報到設計分享
LINE Chatbot - 活動報名報到設計分享
LINE Corporation
 
在 LINE 私有雲中使用 Managed Kubernetes
在 LINE 私有雲中使用 Managed Kubernetes
LINE Corporation
 
LINE TODAY高效率的敏捷測試開發技巧
LINE TODAY高效率的敏捷測試開發技巧
LINE Corporation
 
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE Corporation
 
LINE Things - LINE IoT平台新技術分享
LINE Things - LINE IoT平台新技術分享
LINE Corporation
 
LINE Pay - 一卡通支付新體驗
LINE Pay - 一卡通支付新體驗
LINE Corporation
 
LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Corporation
 
Keynote - ​LINE 的技術策略佈局與跨國產品開發
Keynote - ​LINE 的技術策略佈局與跨國產品開發
LINE Corporation
 
Ad

Recently uploaded (7)

AI技術共有会2025-06-05_DeepResearchの理解と実践.pdf
AI技術共有会2025-06-05_DeepResearchの理解と実践.pdf
Takuma Oda
 
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
 
色について.pptx .
色について.pptx .
iPride Co., Ltd.
 
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
 
やってみた!OpenAI Function Calling 入門 .
やってみた!OpenAI Function Calling 入門 .
iPride Co., Ltd.
 
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
 
AI技術共有会2025-06-05_DeepResearchの理解と実践.pdf
AI技術共有会2025-06-05_DeepResearchの理解と実践.pdf
Takuma Oda
 
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
 
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
 
やってみた!OpenAI Function Calling 入門 .
やってみた!OpenAI Function Calling 入門 .
iPride Co., Ltd.
 
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
 

Line Creators Studio Android With Kotlin

  • 2. ⾃⼰紹介 李 性賢 LINE Fukuoka 株式会社 開発1チーム所属 LEE SUNGHYUN(Dave)
  • 3. LINE Creators Studio Android with Kotlin. LINE Creators Studio Android with Kotlin. ・LINE Creators Studio Android with Kotlin ・LINE Creators Studio Androidのアプリ設計 ・AndroidでUIテスト⾃動化 with Firebase Test Lab ⽬次
  • 4. LINE Creators Studio Android with Kotlin. 技術概要 ⾔語:Kotlin Layout:Anko Network:Retrofit2, OkHttp3 DB:Realm Reactive Programming:RxJava1, RxBinding, RxLifecycle Dependecy Injection:Dagger2 Test:Espresso, Mockito-Kotlin
  • 5. LINE Creators Studio Android with Kotlin. Why Kotlin? null safe lambda extension property 型推論 anko 100% java 相互運用性
  • 6. LINE Creators Studio Android with Kotlin. Why Kotlin? ・チームの開発⽣産性を向上させたい ・メンテしやすいコードを書きたい ・NPEから発⽣するバグを減らしたい 背景
  • 7. LINE Creators Studio Android with Kotlin. Null Safe ・NPEによるバグ発⽣率↓ ・annotationを作成するコスト↓ ・メンテしやすさ↑ No more needed @NonNull, @Nullable annotations in kotlin.
  • 8. LINE Creators Studio Android with Kotlin. Lambda button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.v(TAG, "clicked"); } }); Java
  • 9. LINE Creators Studio Android with Kotlin. Lambda button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.v(TAG, "clicked"); } }); button.setOnClickListener { Log.v(TAG, "clicked") } Java Kotlin
  • 10. LINE Creators Studio Android with Kotlin. Lambda button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.v(TAG, "clicked"); } }); button.setOnClickListener { Log.v(TAG, "clicked") } button.onClick { Log.v(TAG, "clicked") } Java Kotlin Kotlin with anko ・コード量↓ ・読みやすさ↑
  • 11. Extension fun View.onGlobalLayout(once: Boolean = true, init: View.() -> Unit) { val view = this viewTreeObserver.addOnGlobalLayoutListener(object : OnGlobalLayoutListener { override fun onGlobalLayout() { init() if (once) { view.viewTreeObserver.removeOnGlobalLayoutListener(this) } } }) } ViewExtension.kt LINE Creators Studio Android with Kotlin.
  • 12. Extension + Anko frameLayout { val button = button() button.onClick { // click event. } }.onGlobalLayout { // view update codes. } MainUi.kt LINE Creators Studio Android with Kotlin.
  • 13. Anko LINE Creators Studio Android with Kotlin.
  • 14. Anko ・Dialog or PopupWindowを使う ・layout.xmlに定義し、tooltip layoutをvisible, gone ・別のxmlを作り、必要に応じて動的に <include> 考えられる実装⽅法 LINE Creators Studio Android with Kotlin.
  • 15. Anko ToolTipLayout.kt fun ViewManager.toolTipLayout() = verticalLayout { gravity = Gravity.CENTER_VERTICAL textView(R.style.ToolTipDescriptionStyle) { text = "This is ToolTip Layout!" } ... // more tool tip views. } LINE Creators Studio Android with Kotlin.
  • 16. Anko ToolTipLayout.kt fun ViewManager.toolTipLayout() = verticalLayout { gravity = Gravity.CENTER_VERTICAL textView(R.style.ToolTipDescriptionStyle) { text = "This is ToolTip Layout!" } ... // more tool tip views. } frameLayout { ... // main views. if (shouldShowToolTip) { toolTipLayout() } StickerListUi.kt LINE Creators Studio Android with Kotlin.
  • 17. Anko ・Custom Layoutを作ったり使ったりすることが簡単 ・Xml parsingが必要ないので早い ・Business logicとui codeを分離しやすい Pros LINE Creators Studio Android with Kotlin.
  • 18. Anko ・Custom Layoutを作ったり使ったりすることが簡単 ・Xml parsingが必要ないので早い ・Business logicとui codeを分離しやすい Pros ・DSLなので学習コストがある ・data binding libaryをサポートしてない ・constraintlayoutをサポートしてない Cons LINE Creators Studio Android with Kotlin.
  • 19. Anko Preview (Android Studio 2.4+) LINE Creators Studio Android with Kotlin.
  • 20. LINE Creators Studio Androidのアプリ設計 ButtonのClick Eventを変更しましょう LINE Creators Studio Android with Kotlin.
  • 21. LINE Creators Studio Androidのアプリ設計 1. 変更したい画⾯のactivityを探す ButtonのClick Eventを変更しましょう LINE Creators Studio Android with Kotlin.
  • 22. LINE Creators Studio Androidのアプリ設計 1.変更したい画⾯のactivityを探す 2.Activityからlayout xmlを探してxmlを確認する ButtonのClick Eventを変更しましょう LINE Creators Studio Android with Kotlin.
  • 23. LINE Creators Studio Androidのアプリ設計 1.変更したい画⾯のactivityを探す 2.Activityからlayout xmlを探してxmlを確認する 3.変更したいボタンのidを覚えてactivityに戻る ButtonのClick Eventを変更しましょう LINE Creators Studio Android with Kotlin.
  • 24. LINE Creators Studio Android with Kotlin. LINE Creators Studio Androidのアプリ設計 1.変更したい画⾯のactivityを探す 2.Activityからlayout xmlを探してxmlを確認する 3.変更したいボタンのidを覚えてactivityに戻る 4.Activityで覚えたidとbindingされてるviewを探す ButtonのClick Eventを変更しましょう
  • 25. LINE Creators Studio Android with Kotlin. LINE Creators Studio Androidのアプリ設計 1.変更したい画⾯のactivityを探す 2.Activityからlayout xmlを探してxmlを確認する 3.変更したいボタンのidを覚えてactivityに戻る 4.Activityで覚えたidとbindingされてるviewを探す 5.Viewのclick listenerを探してeventを変更する ButtonのClick Eventを変更しましょう
  • 26. LINE Creators Studio Androidのアプリ設計 1.変更したい画⾯のactivityを探す ButtonのClick Eventを変更しましょう with anko LINE Creators Studio Android with Kotlin.
  • 27. LINE Creators Studio Androidのアプリ設計 1.変更したい画⾯のactivityを探す 2.Activityからui componentを探す ButtonのClick Eventを変更しましょう with anko LINE Creators Studio Android with Kotlin.
  • 28. LINE Creators Studio Androidのアプリ設計 1.変更したい画⾯のActivityを探す 2.Activityからui componentを探す 3.Ui componentの中でviewを探し、click eventを変更する (click listenerはviewと⼀緒にあるので探す必要はありません) ButtonのClick Eventを変更しましょう with anko LINE Creators Studio Android with Kotlin.
  • 29. Activity / Fragment LINE Creators Studio Android with Kotlin. LINE Creators Studio Androidのアプリ設計
  • 30. Ui Component Activity / Fragment LINE Creators Studio Android with Kotlin. LINE Creators Studio Androidのアプリ設計
  • 31. Ui Component Activity / Fragment LINE Creators Studio Android with Kotlin. LINE Creators Studio Androidのアプリ設計
  • 32. Ui Component Activity / Fragment Repository Realm LINE Creators Studio Android with Kotlin. LINE Creators Studio Androidのアプリ設計
  • 33. Ui Component Activity / Fragment Repository Realm LINE Creators Studio Android with Kotlin. LINE Creators Studio Androidのアプリ設計
  • 34. User interaction Ui Component Activity / Fragment Repository Realm LINE Creators Studio Android with Kotlin. LINE Creators Studio Androidのアプリ設計
  • 35. var profileLayout : ProfileLayout frameLayout { button { text = "save button" }.onClick { onwer.save(profile) } profileLayout = profileLayout() } fun updateLayout(profile: Profile) { profileLayout.set(profile) } UserProfileUi.kt LINE Creators Studio Android with Kotlin. LINE Creators Studio Androidのアプリ設計
  • 36. var profileLayout : ProfileLayout frameLayout { button { text = "save button" }.onClick { onwer.save(profile) } profileLayout = profileLayout() } fun updateLayout(profile: Profile) { profileLayout.set(profile) } UserProfileUi.kt var ui : UserProfileUi fun save(profile: Profile) { profileRepository.save(profile) } fun load() { profileRepository.load() .subscribe(ui.updateLayout(it)) } UserProfileActivity.kt LINE Creators Studio Android with Kotlin. LINE Creators Studio Androidのアプリ設計
  • 37. ・Layout, user interaction -> ui component ・Activity, fragment -> lifecycle管理, 窓⼝役割 ・Business logic -> repository ここまでのまとめ LINE Creators Studio Android with Kotlin. LINE Creators Studio Androidのアプリ設計
  • 38. AndroidでUIテスト⾃動化 with Firebase Test Lab ・ LINE Creators Studio AndroidはAndroid 4.1からサポートしています ・端末種類やOS version依存のbugが多い ・たくさんの端末を⼿動で確認するのはコストがかかりすぎる 背景 LINE Creators Studio Android with Kotlin.
  • 39. AndroidでUIテスト⾃動化 with Firebase Test Lab ・テストコードを書いといたら(あるいは書かない) やりたいこと LINE Creators Studio Android with Kotlin.
  • 40. AndroidでUIテスト⾃動化 with Firebase Test Lab ・テストコードを書いといたら(あるいは書かない) ・コードの変更があった時に やりたいこと LINE Creators Studio Android with Kotlin.
  • 41. AndroidでUIテスト⾃動化 with Firebase Test Lab ・テストコードを書いといたら(あるいは書かない) ・コードの変更があった時に ・いろんな端末とOSで やりたいこと LINE Creators Studio Android with Kotlin.
  • 42. AndroidでUIテスト⾃動化 with Firebase Test Lab ・テストコードを書いといたら(あるいは書かない) ・コードの変更があった時に ・いろんな端末とOSで ・⾃動的にテストして欲しい!!! やりたいこと LINE Creators Studio Android with Kotlin.
  • 43. AndroidでUIテスト⾃動化 with Firebase Test Lab ・テストコードを書いといたら(あるいは書かない)- espressoで書く(あるいはroboテスト) やるぞ! LINE Creators Studio Android with Kotlin.
  • 44. AndroidでUIテスト⾃動化 with Firebase Test Lab ・テストコードを書いといたら(あるいは書かない)- espressoで書く(あるいはroboテスト) ・コードの変更があった時に - Githubに新しいPull Requestが来たら やるぞ! LINE Creators Studio Android with Kotlin.
  • 45. AndroidでUIテスト⾃動化 with Firebase Test Lab ・テストコードを書いといたら(あるいは書かない)- espressoで書く(あるいはroboテスト) ・コードの変更があった時に - Githubに新しいPull Requestが来たら ・いろんな端末とOSで - ざっくり44個の端末、api level 18~26までサポート やるぞ! LINE Creators Studio Android with Kotlin.
  • 46. AndroidでUIテスト⾃動化 with Firebase Test Lab ・テストコードを書いといたら(あるいは書かない)- espressoで書く(あるいはroboテスト) ・コードの変更があった時に - Githubに新しいPull Requestが来たら ・いろんな端末とOSで - ざっくり44個の端末、api level 18~26までサポート ・⾃動的にテストしてくれてます! - Jenkinsでビルド やるぞ! LINE Creators Studio Android with Kotlin.
  • 47. AndroidでUIテスト⾃動化 with Firebase Test Lab ・正直全ての画⾯に対してUIテストを書くのは難しいと思います テストコードについて LINE Creators Studio Android with Kotlin.
  • 48. AndroidでUIテスト⾃動化 with Firebase Test Lab ・正直全ての画⾯に対してUIテストを書くのは難しいと思います ・たとえすごく頑張って全画⾯に書いたとしても画⾯の変更があったらテストコードも変更しないとい けないのでメンテコストがたくさんかかりますね テストコードについて LINE Creators Studio Android with Kotlin.
  • 49. AndroidでUIテスト⾃動化 with Firebase Test Lab テストコードの優先順位を決めましょう LINE Creators Studio Android with Kotlin.
  • 50. AndroidでUIテスト⾃動化 with Firebase Test Lab 1.お⾦にかかわる画⾯(決済画⾯や購⼊画⾯) テストコードの優先順位を決めましょう LINE Creators Studio Android with Kotlin.
  • 51. AndroidでUIテスト⾃動化 with Firebase Test Lab 1.お⾦に関わる画⾯(決済画⾯や購⼊画⾯) 2.データ(状態)によってUIが変わる画⾯ - コードの変更によってバグが発⽣する可能性が⾼いです テストコードの優先順位を決めましょう LINE Creators Studio Android with Kotlin.
  • 52. AndroidでUIテスト⾃動化 with Firebase Test Lab ・Firebase test labのroboテストから使ってみてください ・テストコードなしで動きます ・いつも同じフローでテストしてくれます ・Edittextなどに任意のテキストを⼊れることも可能です ・テストの様⼦を画像や動画が⾒ることもできます テストコード書く時間なんてないよ、、 LINE Creators Studio Android with Kotlin.