SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
Android Development
at Merari 2015
Tomoaki Imai @ Roppongi.aar #2 11/17/2015
Hi I’m Tomo(今井智章)
twitter: tomoaki_imai
github: tomoima525
Launched App in US market
on September 2014
http://www.slideshare.net/tomoakiimai2/us-localization
What has
changed / kept
the same so
far?
See our changes from
KPT stand point
K eep
P roblem
T ry
What we keep doing since 2014
Issues we worked on
What we are currently working on
But before we go,
Let’s talk about our current status
How we develop now
• IDE
- Eclipse -> Android Studio
• Teams
- Tokyo & San Francisco
- 3 Android Engineers
• 1 source code, 2 product (US/JP)
• Powered by lots of external services…
See our changes from
KPT stand point
K eep
P roblem
T ry
What we keep doing since 2014
Issues we worked on
What we are currently working on
Standup meeting
• JST 11AM(PST 6PM), 10min, everyday
• Between Tokyo & San Francisco office
• The best way to track progress, issues
JP Office Hours
US Office Hours
6PM PST
11AM JST
Standup
Meeting
Updating tickets
Code reviews
Feedback
1 repository, 2 products
• Both Apps have the same UI, but some features are
different
• Package names
• Targeting single language
US -> com.mercariapp.mercari
JP -> com.kouzoh.mercari
US -> English JP -> Japanese
US JP
ex) Shipping
Set up flavors for targeted
languages
def PACKAGE_NAME = "com.kouzoh.mercari"

def PACKAGE_NAME_US = "com.mercariapp.mercari"
productFlavors {

jp {

minSdkVersion 9

applicationId PACKAGE_NAME

manifestPlaceholders = [appName:"@string/app_name"]

resConfigs "ja"

}



us {

minSdkVersion 14

applicationId PACKAGE_NAME_US

resConfigs "en"

}

}
Set up flavors for targeted
languages
def PACKAGE_NAME = "com.kouzoh.mercari"

def PACKAGE_NAME_US = "com.mercariapp.mercari"
productFlavors {

jp {

minSdkVersion 9

applicationId PACKAGE_NAME

manifestPlaceholders = [appName:"@string/app_name"]

resConfigs "ja"

}



us {

minSdkVersion 14

applicationId PACKAGE_NAME_US

resConfigs "en"

}

}
Change package name
Set up flavors for targeted
languages
def PACKAGE_NAME = "com.kouzoh.mercari"

def PACKAGE_NAME_US = "com.mercariapp.mercari"
productFlavors {

jp {

minSdkVersion 9

applicationId PACKAGE_NAME

manifestPlaceholders = [appName:"@string/app_name"]

resConfigs "ja"

}



us {

minSdkVersion 14

applicationId PACKAGE_NAME_US

resConfigs "en"

}

}
Apply targeted language
Support older SDK version
Importing a library which min SDK version is more
recent than App's min SDK version fails with an error
Error:Execution failed for task ':Tasks:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller
than version 10 declared in library /Users/tomo/Projects/mercari/
Tasks/build/intermediates/exploded-aar/com.aviary.android/aviary/
21.0.2/AndroidManifest.xml
Suggestion: use
tools:overrideLibrary=“com.aviary.android.feather.library" to force
usage
ex)
App’s min SDK -> 9
Aviary’s min SDK -> 10
Support older SDK version
Use overridelibrary marker to avoid the build error
<manifest xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:installLocation="auto">

