Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Tomoaki Imai
PDF, PPTX
27,893 views
US進出でのAndroid開発inメルカリ Mercari US App Development
メルカリUS進出において、Android開発ではまったこと等をまとめました。
Technology
◦
Read more
25
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 27
2
/ 27
3
/ 27
4
/ 27
5
/ 27
6
/ 27
7
/ 27
8
/ 27
9
/ 27
10
/ 27
11
/ 27
12
/ 27
13
/ 27
14
/ 27
15
/ 27
16
/ 27
17
/ 27
18
/ 27
19
/ 27
20
/ 27
21
/ 27
22
/ 27
23
/ 27
24
/ 27
25
/ 27
26
/ 27
27
/ 27
More Related Content
PDF
What I learned about communication in Sanfrancisco
by
Tomoaki Imai
PDF
LIFFとLINE SDKの昨今
by
LINE Corporation
PDF
Redmineコミュニティの活動報告と今後の抱負~Redmineよ、永遠に #RedmineJapan2020
by
akipii Oga
PPTX
unofficial redmine 紹介 RedmineJapan2020
by
Yuuki Nara
PPTX
Redmine4時代のプラグイン開発 redmine.tokyo #13
by
Sho Douhashi
PDF
開発を効率的に進めるられるまでの道程
by
Takao Sumitomo
KEY
iPhone/Android アプリをまとめて省エネ開発する技術
by
vaccho
PDF
Yahoo vs ClassMethod_battle5_iBeacon
by
Yasuhisa Arakawa
What I learned about communication in Sanfrancisco
by
Tomoaki Imai
LIFFとLINE SDKの昨今
by
LINE Corporation
Redmineコミュニティの活動報告と今後の抱負~Redmineよ、永遠に #RedmineJapan2020
by
akipii Oga
unofficial redmine 紹介 RedmineJapan2020
by
Yuuki Nara
Redmine4時代のプラグイン開発 redmine.tokyo #13
by
Sho Douhashi
開発を効率的に進めるられるまでの道程
by
Takao Sumitomo
iPhone/Android アプリをまとめて省エネ開発する技術
by
vaccho
Yahoo vs ClassMethod_battle5_iBeacon
by
Yasuhisa Arakawa
What's hot
PPTX
複数Redmine環境におけるユーザ管理の効率化
by
Yuuki Nara
PDF
もっと良くなるHTMLアプリケーション設計と実装
by
Mitsue-Links
PDF
[社内向け]Titanium勉強会
by
Rei Matsushita
PPTX
メディアへの寄稿をやってみて〜きっかけと仕事の流れ
by
sugimoto1022
PPTX
GoogleAnalyticsを使った効果測定
by
sugimoto1022
PPTX
カテゴリのサブプロジェクト継承対応機能追加
by
Yuuki Nara
PDF
インフラエンジニア エボリューション ~激変する IT インフラ技術者像、キャリアとスキルを考える~ at Tech Summit 2018
by
Toru Makabe
PDF
PHP カンファレンス 2014 に行ってきたよ
by
Masaru Matsuo
PDF
Firefox OSの何が嬉しいか
by
Takao Sumitomo
PDF
はじめてみよう! WordPress プラグイン・テーマ翻訳
by
Naoko Takano
PDF
【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング
by
leverages_event
PDF
[Android]趣味プログラマーな非エンジニアにアプリ開発を教える
by
ichigotake .
PDF
Android m finger print(public)
by
baroqueworksdev
PDF
iOSアプリエンジニアの最近
by
Kengo Suzuki
PDF
iOSエンジニアの最近 株式会社マネーフォワード
by
Yuki Asai
PPTX
FirefoxOS勉強会#7 カメラアプリの作り方
by
Kazuyuki Suzuki
PDF
兄弟アプリのロジック共通化とビルド高速化の実験
by
ichigotake .
PDF
20150118 firefoxos-handson-helloworld
by
Noritada Shimizu
PDF
アプリエンジニアのデザインに対するこころがまえの話
by
Shingo Sato
PDF
Line Creators Studio Android With Kotlin
by
LINE Corporation
複数Redmine環境におけるユーザ管理の効率化
by
Yuuki Nara
もっと良くなるHTMLアプリケーション設計と実装
by
Mitsue-Links
[社内向け]Titanium勉強会
by
Rei Matsushita
メディアへの寄稿をやってみて〜きっかけと仕事の流れ
by
sugimoto1022
GoogleAnalyticsを使った効果測定
by
sugimoto1022
カテゴリのサブプロジェクト継承対応機能追加
by
Yuuki Nara
インフラエンジニア エボリューション ~激変する IT インフラ技術者像、キャリアとスキルを考える~ at Tech Summit 2018
by
Toru Makabe
PHP カンファレンス 2014 に行ってきたよ
by
Masaru Matsuo
Firefox OSの何が嬉しいか
by
Takao Sumitomo
はじめてみよう! WordPress プラグイン・テーマ翻訳
by
Naoko Takano
【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング
by
leverages_event
[Android]趣味プログラマーな非エンジニアにアプリ開発を教える
by
ichigotake .
Android m finger print(public)
by
baroqueworksdev
iOSアプリエンジニアの最近
by
Kengo Suzuki
iOSエンジニアの最近 株式会社マネーフォワード
by
Yuki Asai
FirefoxOS勉強会#7 カメラアプリの作り方
by
Kazuyuki Suzuki
兄弟アプリのロジック共通化とビルド高速化の実験
by
ichigotake .
20150118 firefoxos-handson-helloworld
by
Noritada Shimizu
アプリエンジニアのデザインに対するこころがまえの話
by
Shingo Sato
Line Creators Studio Android With Kotlin
by
LINE Corporation
More from Tomoaki Imai
PDF
Android development at mercari 2015
by
Tomoaki Imai
PDF
Tips for better CI on Android
by
Tomoaki Imai
PDF
Debot android debugging library
by
Tomoaki Imai
PDF
Android cleanarchitecture
by
Tomoaki Imai
PDF
Developing better debug_components
by
Tomoaki Imai
PDF
Development at Mercari
by
Tomoaki Imai
PDF
ユーザーを待たせないためにできること
by
Tomoaki Imai
PDF
ログ管理でウキウキAndroid Life (Log Management in Android)
by
Tomoaki Imai
Android development at mercari 2015
by
Tomoaki Imai
Tips for better CI on Android
by
Tomoaki Imai
Debot android debugging library
by
Tomoaki Imai
Android cleanarchitecture
by
Tomoaki Imai
Developing better debug_components
by
Tomoaki Imai
Development at Mercari
by
Tomoaki Imai
ユーザーを待たせないためにできること
by
Tomoaki Imai
ログ管理でウキウキAndroid Life (Log Management in Android)
by
Tomoaki Imai
US進出でのAndroid開発inメルカリ Mercari US App Development
1.
US進出でのAndroid開発 in メルカリ Mercari Inc. 今井智章
2.
自己紹介 • 株式会社メルカリ Android
エンジニア(2014.3 ) ! ! ! ! ! ! • 以前はSIerでインフラ系DBエンジニア(たまにjava開発) 2 twitter: tomoaki_imai github: tomoima525 qiita: tomoima525 フリマアプリの機能開発、USアプリ開発
3.
Agenda • 言語対応の罠 • デザインの罠 •
開発環境作りの罠 3 本日はメルカリUS版リリースにおけるAndroid開発で はまった罠について話します
4.
メルカリUS進出 • 2014年9月中旬にUSローンチ(C2Cとしては初) • クライアント開発期間 -
1ヶ月半(2014年7月末から着手) • 前提 - iOS版, Apiは先行して開発 - One Source Multiple Products - 開発環境は Eclipse 4
5.
Android開発でのUS対応 • 言語対応 • デザインリニューアル •
US, JP並行開発環境 の整備 5 old new
6.
言語対応の罠
7.
そもそもAndroidは言 語対応に強いよね? リソースフォルダ/res/values-XX で何カ国でも対応できるし…
8.
そんな風に考えている時期が 俺にもありました
9.
言語対応は甘くない • ①表記の国、文化的違い - 値段
小数点有りドル $ 1,200.00 - 日付 JP 2014/12/05 -> 12/14/2014 - マイナス表記 ☓ - $12 ⃝ ($12) - バリデーション関連 (zipcode等) etc ! • ②翻訳チームとの協業 - strings.xml操作にgithubはハードル高い - エンジニアの翻訳取込負担も上げたくない 9
10.
①表記の国、文化的違いへの対応 • ヘルパー関数の実装 10 public abstract
class StringFormatHelper { public abstract String formatPrice(int price); //JP,USで実装が異なるものはabstract public static final StringFormatHelper getInstance(){ StringFormatHelper sfh; switch (Config.LOCALE_ID) { case Const.LOCALE_JP: sfh = new StringFormatHelperJP(); break; case Const.LOCALE_US: sfh = new StringFormatHelperUS(); break; default: sfh = new StringFormatHelperJP(); break; } return sfh; } } インスタンス化の際にクラスを呼び分ける
11.
• ヘルパー関数の実装 11 US,JPの各Helperクラスでそれぞれの処理を実装 public class
StringFormatHelperUS extends StringFormatHelper { private static NumberFormat COMMA_FORMAT = new DecimalFormat("$#,###.##;($#,###.##)"); @Override public String formatPrice(int price) { //USで必要な処理を実装 } } StringFormatHelper sfh = StringFormatHelper.getInstance(); String currentSalesStr = sfh.formatPrice(currentSales); 利用時はインスタンスを生成して利用 Android Studio ならGradleのflavorを使う手もある 共通メソッドを1クラスで書けるメリットはあり ①表記の国、文化的違いへの対応
12.
②翻訳チームとの協業 • Transifexの利用 - ローカライゼーションサービス -
翻訳者がソースコードに触れることなく翻訳できる - コマンドラインで翻訳を取込む事が可能 12 github engineer translator string.xml *.json コマンドラインでupload, download $ cd .tx $ tx pull -$a -f GUIで操作
13.
②翻訳チームとの協業 • 良いところ 13 <!̶- value/strings.xml
̶> <string name= format_address >住所1: %1$s 住所2: %2$s</string> <!̶- value-en/strings.xml ̶> <string name= format_address"> Address1:%1$s %2$s </string> //%2$sが不要でも必須 • もうちょっとなところ - strings.xmlのformat数をUS,JPで合わせないとエラーがでる - 変換に十分対応していないファイル形式(json等)がある - 翻訳を当て込む作業が自動化され、ミスが軽減 - 訳した内容をその場で実機確認できる
14.
続いて、デザインの罠
15.
iOSファーストで開発してい るから、デザインはそれほど 考慮ないよね? iOSのデザインをそのままxmlで 組めばいいんでしょ…
16.
そんな風に考えている時期が 俺にもありました
17.
Androidのデザインガイドライン を考慮する 17 • ユーザーは各OSでのUXに慣れている。異なるUX で惑わせない ! ! ! • 社内のiOS比率が高い場合は注意。ユーザー目線、 ガイドラインを武器に戦うべし -
テキスト入力 - アクション(戻るボタンを置かない等) - iconデザイン etc. - Design: Pure Android等を参考にする https://developer.android.com/design/patterns/pure-android.html
18.
18 トータルなデザインを踏まえ、ガイドラインに沿っていない部分もある メルカリデザイン比較例 Android iOS Android
iOS 出品画面 購入画面
19.
続いて、開発環境作り の罠
20.
US, JPの開発は担当を 分けた方が効率的? リソース切替って結構面倒だし…
21.
そんな風に考えている時期が 俺にもありました
22.
並行開発で気づいたこと • 開発中も容易にUS -
JP切り替えられるの超大事 - 開発する機能の多くは共通 - 常にUS, JP両方を確認できれば、後戻りが減る • Eclipseで柔軟な環境切替は面倒 • が、全部のリソースを切替える必要はない 22
23.
並行開発環境を整備する • 切替が必要なリソースファイルを属性で分けて、 さくっと確認できるようにする 23 属性 リソースファイル
対応 ローカル開発中に環境を 切替えるためのファイル - Config(APIの向先)関連 のjavaファイル - マスターデータ(json) コマンドラインで切替できる シェルスクリプト実装 apk作成時に切替える ためのファイル - AndroidManifest.xml - analytics.xml - authkeys - res/values ビルド時にファイルを総入れ 替えし、ビルド後は元に戻す スクリプト実装
24.
更に気軽に切替できるように試みた • デバッグモードでロケール切替の仕組み - アプリ起動中にJP-USが切替えられる 24 public
class ThisApplication extends Application { private int mLocale = Const.LOCALE_JP; public void setAppLocale(int locale){ mLocale = locale; Locale l; switch(locale){ case Const.LOCALE_JP: l = Locale.JAPAN; break; case Const.LOCALE_US: l = Locale.US; break; } Locale.setDefault(l); Configuration config = new Configuration(); config.locale = l; getResources().updateConfiguration(config, null); } } Application内で言語設定を切替える 仕組み
25.
が、これは失敗… • アプリがExceptionを出すと、 OSの言語設定が適用されて しまう ! • JP,
USでApiの向き先が異な るため、クライアント内のユー ザー情報に不整合が起きる 25 こうして、試行錯誤の日々は続く…
26.
まとめ:US進出で得た知見 • 言語周りは 26 • デザインは、ガイドラインに沿ったデザインを 心がける •
開発環境は柔軟に多言語へ切替えられる仕組み を作る - 異なる表記を柔軟に受け入れられる実装を作る - 翻訳チームがスムーズに開発に参入できる仕組みを作る
27.
メルカリではAndroid/iOSエンジニア募集中!
Download