SlideShare a Scribd company logo
1 of 23
Download to read offline
マイクロサービス化とFirebase活用事例
【タウンWiFi × LIFULL】スマホアプリ開発の実例を大公開! 2017.5.10
株式会社LIFULL
寒川 明好
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。2
自己紹介
• 寒川 明好
• 株式会社LIFULL
– Android開発グループ
• Engineering Manager
• 2010年入社
– 入社後1年半はWebを担当
– その後はアプリ開発メイン
• Android
• iOS
• Windows Phone
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。3
LIFULL HOME’Sとは
最上の住まいに出逢えるよう、最大の不動産・住宅情
報と、最良の情報品質、最適な手法によって
住まい探しをお手伝いする、不動産・住宅情報の総合
サービスです。
• ブラウザ
– デスクトップ
– スマートフォン
• アプリ
– Android
• Phone
• Tablet
• Wear
– iOS
• Phone
• Tablet
• Watch
• TV
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。4
おかげさまでベストアプリ
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。5
アジェンダ
• マイクロサービス化
– LIFULL HOME’Sのマイクロサービス構成
– API Gateway と Lambda について
– API側の開発環境
– 運用と監視
• Firebase活用事例
– Develop : Realtime Database & Storage
– Grow : Remote Config
– Grow : Dynamic Links
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。6
Orchestration Layer
マイクロサービスとは
• モノリシックとマイクロサービス
– モノリシック
• すべての機能が1つのプロセスで稼働
– マイクロサービス
• ビジネスロジック機能ごとのサービスで、それぞれ独立したプロセス
で稼働
PC API
SP API
APP API
Common
Modules
DB / DAO
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。7
Orchestration Layer
マイクロサービスとは
• モノリシックとマイクロサービス
– モノリシック
• すべての機能が1つのプロセスで稼働
– マイクロサービス
• ビジネスロジック機能ごとのサービスで、それぞれ独立したプロセス
で稼働
PC API
SP API
APP API
Common
Modules
DB / DAO
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。8
LIFULL HOME’Sのマイクロサービス構成
DAO / DB
• Amazon API Gateway + AWS Lambda で構成
iOS / Android
Route 53 API Gateway Lambda
Cloud Front S3
CloudWatch
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。9
API Gateway と Lambda
• API Gateway
– 最大で数十万の同時API呼
び出し
– 従量課金
– キャッシュ
– Cloud Watchでロギング
– クライアント側SDKが出力
可能
– Lambda関数を指定
– Androidでは出力したクラ
イアントSDKを使っていな
い
• Lambda
– Lambda対応言語
• Node.js
• Java
• C#
• Python
– S3のイベントをフックし
てコード実行
– API Gatewayと組み合わせ
てRESTful通信
– 1関数1git repositoryで独
立
POINT POINT
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。10
API Gateway と Lambda の制限
• スロットル制限1,000rps
• アカウント当たりのAPI数 60
• Timeout 30秒
• Payloadサイズ 10MB
• Etc…
• ディスク容量 512MB
• リクエスト本文のPayloadサイズ 6MB
• 関数の同時実行数
• Etc…
POINT
運用コストが減る代わりに、様々なデフォルト制限がある
サービスの規模に応じてAWS Supportに上限緩和申請をする
※項目によっては緩和出来ないため、AWSのドキュメントを参照
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。11
API側の開発環境
• 言語
– Node.js
• パッケージマネージャ
– Yarn
• API フォーマット
– Swagger
• テスト
– Mocha
– ESlint
• CI
– Circle CI
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。12
Yarn
• 言語
– Node.js
• パッケージマネージャ
– Yarn
• API フォーマット
– Swagger
• テスト
– Mocha
– ESlint
• CI
– Circle CI
Yarn
• Facebookが2016/10にローンチ
• Ultra Fast.
• Mega Secure.
• Super Reliable.
• Offline Mode
• Flat Mode
$ npm install $ yarn (install)
Ultra Fast!
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。13
API側の開発環境
• 言語
– Node.js
• パッケージマネージャ
– Yarn
• API フォーマット
– Swagger
• テスト
– Mocha
– ESlint
• CI
– Circle CI
Swagger
• THE WORLD’S MOST POPULAR
API FRAMEWORK
• Open Source Initiativeが採用
• RESTful APIドキュメントの管理
• Swagger SpecでI/Oを定義する
(yaml/json)
• Client用のSDKとサーバーコード
の生成
• Electron化で社内用ツールとして
使用
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。14
API側の開発環境
• 言語
– Node.js
• パッケージマネージャ
– Yarn
• API フォーマット
– Swagger
• テスト
– Mocha
– ESlint
• CI
– Circle CI
Mocha
• ユニットテスト
• 結合テスト(APIテスト)
• npm ライブラリrewireでprivate
functionテスト
• coverage計測
• CIサーバーでpush毎にnpm run
test
ESlint
• JavaScriptの静的検証ツール
• コーディング規約を集約
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。15
API側の開発環境
• 言語
– Node.js
• パッケージマネージャ
– Yarn
• API フォーマット
– Swagger
• テスト
– Mocha
– ESlint
• CI
– Circle CI
Circle CI
• ビルド毎にコンテナ起動 → 破棄
• 1コンテナは無料
• Github連携
• Slackにテスト結果通知
• yarnでも使える
• Test前にlintも流す
• cache_directoriesの指定
• ビルドからテストまでを高速
化
コードをPush
Circle CIでテスト実行
GitHubと連携
Slackに結果を通知
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。16
API運用・監視
• ツール
– AWS CloudWatch
• デフォルトで使用可能なアラームの他、手動で様々なアラームを定
義
– 5xxエラー
– Lambdaの関数ごと
– 任意の文字列(ログ内容から抽出)
– Invocation Count
– Count over limit
– Throttles
• 体制
– 輪番でアプリエンジニアが監視
• CloudWatchからのアラームで検知
– 問題が発生した場合
• Lambdaでバージョン管理しているので差し戻し
• リポジトリが独立しているため、他APIへの影響はほぼゼロ
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。17
アジェンダ
• マイクロサービス化
– LIFULL HOME’Sのマイクロサービス構成
– API Gateway と Lambda について
– API側の開発環境
– 運用と監視
• Firebase活用事例
– Develop : Realtime Database & Storage
– Grow : Remote Config
– Grow : Dynamic Links
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。18
Firebaseとは
• Google I/O 2016 で新しいFirebaseが発表
• mobile Backend as a Service(MBaaS)と呼
ばれるクラウドサービス
• ネイティブアプリに特化したプラットフォーム
• Analytics, Develop, Grow, Earn によるアプリ
の最大化
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。19
Develop : Realtime Database & Storage
• 特徴
– Realtime Database
• クラウドでホスティングされているデータベース
• 1 つの Realtime Database インスタンスを共有して、最新のデー
タによる更新を自動的に受信
– Storage
• Google Cloud Storage でサポートされている
特集などシーズンに
よって変わるものを
すべてのユーザに提
供できる
Develop が加速する
WebP
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。20
Grow : Remote Config
• 特徴
– 機能変更の公開
– ABテストの実施 通勤・通学時間から探す
所要時間から探す
通勤・通学時間から探す
所要時間から探す
様々なパターンをテストし
一番CVRが上がるものをセットできるので
アプリを Grow させることができる
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。21
Grow : Dynamic Links
• 特徴
– 1つのリンクでiOS, Android, Webで同じ動作できる
– プラットフォームに応じて、適切な場所に移動できる
– アプリをインストール済みかどうかで動作を変える
Webの続き
Webユーザをアプリユーザにすることで
アプリを Grow させることができる
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。22
Firebaseを最大限に活用しよう
$
Analytics
Develop
Grow
Earn
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。23
おわり

