SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
森 洋之
2017年2月16日
ヤフオク!の快適なカスタマー体験を支えるモバ
イルアプリのライブアップデート技術
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
自己紹介
1
森 洋之
ヤフオク!カンパニーアプリ部
Android黒帯
ヤフオク
Androidアプリチームリーダー
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
概要
2
■アジェンダ
・ モバイルアプリの競争は激しい
・ 改善速度で差をつけよう
・ Hot Patchingが効果的
・ AndroidでHot Patchingをするには
・ デモ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
モバイルアプリを
取り巻く環境
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
モバイルアプリを取り巻く環境
4
Google Playには約270万のアプリ
2,105,234
2,324,154
2,556,171
2,683,508
1,800,000
2,050,000
2,300,000
2,550,000
2,800,000
2016-04-07 2016-08-01 2016-11-25 2017-01-25
App Tornado GmbH “Number of Android applications” http://www.appbrain.com/stats/number-of-android-apps
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
モバイルアプリを取り巻く環境
5
4割のユーザーは、1日4〜6アプリ使用
Millward Brown Digital “The New Mobile Mantra” Oct 5, 2015
1%
28%
43%
20%
8%
0%
10%
20%
30%
40%
50%
None 1-3 apps 4-6 apps 7-10 apps more than 10 apps
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
モバイルアプリを取り巻く環境
66
平均評価は★4.1と高水準
App Tornado GmbH “Ratings of apps on Google Play” http://www.appbrain.com/stats/android-app-ratings
0
200,000
400,000
600,000
800,000
1,000,000
1,200,000
None < 2.5 2.5-3.0 3.0-3.5 3.5-4.0 4.0-4.5 > 4.5
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
モバイルアプリを取り巻く環境
7
国内ではアプリダウンロード数が減少
App Annie 2016 Retrospective
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
モバイルアプリを取り巻く環境
8
まとめ
・高品質なアプリが、多く世に出ている
・新規ダウンロードは横ばい
→出せば使われる時代は終わり
競争は激しくなっている
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
モバイルアプリを取り巻く環境
9
2016年日本トップパブリッシャーに
Rank Company Country
1 Yahoo Japan Japan
2 LINE Japan
3 Apple United States
4 Google United States
5 CyberAgent Japan
App Annie 2016 Retrospective
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANの
アプリ開発について
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
11
使いやすいアプリを開発する
・「あたりまえ」品質の基準を定義
→サポートするプラットフォーム整備
→ワークショップや勉強会の開催
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
12
「あたりまえ」品質の基準を定義
・信頼性
→安心、安全に使用できること
・市場性
→市場優位性、新規性があること
・使用性
→使いやすいこと
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
13
「あたりまえ」品質の基準を定義
・機能性
→合目的的で想定通りに動くこと
・改善性
→迅速に改修可能であること
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
14
全社CI環境
GitHub
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
15
全社CI環境
GitHub Jenkins
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
16
全社CI環境
Jenkins JacocoGitHub
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
17
全社CI環境
GitHub AppiumJenkins Jacoco
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
18
全社CI環境
テスト結果
UIテストのスクリーンショット
Jenkins Jacoco Appium
Artifactory
Android
GitHub
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
19
複数のユーザーチャネル
Google Play
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
20
複数のユーザーチャネル
Google Play
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
21
複数のユーザーチャネル
Google Play
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
22
複数のユーザーチャネル
バージョン×機能
別カテゴライズ
Google Play Watson
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
23
Rollout.io
Rollout.io
App Store
※2017年3月8日、Apple社からRolloutの利用に関する警告を受けたため、こちらの記事にあるRolloutは利用しないようお願いいたします。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
ターゲティングプッシュツール
自動車好き
アクセサリ好き
パソコン好き
自動車が
とてもオトク
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
25
ターゲティングプッシュツール
自動車好き
アクセサリ好き
パソコン好き
自動車が
とてもオトク
アクセサリが
タイムセール
パソコン機器
大バーゲン
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPANのアプリ開発について
26
ターゲティングプッシュツール
App Indexing
Web2App
ネイティブ画面
WebView
URIで
判定
自動車が
オトク 通知
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アプリ特有の課題
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アプリ特有の課題
28
理想のリリースサイクル
企画
テスト
開発リリース
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アプリ特有の課題
29
現実のリリースサイクル
企画
テスト
開発
部分
リリース
審査
計測
完全
リリース
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アプリ特有の課題
30
新しいバージョンが普及するまでの
タイムラグ
1 0 月1 0 日 1 0 月2 5 日 1 1 月8 日1 0 月3 1 日
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アプリ特有の課題
31
新しいバージョンが普及するまでの
タイムラグ
1 0 月1 0 日 1 0 月2 5 日 1 1 月8 日1 0 月3 1 日
1週間
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アプリ特有の課題
32
新しいバージョンが普及するまでの
タイムラグ
1 0 月1 0 日 1 0 月2 5 日 1 1 月8 日1 0 月3 1 日
2週間
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アプリ特有の課題
33
不具合のリスク
企画
テスト
開発
部分
リリース
審査
計測
完全
リリース
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アプリ特有の課題
34
Hot Patchingによるフローの改善
企画
テスト
開発
部分
リリース
審査
計測
完全
リリース
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アプリ特有の課題
35
OS Version Diversity
https://developer.android.com/about/dashboards/index.html
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アプリ特有の課題
36
メンテナンスコストの増大と
コードの複雑化
・Camera2 API
・マテリアルデザイン関連
→Android 4.xをはやく切りたい
→4系が30%…
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アプリ特有の課題
37
パッチによるサポート
version 1 version 2 version 3
version 1 version 2
OS 6.x
OS 4.x Patch
サポート
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
一般化するHot Patching
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
一般化するHot Patching
39
主だったHot Patchingライブラリ
iOS - Rollout.io
iOS – bang590/JSPatch
Android - Tencent/tinker
Android – alibaba/AndFix
Android - Avocarrot/json2view
※2017年3月8日、Apple社からRolloutの利用に関する警告を受けたため、こちらの記事にあるRolloutは利用しないようお願いいたします。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
一般化するHot Patching
40
iOS – Rollout.io
https://rollout.io/success-stories/
※2017年3月8日、Apple社からRolloutの利用に関する警告を受けたため、こちらの記事にあるRolloutは利用しないようお願いいたします。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
一般化するHot Patching
41
iOS – bang590/JSPatch
レポジトリにつけられたスター数をグラフ化
http://www.timqian.com/star-history/ を利用
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
一般化するHot Patching
42
Android - Tencent/tinker
レポジトリにつけられたスター数をグラフ化
http://www.timqian.com/star-history/ を利用
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
一般化するHot Patching
43
Android - Tencent/tinker
現バージョン
新バージョン
現バージョン
dex
dex
パッチ dex
dex
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
一般化するHot Patching
44
Android – alibaba/AndFix
レポジトリにつけられたスター数をグラフ化
http://www.timqian.com/star-history/ を利用
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
一般化するHot Patching
45
Android – Avocarrot/json2view
レポジトリにつけられたスター数をグラフ化
http://www.timqian.com/star-history/ を利用
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Androidと
Hot Patching
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
AndroidとHot Patching
47
処理の置換
・ vtable操作
・ DexClassLoader
・ Script
デザインの置換
・ ひたすらがんばる
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
AndroidとHot Patching
48
vtable操作
Method A Method B Method C Method D Method E
0 1 2 3 4
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
AndroidとHot Patching
49
vtable操作
Method A Method B Method C Method D Method E
0 1 2 3 4
Method B’
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
AndroidとHot Patching
50
DexClassLoader
Activity A
Activity B
ProxyActivity
Activity B’
external.jar
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
AndroidとHot Patching
51
Script
if (スクリプトがある) {
return スクリプトの実行
}
通常の処理
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
AndroidとHot Patching
52
デザインの置換
public void createView(Context ctx, JSONObject obj) {
// Classオブジェクトを得て
Class viewClass = Class.forName(obj.getString("name"));
// 生成する
View view = (View)viewClass.getConstructor(Context.class).newInstance(ctx);
// プロパティを得て
JSONArray properties = obj.getJSONArray("properties");
// 設定する
setProperties(view, properties);
}
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
AndroidとHot Patching
53
デザインの置換
public void setProperties(View view, JSONArray properties) {
for (int i = 0; i < properties.length(); i++) {
JSONObject property = properties.getJSONObject(i);
switch (property.getString("name")) {
case LAYOUT_WIDTH:
…
case LAYOUT_HEIGHT:
…
case GRAVITY:
…
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Hot Patching諸注意
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Hot Patching諸注意
55
Hot Patchingとセキュリティ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Hot Patching諸注意
56
Hot Patchingとセキュリティ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Hot Patching諸注意
57
Hot Patchingとセキュリティ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Hot Patching諸注意
58
Hot Patchingとセキュリティ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Hot Patching諸注意
59
Hot Patchingとガイドライン
Rollout.io
・WebKit / JavaScriptCoreで実行し
・アプリの主要な目的を変更しない
ことで、
Apple Developer Program Requirements
3.3.2, 3.3.3に違反していない
※2017年3月8日、Apple社からRolloutの利用に関する警告を受けたため、こちらの記事にあるRolloutは利用しないようお願いいたします。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Hot Patching諸注意
60
Hot Patchingとガイドライン
Google Play
・apkバイナリを書き換えてはいけない
・と、あったと思ったんだけど…
・ユーザーは尊重しましょう
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
お手軽Hot Patching
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
お手軽Hot Patching
62
使用するもの
・Transform API
→ビルド時にバイトコード変換を行う
・jboss-javassist/javassist
→手軽にバイトコード変換を書ける
・mozilla/rhino
→OSS JavaScript実装
・json2view
→jsonからViewを生成する https://goo.gl/MDnvUt
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
お手軽Hot Patching
63
Transform API
・Android Gradle Plugin提供のAPI
・Android Gradle Plugin 1.5〜
・Jackは未サポート(別のAPIで可能)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
お手軽Hot Patching
64
gradle pluginを作って、registerTransform()
で登録する
class Patcher implements Plugin<Project>{
@Override
void apply(Project project) {
// バイトコード変換を行うTransformerを登録する
project.android.registerTransform(
new PatcherTransformer(project))
}
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
お手軽Hot Patching
65
Javassistで処理を挿入する
if (スクリプトがある) {
return スクリプトの実行
}
通常の処理
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
お手軽Hot Patching
66
Javassistで処理を挿入する
全クラス.each{
全メソッド.each{
メソッド.insertBefore(
“スクリプトがあれば実行”
)
}
}
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
お手軽Hot Patching
67
mozilla/rhino
・Javaで書かれたJavaScriptの実装
・Androidでも動く
・JavaのObjectを渡して、
スクリプト内でアクセス可能
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
お手軽Hot Patching
68
Java ObjectをJavaScript用Objectに変換、
実行し、戻り値を受け取る
ScriptableObject.putProperty(scope, "instance",
Context.javaToJS(instance, scope));
rhino.evaluateString(scope, script, "JavaScript", 1, null);
Function function = (Function)scope.get("apply", scope);
Object result = function.call(rhino, scope, scope, functionParams);
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
お手軽Hot Patching
69
json2view
・xmlをjsonに変換し、それを配信する
$ ./gradlew runScript -Pxml=./pathToInputXmlFile.xml
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
お手軽Hot Patching
70
レイアウトを設定する箇所に、
こういうコードを書く
if (レイアウトパッチがある) {
View view = DynamicView.createView(
this, パッチ, null);
setContentView(view);
} else {
setContentView(R.layout.default_layout)
}
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
お手軽Hot Patching
71
サンプルのサーバ
・サンプルなので、なんでもいいです
https://goo.gl/DvUggq
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
お手軽Hot Patching
72
デモ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
まとめ
73
まとめ
・ モバイルアプリの競争は激しいので
・ 改善速度で差をつけよう
・ Hot Patchingが効果的!
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.

Contenu connexe

Tendances

Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Yahoo!デベロッパーネットワーク
 
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfesYahoo!デベロッパーネットワーク
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo!デベロッパーネットワーク
 
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyoGitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyoYahoo!デベロッパーネットワーク
 
プランニングツールにおけるインタラクティブな可視化を支えるバックエンド
プランニングツールにおけるインタラクティブな可視化を支えるバックエンドプランニングツールにおけるインタラクティブな可視化を支えるバックエンド
プランニングツールにおけるインタラクティブな可視化を支えるバックエンドYahoo!デベロッパーネットワーク
 
大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来Masayuki Ueda
 
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)Masataka Sato
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!デベロッパーネットワーク
 
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
エクストリーム・プログラミング開発におけるUIテスト #yjbonfireエクストリーム・プログラミング開発におけるUIテスト #yjbonfire
エクストリーム・プログラミング開発におけるUIテスト #yjbonfireYahoo!デベロッパーネットワーク
 

Tendances (20)

Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
 
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~ Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
 
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
 
kukai: 省エネ世界2位のディープラーニング・スパコン
kukai: 省エネ世界2位のディープラーニング・スパコンkukai: 省エネ世界2位のディープラーニング・スパコン
kukai: 省エネ世界2位のディープラーニング・スパコン
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
 
Storm の新機能について @HSCR #hadoopreading
Storm の新機能について @HSCR #hadoopreadingStorm の新機能について @HSCR #hadoopreading
Storm の新機能について @HSCR #hadoopreading
 
YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
 
AMPと広告とOpenRTBと #yjmu
AMPと広告とOpenRTBと #yjmuAMPと広告とOpenRTBと #yjmu
AMPと広告とOpenRTBと #yjmu
 
ヤフーにおけるHadoop Operations #tdtech
ヤフーにおけるHadoop Operations #tdtechヤフーにおけるHadoop Operations #tdtech
ヤフーにおけるHadoop Operations #tdtech
 
ヤフーでHardeningを実施する意味 (#sec_kansai #sosaisec)
ヤフーでHardeningを実施する意味 (#sec_kansai #sosaisec)ヤフーでHardeningを実施する意味 (#sec_kansai #sosaisec)
ヤフーでHardeningを実施する意味 (#sec_kansai #sosaisec)
 
decode17
decode17decode17
decode17
 
アプリのプロダクトマネージャーからみるScrum開発
アプリのプロダクトマネージャーからみるScrum開発アプリのプロダクトマネージャーからみるScrum開発
アプリのプロダクトマネージャーからみるScrum開発
 
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyoGitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
 
Serving Engine as a Service at Yahoo! JAPAN #SolrJP
Serving Engine as a Service at Yahoo! JAPAN #SolrJPServing Engine as a Service at Yahoo! JAPAN #SolrJP
Serving Engine as a Service at Yahoo! JAPAN #SolrJP
 
YJTC18 C-1 Kotlin導入の状況と展望
YJTC18 C-1 Kotlin導入の状況と展望YJTC18 C-1 Kotlin導入の状況と展望
YJTC18 C-1 Kotlin導入の状況と展望
 
プランニングツールにおけるインタラクティブな可視化を支えるバックエンド
プランニングツールにおけるインタラクティブな可視化を支えるバックエンドプランニングツールにおけるインタラクティブな可視化を支えるバックエンド
プランニングツールにおけるインタラクティブな可視化を支えるバックエンド
 
大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来
 
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
 
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
エクストリーム・プログラミング開発におけるUIテスト #yjbonfireエクストリーム・プログラミング開発におけるUIテスト #yjbonfire
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
 

En vedette

Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo!デベロッパーネットワーク
 
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みデータテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みYahoo!デベロッパーネットワーク
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 

En vedette (7)

Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
 
市場で勝ち続けるための品質とテストの技術②
市場で勝ち続けるための品質とテストの技術②市場で勝ち続けるための品質とテストの技術②
市場で勝ち続けるための品質とテストの技術②
 
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
 
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みデータテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
 
Yahoo! JAPANのCloud Foundry導入状況
Yahoo! JAPANのCloud Foundry導入状況Yahoo! JAPANのCloud Foundry導入状況
Yahoo! JAPANのCloud Foundry導入状況
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 

Similaire à ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術

決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニーTokuhiro Eto
 
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnightヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnightYahoo!デベロッパーネットワーク
 
UnityによるAR/VR/MR 開発体験講座
UnityによるAR/VR/MR 開発体験講座UnityによるAR/VR/MR 開発体験講座
UnityによるAR/VR/MR 開発体験講座Yuichi Ishii
 
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略Developers Summit
 
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...Yahoo!デベロッパーネットワーク
 
Android multiscreen
Android multiscreenAndroid multiscreen
Android multiscreenKazuaki Ueda
 
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーImamura Masayuki
 
Droidcon London2012 Speaker Experience
Droidcon London2012 Speaker ExperienceDroidcon London2012 Speaker Experience
Droidcon London2012 Speaker ExperienceKenichi Kambara
 
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことアプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことleverages_event
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をAtsuhiro Kubo
 
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化Takashi Okamoto
 
.NET 5 and Windows app dev
.NET 5 and Windows app dev.NET 5 and Windows app dev
.NET 5 and Windows app dev一希 大田
 
ドコモAIエージェントにおけるデバイスWebAPIの活用とサポートプログラムについて
ドコモAIエージェントにおけるデバイスWebAPIの活用とサポートプログラムについてドコモAIエージェントにおけるデバイスWebAPIの活用とサポートプログラムについて
ドコモAIエージェントにおけるデバイスWebAPIの活用とサポートプログラムについてDevice WebAPI Consortium
 

Similaire à ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術 (20)

決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
 
Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化
 
ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩
 
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnightヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
 
UnityによるAR/VR/MR 開発体験講座
UnityによるAR/VR/MR 開発体験講座UnityによるAR/VR/MR 開発体験講座
UnityによるAR/VR/MR 開発体験講座
 
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
 
Design pattern in presto source code
Design pattern in presto source codeDesign pattern in presto source code
Design pattern in presto source code
 
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
 
Android multiscreen
Android multiscreenAndroid multiscreen
Android multiscreen
 
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
 
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
 
Klocworkのご紹介
Klocworkのご紹介Klocworkのご紹介
Klocworkのご紹介
 
Android0422
Android0422Android0422
Android0422
 
Droidcon London2012 Speaker Experience
Droidcon London2012 Speaker ExperienceDroidcon London2012 Speaker Experience
Droidcon London2012 Speaker Experience
 
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことアプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のこと
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
 
.NET 5 and Windows app dev
.NET 5 and Windows app dev.NET 5 and Windows app dev
.NET 5 and Windows app dev
 
ドコモAIエージェントにおけるデバイスWebAPIの活用とサポートプログラムについて
ドコモAIエージェントにおけるデバイスWebAPIの活用とサポートプログラムについてドコモAIエージェントにおけるデバイスWebAPIの活用とサポートプログラムについて
ドコモAIエージェントにおけるデバイスWebAPIの活用とサポートプログラムについて
 

Plus de Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

Plus de Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術

  • 1. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 森 洋之 2017年2月16日 ヤフオク!の快適なカスタマー体験を支えるモバ イルアプリのライブアップデート技術
  • 2. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 自己紹介 1 森 洋之 ヤフオク!カンパニーアプリ部 Android黒帯 ヤフオク Androidアプリチームリーダー
  • 3. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 概要 2 ■アジェンダ ・ モバイルアプリの競争は激しい ・ 改善速度で差をつけよう ・ Hot Patchingが効果的 ・ AndroidでHot Patchingをするには ・ デモ
  • 4. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. モバイルアプリを 取り巻く環境
  • 5. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. モバイルアプリを取り巻く環境 4 Google Playには約270万のアプリ 2,105,234 2,324,154 2,556,171 2,683,508 1,800,000 2,050,000 2,300,000 2,550,000 2,800,000 2016-04-07 2016-08-01 2016-11-25 2017-01-25 App Tornado GmbH “Number of Android applications” http://www.appbrain.com/stats/number-of-android-apps
  • 6. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. モバイルアプリを取り巻く環境 5 4割のユーザーは、1日4〜6アプリ使用 Millward Brown Digital “The New Mobile Mantra” Oct 5, 2015 1% 28% 43% 20% 8% 0% 10% 20% 30% 40% 50% None 1-3 apps 4-6 apps 7-10 apps more than 10 apps
  • 7. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. モバイルアプリを取り巻く環境 66 平均評価は★4.1と高水準 App Tornado GmbH “Ratings of apps on Google Play” http://www.appbrain.com/stats/android-app-ratings 0 200,000 400,000 600,000 800,000 1,000,000 1,200,000 None < 2.5 2.5-3.0 3.0-3.5 3.5-4.0 4.0-4.5 > 4.5
  • 8. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. モバイルアプリを取り巻く環境 7 国内ではアプリダウンロード数が減少 App Annie 2016 Retrospective
  • 9. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. モバイルアプリを取り巻く環境 8 まとめ ・高品質なアプリが、多く世に出ている ・新規ダウンロードは横ばい →出せば使われる時代は終わり 競争は激しくなっている
  • 10. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. モバイルアプリを取り巻く環境 9 2016年日本トップパブリッシャーに Rank Company Country 1 Yahoo Japan Japan 2 LINE Japan 3 Apple United States 4 Google United States 5 CyberAgent Japan App Annie 2016 Retrospective
  • 11. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANの アプリ開発について
  • 12. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 11 使いやすいアプリを開発する ・「あたりまえ」品質の基準を定義 →サポートするプラットフォーム整備 →ワークショップや勉強会の開催
  • 13. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 12 「あたりまえ」品質の基準を定義 ・信頼性 →安心、安全に使用できること ・市場性 →市場優位性、新規性があること ・使用性 →使いやすいこと
  • 14. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 13 「あたりまえ」品質の基準を定義 ・機能性 →合目的的で想定通りに動くこと ・改善性 →迅速に改修可能であること
  • 15. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 14 全社CI環境 GitHub
  • 16. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 15 全社CI環境 GitHub Jenkins
  • 17. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 16 全社CI環境 Jenkins JacocoGitHub
  • 18. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 17 全社CI環境 GitHub AppiumJenkins Jacoco
  • 19. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 18 全社CI環境 テスト結果 UIテストのスクリーンショット Jenkins Jacoco Appium Artifactory Android GitHub
  • 20. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 19 複数のユーザーチャネル Google Play
  • 21. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 20 複数のユーザーチャネル Google Play
  • 22. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 21 複数のユーザーチャネル Google Play
  • 23. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 22 複数のユーザーチャネル バージョン×機能 別カテゴライズ Google Play Watson
  • 24. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 23 Rollout.io Rollout.io App Store ※2017年3月8日、Apple社からRolloutの利用に関する警告を受けたため、こちらの記事にあるRolloutは利用しないようお願いいたします。
  • 25. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について ターゲティングプッシュツール 自動車好き アクセサリ好き パソコン好き 自動車が とてもオトク
  • 26. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 25 ターゲティングプッシュツール 自動車好き アクセサリ好き パソコン好き 自動車が とてもオトク アクセサリが タイムセール パソコン機器 大バーゲン
  • 27. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPANのアプリ開発について 26 ターゲティングプッシュツール App Indexing Web2App ネイティブ画面 WebView URIで 判定 自動車が オトク 通知
  • 28. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アプリ特有の課題
  • 29. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アプリ特有の課題 28 理想のリリースサイクル 企画 テスト 開発リリース
  • 30. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アプリ特有の課題 29 現実のリリースサイクル 企画 テスト 開発 部分 リリース 審査 計測 完全 リリース
  • 31. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アプリ特有の課題 30 新しいバージョンが普及するまでの タイムラグ 1 0 月1 0 日 1 0 月2 5 日 1 1 月8 日1 0 月3 1 日
  • 32. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アプリ特有の課題 31 新しいバージョンが普及するまでの タイムラグ 1 0 月1 0 日 1 0 月2 5 日 1 1 月8 日1 0 月3 1 日 1週間
  • 33. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アプリ特有の課題 32 新しいバージョンが普及するまでの タイムラグ 1 0 月1 0 日 1 0 月2 5 日 1 1 月8 日1 0 月3 1 日 2週間
  • 34. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アプリ特有の課題 33 不具合のリスク 企画 テスト 開発 部分 リリース 審査 計測 完全 リリース
  • 35. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アプリ特有の課題 34 Hot Patchingによるフローの改善 企画 テスト 開発 部分 リリース 審査 計測 完全 リリース
  • 36. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アプリ特有の課題 35 OS Version Diversity https://developer.android.com/about/dashboards/index.html
  • 37. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アプリ特有の課題 36 メンテナンスコストの増大と コードの複雑化 ・Camera2 API ・マテリアルデザイン関連 →Android 4.xをはやく切りたい →4系が30%…
  • 38. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アプリ特有の課題 37 パッチによるサポート version 1 version 2 version 3 version 1 version 2 OS 6.x OS 4.x Patch サポート
  • 39. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 一般化するHot Patching
  • 40. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 一般化するHot Patching 39 主だったHot Patchingライブラリ iOS - Rollout.io iOS – bang590/JSPatch Android - Tencent/tinker Android – alibaba/AndFix Android - Avocarrot/json2view ※2017年3月8日、Apple社からRolloutの利用に関する警告を受けたため、こちらの記事にあるRolloutは利用しないようお願いいたします。
  • 41. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 一般化するHot Patching 40 iOS – Rollout.io https://rollout.io/success-stories/ ※2017年3月8日、Apple社からRolloutの利用に関する警告を受けたため、こちらの記事にあるRolloutは利用しないようお願いいたします。
  • 42. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 一般化するHot Patching 41 iOS – bang590/JSPatch レポジトリにつけられたスター数をグラフ化 http://www.timqian.com/star-history/ を利用
  • 43. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 一般化するHot Patching 42 Android - Tencent/tinker レポジトリにつけられたスター数をグラフ化 http://www.timqian.com/star-history/ を利用
  • 44. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 一般化するHot Patching 43 Android - Tencent/tinker 現バージョン 新バージョン 現バージョン dex dex パッチ dex dex
  • 45. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 一般化するHot Patching 44 Android – alibaba/AndFix レポジトリにつけられたスター数をグラフ化 http://www.timqian.com/star-history/ を利用
  • 46. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 一般化するHot Patching 45 Android – Avocarrot/json2view レポジトリにつけられたスター数をグラフ化 http://www.timqian.com/star-history/ を利用
  • 47. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Androidと Hot Patching
  • 48. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. AndroidとHot Patching 47 処理の置換 ・ vtable操作 ・ DexClassLoader ・ Script デザインの置換 ・ ひたすらがんばる
  • 49. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. AndroidとHot Patching 48 vtable操作 Method A Method B Method C Method D Method E 0 1 2 3 4
  • 50. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. AndroidとHot Patching 49 vtable操作 Method A Method B Method C Method D Method E 0 1 2 3 4 Method B’
  • 51. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. AndroidとHot Patching 50 DexClassLoader Activity A Activity B ProxyActivity Activity B’ external.jar
  • 52. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. AndroidとHot Patching 51 Script if (スクリプトがある) { return スクリプトの実行 } 通常の処理
  • 53. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. AndroidとHot Patching 52 デザインの置換 public void createView(Context ctx, JSONObject obj) { // Classオブジェクトを得て Class viewClass = Class.forName(obj.getString("name")); // 生成する View view = (View)viewClass.getConstructor(Context.class).newInstance(ctx); // プロパティを得て JSONArray properties = obj.getJSONArray("properties"); // 設定する setProperties(view, properties); }
  • 54. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. AndroidとHot Patching 53 デザインの置換 public void setProperties(View view, JSONArray properties) { for (int i = 0; i < properties.length(); i++) { JSONObject property = properties.getJSONObject(i); switch (property.getString("name")) { case LAYOUT_WIDTH: … case LAYOUT_HEIGHT: … case GRAVITY: …
  • 55. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Hot Patching諸注意
  • 56. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Hot Patching諸注意 55 Hot Patchingとセキュリティ
  • 57. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Hot Patching諸注意 56 Hot Patchingとセキュリティ
  • 58. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Hot Patching諸注意 57 Hot Patchingとセキュリティ
  • 59. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Hot Patching諸注意 58 Hot Patchingとセキュリティ
  • 60. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Hot Patching諸注意 59 Hot Patchingとガイドライン Rollout.io ・WebKit / JavaScriptCoreで実行し ・アプリの主要な目的を変更しない ことで、 Apple Developer Program Requirements 3.3.2, 3.3.3に違反していない ※2017年3月8日、Apple社からRolloutの利用に関する警告を受けたため、こちらの記事にあるRolloutは利用しないようお願いいたします。
  • 61. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Hot Patching諸注意 60 Hot Patchingとガイドライン Google Play ・apkバイナリを書き換えてはいけない ・と、あったと思ったんだけど… ・ユーザーは尊重しましょう
  • 62. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. お手軽Hot Patching
  • 63. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. お手軽Hot Patching 62 使用するもの ・Transform API →ビルド時にバイトコード変換を行う ・jboss-javassist/javassist →手軽にバイトコード変換を書ける ・mozilla/rhino →OSS JavaScript実装 ・json2view →jsonからViewを生成する https://goo.gl/MDnvUt
  • 64. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. お手軽Hot Patching 63 Transform API ・Android Gradle Plugin提供のAPI ・Android Gradle Plugin 1.5〜 ・Jackは未サポート(別のAPIで可能)
  • 65. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. お手軽Hot Patching 64 gradle pluginを作って、registerTransform() で登録する class Patcher implements Plugin<Project>{ @Override void apply(Project project) { // バイトコード変換を行うTransformerを登録する project.android.registerTransform( new PatcherTransformer(project)) }
  • 66. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. お手軽Hot Patching 65 Javassistで処理を挿入する if (スクリプトがある) { return スクリプトの実行 } 通常の処理
  • 67. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. お手軽Hot Patching 66 Javassistで処理を挿入する 全クラス.each{ 全メソッド.each{ メソッド.insertBefore( “スクリプトがあれば実行” ) } }
  • 68. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. お手軽Hot Patching 67 mozilla/rhino ・Javaで書かれたJavaScriptの実装 ・Androidでも動く ・JavaのObjectを渡して、 スクリプト内でアクセス可能
  • 69. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. お手軽Hot Patching 68 Java ObjectをJavaScript用Objectに変換、 実行し、戻り値を受け取る ScriptableObject.putProperty(scope, "instance", Context.javaToJS(instance, scope)); rhino.evaluateString(scope, script, "JavaScript", 1, null); Function function = (Function)scope.get("apply", scope); Object result = function.call(rhino, scope, scope, functionParams);
  • 70. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. お手軽Hot Patching 69 json2view ・xmlをjsonに変換し、それを配信する $ ./gradlew runScript -Pxml=./pathToInputXmlFile.xml
  • 71. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. お手軽Hot Patching 70 レイアウトを設定する箇所に、 こういうコードを書く if (レイアウトパッチがある) { View view = DynamicView.createView( this, パッチ, null); setContentView(view); } else { setContentView(R.layout.default_layout) }
  • 72. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. お手軽Hot Patching 71 サンプルのサーバ ・サンプルなので、なんでもいいです https://goo.gl/DvUggq
  • 73. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. お手軽Hot Patching 72 デモ
  • 74. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. まとめ 73 まとめ ・ モバイルアプリの競争は激しいので ・ 改善速度で差をつけよう ・ Hot Patchingが効果的!
  • 75. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.