SlideShare una empresa de Scribd logo
1 de 80
インドのインターネット環境
との戦い方
About Me
• 辰濱健一(Kenichi Tatsuhama)
• 徳島県神山町在住
• Sansan株式会社@神山ラボ
• リモートワークで Eight アプリの開発
• GDG Shikoku スタッフ(Google Developer Group)
• Contacts
• Twitter : @tatsuhama50
• Facebook : kenichi.tatsuhama
徳島県神山町
2
古民家再生や、サテ
ライトオフィスの進
出等で、地方創生の
事例になっている
Sansan 株式会社 神山ラボ
3
9/15 Swift Tour in 神山
4
Agenda
5
• Eight のインド展開
• インドのネットワーク事情
• 分析
• 対応
Agenda
6
• Eight のインド展開
• インドのネットワーク事情
• 分析
• 対応
Eight のインド進出
7
https://jp.corp-sansan.com/news/2017/171122_8932.html https://jp.techcrunch.com/2017/11/22/sansan-eight-india/
8
日本でそれなりに動いているので、
英訳をあてたら大丈夫!
と思ってました。。。
Global Feedback
9
日本では再現しない問題ばかり…
• ダウンロードがなかなか完了しない
• なかなか画面が遷移しない
• 名刺画像送信が1分経っても終わらない
• 「通信エラー」の表示が多発
• etc…
10
これらの問題の
調査・解決のために…
Go India(3/12-24)
11
Go India(3/12-24)
12
↓エベレスト
ランチ約60円
Go India(3/12-24)
13
↓エベレスト
ランチ約60円 東京ランチ1回分
=インドランチ
1ヶ月分!
Go India(3/12-24)
14
↓エベレスト
ランチ約60円
↑この人は片道切符
東京ランチ1回分
=インドランチ
1ヶ月分!
Go India(7/9-22)
15
Go India(7/9-22)
16
Agenda
17
• Eight のインド展開
• インドのネットワーク事情
• 分析
• 対応
インドのネットワーク事情
18
• 3GB/Day で 約500円/月 ( 1.6 JPY / Rs )
https://www.jio.com/
インドのネットワーク事情
19
https://iphone-mania.jp/news-222377/
月額240円で42Gデータ
電話かけ放題!!
インドのネットワーク事情
20
Google もかなり
力を入れている
(PWA も新興国がターゲット)
https://www.blog.google/technology/next-
billion-users/google-for-india-2018/
21
インターネット人口急増中!
22
インターネット人口急増中!
しかし、…
インドのネットワーク事情
23
https://www.sankeibiz.jp/macro/print/180406/mcb1804060500007-c.htm
インドのネットワーク事情
24
https://www.sankeibiz.jp/macro/print/180406/mcb1804060500007-c.htm
インドのネットワーク事情
25
• エリア半径数百mの弱い電波
• 町中でも電波にムラあり
• 細い回線をみんなで取り合い
• 瞬断も多い
• (町中の停電も多い)
https://opensignal.com/networks/%E0%A4%AD%E0%A4%BE%E0%A4%B0%E0%A4%A4/jio-
%E0%A4%B5%E0%A5%8D%E0%A4%AF%E0%A4%BE%E0%A4%AA%E0%A5%8D%E0%A4%A4%E0%A4%BF
インドのネットワーク事情
26
• 重たいアプリはそもそもダウンロードされない
• 100MB もあると、20% の人が離脱する
https://youtu.be/AdfKNgyT438?t=149
通信単価が高かった頃は
「100MB もあったら
無料アプリでも
実質有料アプリ」
と言われた…
27
「ギガが足りない」…
ゆとりですね。
28
「ギガが足りない」…
ゆとりですね。
29
「サーバのレスポンスが、
必ず返ってくると思ってる?」…
ゆとりでした…orz
30
「サーバのレスポンスが、
必ず返ってくると思ってる?」…
ゆとりでした…orz
インドの iPhone 事情
31
http://jbpress.ismedia.jp/articles/-/53824 https://iphone-mania.jp/news-219624/
インドの iPhone 事情
32
http://jbpress.ismedia.jp/articles/-/53824 https://iphone-mania.jp/news-219624/
iPhone のシェアが
わずか1% !!
Agenda
33
• Eight のインド展開
• インドのネットワーク事情
• 分析
• 対応
分析
34
• 現地で受け入れられているアプリの UX
• New Relic Mobile による分析
• その他のツール
分析
35
• 現地で受け入れられているアプリの UX
• New Relic Mobile による分析
• その他のツール
現地で受け入れられているアプリの UX
36
• いずれも低速なネットワーク環境でも、さほど不自由ない
• 現地で受け入れられているアプリ
• Facebook
• Twitter
• Instagram
• WhatsApp(like LINE)
• Uber
etc…
Twitter の投稿 UX
37
• 通信終了を待たない UX
• Tweet 直後、即画面遷移
↓
• 送信状況の Progress 表示
↓
• 送信中の Tweet も UI に表示
↑Progress 表示
投稿中 Tweet
(網掛け表示)
普通の Tweet
LINE の自動再送
38
• オフラインでメッセージを送信しても
UI には送信中として反映する
• オンラインになったら自動で再送
• ユーザが再送する必要はない
送信中の UI 自動で再送完了
オンライン
になった
Instagram の読み込み UX
39
• 画像の読み込みが4段階ぐらいで行われている
動画
40
現地で受け入れられているアプリは、
低速ネットワーク環境を
ちゃんと考慮できていました。
分析
41
• 現地で受け入れられているアプリの UX
• New Relic Mobile による分析
• その他のツール
New Relic Mobile による分析
42
• https://newrelic.com/resource/mobile-monitoring-jp
• 30日間の無料トライアルもあり
New Relic Mobile による分析
43
• HttpRequest Sort
• Response time
• Requests per time
• Total Time
• Total size
New Relic Mobile による分析
44
• Geography Sort
• Response time
• Request per minute
• Total transfer size
• App launches
• Network failure late
New Relic Mobile による分析
45
• Interactions
• Memory
• CPU
• Network
• Threads
New Relic Mobile による分析
46
• Dashboard
• カスタムクエリで
View を作れる
47
New Relic Mobile を使うと
様々な角度からの
分析・評価が可能になります。
分析
48
• 現地で受け入れられているアプリの UX
• New Relic Mobile による分析
• その他のツール
Network Link Conditioner
49
• https://developer.apple.com/download/more/
• Mac の通信速度をコントロールできる
• インターネット共有をすれば、スマホの通信速度を低速にできる
Charles
50
• https://www.charlesproxy.com/
• プロキシをたてて通信内容をキャプチャできる
• レスポンスの書き換えも可能
• iOSDC 2018 でもセッションが
ありましたね!
ロケットモバイル(神プラン)
51
• https://rokemoba.com/
↑本家アカウントからの Like
ロケットモバイル(神プラン)
52
• https://rokemoba.com/
↑本家アカウントからの Like
毎日インドを
思い出せます!
余談
53
余談
54
余談
55
恵まれた
ネットワーク環境!
(ゆとり)
Agenda
57
• Eight のインド展開
• インドのネットワーク事情
• 分析
• 対応
対応
58
• アプリのバイナリサイズ削減
• 画像の送受信サイズを削減
• 通信結果を待たない UX に変更
• 通信に失敗しても、オンラインになったら自動リトライ
対応
59
• アプリのバイナリサイズ削減
• 画像の送受信サイズを削減
• 通信結果を待たない UX に変更
• 通信に失敗しても、オンラインになったら自動リトライ
アプリのバイナリサイズ削減
60
• アプリ内画像の軽量化
• jpeg や png 画像の Optimize
• 77 MB → 70 MB(約 10% 削減)
• https://tinypng.com/ などを利用
• App Thinning を利用
• Ex. 70 MB → 30 MB(約 50% 削減)
App Thinning
61
• アプリを自動で最適化して配信してくれる仕組み( WWDC 2015 )
• App Slicing, On-Demand Resources, Bitcode の3種類がある
• App Slicing:その端末に必要なリソースのみをダウンロードできる
• App Slicing iOS 9.0 以上が対応
(それ以外は、Universal 版になる)
• アセットカタログ形式が不可欠
https://developer.apple.com/jp/documentation/IDEs/Concept
ual/AppDistributionGuide/AppThinning/AppThinning.html
対応
62
• アプリのバイナリサイズ削減
• 画像の送受信サイズを削減
• 通信結果を待たない UX に変更
• 通信に失敗しても、オンラインになったら自動リトライ
画像の送受信サイズを削減
63
• 送信
• 形式変更
• Jpeg → Webp(約 70% 減)
• Base64 → Multipart(約 25% 減)
• Quality:90% → 70% (約 50% 減)
• 必要十分なサイズにリサイズして送信
• 受信
• 表示に適切な画像サイズ(サムネイル / 中繊細 / 高画質)でリクエスト
対応
64
• アプリのバイナリサイズ削減
• 画像の送受信サイズを削減
• 通信結果を待たない UX に変更
• 通信に失敗しても、オンラインになったら自動リトライ
通信結果を待たない UX に変更
65
即画面遷移
撮影 送信
送信
完了
送信中も表示
対応
66
• アプリのバイナリサイズ削減
• 画像の送受信サイズを削減
• 通信結果を待たない UX に変更
• 通信に失敗しても、オンラインになったら自動リトラ
イ
通信に失敗しても自動リトライ
68
• SwiftQueue
• https://github.com/lucas34/SwiftQueue
• 実行可能条件(充電中、オンライン)やリトライ条件を指定できる Job Scheduler
69
インド展開に向けて
日々日々改善施策を行っています
70
まとめ
まとめ
71
インドの低速なネットワークの攻略法
まとめ
72
インドの低速なネットワークの攻略法
• バイナリを軽く
→ アプリ内画像の最適化・App Thinning 対応
まとめ
73
インドの低速なネットワークの攻略法
• バイナリを軽く
→ アプリ内画像の最適化・App Thinning 対応
• 通信結果を待たない UX に
→ 機内モードや低速通信環境での UX 確認を!
まとめ
74
インドの低速なネットワークの攻略法
• バイナリを軽く
→ アプリ内画像の最適化・App Thinning 対応
• 通信結果を待たない UX に
→ 機内モードや低速通信環境での UX 確認を!
• ツールを活用して分析&改善を
→ NewRelic Mobile, Charles etc…
Fin.
76
まだ時間がある!
9/15 Swift Tour in 神山
77
78
宿泊先
79
80
9/15 にまた会いましょう!!
Fin.