More Related Content

What's hot

Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでCode for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでNaoyuki Yamada
 
Awsjpcasestudies
AwsjpcasestudiesAwsjpcasestudies
Awsjpcasestudiesakitsukada
 
ネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったことネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったことgree_tech
 
#reco_tech AWSへ全面移行した今を話ます。
#reco_tech   AWSへ全面移行した今を話ます。#reco_tech   AWSへ全面移行した今を話ます。
#reco_tech AWSへ全面移行した今を話ます。recotech
 
Azure Load Testingを試してみた
Azure Load Testingを試してみたAzure Load Testingを試してみた
Azure Load Testingを試してみたHiroyuki Mori
 
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介Eiji Shinohara
 
CloudGarageのベンチマークテスト
CloudGarageのベンチマークテストCloudGarageのベンチマークテスト
CloudGarageのベンチマークテストKazunori Inaba
 
JAWS-2013-LT 10000req/secを50msecで返すサーバーインフラをAWSで作る
JAWS-2013-LT 10000req/secを50msecで返すサーバーインフラをAWSで作るJAWS-2013-LT 10000req/secを50msecで返すサーバーインフラをAWSで作る
JAWS-2013-LT 10000req/secを50msecで返すサーバーインフラをAWSで作るNaoyuki Yamada
 
