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
620
生配信管理システムのバックエンド〜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
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
240
みてねにおけるAI-DLC導入活動とAIドリブン開発の現在地/JAWS-UG AI-DLC #2
isaoshimizu
2
320
PM領域でのAI Agentの活用
lycorptech_jp
PRO
0
180
Does an AI Watermark Survive Translation?
machinetranslation
0
510
LLMアプリ、 雰囲気で運用してませんか? 〜LLMOpsの現在地〜
taka_aki
1
630
サービス内で複数のOP・ASを連鎖させる(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
420
ClaudeCodeでセキュリティ監視業務を半自動化_1年の運用でわかったAIに任せる設計の5つのポイント
kintotechdev
4
1k
Genie Code ワークショップ 基礎編 / Genie-Code-Workshop-fundamental
databricksjapan
PRO
0
240
人気商品が「ちゃんと買える」をつくる ー ECの負荷改善
ykagano
1
170
「ミスを許さない手順書」を作ってみた 〜 個人的にはこれ以上できることはあまりなさそう/20260827-ssmjp-operation-procedure-update
opelab
17
17k
全社に広がるMCPサーバーを、 どう安全に管理するか MCPass開発の舞台裏
mtpooh
3
220
【Oracle AI Spotlight ウェビナー】AWSか、Azureか、Google Cloudか。その議論にオラクルを含める意義。
oracle4engineer
PRO
1
150
Featured
See All Featured
How to Ace a Technical Interview
jacobian
281
24k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
310
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
570
AI: The stuff that nobody shows you
jnunemaker
PRO
9
960
Evolving SEO for Evolving Search Engines
ryanjones
0
270
GraphQLとの向き合い方2022年版
quramy
50
15k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Google's AI Overviews - The New Search
badams
0
1.6k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
410
Optimising Largest Contentful Paint
csswizardry
37
3.9k
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ϊϦͰ͏ͱ௧͍ΛݟΔ