Más contenido relacionado

La actualidad más candente

GitHubで雑誌・書籍を作る
GitHubで雑誌・書籍を作るGitHubで雑誌・書籍を作る
GitHubで雑誌・書籍を作る
Naonori Inao
 

La actualidad más candente (20)

Redmineによるメール対応管理の運用事例
Redmineによるメール対応管理の運用事例Redmineによるメール対応管理の運用事例
Redmineによるメール対応管理の運用事例
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
 
Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在
 
エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略
 
Machinationの紹介
Machinationの紹介Machinationの紹介
Machinationの紹介
 
Voxon Photonics VX1 で遊んでみた
Voxon Photonics VX1で遊んでみたVoxon Photonics VX1で遊んでみた
Voxon Photonics VX1 で遊んでみた
 
正しいものを正しくつくる
正しいものを正しくつくる正しいものを正しくつくる
正しいものを正しくつくる
 
経営のアジリティを支えるDevOpsと組織
経営のアジリティを支えるDevOpsと組織経営のアジリティを支えるDevOpsと組織
経営のアジリティを支えるDevOpsと組織
 
エンジニアのプレゼン資料作成/入門
エンジニアのプレゼン資料作成/入門エンジニアのプレゼン資料作成/入門
エンジニアのプレゼン資料作成/入門
 