これからのインフラエンジニアについて考えていること
これからのインフラエンジニアについて考えていることこれからのインフラエンジニアについて考えていること
これからのインフラエンジニアについて考えていることgree_tech
 
Alibaba Cloudのベンチマークテスト
Alibaba CloudのベンチマークテストAlibaba Cloudのベンチマークテスト
Alibaba CloudのベンチマークテストKazunori Inaba
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ真吾 吉田
 
「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyo「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyoMasahiro NAKAYAMA
 
Mobile cloudnight 2015/11/11
Mobile cloudnight 2015/11/11Mobile cloudnight 2015/11/11
Mobile cloudnight 2015/11/11YUSUKE MORIZUMI
 
Introducing Amazon Rekognition, Amazon Polly and Amazon Lex
Introducing Amazon Rekognition, Amazon Polly and Amazon LexIntroducing Amazon Rekognition, Amazon Polly and Amazon Lex
Introducing Amazon Rekognition, Amazon Polly and Amazon LexKeisuke Nishitani
 
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介Naoyuki Yamada
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について真吾 吉田
 
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021Oshitari_kochi
 
tvOS開発前に確認すべきこと
tvOS開発前に確認すべきことtvOS開発前に確認すべきこと
tvOS開発前に確認すべきこと庸介 高橋
 
Server side swift: Vapor
Server side swift: VaporServer side swift: Vapor
Server side swift: VaporIko Nakari
 
Moderator Slide for Global Azure Bootcamp 2019@Sapporo
Moderator Slide for Global Azure Bootcamp 2019@SapporoModerator Slide for Global Azure Bootcamp 2019@Sapporo
Moderator Slide for Global Azure Bootcamp 2019@SapporoYasuaki Matsuda
 

What's hot (20)

Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでCode for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
 
Awsjpcasestudies
AwsjpcasestudiesAwsjpcasestudies
Awsjpcasestudies
 
ネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったことネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったこと
 
#reco_tech AWSへ全面移行した今を話ます。
#reco_tech   AWSへ全面移行した今を話ます。#reco_tech   AWSへ全面移行した今を話ます。
#reco_tech AWSへ全面移行した今を話ます。
 
Azure Load Testingを試してみた
Azure Load Testingを試してみたAzure Load Testingを試してみた
Azure Load Testingを試してみた
 
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
 
CloudGarageのベンチマークテスト
CloudGarageのベンチマークテストCloudGarageのベンチマークテスト
CloudGarageのベンチマークテスト
 
JAWS-2013-LT 10000req/secを50msecで返すサーバーインフラをAWSで作る
JAWS-2013-LT 10000req/secを50msecで返すサーバーインフラをAWSで作るJAWS-2013-LT 10000req/secを50msecで返すサーバーインフラをAWSで作る
JAWS-2013-LT 10000req/secを50msecで返すサーバーインフラをAWSで作る
 
