SlideShare a Scribd company logo
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

More Related Content

What's hot

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
Lauren 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 | Android
Liyang Zhang
 
Buck outside Valley
Buck outside ValleyBuck outside Valley
Buck outside Valley
Bruno Rocha
 
TypeScript
TypeScriptTypeScript
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
Everett 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 production
Avivi Academy
 
Unpacking Developer Experience
Unpacking Developer ExperienceUnpacking Developer Experience
Unpacking Developer Experience
Amit Jotwani
 
Postman Webinar: Postman 101
Postman Webinar: Postman 101Postman Webinar: Postman 101
Postman Webinar: Postman 101
Nikita 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 Appium
QAAgility Technologies
 
An Introduction to Appium Desktop
An Introduction to Appium DesktopAn Introduction to Appium Desktop
An Introduction to Appium Desktop
Sauce Labs
 
OpenAPI development with Python
OpenAPI development with PythonOpenAPI development with Python
OpenAPI development with Python
Takuro 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 Workshop
tjvantoll
 
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
Nikita Sharma
 
I Love APIs - Oct 2015
I Love APIs - Oct 2015I Love APIs - Oct 2015
I Love APIs - Oct 2015
Mike McNeil
 
Api First Design
Api First DesignApi First Design
Api First Design
Klaus Peter Laube
 
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
 
Jenkins Reviewbot
Jenkins ReviewbotJenkins Reviewbot
Jenkins Reviewbot
Yardena Meymann
 
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
Adam Paxton
 

What's hot (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
 

Viewers also liked

Debot android debugging library
Debot android debugging libraryDebot android debugging library
Debot android debugging library
Tomoaki Imai
 
Tips for better CI on Android
Tips for better CI on AndroidTips for better CI on Android
Tips for better CI on Android
Tomoaki 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 Better
Scott Britton
 
The power of digital assessment
The power of digital assessmentThe power of digital assessment
The power of digital assessment
Jay 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 YouTube
Paul 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 Sanfrancisco
Tomoaki Imai
 
The Creative Classroom
The Creative ClassroomThe Creative Classroom
The Creative Classroom
John Spencer
 
Android cleanarchitecture
Android cleanarchitectureAndroid cleanarchitecture
Android cleanarchitecture
Tomoaki Imai
 
Android Architecture
Android ArchitectureAndroid Architecture
Android Architecture
shinnosuke kugimiya
 
Introducing Cardio
Introducing CardioIntroducing Cardio
Introducing Cardio
Yusuke 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_components
Tomoaki 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
 
Coordinator Layout Behavior
Coordinator Layout BehaviorCoordinator Layout Behavior
Coordinator Layout Behavior
shinnosuke kugimiya
 
-英文校正エナゴが教える- ジャーナル採択率を高めるには?
-英文校正エナゴが教える- ジャーナル採択率を高めるには?-英文校正エナゴが教える- ジャーナル採択率を高めるには?
-英文校正エナゴが教える- ジャーナル採択率を高めるには?
英文校正エナゴ
 
Development at Mercari
Development at MercariDevelopment at Mercari
Development at Mercari
Tomoaki Imai
 
これからの設計の話をしよう
これからの設計の話をしようこれからの設計の話をしよう
これからの設計の話をしよう
shinnosuke kugimiya
 

Viewers also liked (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
 
これからの設計の話をしよう
これからの設計の話をしようこれからの設計の話をしよう
これからの設計の話をしよう
 

Similar to Android development at mercari 2015

Sam segal resume
Sam segal resumeSam segal resume
Sam segal resume
samuel segal
 
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 applications
Andrew Maxwell
 
Droidcon thessaloniki 2015
Droidcon thessaloniki 2015Droidcon thessaloniki 2015
Droidcon thessaloniki 2015
Raymond 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 Tools
Michael Lihs
 
Gowrisankar_Resume
Gowrisankar_ResumeGowrisankar_Resume
Gowrisankar_Resume
GOWRISANKAR M
 
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
Andrew 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 Pipeline
DevOps.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.pdf
John William
 
CSC 404 | Final Presentation
CSC 404 | Final PresentationCSC 404 | Final Presentation
CSC 404 | Final Presentation
Frances Coronel
 
Webinar on How to use MyAppConverter
Webinar on How to use  MyAppConverterWebinar on How to use  MyAppConverter
Webinar on How to use MyAppConverter
Jaoued 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 Android
Optimizely
 
Jetpack compose session1 (1).pptx
Jetpack compose session1 (1).pptxJetpack compose session1 (1).pptx
Jetpack compose session1 (1).pptx
ShubhamJogdand8
 
Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"
GoIT
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
Alexandru Bolboaca
 
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
Andreas Grabner
 

Similar to 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
 

Recently uploaded

ethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.pptethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.ppt
Jayaprasanna4
 
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
H.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdfH.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdf
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
MLILAB
 
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
Amil Baba Dawood bangali
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
FluxPrime1
 
block diagram and signal flow graph representation
block diagram and signal flow graph representationblock diagram and signal flow graph representation
block diagram and signal flow graph representation
Divya Somashekar
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
MdTanvirMahtab2
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
JoytuBarua2
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation & Control
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
Massimo Talia
 
ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
Vijay Dialani, PhD
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
bakpo1
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
AhmedHussein950959
 
Runway Orientation Based on the Wind Rose Diagram.pptx
Runway Orientation Based on the Wind Rose Diagram.pptxRunway Orientation Based on the Wind Rose Diagram.pptx
Runway Orientation Based on the Wind Rose Diagram.pptx
SupreethSP4
 
English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
BrazilAccount1
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
Pipe Restoration Solutions
 
space technology lecture notes on satellite
space technology lecture notes on satellitespace technology lecture notes on satellite
space technology lecture notes on satellite
ongomchris
 
Investor-Presentation-Q1FY2024 investor presentation document.pptx
Investor-Presentation-Q1FY2024 investor presentation document.pptxInvestor-Presentation-Q1FY2024 investor presentation document.pptx
Investor-Presentation-Q1FY2024 investor presentation document.pptx
AmarGB2
 
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdfGoverning Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
WENKENLI1
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
obonagu
 

Recently uploaded (20)

ethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.pptethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.ppt
 
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
H.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdfH.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdf
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
 
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
 
block diagram and signal flow graph representation
block diagram and signal flow graph representationblock diagram and signal flow graph representation
block diagram and signal flow graph representation
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
 
ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
 
Runway Orientation Based on the Wind Rose Diagram.pptx
Runway Orientation Based on the Wind Rose Diagram.pptxRunway Orientation Based on the Wind Rose Diagram.pptx
Runway Orientation Based on the Wind Rose Diagram.pptx
 
English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
 
space technology lecture notes on satellite
space technology lecture notes on satellitespace technology lecture notes on satellite
space technology lecture notes on satellite
 
Investor-Presentation-Q1FY2024 investor presentation document.pptx
Investor-Presentation-Q1FY2024 investor presentation document.pptxInvestor-Presentation-Q1FY2024 investor presentation document.pptx
Investor-Presentation-Q1FY2024 investor presentation document.pptx
 
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdfGoverning Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
 

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