SlideShare ist ein Scribd-Unternehmen logo
1 von 23
を利用した地理空間検索実践
楽天株式会社
ECインキュベーション開発部
オートエコシステム開発課
仵 启帆 | Keihan
2019/09/20
2
・ 年来日
・ 年阪大院卒、楽天に入社
・今まで携わってきたサービス:
楽天市場 楽天ブックス 楽天デリバリー 楽天ダイニング
楽天車検・カーサービス 他 プロジェクト
・日本 学会認定
上級バーチャルリアリティ技術者
・グーグル認定
開発者・クラウドアーキテクト
3
楽天カーサービスアプリ
4
導入前
5
問題点
• の実装や調整などをバックエンドチームにいちいち依頼しないといけない
• バックエンドチームがウェブに集中していて、ネイティブアプリに詳しくない
• マイクロサービスを配慮した構造になっていなかった
• そもそもウェブとネイティブアプリの仕様が違う
6
導入後
バッチ同期
7
何が良くなったのか
• とにかく新機能がすぐに実装できる
• バックエンド側のリソースを待たなくても、必要な分だけ調整できる
• 自身の機能により:
• (追加実装なしで)ローカルキャシュが勝手に付く
• (追加実装なしで)リアルタイムでデータ変更に反応できる
• サーバのこと意識しなくていい
• の他機能とシームレス連携
8
で地理空間検索?
• 検索中心から特定範囲内の店舗を地図に表示する
• 一部のデータベース製品に地理空間検索の機能が提供されてい
るが、 にはまだない
• というデータ型が用意されてるが、 の
や クエリに対応していない
9
プラン :全店舗分取得してから距離で絞り込む
• メリット:
• 一番実装しやすい
• デメリット:
• 初回ロードが遅い
• 余計な通信と料金が発生する
10
プラン :緯度と経度でそれぞれ絞り込んで重複分を取得する
• で並行処理
• プラン よりロード時間が減り、コストが軽減される
11
プラン
の
や
でクエリ
したい
緯度と経度の 次元データのままだとどうにもできない
次元にすればク
エリできる
でもどうやって?
ジオハッシュ
12
ジオハッシュは、 次元地理座標データを次元削減し、 次元データにマッピングするアルゴリズムです
空間充填曲線の数学技法を用いた、空間探索アルゴリズムの一種類である
カーブ アルゴリズム カーブ アルゴリズム
13
エンコードされたもの
アルゴリズム アルゴリズム
14
ライブラリを活用して素早く実装
15
バッチ側
• 位置情報をエンコードして に書き込む
•
16
アプリ側( )
該当範囲内のドキュメント(店舗)が取得された
該当範囲内の全ドキュメントが取得完了
17
アプリ側( )
該当範囲内のドキュメント(店舗)が取得された
該当範囲内の全ドキュメントが取得完了
18
パーフォマンス改善(旧 プラン )
0
200
400
600
800
1000
1200
1400
1 2 3 4 5 6 7 8 9 10
Response Time (ms)
ShopAPI(GasStation) Firestore(CarWashShop)
• 平均ロード速度:
を利用した場合の数値です
キャッシュ付くので、一回ロードしてしまえば気にな
らない程度
東京・大阪リージョンを利用したい場合:
• レイテンシが約 になる( )
• 基本、東京が大阪より速くなる…
• 値段が若干割高くなる
• マルチリージョンではないので地域冗長が欠如
19
パーフォマンス改善(プラン プラン )
1 2 3 4 5 6 7 8 9 10 11 12 13 14
検索時間比較
Before After
• 初回ロード速度:
• 平均ロード速度:
• ジオハッシュ導入することで、コスト削減だけで
なく、ロード速度も向上できた
20
まとめ
•
• プロダクト・チーム体制などを配慮して使用するかを決める
• サーバレスと のお陰でフロントエンド開発体験最高だが、コンソールも ツールもイマイチなど、落とし穴が
結構ある
•
• サードパーティライブラリで空間検索を素早い実装実現出来ているが、やはり本家から機能提供してほしい
• ちなみに今日も依存性問題が起こっていた
22
Cloud Firestoreを利用した地理空間検索実践

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
AI開発を円滑に進めるための契約・法務・知財
AI開発を円滑に進めるための契約・法務・知財AI開発を円滑に進めるための契約・法務・知財
AI開発を円滑に進めるための契約・法務・知財
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOps
 
HBaseを用いたグラフDB「Hornet」の設計と運用
HBaseを用いたグラフDB「Hornet」の設計と運用HBaseを用いたグラフDB「Hornet」の設計と運用
HBaseを用いたグラフDB「Hornet」の設計と運用
 
運用してわかったLookerの本質的メリット : Data Engineering Study #8
運用してわかったLookerの本質的メリット : Data Engineering Study #8運用してわかったLookerの本質的メリット : Data Engineering Study #8
運用してわかったLookerの本質的メリット : Data Engineering Study #8
 
振り返り(アジャイルレトロスペクティブズ)
振り返り(アジャイルレトロスペクティブズ)振り返り(アジャイルレトロスペクティブズ)
振り返り(アジャイルレトロスペクティブズ)
 
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性の構造 デブサミ2019夏 structure of psychological safety心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
 
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
 
ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版
 
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
 
位置データもPythonで!!!
位置データもPythonで!!!位置データもPythonで!!!
位置データもPythonで!!!
 
はじめてのPRD
はじめてのPRDはじめてのPRD
はじめてのPRD
 
推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから
 
ICCV19読み会 "Learning Single Camera Depth Estimation using Dual-Pixels"
ICCV19読み会 "Learning Single Camera Depth Estimation using Dual-Pixels"ICCV19読み会 "Learning Single Camera Depth Estimation using Dual-Pixels"
ICCV19読み会 "Learning Single Camera Depth Estimation using Dual-Pixels"
 