これからのインフラエンジニアについて考えていること
これからのインフラエンジニアについて考えていることこれからのインフラエンジニアについて考えていること
これからのインフラエンジニアについて考えていること
 
Alibaba Cloudのベンチマークテスト
Alibaba CloudのベンチマークテストAlibaba Cloudのベンチマークテスト
Alibaba Cloudのベンチマークテスト
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ
 
「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyo「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyo
 
Mobile cloudnight 2015/11/11
Mobile cloudnight 2015/11/11Mobile cloudnight 2015/11/11
Mobile cloudnight 2015/11/11
 
Introducing Amazon Rekognition, Amazon Polly and Amazon Lex
Introducing Amazon Rekognition, Amazon Polly and Amazon LexIntroducing Amazon Rekognition, Amazon Polly and Amazon Lex
Introducing Amazon Rekognition, Amazon Polly and Amazon Lex
 
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について
 
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
 
tvOS開発前に確認すべきこと
tvOS開発前に確認すべきことtvOS開発前に確認すべきこと
tvOS開発前に確認すべきこと
 
Server side swift: Vapor
Server side swift: VaporServer side swift: Vapor
Server side swift: Vapor
 
Moderator Slide for Global Azure Bootcamp 2019@Sapporo
Moderator Slide for Global Azure Bootcamp 2019@SapporoModerator Slide for Global Azure Bootcamp 2019@Sapporo
Moderator Slide for Global Azure Bootcamp 2019@Sapporo
 

Similar to 20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)

Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoKyosuke Inoue
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in TokyoKyosuke Inoue
 
Sharoid Service Menu
Sharoid Service MenuSharoid Service Menu
Sharoid Service Menusharoid
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublishedYoichiro Sakurai
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshopYoichiro Sakurai
 
企画者が押さえておきたいHtml5アプリ開発の要点
企画者が押さえておきたいHtml5アプリ開発の要点企画者が押さえておきたいHtml5アプリ開発の要点
企画者が押さえておきたいHtml5アプリ開発の要点Monaca
 
2018_02_01ヒカラボ登壇資料
2018_02_01ヒカラボ登壇資料2018_02_01ヒカラボ登壇資料
2018_02_01ヒカラボ登壇資料LIFULL Co., Ltd.
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介Yoshito Tabuchi
 
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーImamura Masayuki
 
いまさら聞けない!HTML5超入門
いまさら聞けない!HTML5超入門いまさら聞けない!HTML5超入門
いまさら聞けない!HTML5超入門Monaca
 
SwiftによるiOS開発再入門
SwiftによるiOS開発再入門SwiftによるiOS開発再入門
SwiftによるiOS開発再入門Tomoki Hasegawa
 
shibuya.apk vol21
shibuya.apk vol21shibuya.apk vol21
shibuya.apk vol21Takeshi Eto
 
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発takuma mori
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術vaccho
 
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜Teruo Adachi
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたYasuharu Seki
 
OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304Shinichiro Arai
 
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」feedtailor
 

Similar to 20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1) (20)

20110824 android apps_tanaka
20110824 android apps_tanaka20110824 android apps_tanaka
20110824 android apps_tanaka
 
Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in Tokyo
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
 
Sharoid Service Menu
Sharoid Service MenuSharoid Service Menu
Sharoid Service Menu
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublished
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
 
企画者が押さえておきたいHtml5アプリ開発の要点
企画者が押さえておきたいHtml5アプリ開発の要点企画者が押さえておきたいHtml5アプリ開発の要点
企画者が押さえておきたいHtml5アプリ開発の要点
 
2018_02_01ヒカラボ登壇資料
2018_02_01ヒカラボ登壇資料2018_02_01ヒカラボ登壇資料
2018_02_01ヒカラボ登壇資料
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
 
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
 
いまさら聞けない!HTML5超入門
いまさら聞けない!HTML5超入門いまさら聞けない!HTML5超入門
いまさら聞けない!HTML5超入門
 