事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
UniRxHandsOnVol1
UniRxHandsOnVol1UniRxHandsOnVol1
UniRxHandsOnVol1
 
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
 
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudyJenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
 
【Unite Tokyo 2018】ユニティちゃんトゥーンシェーダー2.0使いこなしスペシャル ~こだわりの活用法を紹介します!~
【Unite Tokyo 2018】ユニティちゃんトゥーンシェーダー2.0使いこなしスペシャル ~こだわりの活用法を紹介します!~【Unite Tokyo 2018】ユニティちゃんトゥーンシェーダー2.0使いこなしスペシャル ~こだわりの活用法を紹介します!~
【Unite Tokyo 2018】ユニティちゃんトゥーンシェーダー2.0使いこなしスペシャル ~こだわりの活用法を紹介します!~
 
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質 SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
 
GitHubで雑誌・書籍を作る
GitHubで雑誌・書籍を作るGitHubで雑誌・書籍を作る
GitHubで雑誌・書籍を作る
 
モンスターストライクにおける監視システムのあれこれ
モンスターストライクにおける監視システムのあれこれモンスターストライクにおける監視システムのあれこれ
モンスターストライクにおける監視システムのあれこれ
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
 

Similar a インドのインターネット環境 との戦い方

HTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なことHTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なこと
Masakazu Muraoka
 
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダJAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
Kenichi Yoshida
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
Yoichiro Sakurai
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
 

