Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
機材管理ツールをFirebaseで構築しようとした話 / Building equipment...
Search
Yusei Yamanaka
September 13, 2018
Technology
4.7k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
機材管理ツールをFirebaseで構築しようとした話 / Building equipment management software with Firebase
Yusei Yamanaka
September 13, 2018
More Decks by Yusei Yamanaka
See All by Yusei Yamanaka
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
1
470
生配信管理システムのバックエンド〜AWS AppSyncで迅速に構築するGraphQLサービス〜 / Backend of live streaming management system - GraphQL service to build quickly with AWS AppSync
miyukki
0
1.5k
"新しい未来のテレビ"を目指すABEMA配信システムの再設計 / Re-architecture of ABEMA live ingest system
miyukki
0
2.6k
3周年に突入するAbemaTVの挑戦と苦悩 / The challenge and anguish of AbemaTV celebrating the third anniversary
miyukki
8
5.3k
AbemaTVのアーキテクチャの変遷 / The history of AbemaTV's architecture
miyukki
3
1.6k
AbemaTVで働くエンジニアの裏側 / The engineer working at AbemaTV
miyukki
0
930
動画配信サービスとしてこの先生きのこるには / The way to continue as a video streaming service
miyukki
8
4k
MPEG-DASHによるリニア型配信 / Linear broadcasting by MPEG-DASH on AbemaTV
miyukki
6
14k
1周年を迎えたAbemaTVの動画配信の裏側 / The background of video distribution in AbemaTV during one year
miyukki
15
13k
Other Decks in Technology
See All in Technology
Atlassian Cloudサポート業務でのAIエージェント活用事例
smt7174
0
390
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
16
5k
PLaMoを毎日の開発で使い育てていく
pfn
PRO
0
180
20260608_Codexの可能性_ノンプログラマー向け_大城追記
doradora09
PRO
0
760
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
19k
【CEDEC2026】専門性の高いデフォルメチームが挑んだ人材育成戦略 〜Cygames Academiaの企画から実施まで〜
cygames
PRO
0
150
Retriever と Reranker、結局どうする?
kazuaki
2
650
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
1
170
Amazon Bedrock Managed Knowledge BaseDive Deep
ren8k
0
390
PLaMo 3.0 Primeの構造化出力サポート
pfn
PRO
0
180
TypeScript入門 2026
recruitengineers
PRO
1
150
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
360
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
510
The Spectacular Lies of Maps
axbom
PRO
1
880
The Curse of the Amulet
leimatthew05
2
13k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
460
Ethics towards AI in product and experience design
skipperchong
2
340
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
250
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Facilitating Awesome Meetings
lara
57
7.1k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
680
The Cult of Friendly URLs
andyhume
79
7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Transcript
ػࡐཧπʔϧΛ'JSFCBTFͰ ߏங͠Α͏ͱͨ͠ גࣜձࣾ"CFNB57 :VTFJ:"."/"," !UPSJJNJZVLLJ
ࣗݾհ
ࣗݾհ 山中勇成 @toriimiyukki 株式会社サイバーエージェント 2017年新卒 株式会社AbemaTV 開発本部 コンテンツ配信チーム 慶應義塾大学湘南藤沢キャンパス(SFC)
卒業
ػࡐཧπʔϧ
ػࡐཧͷ՝ ػࡐ͕୭ͷͷͳͷ͔͕͔Βͳ͍ ػࡐΛ͍͔͕͔ͭͬͨΒͳ͍ ୭͔ʹିͯ͠͠Βͨ͘͠ޙʹͦͷػࡐ͕Ͳ͜ʹ͋Δͷ͔͔Βͳ͍ ػࡐʹԿ͕ηοτͰೖ͍ͬͯΔͷ͔͔Βͳ͍
ͯ͢'JSFCBTFͰղܾʂ
ͳͥ'JSFCBTFʜʁ खܰʹΞϓϦέʔγϣϯΛ࡞Γ͔ͨͬͨ αʔόͷڥσʔλϕʔεͷߏஙʹ࣌ؒΛ͍ͨ͘ͳ͔ͬͨ Ͱ͖Δ͚͓ͩۚΛ͔͚ͣʹ࡞Γ͔ͨͬͨ લʹ3FBMUJNF%BUBCBTFΛͬͨ͜ͱ͕͋ͬͨɺ
$MPVE'JSFTUPSFΛͬͨ͜ͱ͕ͳ͔ͬͨͷͰͬͯΈ͔ͨͬͨ
ػࡐཧͷ՝ղܾํ๏ ػࡐ͕୭ͷͷͳͷ͔͕͔Βͳ͍ ػࡐΛ͍͔͕͔ͭͬͨΒͳ͍ ୭͔ʹିͯ͠͠Βͨ͘͠ޙʹͦͷػࡐ͕Ͳ͜ʹ͋Δͷ͔͔Βͳ͍ ػࡐʹԿ͕ηοτͰೖ͍ͬͯΔͷ͔͔Βͳ͍
ػࡐʹ23ίʔυΛ͚ͯɺಡΈऔΔͱ8FCϖʔδ͕දࣔ͞ΕΔ ͭͷػࡐʹԿͷػࡐ͕ಉࠝ͞Ε͍ͯΔ͔ΛσʔλԽ͢Δ ػࡐΛ͏࣌ʹɺ23ίʔυΛಡΈࠐΉ͜ͱͰ༻ཤྺΛཧ͢Δ 23ίʔυΛಡΈऔͬͨࡍʹݱࡏͷॴΛه͢Δ
ػࡐλά ػࡐ͝ͱʹλάΛൃߦ͢Δ 23ίʔυػࡐ͝ͱʹݻ༗ͷ63-͕ೖ͍ͬͯΔ
"OESPJEΞϓϦͱ8FCαΠτ ػࡐΛཧ͢Δਓ͕͏ͨΊͷ"OESPJEΞϓϦ 23ίʔυͷεΩϟϯ ػࡐͷՃฤू ػࡐλάͷ23ίʔυΛεΩϟϯͨ࣌͠ʹ։͘8FCαΠτ
खೖྗͰ͖ΔΑ͏ʹ͍63-Λൃߦ͢ΔʢγϣʔτΧοτʣ ػࡐͷৄࡉͷ֬ೝ ΞϓϦΛ͍࣋ͬͯͳ͍ਓͰ͑Δ ฆࣦ࣌ʹ23ίʔυ͔Β࿈བྷઌΛΔ͜ͱ͕Ͱ͖Δ
༻ྫ ػࡐΛ͏࣌ ػࡐͷ༻ཤྺΛՃ ಡΈऔͬͨॴͷه ઐ༻ΞϓϦ
༻ྫ ػࡐΛ୳͍ͨ࣌͠ ػࡐͷҰཡ ػࡐͷಡΈऔΓཤྺ
༻ྫ த͕Γ͍ͨฆࣦͨ࣌͠ ػࡐͷৄࡉͷ8FCϖʔδ
σʔλߏ
σʔλߏ ෳͷάϧʔϓͰར༻Ͱ͖ΔΑ͏ͳߏʹ͢Δ γϣʔτΧοτશάϧʔϓͰڞ௨ͱ͢Δ /groups/{group} /addresses /equipments /scans
/tags /shortcuts/{code} /users/{id} ‐Ϣʔβʔ ‐ػࡐͷอॴ ‐ػࡐ ‐ػࡐͷεΩϟϯཤྺ ‐λάϦετ ‐γϣʔτΧοτίʔυ ‐σόΠε /devices/{id} ‐άϧʔϓ
Ϣʔβʔ Ϣʔβʔͷσʔλ 'JSFCBTF"VUIFOUJDBUJPOͰαΠϯΠϯαΠϯΦϯͨ͠ޙʹ࡞ /users/{id} -uid String -belongingGroups
Array(Reference(Group)) -name String /users/{id}/devices/{id} -name String
ػࡐ Ұ൪ॏཁͳσʔλ ໊લɺը૾ͷύεɺಉࠝ͢ΔػࡐɺλάͳͲΛೖΕΔ /groups/{group}/equipments/{id} -image String -includingEquipments
Array(Reference(Equipments)) -name String -tags Array(String)
γϣʔτΧοτ 23ίʔυΛੜ͢ΔͨΊͷγϣʔτΧοτίʔυͱػࡐΛඥ͚ͮͨ σʔλ /shortcuts/{code} -group Reference(Group) -equipment Reference(Equipments)
IUUQTYYYYYT\DPEF^
"OESPJEΞϓϦ
"OESPJEΞϓϦ "OESPJE4UVEJPΛͬͯ։ൃ ػࡐҰཡ ػࡐৄࡉ εΩϟϯ
"OESPJEΞϓϦ // Lombok compileOnly 'org.projectlombok:lombok:1.16.22' annotationProcessor "org.projectlombok:lombok:1.16.22" // ZXing
implementation 'com.journeyapps:zxing-android-embedded:3.6.0' // Firestore implementation 'com.google.firebase:firebase-firestore:17.0.1' implementation 'com.google.firebase:firebase-storage:16.0.1' // FirebaseUI (for authentication) implementation 'com.firebaseui:firebase-ui-auth:4.0.0' // Other Firebase/Play services deps implementation 'com.google.firebase:firebase-core:16.0.0' implementation 'com.google.firebase:firebase-auth:16.0.1' implementation 'com.google.android.gms:play-services-auth:15.0.1' // Butterknife implementation 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' // Glide implementation 'com.github.bumptech.glide:glide:4.7.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1' // Tag implementation 'me.gujun.android.taggroup:library:1.4@aar' ༻ͨ͠ओͳϥΠϒϥϦ
8FCαΠτ
8FCαΠτ 3FBDUΛͬͯ։ൃ ϗεςΟϯά'JSFCBTF)PTUJOHΛ༻ ඞཁͳ"1*$MPVE'VODUJPOTͰ"1*Λߏங
Ϛελʔσʔλͷೖ
Ϛελʔσʔλͷೖ શͯͷػࡐΛεϚϗϒϥβͷϑΥʔϜͰೖྗ͢Δͷۤ௧ grahamearley / FirestoreGoogleAppsScript IUUQTHJUIVCDPNHSBIBNFBSMFZ'JSFTUPSF(PPHMF"QQT4DSJQU ϘλϯͭͰ'JSFTUPSFʹσʔλΛೖͯ͠ཉ͍͠
εϓϨουγʔτͰ࠷ॳͷσʔλΛೖྗͰ͖ΔΑ͏ʹ͢Δ ʴ
Ϛελʔσʔλͷೖ ("4ΛͬͯπʔϧόʔͷϘλϯΛԡ͢ͱσʔλͷߋ৽Λߦ͏Α͏ʹ
ͭ·͍ͣͨͱ͜Ζ
ͭ·͍ͣͨͱ͜Ζ 'JSFTUPSFͷ3VMF4JNVMBUPS͕3FGFSFODFΛ͏·͘ѻ͑ͳ͍ʜʁ Ϣʔβʔ͕ॴଐ͍ͯ͠ΔάϧʔϓͷΈɺಡΈॻ͖ͷݖݶΛ༩͍͑ͨ TFSWJDFDMPVEpSFTUPSF\ NBUDIEBUBCBTFT\EBUBCBTF^EPDVNFOUT\ ʜ NBUDIHSPVQT\HSPVQ^\
BMMPXSFBE VQEBUF EFMFUF JGSFRVFTUBVUIVJEOVMMEBUBCBTFT EBUBCBTF EPDVNFOUTHSPVQT HSPVQ JO HFU EBUBCBTFT EBUBCBTF EPDVNFOUTVTFST SFRVFTUBVUIVJE EBUBCFMPOHJOH(SPVQT ʜ ࣮ࡍͷϦΫΤετ͏·͘ಈ͚͘ͲγϛϡϨʔλʔ͚ͩಈ͔ͳ͍ʜʁ
ͭ·͍ͣͨͱ͜Ζ 'JSFTUPSF(PPHMF"QQT4DSJQUͰಛఆͷΩʔͷΈߋ৽͢Δग़དྷͳ͍ ΦϒδΣΫτΛճऔಘ͔ͯ͠Βɺߋ৽͢Δඞཁ͕͋Δ \ lOBNFzl໊લz ^
\ lBOPUIFS,FZzl໊લz ^ \ lBOPUIFS,FZzl໊લz ^ ݩͷσʔλ ߋ৽͢Δσʔλ อଘ͞ΕΔσʔλ
ͭ·͍ͣͨͱ͜Ζ λάʹΑΔݕࡧΛ͍ͨ͠ $MPVE'JSFTUPSFͰɺྻͷதʹରͯ͠ΫΤϦΛ࣮ߦ͢Δ͜ͱ ग़དྷͳ͍
λάʹΑΔݕࡧ $MPVE'VODUJPOTΛ༻͠ɺ'JSFTUPSFͷPO8SJUFΠϕϯτΛϑοΫ ػࡐͷσʔλ͕ߋ৽͞ΕͨλΠϛϯάʹ߹ΘͤͯλάΛߋ৽͢Δ /groups/{group}/tags/{name} -equipments Array(Reference(Equipment))
·ͱΊ
·ͱΊ 'JSFCBTFΛͬͯαʔϏεΛ࡞Δͱ͘͢࡞ΕΔ 'JSFTUPSF)PTUJOH'VODUJPOT͕Ϛδศར "OESPJEΞϓϦΛ࡞ΔͷϥΠϒϥϦ͕͋ΔͷͰศར εϓϨουγʔτܦ༝ͰσʔλΛೖΕΔͷϚδศར
'JSFTUPSF(PPHMF"QQT4DSJQUಡΊΔίʔυͷྔͳͷͰಡΉͱྑ 3FGFSFODFϊϦͰ͏ͱ௧͍ΛݟΔ