SwiftによるiOS開発再入門
SwiftによるiOS開発再入門SwiftによるiOS開発再入門
SwiftによるiOS開発再入門
 
デバイス WebAPI設計の進め方
デバイス WebAPI設計の進め方デバイス WebAPI設計の進め方
デバイス WebAPI設計の進め方
 
shibuya.apk vol21
shibuya.apk vol21shibuya.apk vol21
shibuya.apk vol21
 
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術
 
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
 
OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304
 
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」
 

More from LIFULL Co., Ltd.

20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのことLIFULL Co., Ltd.
 
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性LIFULL Co., Ltd.
 
Kubernetesセキュリティの歩き方
Kubernetesセキュリティの歩き方Kubernetesセキュリティの歩き方
Kubernetesセキュリティの歩き方LIFULL Co., Ltd.
 
LIFULLの全社アプリケーション実行基盤 KEEL について
LIFULLの全社アプリケーション実行基盤 KEEL についてLIFULLの全社アプリケーション実行基盤 KEEL について
LIFULLの全社アプリケーション実行基盤 KEEL についてLIFULL Co., Ltd.
 
Kubernetesクラスタバージョンアップを支える技術
Kubernetesクラスタバージョンアップを支える技術Kubernetesクラスタバージョンアップを支える技術
Kubernetesクラスタバージョンアップを支える技術LIFULL Co., Ltd.
 
LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷LIFULL Co., Ltd.
 
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっているLIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっているLIFULL Co., Ltd.
 
SaPID を導入するまでとそれから
SaPID を導入するまでとそれからSaPID を導入するまでとそれから
SaPID を導入するまでとそれからLIFULL Co., Ltd.
 
3D間取りを支える技術
3D間取りを支える技術3D間取りを支える技術
3D間取りを支える技術LIFULL Co., Ltd.
 
LIFULL HOME'Sのおとり広告予測モデルの開発
LIFULL HOME'Sのおとり広告予測モデルの開発LIFULL HOME'Sのおとり広告予測モデルの開発
LIFULL HOME'Sのおとり広告予測モデルの開発LIFULL Co., Ltd.
 
大企業でアジャイル開発を推進できる条件とその心構え
大企業でアジャイル開発を推進できる条件とその心構え大企業でアジャイル開発を推進できる条件とその心構え
大企業でアジャイル開発を推進できる条件とその心構えLIFULL Co., Ltd.
 
スクラムを利用したアジャイルオフショア開発のとりくみ
スクラムを利用したアジャイルオフショア開発のとりくみスクラムを利用したアジャイルオフショア開発のとりくみ
スクラムを利用したアジャイルオフショア開発のとりくみLIFULL Co., Ltd.
 
実践 マーケティングテクノロジーエンジニア
実践 マーケティングテクノロジーエンジニア実践 マーケティングテクノロジーエンジニア
実践 マーケティングテクノロジーエンジニアLIFULL Co., Ltd.
 
エンジニア × マーケティングテクノロジー が必要な理由
エンジニア × マーケティングテクノロジー が必要な理由エンジニア × マーケティングテクノロジー が必要な理由
エンジニア × マーケティングテクノロジー が必要な理由LIFULL Co., Ltd.
 
「空飛ぶホームズくん」を実現するVR技術
「空飛ぶホームズくん」を実現するVR技術「空飛ぶホームズくん」を実現するVR技術
「空飛ぶホームズくん」を実現するVR技術LIFULL Co., Ltd.
 
ニオイセンサで思索する街の新たな指標
ニオイセンサで思索する街の新たな指標ニオイセンサで思索する街の新たな指標
ニオイセンサで思索する街の新たな指標LIFULL Co., Ltd.
 
Well-beingを測る「LIFE WILL」開発の舞台裏
Well-beingを測る「LIFE WILL」開発の舞台裏Well-beingを測る「LIFE WILL」開発の舞台裏
Well-beingを測る「LIFE WILL」開発の舞台裏LIFULL Co., Ltd.
 
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったことLIFULL Co., Ltd.
 