Similar a インドのインターネット環境 との戦い方 (20)

インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 
HTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なことHTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なこと
 
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダJAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
 
Io t,ai時代のソフトウェア
Io t,ai時代のソフトウェアIo t,ai時代のソフトウェア
Io t,ai時代のソフトウェア
 
IoT時代のセキュアなクラウドインフラ構築術 #seccamp
IoT時代のセキュアなクラウドインフラ構築術 #seccampIoT時代のセキュアなクラウドインフラ構築術 #seccamp
IoT時代のセキュアなクラウドインフラ構築術 #seccamp
 
kintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツールkintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツール
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
高さ比べじゃない、キャリアは歩んできた道
高さ比べじゃない、キャリアは歩んできた道高さ比べじゃない、キャリアは歩んできた道
高さ比べじゃない、キャリアは歩んできた道
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
さくらのIoT Platformを使ってみよう ~OSC大阪編~
さくらのIoT Platformを使ってみよう ~OSC大阪編~さくらのIoT Platformを使ってみよう ~OSC大阪編~
さくらのIoT Platformを使ってみよう ~OSC大阪編~
 
楽天の中のわたしと勉強会
楽天の中のわたしと勉強会楽天の中のわたしと勉強会
楽天の中のわたしと勉強会
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
 
Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支えるFirebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 
CKAN日本語コミュニティの現状と課題
CKAN日本語コミュニティの現状と課題CKAN日本語コミュニティの現状と課題
CKAN日本語コミュニティの現状と課題
 
デモから見るOpenWhisk - Docker Action -
デモから見るOpenWhisk - Docker Action - デモから見るOpenWhisk - Docker Action -
デモから見るOpenWhisk - Docker Action -
 
マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャ
 

Más de 健一 辰濱

Más de 健一 辰濱 (20)

地方創生ワカモノ会合
地方創生ワカモノ会合地方創生ワカモノ会合
地方創生ワカモノ会合
 
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオンGoogle Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン
 
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 Sansan Tech Meetup Androidエンジニアが振り返る Google I/O   Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について
 
Android 開発の昔と今
Android 開発の昔と今Android 開発の昔と今
Android 開発の昔と今
 
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩
 
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-onGDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on
 
Firebase Summit 2019 Recap
Firebase Summit 2019 RecapFirebase Summit 2019 Recap
Firebase Summit 2019 Recap
 
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
 
Firebase hands on in Matsuyama
Firebase hands on in MatsuyamaFirebase hands on in Matsuyama
Firebase hands on in Matsuyama
 
DroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 ClosingDroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 Closing
 
企業スポンサー
企業スポンサー企業スポンサー
企業スポンサー
 
参加したセッションの ピックアップ
参加したセッションのピックアップ参加したセッションのピックアップ
参加したセッションの ピックアップ
 
CFP(Call For Paper) を出す話
CFP(Call For Paper)を出す話CFP(Call For Paper)を出す話
CFP(Call For Paper) を出す話
 
DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会
 
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見るDroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る
 
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていくJava で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
 
20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド
 
Java で書かれたAndroid アプリに Kotlin を適用させていく
Java で書かれたAndroid アプリに Kotlin を適用させていくJava で書かれたAndroid アプリに Kotlin を適用させていく
Java で書かれたAndroid アプリに Kotlin を適用させていく
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 

インドのインターネット環境 との戦い方