Adobe MAX 2013で行った「Architecting a PhoneGap Application」セッションをベースにADC MEETUP 07イベント用に再構成したした内容になります。
※スライドに使われたサンプルは以下のURLからダウンロードできます。
http://www.mitsue.co.jp/knowledge/resources/2013/adc_retweet07_architecting.zip
The Fastest Possible Way to Develop an Interactive AppLINE Corporation
?
Kenichiro Nakamura
SDK & Tool contributor
You might have productivity issues in development for LINE platforms, such as LINE Bot, Clova, LINE Pay. In this session, he will share best practices for interactive app development.
Optimization of sophisticated development environments like Visual Studio Code enables us to develop interactive apps faster while achieving higher precision. This session presents the demonstration of debugging that leverages LINE Simulator, Clova Simulator, which are being developed as open source, and other code editors.
※C# and Node.js will be used.
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio CodeTakashi Okawa
?
Microsoft de:code 2019 のセッション番号 DT06 にてご案内した内容の補足資料です。セッション中にお見せしていないスライドもありますので、是非ご一読くださいませ!
Visual Studio 2019 と Visual Studio Code、どちらもいいところがありますので、適材適所にて、是非ご活用いただければ幸いです!
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio CodeTakashi Okawa
?
Microsoft de:code 2019 のセッション番号 DT06 にてご案内した内容の補足資料です。セッション中にお見せしていないスライドもありますので、是非ご一読くださいませ!
Visual Studio 2019 と Visual Studio Code、どちらもいいところがありますので、適材適所にて、是非ご活用いただければ幸いです!
Windows 8と Windows Phone 7は根柢の概念は共通のMetro Style。そしてプログラミング言語も共通のものが使用できます。
とはいえ、実際にはいろいろなギャップがあり、1ソースで両環境の実現はいくつかの障害があります。
現状のギャップをデモを含めご紹介しながら、実際に効率よくソース運用するためのポイントをご説明します。
JJUG CCC 2018 Fall was held in Fukuoka on December 15th. The event featured talks about LINE KYOTO, Java, DateTimeFormatter, JavaDoc, Java generics, and LINE Growth Technology. LINE Growth Technology aims to help LINE grow through technology.
This document discusses replacing RxJava with Kotlin Coroutines for asynchronous programming. It provides an overview of RxJava and Coroutines, compares their approaches, and shows how to write asynchronous code using Coroutines instead of RxJava. It also discusses how to integrate Coroutines with Retrofit and the MVVM pattern.
Use Kotlin scripts and Clova SDK to build your Clova extensionLINE Corporation
?
The document discusses using Kotlin scripts to create a Clova client. It shows how to evaluate Kotlin code from a script using a ScriptEngine to define a Clova client configuration with launch, intent, and session ended handlers. The Clova client created in the script can then be used to handle Clova requests and responses.
LINE Shopping provides an e-commerce platform in Taiwan. It has over 9 million monthly visitors, a 40% repurchase rate, and lists over 26 million products from over 1,300 brands. The document discusses how to test the LINE Shopping platform, including unit, API, and UI tests. It also describes tools like Just-API and Pyresttest that can be used to test GraphQL and REST APIs respectively using YAML configuration files.
This document discusses automating Google Analytics (GA) testing for LINE TODAY. It proposes using Robotframework with Appium to simulate user actions in the LINE app and confirm that GA events are recorded correctly. It provides details on initializing the GA Reporting API to retrieve reports and examples of dimensions, metrics, and sample report requests. Code snippets demonstrate how to set up a service account and get credentials to access the GA Reporting API. The goal is to test new features for side effects and avoid human errors by automating the process of validating GA events.
This document provides an overview of UI automation testing with JUnit 5. It introduces the JUnit 5 framework, including its architecture, annotations, extension model, parameter resolver, and life cycle. It also discusses how to configure JUnit 5 in Gradle projects. Additionally, it briefly mentions other tools that can be used for UI testing, such as Appium, Ayachan, Ayavue, and image recognition libraries. The document aims to help people understand and get started with JUnit 5 for UI test automation.
The document summarizes a test night event held by LINE Fukuoka to discuss UI test automation. The event covered testing browser, iOS, and Android applications using Selenium for browsers and Appium for mobile. Attendees learned about template matching and feature detection techniques for UI testing, including pixel-perfect template matching versus feature detection which is scale invariant and can match elements that are 30-200% different in size. The techniques discussed were demonstrated using A-KAZE feature detection with OpenCV3 in Java.
This document proposes building a LINE app that provides a customized interface for the LINE TODAY news service using web views. It discusses three versions of the app with increasing features:
v1.0 uses customized web views for all pages except onboarding and login. v2.0 adds easier navigation with a bottom navigation bar. v3.0 enhances video with native video pages and a player. The document also discusses using Apache Kafka to build secondary indices for the app's database to enable features like retrieving a user's past posts.
This document discusses using a LINE registration chatbot for an event. The chatbot allows registration, check-in, and provides information about event activities online or offline. Users can access the chatbot through the LINE app on their mobile device or desktop website. It uses technologies like beacons, QR codes, and rich menus to enable simple registration and check-in as well as interact with information booths at the event.
This document introduces a managed Kubernetes as a service (KAAS) that provides concise summaries in 3 sentences or less that provide the high level and essential information from the document. The KAAS addresses problems with different tooling, versions, and configurations across clusters by providing a standardized Kubernetes platform. It aims to reduce operation costs and improve quality by ensuring high availability, performance optimization, and private cloud integration. The KAAS leverages Rancher for declarative operations and integrates custom controllers to enable load balancing, persistent storage, and other private cloud services within Kubernetes clusters.
This document discusses DevOps practices for software testing. It emphasizes the importance of continuous testing throughout the development lifecycle to reduce risk and ensure new features do not break existing functionality. Testing approaches like unit testing, integration testing, and automation are recommended to support faster release cycles and more agile workflows. The document concludes by advertising open roles for QA engineers.
This document discusses LINE's plans to introduce a token economy using its own cryptocurrency called LINK. It proposes that LINK can help evolve the relationship between users and services by creating a global platform not restricted by national borders. The three key aspects of the LINK ecosystem are that it will use a single token for all dApps and services, LINK tokens will be issued as rewards for contributions to the ecosystem, and LINE will offer a blockchain platform called LINK Chain to make dApp development and use more user-friendly. The goal is for LINK to facilitate a connected digital economy across LINE's various services and applications.
This document summarizes LINE Things, a platform that allows devices to connect and communicate through LINE using Bluetooth Low Energy (BLE). It discusses how LINE Things supports both online and offline devices. For offline devices, the LINE app acts as a proxy to allow communication between devices and services via BLE and web APIs. It also introduces LINE Things LIFF BLE, which allows BLE communication between devices and LIFF apps using the LIFF SDK BLE plugin. Developers can use LIFF BLE to easily build apps to read, write, and receive notifications from connected BLE devices.
1. LINE Pay is a digital wallet service that allows users to make payments and transfers between accounts without fees.
2. The service has over 17 million registered electronic payment cards.
3. Users can make transfers between LINE Pay accounts, split bills with groups of people, and pay for transportation, goods, services, and bills directly from their LINE Pay accounts.
The document summarizes new features and services released by LINE in 2018 to improve messaging experiences and build better bots and services. Key releases included Flex Messages, LIFF apps, quick replies, and video messages. It also discusses how developers can utilize social APIs, personalization, and audiences to engage and notify users.
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.
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.
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.
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.
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.
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.