ウェブアクセシビリティ推進活動はじめました
ウェブアクセシビリティ推進活動はじめましたウェブアクセシビリティ推進活動はじめました
ウェブアクセシビリティ推進活動はじめましたLIFULL Co., Ltd.
 
大きめレガシープロジェクトのフロント行く末
大きめレガシープロジェクトのフロント行く末大きめレガシープロジェクトのフロント行く末
大きめレガシープロジェクトのフロント行く末LIFULL Co., Ltd.
 

More from LIFULL Co., Ltd. (20)

20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
 
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
 
Kubernetesセキュリティの歩き方
Kubernetesセキュリティの歩き方Kubernetesセキュリティの歩き方
Kubernetesセキュリティの歩き方
 
LIFULLの全社アプリケーション実行基盤 KEEL について
LIFULLの全社アプリケーション実行基盤 KEEL についてLIFULLの全社アプリケーション実行基盤 KEEL について
LIFULLの全社アプリケーション実行基盤 KEEL について
 
Kubernetesクラスタバージョンアップを支える技術
Kubernetesクラスタバージョンアップを支える技術Kubernetesクラスタバージョンアップを支える技術
Kubernetesクラスタバージョンアップを支える技術
 
LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷
 
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっているLIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
 
SaPID を導入するまでとそれから
SaPID を導入するまでとそれからSaPID を導入するまでとそれから
SaPID を導入するまでとそれから
 
3D間取りを支える技術
3D間取りを支える技術3D間取りを支える技術
3D間取りを支える技術
 
LIFULL HOME'Sのおとり広告予測モデルの開発
LIFULL HOME'Sのおとり広告予測モデルの開発LIFULL HOME'Sのおとり広告予測モデルの開発
LIFULL HOME'Sのおとり広告予測モデルの開発
 
大企業でアジャイル開発を推進できる条件とその心構え
大企業でアジャイル開発を推進できる条件とその心構え大企業でアジャイル開発を推進できる条件とその心構え
大企業でアジャイル開発を推進できる条件とその心構え
 
スクラムを利用したアジャイルオフショア開発のとりくみ
スクラムを利用したアジャイルオフショア開発のとりくみスクラムを利用したアジャイルオフショア開発のとりくみ
スクラムを利用したアジャイルオフショア開発のとりくみ
 
実践 マーケティングテクノロジーエンジニア
実践 マーケティングテクノロジーエンジニア実践 マーケティングテクノロジーエンジニア
実践 マーケティングテクノロジーエンジニア
 
エンジニア × マーケティングテクノロジー が必要な理由
エンジニア × マーケティングテクノロジー が必要な理由エンジニア × マーケティングテクノロジー が必要な理由
エンジニア × マーケティングテクノロジー が必要な理由
 
「空飛ぶホームズくん」を実現するVR技術
「空飛ぶホームズくん」を実現するVR技術「空飛ぶホームズくん」を実現するVR技術
「空飛ぶホームズくん」を実現するVR技術
 
ニオイセンサで思索する街の新たな指標
ニオイセンサで思索する街の新たな指標ニオイセンサで思索する街の新たな指標
ニオイセンサで思索する街の新たな指標
 
Well-beingを測る「LIFE WILL」開発の舞台裏
Well-beingを測る「LIFE WILL」開発の舞台裏Well-beingを測る「LIFE WILL」開発の舞台裏
Well-beingを測る「LIFE WILL」開発の舞台裏
 
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
 
ウェブアクセシビリティ推進活動はじめました
ウェブアクセシビリティ推進活動はじめましたウェブアクセシビリティ推進活動はじめました
ウェブアクセシビリティ推進活動はじめました
 
大きめレガシープロジェクトのフロント行く末
大きめレガシープロジェクトのフロント行く末大きめレガシープロジェクトのフロント行く末
大きめレガシープロジェクトのフロント行く末
 

Recently uploaded

2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 

Recently uploaded (11)