AIによるアニメ生成の挑戦
AIによるアニメ生成の挑戦AIによるアニメ生成の挑戦
AIによるアニメ生成の挑戦
 
『機械学習による故障予測・異常検知 事例紹介とデータ分析プロジェクト推進ポイント』
『機械学習による故障予測・異常検知 事例紹介とデータ分析プロジェクト推進ポイント』『機械学習による故障予測・異常検知 事例紹介とデータ分析プロジェクト推進ポイント』
『機械学習による故障予測・異常検知 事例紹介とデータ分析プロジェクト推進ポイント』
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
Semantic segmentation
Semantic segmentationSemantic segmentation
Semantic segmentation
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 

Ähnlich wie Cloud Firestoreを利用した地理空間検索実践

楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
Rakuten Group, Inc.
 
QAファンネル振り返り術
QAファンネル振り返り術QAファンネル振り返り術
QAファンネル振り返り術
JumpeiIto2
 
Google Container Engine と Kubernetes で 無理をしないコンテナ管理
Google Container Engine と Kubernetes で 無理をしないコンテナ管理Google Container Engine と Kubernetes で 無理をしないコンテナ管理
Google Container Engine と Kubernetes で 無理をしないコンテナ管理
Ryosuke Suto
 
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
 
企業と勉強会 @nifty エンジニアサポート
企業と勉強会 @nifty エンジニアサポート企業と勉強会 @nifty エンジニアサポート
企業と勉強会 @nifty エンジニアサポート
Daichi Morifuji
 

Ähnlich wie Cloud Firestoreを利用した地理空間検索実践 (20)

長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
 
4.5G/5G環境でのECサイトの高速化 ― 変わるモバイル購買体験
4.5G/5G環境でのECサイトの高速化 ― 変わるモバイル購買体験4.5G/5G環境でのECサイトの高速化 ― 変わるモバイル購買体験
4.5G/5G環境でのECサイトの高速化 ― 変わるモバイル購買体験
 
【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術!
【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術!【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術!
【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術!
 
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
 
QAファンネル振り返り術
QAファンネル振り返り術QAファンネル振り返り術
QAファンネル振り返り術
 
kintoneエンジニアのお仕事
kintoneエンジニアのお仕事kintoneエンジニアのお仕事
kintoneエンジニアのお仕事
 
楽天エンジニアライフ
楽天エンジニアライフ楽天エンジニアライフ
楽天エンジニアライフ
 
Agile Japan 2013 サテライト<長野>事例研究講演資料
Agile Japan 2013 サテライト<長野>事例研究講演資料Agile Japan 2013 サテライト<長野>事例研究講演資料
Agile Japan 2013 サテライト<長野>事例研究講演資料
 
NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020
 
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
 
Internship in LINE Corporation
Internship in LINE CorporationInternship in LINE Corporation
Internship in LINE Corporation
 
Google Container Engine と Kubernetes で 無理をしないコンテナ管理
Google Container Engine と Kubernetes で 無理をしないコンテナ管理Google Container Engine と Kubernetes で 無理をしないコンテナ管理
Google Container Engine と Kubernetes で 無理をしないコンテナ管理
 
.NET Lab2022年2月
.NET Lab2022年2月.NET Lab2022年2月
.NET Lab2022年2月
 
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能
 
【15-A-4】Redmine + Lychee 導入のアンチパターン
【15-A-4】Redmine + Lychee 導入のアンチパターン【15-A-4】Redmine + Lychee 導入のアンチパターン
【15-A-4】Redmine + Lychee 導入のアンチパターン
 
企業と勉強会 @nifty エンジニアサポート
企業と勉強会 @nifty エンジニアサポート企業と勉強会 @nifty エンジニアサポート
企業と勉強会 @nifty エンジニアサポート
 
SORACOM UG Explorer 2018 - IoTxAIを活用した小売業向け店舗解析サービスの仕組みとノウハウ
SORACOM UG Explorer 2018 -  IoTxAIを活用した小売業向け店舗解析サービスの仕組みとノウハウSORACOM UG Explorer 2018 -  IoTxAIを活用した小売業向け店舗解析サービスの仕組みとノウハウ
SORACOM UG Explorer 2018 - IoTxAIを活用した小売業向け店舗解析サービスの仕組みとノウハウ
 
Redmine + Lychee導入のアンチパターン
Redmine + Lychee導入のアンチパターンRedmine + Lychee導入のアンチパターン
Redmine + Lychee導入のアンチパターン
 
アジャイル開発のためのDatadog
アジャイル開発のためのDatadogアジャイル開発のためのDatadog
アジャイル開発のためのDatadog
 

Mehr von Rakuten Group, Inc.

Mehr von Rakuten Group, Inc. (20)

コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
 
楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり
 
What Makes Software Green?
What Makes Software Green?What Makes Software Green?
What Makes Software Green?
 
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
 
DataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みDataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組み
 
大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開
 
楽天における大規模データベースの運用
楽天における大規模データベースの運用楽天における大規模データベースの運用
楽天における大規模データベースの運用
 
楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー
 
楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割
 
Rakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdfRakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdf
 
The Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdfThe Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdf
 
Supporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdfSupporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdf
 
Making Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdfMaking Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdf
 
How We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfHow We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdf
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech info
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech info
 
OWASPTop10_Introduction
OWASPTop10_IntroductionOWASPTop10_Introduction
OWASPTop10_Introduction
 
Introduction of GORA API Group technology
Introduction of GORA API Group technologyIntroduction of GORA API Group technology
Introduction of GORA API Group technology
 
100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情
 
社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー
 

Cloud Firestoreを利用した地理空間検索実践