Submit Search
Upload
Realtime database、Clean Architectureを組み合わせた導入事例
•
Download as PPTX, PDF
•
1 like
•
607 views
T
Tatsuya Kikuchi
Follow
Firebase Realtime Database and Clean architecture.
Read less
Read more
Software
Report
Share
Report
Share
1 of 14
Download now
Recommended
OSC京都 東海道らぐLT iOSのIn-Houseアプリの配布まで(概要)
OSC京都 東海道らぐLT iOSのIn-Houseアプリの配布まで(概要)
ahiru3
WebXR TechTokyo #0 in Cluster発表資料
WebXR TechTokyo #0 in Cluster発表資料
WheetTweet
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
Tomoyuki Sugita
IoTあるじゃん北海道#1 by poggimo
IoTあるじゃん北海道#1 by poggimo
Norikatsu Oishi
AIoT カメラを使って ピープルカウントしてみた
AIoT カメラを使って ピープルカウントしてみた
Tomoyuki Sugita
リーガルテックへ凸って見えた楽しい踊り方
リーガルテックへ凸って見えた楽しい踊り方
Katsuhiro Honda
【Unity道場 建築スペシャル2】BIMの“I”の使い方
【Unity道場 建築スペシャル2】BIMの“I”の使い方
UnityTechnologiesJapan002
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
Yusuke Furuta
Recommended
OSC京都 東海道らぐLT iOSのIn-Houseアプリの配布まで(概要)
OSC京都 東海道らぐLT iOSのIn-Houseアプリの配布まで(概要)
ahiru3
WebXR TechTokyo #0 in Cluster発表資料
WebXR TechTokyo #0 in Cluster発表資料
WheetTweet
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
Tomoyuki Sugita
IoTあるじゃん北海道#1 by poggimo
IoTあるじゃん北海道#1 by poggimo
Norikatsu Oishi
AIoT カメラを使って ピープルカウントしてみた
AIoT カメラを使って ピープルカウントしてみた
Tomoyuki Sugita
リーガルテックへ凸って見えた楽しい踊り方
リーガルテックへ凸って見えた楽しい踊り方
Katsuhiro Honda
【Unity道場 建築スペシャル2】BIMの“I”の使い方
【Unity道場 建築スペシャル2】BIMの“I”の使い方
UnityTechnologiesJapan002
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
Yusuke Furuta
Unity道場 ロボティクス 秋のLT祭り 2021
Unity道場 ロボティクス 秋のLT祭り 2021
Ryo Kabutan
はじめてのAzure Sphere
はじめてのAzure Sphere
Tomokazu Kizawa
機械学習と Azure ML Studio の基本
機械学習と Azure ML Studio の基本
Yoshitaka Seo
IoT あるじゃん北海道支部勉強会
IoT あるじゃん北海道支部勉強会
Shin-ya Koga
エンジニアのキャリアのその先を考える
エンジニアのキャリアのその先を考える
Haruo Sato
建設シミュレータOCSの開発 / OCS・VTC on Unity におけるROS対応機能について
建設シミュレータOCSの開発 / OCS・VTC on Unity におけるROS対応機能について
UnityTechnologiesJapan002
[Gree] DataEngConf NYC’18 セッションサマリー #1
[Gree] DataEngConf NYC’18 セッションサマリー #1
Takashi Suzuki
モノグサ万歳!Webデザイナーがesa→GitHub→Travis CI→Hexoで、ポートフォリオのビルドを自動化した話 #ltlovers
モノグサ万歳!Webデザイナーがesa→GitHub→Travis CI→Hexoで、ポートフォリオのビルドを自動化した話 #ltlovers
Ai Minatogawa
Watson IoTとIBM DSXでWatsonと役割分担
Watson IoTとIBM DSXでWatsonと役割分担
Kenichi Inoue
GPSなしで位置情報をGETした結果・・・
GPSなしで位置情報をGETした結果・・・
Koyo Takenoshita
IoT勉強会in岡山#2 M5StickCで遊んでみた!
IoT勉強会in岡山#2 M5StickCで遊んでみた!
Shinya Suefusa
Data-Centric AI開発における データ生成の取り組み
Data-Centric AI開発における データ生成の取り組み
Takeshi Suzuki
2020/9/30 【エンジニア起業】小規模スタートアップがウェブサービス(SocialDog)を軌道に乗せるまで
2020/9/30 【エンジニア起業】小規模スタートアップがウェブサービス(SocialDog)を軌道に乗せるまで
Masafumi Konishi
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
Fumiya Sakai
新しい働き方アワード【新しい働き方LAB empowered by ランサーズ/研究員制度3期】
新しい働き方アワード【新しい働き方LAB empowered by ランサーズ/研究員制度3期】
muratananae
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
Fumiya Sakai
フレームワークに頼らないweb開発
フレームワークに頼らないweb開発
新介 川井田
LINE WORKSを活用したチャットボットが現場とkintoneを繋ぐ
LINE WORKSを活用したチャットボットが現場とkintoneを繋ぐ
Tomohisa Hoshino
Stargazer Meetup #1
Stargazer Meetup #1
Tomoki Hasegawa
今すぐはじめるIoT_配布用
今すぐはじめるIoT_配布用
Mana Nakano
マイクロソフトにおけるオープンソース戦略 ソフトウェア開発者が実現できること
マイクロソフトにおけるオープンソース戦略 ソフトウェア開発者が実現できること
Daisuke Masubuchi
データ活用をするための組織
データ活用をするための組織
Kon Yuichi
More Related Content
What's hot
Unity道場 ロボティクス 秋のLT祭り 2021
Unity道場 ロボティクス 秋のLT祭り 2021
Ryo Kabutan
はじめてのAzure Sphere
はじめてのAzure Sphere
Tomokazu Kizawa
機械学習と Azure ML Studio の基本
機械学習と Azure ML Studio の基本
Yoshitaka Seo
IoT あるじゃん北海道支部勉強会
IoT あるじゃん北海道支部勉強会
Shin-ya Koga
エンジニアのキャリアのその先を考える
エンジニアのキャリアのその先を考える
Haruo Sato
建設シミュレータOCSの開発 / OCS・VTC on Unity におけるROS対応機能について
建設シミュレータOCSの開発 / OCS・VTC on Unity におけるROS対応機能について
UnityTechnologiesJapan002
[Gree] DataEngConf NYC’18 セッションサマリー #1
[Gree] DataEngConf NYC’18 セッションサマリー #1
Takashi Suzuki
モノグサ万歳!Webデザイナーがesa→GitHub→Travis CI→Hexoで、ポートフォリオのビルドを自動化した話 #ltlovers
モノグサ万歳!Webデザイナーがesa→GitHub→Travis CI→Hexoで、ポートフォリオのビルドを自動化した話 #ltlovers
Ai Minatogawa
What's hot
(8)
Unity道場 ロボティクス 秋のLT祭り 2021
Unity道場 ロボティクス 秋のLT祭り 2021
はじめてのAzure Sphere
はじめてのAzure Sphere
機械学習と Azure ML Studio の基本
機械学習と Azure ML Studio の基本
IoT あるじゃん北海道支部勉強会
IoT あるじゃん北海道支部勉強会
エンジニアのキャリアのその先を考える
エンジニアのキャリアのその先を考える
建設シミュレータOCSの開発 / OCS・VTC on Unity におけるROS対応機能について
建設シミュレータOCSの開発 / OCS・VTC on Unity におけるROS対応機能について
[Gree] DataEngConf NYC’18 セッションサマリー #1
[Gree] DataEngConf NYC’18 セッションサマリー #1
モノグサ万歳!Webデザイナーがesa→GitHub→Travis CI→Hexoで、ポートフォリオのビルドを自動化した話 #ltlovers
モノグサ万歳!Webデザイナーがesa→GitHub→Travis CI→Hexoで、ポートフォリオのビルドを自動化した話 #ltlovers
Similar to Realtime database、Clean Architectureを組み合わせた導入事例
Watson IoTとIBM DSXでWatsonと役割分担
Watson IoTとIBM DSXでWatsonと役割分担
Kenichi Inoue
GPSなしで位置情報をGETした結果・・・
GPSなしで位置情報をGETした結果・・・
Koyo Takenoshita
IoT勉強会in岡山#2 M5StickCで遊んでみた!
IoT勉強会in岡山#2 M5StickCで遊んでみた!
Shinya Suefusa
Data-Centric AI開発における データ生成の取り組み
Data-Centric AI開発における データ生成の取り組み
Takeshi Suzuki
2020/9/30 【エンジニア起業】小規模スタートアップがウェブサービス(SocialDog)を軌道に乗せるまで
2020/9/30 【エンジニア起業】小規模スタートアップがウェブサービス(SocialDog)を軌道に乗せるまで
Masafumi Konishi
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
Fumiya Sakai
新しい働き方アワード【新しい働き方LAB empowered by ランサーズ/研究員制度3期】
新しい働き方アワード【新しい働き方LAB empowered by ランサーズ/研究員制度3期】
muratananae
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
Fumiya Sakai
フレームワークに頼らないweb開発
フレームワークに頼らないweb開発
新介 川井田
LINE WORKSを活用したチャットボットが現場とkintoneを繋ぐ
LINE WORKSを活用したチャットボットが現場とkintoneを繋ぐ
Tomohisa Hoshino
Stargazer Meetup #1
Stargazer Meetup #1
Tomoki Hasegawa
今すぐはじめるIoT_配布用
今すぐはじめるIoT_配布用
Mana Nakano
マイクロソフトにおけるオープンソース戦略 ソフトウェア開発者が実現できること
マイクロソフトにおけるオープンソース戦略 ソフトウェア開発者が実現できること
Daisuke Masubuchi
データ活用をするための組織
データ活用をするための組織
Kon Yuichi
エンタープライズソーシャルに必要な協力のためのインセンティブ
エンタープライズソーシャルに必要な協力のためのインセンティブ
Naohiko Maeda
障害のない社会を作るためのアプリづくりとは? - 発達障害の方向けアプリ開発から学んだこと
障害のない社会を作るためのアプリづくりとは? - 発達障害の方向けアプリ開発から学んだこと
Takashi Kishida
CBCV媒体資料_.pdf
CBCV媒体資料_.pdf
ssuser157c23
jbug#10(ジョイゾー星野)
jbug#10(ジョイゾー星野)
Tomohisa Hoshino
Webrtc-ORTC-JapanSharePointGroup
Webrtc-ORTC-JapanSharePointGroup
adachiyosuke
新世代の価値観へ越境せよ
新世代の価値観へ越境せよ
Hiromasa Oka
Similar to Realtime database、Clean Architectureを組み合わせた導入事例
(20)
Watson IoTとIBM DSXでWatsonと役割分担
Watson IoTとIBM DSXでWatsonと役割分担
GPSなしで位置情報をGETした結果・・・
GPSなしで位置情報をGETした結果・・・
IoT勉強会in岡山#2 M5StickCで遊んでみた!
IoT勉強会in岡山#2 M5StickCで遊んでみた!
Data-Centric AI開発における データ生成の取り組み
Data-Centric AI開発における データ生成の取り組み
2020/9/30 【エンジニア起業】小規模スタートアップがウェブサービス(SocialDog)を軌道に乗せるまで
2020/9/30 【エンジニア起業】小規模スタートアップがウェブサービス(SocialDog)を軌道に乗せるまで
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
新しい働き方アワード【新しい働き方LAB empowered by ランサーズ/研究員制度3期】
新しい働き方アワード【新しい働き方LAB empowered by ランサーズ/研究員制度3期】
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
フレームワークに頼らないweb開発
フレームワークに頼らないweb開発
LINE WORKSを活用したチャットボットが現場とkintoneを繋ぐ
LINE WORKSを活用したチャットボットが現場とkintoneを繋ぐ
Stargazer Meetup #1
Stargazer Meetup #1
今すぐはじめるIoT_配布用
今すぐはじめるIoT_配布用
マイクロソフトにおけるオープンソース戦略 ソフトウェア開発者が実現できること
マイクロソフトにおけるオープンソース戦略 ソフトウェア開発者が実現できること
データ活用をするための組織
データ活用をするための組織
エンタープライズソーシャルに必要な協力のためのインセンティブ
エンタープライズソーシャルに必要な協力のためのインセンティブ
障害のない社会を作るためのアプリづくりとは? - 発達障害の方向けアプリ開発から学んだこと
障害のない社会を作るためのアプリづくりとは? - 発達障害の方向けアプリ開発から学んだこと
CBCV媒体資料_.pdf
CBCV媒体資料_.pdf
jbug#10(ジョイゾー星野)
jbug#10(ジョイゾー星野)
Webrtc-ORTC-JapanSharePointGroup
Webrtc-ORTC-JapanSharePointGroup
新世代の価値観へ越境せよ
新世代の価値観へ越境せよ
Realtime database、Clean Architectureを組み合わせた導入事例
1.
Realtime Database、Clean Architecture、 を組み合わせた導入事例 フェンリル×モンスター・ラボ×チームラボ勉強会 2017/8/28 Monstar
Lab, Inc. 菊池 達也(Tatsuya Kikuchi)
2.
自己紹介 菊池 達也(きくち たつや) 生年月日
: 1987/10/9 日本大学 理工学部 精密機械工学科 卒業 ■SNS Facebook :菊池 達也 Github : tatsuyak9 Instagram : tatsuyak9 ■経歴 受託開発の企業にてAndroid,iOS,Web向けのアプリケーション開発を行ってきました。 2015年にMonstar Lab, Inc.に入社し、入社してすぐ2年間客先に常駐していました。 そこではiOSのSDK、iOS、tvOSのアプリ開発のリードエンジニアとして携わりました。 今年2月に自社に戻り現在はiOS、Unityの受託開発の案件をメインに携わっています。
3.
■具体例 ・iOSのみのネイティブアプリ開発を依頼したい。 ・短い工数で。 ・アプリに表示するコンテンツを追加したり変更したい。 ・ユーザーのログイン、ログアウトをしたい。 ・サーバー維持費とかサーバーアサインすると予算増えるからサーバーサイド 不要でどうにかならないか →仕様のスコープ調整でカバーをする。 →FirebaseのRealtime Database, Auth,
Storageを利用して対応 できそう。 案件依頼内容
4.
ところで、FirebaseのRealtime Databaseってなに?
5.
Firebase Realtime Databaseとは ■ざっくりと概要 ・Googleで用意しているFirebaseの機能のうちのNoSQLのクラウドでホスティングす るデータベースのこと。 ・データはJSON形式でインポート、エクスポートはできるが厳密にはJSONではない。 ・モバイル向けのアプリではSDKを導入することでクラウド上のDBとアクセス可能に。 ・特徴はデータ更新時にリアルタイムにイベント通知を行える。 (チャットみたいな仕組みも実装可能に。) ■引用元 https://firebase.google.com/docs/database/?hl=ja
6.
構成 ■Firebase ・Realtime Database ・Storage ・Authentication ■Application Architectureに関して ・Clean
Architectureを利用する。 ・1VC = 1Storyboard構成 ■Library ・RxSwiftを利用する。 →ユーザーやコンテンツのテーブル管理 →画像や動画ファイルなどのコンテンツ格納先 →ユーザー管理をこの機能で管理できる。Userのuniqueのidを発行など →当初は長期的なプロジェクトになりそうだったので1つ1つの 役割分担を明確化したアーキテクチャにしてメンバーがのちに ジョインしても属人化せず迷わない作りにしたいと思い採用した。 →Storyboard Referenceを活用して疎結合にし工数を抑えるのを狙いで採用した。
7.
ところで、Clean Architecture とは?
8.
Clean Architectureとは ■ざっくりと概要 ・ビジネスロジックをUIやFrameworkか ら引き離し、それぞれの層毎に役割と責任 を分離したArchitectureである。 →このArchitectureを採用することでどの 処理がどこで行われているか分かるため実 装で迷うことは少ない。 ■引用元 http://qiita.com/koutalou/items/07a4f9cf51a2d13e4cdc https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html
9.
構成 Presenter View UseCase Translator Model Repository DataStore Entity ■引用元 http://qiita.com/koutalou/items/07a4f9cf51a2d13e4cdc Architectureの構成は基本は以下の通り。 Presentation Layer
Domain Layer Data Layer
10.
今回採用した構成 Presenter View UseCase Translator Model ApiClient Entity ただ、そのまま使うと工数も増えるのと管理がしづらいので案件に合わせて以下のArchitectureに構成をカスタマイズした。 モバイルDBを使用しないという仕様が確定していれば状況によってはUseCaseを削除してもそのままApiClientを実行する作りに しても良いかと思う。 (実装工数が増えるため) Presentation Layer Domain
Layer Data Layer Common Common Layer
11.
今回採用した構成 Presenter View UseCase Translator Model ApiClient Entity ただ、そのまま使うと工数も増えるのと管理がしづらいので案件に合わせて以下のArchitectureに構成をカスタマイズした。 モバイルDBを使用しないという仕様が確定していれば状況によってはUseCaseを削除してもそのままApiClientを実行する作りに しても良いかと思う。 (実装工数が増えるため) Presentation Layer Domain
Layer Data Layer Common Common Layer Realtime Databaseでイベント更新を監視
12.
実際案件で採用してみてどうだったか。 ■Firebase □良かったところ ・そんなに複雑な処理をいらないアプリであればサーバーサイドの細かいことを知らなくても一人で作りきることができる。 ・RealtimeDatabaseの実装が簡単。 ・DBの更新イベントをアプリ内で受け取れるのでリアルタイムに画面を更新することができる。(API叩き直すとかはしなくて良 い) □つらかったところ ・NoSQLの設計ノウハウがなかったので最初はNodeの階層を深くまでつくってしまったために、必要となるデータを取り出し づらかった。 ex) imgを取り出すのにこういうことが起きる。手間がかかるので浅くDBの設計を作ると良いかと。 NodeA→NodeB→NodeC→img ■Clean Architecture □良かったところ ・仕様変更には対応しやすい。EntityとModelが分かれているので実際に値を使うときはTranslatorに救われたことは何回か あった。 □つらかったところ ・仕様変更は対応しやすいがクラスを多く作成するので仕様変更対応のインパクトが大きい。今回の案件では実装工数は増えた がRxSwiftなどライブラリを利用すること工数を減らしトータル的に工数は抑えられたかと思う。
13.
サンプル ■環境 Xcode : 8.3以降 iOS
:10以降 ■GitHub https://github.com/tatsuyak9/CleanArchitectureRDBSample
14.
ご清聴ありがとうございました。
Download now