2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 

20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)

  • 2. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。2 自己紹介 • 寒川 明好 • 株式会社LIFULL – Android開発グループ • Engineering Manager • 2010年入社 – 入社後1年半はWebを担当 – その後はアプリ開発メイン • Android • iOS • Windows Phone
  • 3. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。3 LIFULL HOME’Sとは 最上の住まいに出逢えるよう、最大の不動産・住宅情 報と、最良の情報品質、最適な手法によって 住まい探しをお手伝いする、不動産・住宅情報の総合 サービスです。 • ブラウザ – デスクトップ – スマートフォン • アプリ – Android • Phone • Tablet • Wear – iOS • Phone • Tablet • Watch • TV
  • 4. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。4 おかげさまでベストアプリ
  • 5. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。5 アジェンダ • マイクロサービス化 – LIFULL HOME’Sのマイクロサービス構成 – API Gateway と Lambda について – API側の開発環境 – 運用と監視 • Firebase活用事例 – Develop : Realtime Database & Storage – Grow : Remote Config – Grow : Dynamic Links
  • 6. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。6 Orchestration Layer マイクロサービスとは • モノリシックとマイクロサービス – モノリシック • すべての機能が1つのプロセスで稼働 – マイクロサービス • ビジネスロジック機能ごとのサービスで、それぞれ独立したプロセス で稼働 PC API SP API APP API Common Modules DB / DAO
  • 7. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。7 Orchestration Layer マイクロサービスとは • モノリシックとマイクロサービス – モノリシック • すべての機能が1つのプロセスで稼働 – マイクロサービス • ビジネスロジック機能ごとのサービスで、それぞれ独立したプロセス で稼働 PC API SP API APP API Common Modules DB / DAO
  • 8. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。8 LIFULL HOME’Sのマイクロサービス構成 DAO / DB • Amazon API Gateway + AWS Lambda で構成 iOS / Android Route 53 API Gateway Lambda Cloud Front S3 CloudWatch
  • 9. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。9 API Gateway と Lambda • API Gateway – 最大で数十万の同時API呼 び出し – 従量課金 – キャッシュ – Cloud Watchでロギング – クライアント側SDKが出力 可能 – Lambda関数を指定 – Androidでは出力したクラ イアントSDKを使っていな い • Lambda – Lambda対応言語 • Node.js • Java • C# • Python – S3のイベントをフックし てコード実行 – API Gatewayと組み合わせ てRESTful通信 – 1関数1git repositoryで独 立 POINT POINT
  • 10. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。10 API Gateway と Lambda の制限 • スロットル制限1,000rps • アカウント当たりのAPI数 60 • Timeout 30秒 • Payloadサイズ 10MB • Etc… • ディスク容量 512MB • リクエスト本文のPayloadサイズ 6MB • 関数の同時実行数 • Etc… POINT 運用コストが減る代わりに、様々なデフォルト制限がある サービスの規模に応じてAWS Supportに上限緩和申請をする ※項目によっては緩和出来ないため、AWSのドキュメントを参照
  • 11. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。11 API側の開発環境 • 言語 – Node.js • パッケージマネージャ – Yarn • API フォーマット – Swagger • テスト – Mocha – ESlint • CI – Circle CI
  • 12. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。12 Yarn • 言語 – Node.js • パッケージマネージャ – Yarn • API フォーマット – Swagger • テスト – Mocha – ESlint • CI – Circle CI Yarn • Facebookが2016/10にローンチ • Ultra Fast. • Mega Secure. • Super Reliable. • Offline Mode • Flat Mode $ npm install $ yarn (install) Ultra Fast!
  • 13. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。13 API側の開発環境 • 言語 – Node.js • パッケージマネージャ – Yarn • API フォーマット – Swagger • テスト – Mocha – ESlint • CI – Circle CI Swagger • THE WORLD’S MOST POPULAR API FRAMEWORK • Open Source Initiativeが採用 • RESTful APIドキュメントの管理 • Swagger SpecでI/Oを定義する (yaml/json) • Client用のSDKとサーバーコード の生成 • Electron化で社内用ツールとして 使用
  • 14. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。14 API側の開発環境 • 言語 – Node.js • パッケージマネージャ – Yarn • API フォーマット – Swagger • テスト – Mocha – ESlint • CI – Circle CI Mocha • ユニットテスト • 結合テスト(APIテスト) • npm ライブラリrewireでprivate functionテスト • coverage計測 • CIサーバーでpush毎にnpm run test ESlint • JavaScriptの静的検証ツール • コーディング規約を集約
  • 15. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。15 API側の開発環境 • 言語 – Node.js • パッケージマネージャ – Yarn • API フォーマット – Swagger • テスト – Mocha – ESlint • CI – Circle CI Circle CI • ビルド毎にコンテナ起動 → 破棄 • 1コンテナは無料 • Github連携 • Slackにテスト結果通知 • yarnでも使える • Test前にlintも流す • cache_directoriesの指定 • ビルドからテストまでを高速 化 コードをPush Circle CIでテスト実行 GitHubと連携 Slackに結果を通知
  • 16. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。16 API運用・監視 • ツール – AWS CloudWatch • デフォルトで使用可能なアラームの他、手動で様々なアラームを定 義 – 5xxエラー – Lambdaの関数ごと – 任意の文字列(ログ内容から抽出) – Invocation Count – Count over limit – Throttles • 体制 – 輪番でアプリエンジニアが監視 • CloudWatchからのアラームで検知 – 問題が発生した場合 • Lambdaでバージョン管理しているので差し戻し • リポジトリが独立しているため、他APIへの影響はほぼゼロ
  • 17. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。17 アジェンダ • マイクロサービス化 – LIFULL HOME’Sのマイクロサービス構成 – API Gateway と Lambda について – API側の開発環境 – 運用と監視 • Firebase活用事例 – Develop : Realtime Database & Storage – Grow : Remote Config – Grow : Dynamic Links
  • 18. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。18 Firebaseとは • Google I/O 2016 で新しいFirebaseが発表 • mobile Backend as a Service(MBaaS)と呼 ばれるクラウドサービス • ネイティブアプリに特化したプラットフォーム • Analytics, Develop, Grow, Earn によるアプリ の最大化
  • 19. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。19 Develop : Realtime Database & Storage • 特徴 – Realtime Database • クラウドでホスティングされているデータベース • 1 つの Realtime Database インスタンスを共有して、最新のデー タによる更新を自動的に受信 – Storage • Google Cloud Storage でサポートされている 特集などシーズンに よって変わるものを すべてのユーザに提 供できる Develop が加速する WebP
  • 20. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。20 Grow : Remote Config • 特徴 – 機能変更の公開 – ABテストの実施 通勤・通学時間から探す 所要時間から探す 通勤・通学時間から探す 所要時間から探す 様々なパターンをテストし 一番CVRが上がるものをセットできるので アプリを Grow させることができる
  • 21. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。21 Grow : Dynamic Links • 特徴 – 1つのリンクでiOS, Android, Webで同じ動作できる – プラットフォームに応じて、適切な場所に移動できる – アプリをインストール済みかどうかで動作を変える Webの続き Webユーザをアプリユーザにすることで アプリを Grow させることができる
  • 22. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。22 Firebaseを最大限に活用しよう $ Analytics Develop Grow Earn
  • 23. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。23 おわり

Editor's Notes

  1. Api gateway と lambda を利用することでサーバーレスアーキテクチャを実現
  2. SDKをつかう、Android側のオブジェクトを作る際に、API側のOptionalのパラメータにも、空文字などの対応をしないといけないので、パラメータ数が多いとソースの可読性が悪くなる けれどもSDKを使うと、リトライ処理や通信部分は全部対応してくれるので、パラメータ多くないときは使ったほうが楽
  3. Flame / Blazeプランで同時接続制限が10,000から100,000に増加 画像もWebPを使うことで高速にアクセス