<uses-sdk tools:overrideLibrary=“com.aviary.android.feather.library”…
See our changes from
KPT stand point
K eep
P roblem
T ry
What we keep doing since 2014
Issues we worked on
What we are currently working on
Word Translations
• Transifix was used to prevent omission of
translation
Translation
TeamEngineer
3. Translate
wordings
5. Push
string.xml
4. Pull
string.xml
2. Push
string.xml
1. Pull
string.xml
string.xml should be
updated to the latest
to avoid conflict
Word Translations
• However, too much time was taken for
changing one word
Translation
TeamEngineer
3. Translate
wordings
5. Push
string.xml
4. Pull
string.xml
2. Push
string.xml
1. Pull
string.xml
string.xml should be
updated to the latest
to avoid conflict
How we changed translation
process
• Wordings are decided on Redmine
• Created a check list to prevent omission
Translation
Team
Engineer
Push
string.xml
Product Manager
Analyzation
• External analysis tools are easy way to collect
logs and visualize data
Analyzation
• External analysis tools are easy way to collect
logs and visualize data
• On the other hand…
- Not suitable for analyzing into deeper meanings
- Data are stocked in each analysis tools
In-house Analysis platform : Pascal
• Now every logs are fully accessible from BQ
See our changes from
KPT stand point
K eep
P roblem
T ry
What we keep doing since 2014
Issues we worked on
What we are currently working on
Reducing the size of App
• Modularize functions
- Set flavor to dependencies
- Split codes by flavor
Reducing the size of App
• Look over the size of images
• Remove unused libraries, methods…
4.6MB→721KB
Reducing the size of App
• Size went down by 25%!!
16.5 MB -> 12.4 MB
• Though did not raise the install rate… :-(
In-house AB testing
• Apptimize for mobile AB Testing
• Some issues
- Can configure AB test programatically
- Segment specific users from GUI
- Analyzing data in detail was not so easy
- Not enough for complex testing including server-side
- Wanted to control A/B test from our server
In-house AB testing
{
result: "OK",
data: {
experiment_results: [
{
name: "003_buy_button_colors",
variant: 3,
metadata: { color : blue}
}
]
},
Request testing data
In-house AB testing
{
result: "OK",
data: {
experiment_results: [
{
name: "003_buy_button_colors",
variant: 3,
metadata: { color : blue}
}
]
},
Send testing result
to Pascal
ABTest.runTest(ABTestList.BUY_BUTTON.getTestName(), new ABTest.ABTestRunner() {

@Override

public void run(ABTestContent content) {

int id = content.getVariant();

switch (id) { . . .}
See our changes from
KPT stand point
K eep
P roblem
T ry
Daily standup meeting
1 source code 2 products
Changed translation flow
Developed in-house Analysis tool
Reducing the size of App
Developing in-house AB Testing tool

Contenu connexe

Tendances

Look, Ma! No servers! Serverless application development with MongoDB Stitch
Look, Ma! No servers! Serverless application development with MongoDB StitchLook, Ma! No servers! Serverless application development with MongoDB Stitch
Look, Ma! No servers! Serverless application development with MongoDB StitchLauren Hayward Schaefer
 
排隊 Paiduei App, | React Native | iOS | Android
排隊 Paiduei App, | React Native | iOS | Android排隊 Paiduei App, | React Native | iOS | Android
排隊 Paiduei App, | React Native | iOS | AndroidLiyang Zhang
 
Buck outside Valley
Buck outside ValleyBuck outside Valley
Buck outside ValleyBruno Rocha
 
Ciao: Continuous Integration for Apps on OpenStack
Ciao: Continuous Integration for Apps on OpenStackCiao: Continuous Integration for Apps on OpenStack
Ciao: Continuous Integration for Apps on OpenStackEverett Toews
 
Mobile development with React Native — one year in production
Mobile development with React Native — one year in productionMobile development with React Native — one year in production
Mobile development with React Native — one year in productionAvivi Academy
 
Unpacking Developer Experience
Unpacking Developer ExperienceUnpacking Developer Experience
Unpacking Developer ExperienceAmit Jotwani
 
Postman Webinar: Postman 101
Postman Webinar: Postman 101Postman Webinar: Postman 101
Postman Webinar: Postman 101Nikita Sharma
 
Angular TS(typescript)
Angular TS(typescript)Angular TS(typescript)
Angular TS(typescript)Ivan Stepić
 
QAAgility Presentation - Cucumber with Appium
QAAgility Presentation - Cucumber with AppiumQAAgility Presentation - Cucumber with Appium
QAAgility Presentation - Cucumber with AppiumQAAgility Technologies
 
An Introduction to Appium Desktop
An Introduction to Appium DesktopAn Introduction to Appium Desktop
An Introduction to Appium DesktopSauce Labs
 
OpenAPI development with Python
OpenAPI development with PythonOpenAPI development with Python
OpenAPI development with PythonTakuro Wada
 
Dynamic bpm design by doing lightning talk
Dynamic bpm design by doing lightning talkDynamic bpm design by doing lightning talk
Dynamic bpm design by doing lightning talkITD Systems
 
ng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshopng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshoptjvantoll
 
Enterprise E-Commerce Webinar #3: Bringing Your API to Market
Enterprise E-Commerce Webinar #3: Bringing Your API to MarketEnterprise E-Commerce Webinar #3: Bringing Your API to Market
Enterprise E-Commerce Webinar #3: Bringing Your API to MarketNikita Sharma
 
I Love APIs - Oct 2015
I Love APIs - Oct 2015I Love APIs - Oct 2015
I Love APIs - Oct 2015Mike McNeil
 
Optimize your delivery and quality with the right release methodology and too...
Optimize your delivery and quality with the right release methodology and too...Optimize your delivery and quality with the right release methodology and too...
Optimize your delivery and quality with the right release methodology and too...DroidConTLV
 
Get Your Node.js API Swaggering with OpenAPI Spec
Get Your Node.js API Swaggering with OpenAPI SpecGet Your Node.js API Swaggering with OpenAPI Spec
Get Your Node.js API Swaggering with OpenAPI SpecAdam Paxton
 

Tendances (20)

Look, Ma! No servers! Serverless application development with MongoDB Stitch
Look, Ma! No servers! Serverless application development with MongoDB StitchLook, Ma! No servers! Serverless application development with MongoDB Stitch
Look, Ma! No servers! Serverless application development with MongoDB Stitch
 
排隊 Paiduei App, | React Native | iOS | Android
排隊 Paiduei App, | React Native | iOS | Android排隊 Paiduei App, | React Native | iOS | Android
排隊 Paiduei App, | React Native | iOS | Android
 
Buck outside Valley
Buck outside ValleyBuck outside Valley
Buck outside Valley
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Ciao: Continuous Integration for Apps on OpenStack
Ciao: Continuous Integration for Apps on OpenStackCiao: Continuous Integration for Apps on OpenStack
Ciao: Continuous Integration for Apps on OpenStack
 
Mobile development with React Native — one year in production
Mobile development with React Native — one year in productionMobile development with React Native — one year in production
Mobile development with React Native — one year in production
 
Unpacking Developer Experience
Unpacking Developer ExperienceUnpacking Developer Experience
Unpacking Developer Experience
 
Postman Webinar: Postman 101
Postman Webinar: Postman 101Postman Webinar: Postman 101
Postman Webinar: Postman 101
 
Angular TS(typescript)
Angular TS(typescript)Angular TS(typescript)
Angular TS(typescript)
 
QAAgility Presentation - Cucumber with Appium
QAAgility Presentation - Cucumber with AppiumQAAgility Presentation - Cucumber with Appium
QAAgility Presentation - Cucumber with Appium
 
An Introduction to Appium Desktop
An Introduction to Appium DesktopAn Introduction to Appium Desktop
An Introduction to Appium Desktop
 
OpenAPI development with Python
OpenAPI development with PythonOpenAPI development with Python
OpenAPI development with Python
 
Dynamic bpm design by doing lightning talk
Dynamic bpm design by doing lightning talkDynamic bpm design by doing lightning talk
Dynamic bpm design by doing lightning talk
 
ng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshopng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshop
 
Enterprise E-Commerce Webinar #3: Bringing Your API to Market
Enterprise E-Commerce Webinar #3: Bringing Your API to MarketEnterprise E-Commerce Webinar #3: Bringing Your API to Market
Enterprise E-Commerce Webinar #3: Bringing Your API to Market
 
I Love APIs - Oct 2015
I Love APIs - Oct 2015I Love APIs - Oct 2015
I Love APIs - Oct 2015
 
Api First Design
Api First DesignApi First Design
Api First Design
 
Optimize your delivery and quality with the right release methodology and too...
Optimize your delivery and quality with the right release methodology and too...Optimize your delivery and quality with the right release methodology and too...
Optimize your delivery and quality with the right release methodology and too...
 
Jenkins Reviewbot
Jenkins ReviewbotJenkins Reviewbot
Jenkins Reviewbot
 
Get Your Node.js API Swaggering with OpenAPI Spec
Get Your Node.js API Swaggering with OpenAPI SpecGet Your Node.js API Swaggering with OpenAPI Spec
Get Your Node.js API Swaggering with OpenAPI Spec
 

En vedette

Debot android debugging library
Debot android debugging libraryDebot android debugging library
Debot android debugging libraryTomoaki Imai
 
Tips for better CI on Android
Tips for better CI on AndroidTips for better CI on Android
Tips for better CI on AndroidTomoaki Imai
 
US進出でのAndroid開発inメルカリ Mercari US App Development
US進出でのAndroid開発inメルカリ Mercari US App Development US進出でのAndroid開発inメルカリ Mercari US App Development
US進出でのAndroid開発inメルカリ Mercari US App Development Tomoaki Imai
 
Sleep Hacks: How to Sleep Better
Sleep Hacks: How to Sleep BetterSleep Hacks: How to Sleep Better
Sleep Hacks: How to Sleep BetterScott Britton
 
The power of digital assessment
The power of digital assessmentThe power of digital assessment
The power of digital assessmentJay Ashcroft
 
What Happens at School Stays on YouTube
What Happens at School Stays on YouTubeWhat Happens at School Stays on YouTube
What Happens at School Stays on YouTubePaul Brown
 
What I learned about communication in Sanfrancisco
What I learned about communication in SanfranciscoWhat I learned about communication in Sanfrancisco
What I learned about communication in SanfranciscoTomoaki Imai
 
The Creative Classroom
The Creative ClassroomThe Creative Classroom
The Creative ClassroomJohn Spencer
 
Android cleanarchitecture
Android cleanarchitectureAndroid cleanarchitecture
Android cleanarchitectureTomoaki Imai
 
Introducing Cardio
Introducing CardioIntroducing Cardio
Introducing CardioYusuke Kita
 
例の縛るやつ(Data binding)
例の縛るやつ(Data binding)例の縛るやつ(Data binding)
例の縛るやつ(Data binding)shinnosuke kugimiya
 
Developing better debug_components
Developing better debug_componentsDeveloping better debug_components
Developing better debug_componentsTomoaki Imai
 
ログ管理でウキウキAndroid Life (Log Management in Android)
ログ管理でウキウキAndroid Life (Log Management in Android)ログ管理でウキウキAndroid Life (Log Management in Android)
ログ管理でウキウキAndroid Life (Log Management in Android)Tomoaki Imai
 
ユーザーを待たせないためにできること
ユーザーを待たせないためにできることユーザーを待たせないためにできること
ユーザーを待たせないためにできることTomoaki Imai
 
-英文校正エナゴが教える- ジャーナル採択率を高めるには?
-英文校正エナゴが教える- ジャーナル採択率を高めるには?-英文校正エナゴが教える- ジャーナル採択率を高めるには?
-英文校正エナゴが教える- ジャーナル採択率を高めるには?英文校正エナゴ
 
Development at Mercari
Development at MercariDevelopment at Mercari
Development at MercariTomoaki Imai
 
これからの設計の話をしよう
これからの設計の話をしようこれからの設計の話をしよう
これからの設計の話をしようshinnosuke kugimiya
 

En vedette (20)

Debot android debugging library
Debot android debugging libraryDebot android debugging library
Debot android debugging library
 
Tips for better CI on Android
Tips for better CI on AndroidTips for better CI on Android
Tips for better CI on Android
 
US進出でのAndroid開発inメルカリ Mercari US App Development
US進出でのAndroid開発inメルカリ Mercari US App Development US進出でのAndroid開発inメルカリ Mercari US App Development
US進出でのAndroid開発inメルカリ Mercari US App Development
 
Sleep Hacks: How to Sleep Better
Sleep Hacks: How to Sleep BetterSleep Hacks: How to Sleep Better
Sleep Hacks: How to Sleep Better
 
The power of digital assessment
The power of digital assessmentThe power of digital assessment
The power of digital assessment
 
What Happens at School Stays on YouTube
What Happens at School Stays on YouTubeWhat Happens at School Stays on YouTube
What Happens at School Stays on YouTube
 
What I learned about communication in Sanfrancisco
What I learned about communication in SanfranciscoWhat I learned about communication in Sanfrancisco
What I learned about communication in Sanfrancisco
 
The Creative Classroom
The Creative ClassroomThe Creative Classroom
The Creative Classroom
 
Android cleanarchitecture
Android cleanarchitectureAndroid cleanarchitecture
Android cleanarchitecture
 
Android Architecture
Android ArchitectureAndroid Architecture
Android Architecture
 
Introducing Cardio
Introducing CardioIntroducing Cardio
Introducing Cardio
 
例の縛るやつ(Data binding)
例の縛るやつ(Data binding)例の縛るやつ(Data binding)
例の縛るやつ(Data binding)
 
Developing better debug_components
Developing better debug_componentsDeveloping better debug_components
Developing better debug_components
 
ログ管理でウキウキAndroid Life (Log Management in Android)
ログ管理でウキウキAndroid Life (Log Management in Android)ログ管理でウキウキAndroid Life (Log Management in Android)
ログ管理でウキウキAndroid Life (Log Management in Android)
 
ユーザーを待たせないためにできること
ユーザーを待たせないためにできることユーザーを待たせないためにできること
ユーザーを待たせないためにできること
 
bacteriophage
bacteriophage bacteriophage
bacteriophage
 
Coordinator Layout Behavior
Coordinator Layout BehaviorCoordinator Layout Behavior
Coordinator Layout Behavior
 
-英文校正エナゴが教える- ジャーナル採択率を高めるには?
-英文校正エナゴが教える- ジャーナル採択率を高めるには?-英文校正エナゴが教える- ジャーナル採択率を高めるには?
-英文校正エナゴが教える- ジャーナル採択率を高めるには?
 
Development at Mercari
Development at MercariDevelopment at Mercari
Development at Mercari
 
これからの設計の話をしよう
これからの設計の話をしようこれからの設計の話をしよう
これからの設計の話をしよう
 

Similaire à Android development at mercari 2015

INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...Heiko Voigt
 
GoPro, Inc. Case study: Dive into the details of our web applications
GoPro, Inc. Case study: Dive into the details of our web applicationsGoPro, Inc. Case study: Dive into the details of our web applications
GoPro, Inc. Case study: Dive into the details of our web applicationsAndrew Maxwell
 
Droidcon thessaloniki 2015
Droidcon thessaloniki 2015Droidcon thessaloniki 2015
Droidcon thessaloniki 2015Raymond Chenon
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsMichael Lihs
 
Go Pro, Inc. Case Study: Dive into the details of our node.js applications
Go Pro, Inc. Case Study: Dive into the details of our node.js applicationsGo Pro, Inc. Case Study: Dive into the details of our node.js applications
Go Pro, Inc. Case Study: Dive into the details of our node.js applicationsAndrew Maxwell
 
Orchestrate Your End-to-end Mainframe Application Release Pipeline
Orchestrate Your End-to-end Mainframe Application Release PipelineOrchestrate Your End-to-end Mainframe Application Release Pipeline
Orchestrate Your End-to-end Mainframe Application Release PipelineDevOps.com
 
Nitin_updated_Profile
Nitin_updated_ProfileNitin_updated_Profile
Nitin_updated_ProfileNitin Saxena
 
4 Phases followed by the Android Application Development Company.pdf
4 Phases followed by the Android Application Development Company.pdf4 Phases followed by the Android Application Development Company.pdf
4 Phases followed by the Android Application Development Company.pdfJohn William
 
CSC 404 | Final Presentation
CSC 404 | Final PresentationCSC 404 | Final Presentation
CSC 404 | Final PresentationFrances Coronel
 
Webinar on How to use MyAppConverter
Webinar on How to use  MyAppConverterWebinar on How to use  MyAppConverter
Webinar on How to use MyAppConverterJaoued Ahmed
 
How to feature flag and run experiments in iOS and Android
How to feature flag and run experiments in iOS and AndroidHow to feature flag and run experiments in iOS and Android
How to feature flag and run experiments in iOS and AndroidOptimizely
 
Jetpack compose session1 (1).pptx
Jetpack compose session1 (1).pptxJetpack compose session1 (1).pptx
Jetpack compose session1 (1).pptxShubhamJogdand8
 
Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"GoIT
 
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysDevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysAndreas Grabner
 

Similaire à Android development at mercari 2015 (20)

Sam segal resume
Sam segal resumeSam segal resume
Sam segal resume
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
 
GoPro, Inc. Case study: Dive into the details of our web applications
GoPro, Inc. Case study: Dive into the details of our web applicationsGoPro, Inc. Case study: Dive into the details of our web applications
GoPro, Inc. Case study: Dive into the details of our web applications
 
Droidcon thessaloniki 2015
Droidcon thessaloniki 2015Droidcon thessaloniki 2015
Droidcon thessaloniki 2015
 
SamSegalResume
SamSegalResumeSamSegalResume
SamSegalResume
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
 
Gowrisankar_Resume
Gowrisankar_ResumeGowrisankar_Resume
Gowrisankar_Resume
 
Go Pro, Inc. Case Study: Dive into the details of our node.js applications
Go Pro, Inc. Case Study: Dive into the details of our node.js applicationsGo Pro, Inc. Case Study: Dive into the details of our node.js applications
Go Pro, Inc. Case Study: Dive into the details of our node.js applications
 
Orchestrate Your End-to-end Mainframe Application Release Pipeline
Orchestrate Your End-to-end Mainframe Application Release PipelineOrchestrate Your End-to-end Mainframe Application Release Pipeline
Orchestrate Your End-to-end Mainframe Application Release Pipeline
 
Nitin_updated_Profile
Nitin_updated_ProfileNitin_updated_Profile
Nitin_updated_Profile
 
4 Phases followed by the Android Application Development Company.pdf
4 Phases followed by the Android Application Development Company.pdf4 Phases followed by the Android Application Development Company.pdf
4 Phases followed by the Android Application Development Company.pdf
 
CSC 404 | Final Presentation
CSC 404 | Final PresentationCSC 404 | Final Presentation
CSC 404 | Final Presentation
 
Webinar on How to use MyAppConverter
Webinar on How to use  MyAppConverterWebinar on How to use  MyAppConverter
Webinar on How to use MyAppConverter
 
How to feature flag and run experiments in iOS and Android
How to feature flag and run experiments in iOS and AndroidHow to feature flag and run experiments in iOS and Android
How to feature flag and run experiments in iOS and Android
 
CV_AmalMandal
CV_AmalMandalCV_AmalMandal
CV_AmalMandal
 
Jetpack compose session1 (1).pptx
Jetpack compose session1 (1).pptxJetpack compose session1 (1).pptx
Jetpack compose session1 (1).pptx
 
Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
Anmol
AnmolAnmol
Anmol
 
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysDevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
 

Dernier

Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)simmis5
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfKamal Acharya
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingrknatarajan
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdfSuman Jyoti
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...roncy bisnoi
 
result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college projectTonystark477637
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Call Girls in Nagpur High Profile
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756dollysharma2066
 
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfJiananWang21
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSISrknatarajan
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performancesivaprakash250
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTbhaskargani46
 
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...ranjana rawat
 
UNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular ConduitsUNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular Conduitsrknatarajan
 
Vivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design SpainVivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design Spaintimesproduction05
 

Dernier (20)

Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
 
data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSIS
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
UNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular ConduitsUNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular Conduits
 
Vivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design SpainVivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design Spain
 

Android development at mercari 2015

  • 1. Android Development at Merari 2015 Tomoaki Imai @ Roppongi.aar #2 11/17/2015
  • 2. Hi I’m Tomo(今井智章) twitter: tomoaki_imai github: tomoima525
  • 3. Launched App in US market on September 2014 http://www.slideshare.net/tomoakiimai2/us-localization
  • 4. What has changed / kept the same so far?
  • 5. See our changes from KPT stand point K eep P roblem T ry What we keep doing since 2014 Issues we worked on What we are currently working on
  • 6. But before we go, Let’s talk about our current status
  • 7. How we develop now • IDE - Eclipse -> Android Studio • Teams - Tokyo & San Francisco - 3 Android Engineers • 1 source code, 2 product (US/JP) • Powered by lots of external services…
  • 8. See our changes from KPT stand point K eep P roblem T ry What we keep doing since 2014 Issues we worked on What we are currently working on
  • 9. Standup meeting • JST 11AM(PST 6PM), 10min, everyday • Between Tokyo & San Francisco office • The best way to track progress, issues JP Office Hours US Office Hours 6PM PST 11AM JST Standup Meeting Updating tickets Code reviews Feedback
  • 10. 1 repository, 2 products • Both Apps have the same UI, but some features are different • Package names • Targeting single language US -> com.mercariapp.mercari JP -> com.kouzoh.mercari US -> English JP -> Japanese US JP ex) Shipping
  • 11. Set up flavors for targeted languages def PACKAGE_NAME = "com.kouzoh.mercari"
 def PACKAGE_NAME_US = "com.mercariapp.mercari" productFlavors {
 jp {
 minSdkVersion 9
 applicationId PACKAGE_NAME
 manifestPlaceholders = [appName:"@string/app_name"]
 resConfigs "ja"
 }
 
 us {
 minSdkVersion 14
 applicationId PACKAGE_NAME_US
 resConfigs "en"
 }
 }
  • 12. Set up flavors for targeted languages def PACKAGE_NAME = "com.kouzoh.mercari"
 def PACKAGE_NAME_US = "com.mercariapp.mercari" productFlavors {
 jp {
 minSdkVersion 9
 applicationId PACKAGE_NAME
 manifestPlaceholders = [appName:"@string/app_name"]
 resConfigs "ja"
 }
 
 us {
 minSdkVersion 14
 applicationId PACKAGE_NAME_US
 resConfigs "en"
 }
 } Change package name
  • 13. Set up flavors for targeted languages def PACKAGE_NAME = "com.kouzoh.mercari"
 def PACKAGE_NAME_US = "com.mercariapp.mercari" productFlavors {
 jp {
 minSdkVersion 9
 applicationId PACKAGE_NAME
 manifestPlaceholders = [appName:"@string/app_name"]
 resConfigs "ja"
 }
 
 us {
 minSdkVersion 14
 applicationId PACKAGE_NAME_US
 resConfigs "en"
 }
 } Apply targeted language
  • 14. Support older SDK version Importing a library which min SDK version is more recent than App's min SDK version fails with an error Error:Execution failed for task ':Tasks:processDebugManifest'. > Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller than version 10 declared in library /Users/tomo/Projects/mercari/ Tasks/build/intermediates/exploded-aar/com.aviary.android/aviary/ 21.0.2/AndroidManifest.xml Suggestion: use tools:overrideLibrary=“com.aviary.android.feather.library" to force usage ex) App’s min SDK -> 9 Aviary’s min SDK -> 10
  • 15. Support older SDK version Use overridelibrary marker to avoid the build error <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:installLocation="auto">
 <uses-sdk tools:overrideLibrary=“com.aviary.android.feather.library”…
  • 16. See our changes from KPT stand point K eep P roblem T ry What we keep doing since 2014 Issues we worked on What we are currently working on
  • 17. Word Translations • Transifix was used to prevent omission of translation Translation TeamEngineer 3. Translate wordings 5. Push string.xml 4. Pull string.xml 2. Push string.xml 1. Pull string.xml string.xml should be updated to the latest to avoid conflict
  • 18. Word Translations • However, too much time was taken for changing one word Translation TeamEngineer 3. Translate wordings 5. Push string.xml 4. Pull string.xml 2. Push string.xml 1. Pull string.xml string.xml should be updated to the latest to avoid conflict
  • 19. How we changed translation process • Wordings are decided on Redmine • Created a check list to prevent omission Translation Team Engineer Push string.xml Product Manager
  • 20. Analyzation • External analysis tools are easy way to collect logs and visualize data
  • 21. Analyzation • External analysis tools are easy way to collect logs and visualize data • On the other hand… - Not suitable for analyzing into deeper meanings - Data are stocked in each analysis tools
  • 22. In-house Analysis platform : Pascal • Now every logs are fully accessible from BQ
  • 23. See our changes from KPT stand point K eep P roblem T ry What we keep doing since 2014 Issues we worked on What we are currently working on
  • 24. Reducing the size of App • Modularize functions - Set flavor to dependencies - Split codes by flavor
  • 25. Reducing the size of App • Look over the size of images • Remove unused libraries, methods… 4.6MB→721KB
  • 26. Reducing the size of App • Size went down by 25%!! 16.5 MB -> 12.4 MB • Though did not raise the install rate… :-(
  • 27. In-house AB testing • Apptimize for mobile AB Testing • Some issues - Can configure AB test programatically - Segment specific users from GUI - Analyzing data in detail was not so easy - Not enough for complex testing including server-side - Wanted to control A/B test from our server
  • 28. In-house AB testing { result: "OK", data: { experiment_results: [ { name: "003_buy_button_colors", variant: 3, metadata: { color : blue} } ] }, Request testing data
  • 29. In-house AB testing { result: "OK", data: { experiment_results: [ { name: "003_buy_button_colors", variant: 3, metadata: { color : blue} } ] }, Send testing result to Pascal ABTest.runTest(ABTestList.BUY_BUTTON.getTestName(), new ABTest.ABTestRunner() {
 @Override
 public void run(ABTestContent content) {
 int id = content.getVariant();
 switch (id) { . . .}
  • 30. See our changes from KPT stand point K eep P roblem T ry Daily standup meeting 1 source code 2 products Changed translation flow Developed in-house Analysis tool Reducing the size of App Developing in-house AB Testing tool