Slide 1

Slide 1 text

ػࡐ؅ཧπʔϧΛ'JSFCBTFͰ ߏங͠Α͏ͱͨ͠࿩ גࣜձࣾ"CFNB57 :VTFJ:"."/"," !UPSJJNJZVLLJ

Slide 2

Slide 2 text

ࣗݾ঺հ

Slide 3

Slide 3 text

ࣗݾ঺հ  山中勇成 @toriimiyukki 株式会社サイバーエージェント 2017年新卒 株式会社AbemaTV 開発本部 コンテンツ配信チーム 慶應義塾大学湘南藤沢キャンパス(SFC) 卒業

Slide 4

Slide 4 text

ػࡐ؅ཧπʔϧ

Slide 5

Slide 5 text

ػࡐ؅ཧͷ՝୊ ‎ ػࡐ͕୭ͷ΋ͷͳͷ͔͕෼͔Βͳ͍  ‎ ػࡐΛ͍ͭ࢖͔͕ͬͨ෼͔Βͳ͍ ‎ ୭͔ʹିͯ͠͠͹Βͨ͘͠ޙʹͦͷػࡐ͕Ͳ͜ʹ͋Δͷ͔෼͔Βͳ͍ ‎ ػࡐʹ͸Կ͕ηοτͰೖ͍ͬͯΔͷ͔෼͔Βͳ͍ ͢΂ͯ'JSFCBTFͰղܾʂ

Slide 6

Slide 6 text

ͳͥ'JSFCBTFʜʁ ‎ खܰʹΞϓϦέʔγϣϯΛ࡞Γ͔ͨͬͨ ‎ αʔόͷ؀ڥ΍σʔλϕʔεͷߏஙʹ࣌ؒΛ࢖͍ͨ͘ͳ͔ͬͨ  ‎ Ͱ͖Δ͚͓ͩۚΛ͔͚ͣʹ࡞Γ͔ͨͬͨ ‎ ਺೥લʹ3FBMUJNF%BUBCBTFΛ࢖ͬͨ͜ͱ͸͕͋ͬͨɺ
 $MPVE'JSFTUPSFΛ࢖ͬͨ͜ͱ͕ͳ͔ͬͨͷͰ࢖ͬͯΈ͔ͨͬͨ

Slide 7

Slide 7 text

ػࡐ؅ཧͷ՝୊ղܾํ๏ ‎ ػࡐ͕୭ͷ΋ͷͳͷ͔͕෼͔Βͳ͍  ‎ ػࡐΛ͍ͭ࢖͔͕ͬͨ෼͔Βͳ͍ ‎ ୭͔ʹିͯ͠͠͹Βͨ͘͠ޙʹͦͷػࡐ͕Ͳ͜ʹ͋Δͷ͔෼͔Βͳ͍ ‎ ػࡐʹ͸Կ͕ηοτͰೖ͍ͬͯΔͷ͔෼͔Βͳ͍ ‎ ػࡐʹ23ίʔυΛ෇͚ͯɺಡΈऔΔͱ8FCϖʔδ͕දࣔ͞ΕΔ ‎ ͭͷػࡐʹԿͷػࡐ͕ಉࠝ͞Ε͍ͯΔ͔ΛσʔλԽ͢Δ ‎ ػࡐΛ࢖͏࣌ʹɺ23ίʔυΛಡΈࠐΉ͜ͱͰ࢖༻ཤྺΛ؅ཧ͢Δ ‎ 23ίʔυΛಡΈऔͬͨࡍʹݱࡏͷ৔ॴΛه࿥͢Δ

Slide 8

Slide 8 text

ػࡐλά  ‎ ػࡐ͝ͱʹλάΛൃߦ͢Δ ‎ 23ίʔυ͸ػࡐ͝ͱʹݻ༗ͷ63-͕ೖ͍ͬͯΔ

Slide 9

Slide 9 text

"OESPJEΞϓϦͱ8FCαΠτ ‎ ػࡐΛ؅ཧ͢Δਓ͕࢖͏ͨΊͷ"OESPJEΞϓϦ ‎ 23ίʔυͷεΩϟϯ ‎ ػࡐͷ௥Ճฤू  ‎ ػࡐλάͷ23ίʔυΛεΩϟϯͨ࣌͠ʹ։͘8FCαΠτ ‎ खೖྗ΋Ͱ͖ΔΑ͏ʹ୹͍63-Λൃߦ͢ΔʢγϣʔτΧοτʣ ‎ ػࡐͷৄࡉͷ֬ೝ ‎ ΞϓϦΛ͍࣋ͬͯͳ͍ਓͰ΋࢖͑Δ ‎ ฆࣦ࣌ʹ23ίʔυ͔Β࿈བྷઌΛ஌Δ͜ͱ͕Ͱ͖Δ

Slide 10

Slide 10 text

࢖༻ྫ  ػࡐΛ࢖͏࣌ ػࡐͷ࢖༻ཤྺΛ௥Ճ ಡΈऔͬͨ৔ॴͷه࿥ ઐ༻ΞϓϦ

Slide 11

Slide 11 text

࢖༻ྫ  ػࡐΛ୳͍ͨ࣌͠ ػࡐͷҰཡ ػࡐͷಡΈऔΓཤྺ

Slide 12

Slide 12 text

࢖༻ྫ  த਎͕஌Γ͍ͨฆࣦͨ࣌͠ ػࡐͷৄࡉͷ8FCϖʔδ

Slide 13

Slide 13 text

σʔλߏ଄

Slide 14

Slide 14 text

σʔλߏ଄ ‎ ෳ਺ͷάϧʔϓͰར༻Ͱ͖ΔΑ͏ͳߏ଄ʹ͢Δ ‎ γϣʔτΧοτ͸શάϧʔϓͰڞ௨ͱ͢Δ  /groups/{group} /addresses /equipments /scans /tags /shortcuts/{code} /users/{id} ‐Ϣʔβʔ ‐ػࡐͷอ؅৔ॴ ‐ػࡐ ‐ػࡐͷεΩϟϯཤྺ ‐λάϦετ ‐γϣʔτΧοτίʔυ ‐σόΠε /devices/{id} ‐άϧʔϓ

Slide 15

Slide 15 text

Ϣʔβʔ ‎ Ϣʔβʔͷσʔλ ‎ 'JSFCBTF"VUIFOUJDBUJPOͰαΠϯΠϯαΠϯΦϯͨ͠ޙʹ࡞੒  /users/{id} -uid String -belongingGroups Array(Reference(Group)) -name String /users/{id}/devices/{id} -name String

Slide 16

Slide 16 text

ػࡐ ‎ Ұ൪ॏཁͳσʔλ ‎ ໊લɺը૾ͷύεɺಉࠝ͢ΔػࡐɺλάͳͲΛೖΕΔ  /groups/{group}/equipments/{id} -image String -includingEquipments Array(Reference(Equipments)) -name String -tags Array(String)

Slide 17

Slide 17 text

γϣʔτΧοτ ‎ 23ίʔυΛੜ੒͢ΔͨΊͷγϣʔτΧοτίʔυͱػࡐΛඥ͚ͮͨ σʔλ  /shortcuts/{code} -group Reference(Group) -equipment Reference(Equipments) IUUQTYYYYYT\DPEF^

Slide 18

Slide 18 text

"OESPJEΞϓϦ

Slide 19

Slide 19 text

"OESPJEΞϓϦ ‎ "OESPJE4UVEJPΛ࢖ͬͯ։ൃ  ػࡐҰཡ ػࡐৄࡉ εΩϟϯ

Slide 20

Slide 20 text

"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' ࢖༻ͨ͠ओͳϥΠϒϥϦ

Slide 21

Slide 21 text

8FCαΠτ

Slide 22

Slide 22 text

8FCαΠτ ‎ 3FBDUΛ࢖ͬͯ։ൃ ‎ ϗεςΟϯά͸'JSFCBTF)PTUJOHΛ࢖༻ ‎ ඞཁͳ"1*͸$MPVE'VODUJPOTͰ"1*Λߏங 

Slide 23

Slide 23 text

Ϛελʔσʔλͷ౤ೖ

Slide 24

Slide 24 text

Ϛελʔσʔλͷ౤ೖ ‎ શͯͷػࡐΛεϚϗ΍ϒϥ΢βͷϑΥʔϜͰೖྗ͢Δͷ͸ۤ௧  grahamearley / FirestoreGoogleAppsScript IUUQTHJUIVCDPNHSBIBNFBSMFZ'JSFTUPSF(PPHMF"QQT4DSJQU ‎ ϘλϯͭͰ'JSFTUPSFʹσʔλΛ౤ೖͯ͠ཉ͍͠ ‎ εϓϨουγʔτͰ࠷ॳͷσʔλΛೖྗͰ͖ΔΑ͏ʹ͢Δ ʴ

Slide 25

Slide 25 text

Ϛελʔσʔλͷ౤ೖ ‎ ("4Λ࢖ͬͯπʔϧόʔͷϘλϯΛԡ͢ͱσʔλͷߋ৽Λߦ͏Α͏ʹ 

Slide 26

Slide 26 text

ͭ·͍ͣͨͱ͜Ζ

Slide 27

Slide 27 text

ͭ·͍ͣͨͱ͜Ζ ‎ 'JSFTUPSFͷ3VMF4JNVMBUPS͕3FGFSFODFΛ͏·͘ѻ͑ͳ͍ʜʁ ‎ Ϣʔβʔ͕ॴଐ͍ͯ͠ΔάϧʔϓͷΈɺಡΈॻ͖ͷݖݶΛ༩͍͑ͨ  TFSWJDFDMPVEpSFTUPSF\ NBUDIEBUBCBTFT\EBUBCBTF^EPDVNFOUT\ ʜ NBUDIHSPVQT\HSPVQ^\ BMMPXSFBE VQEBUF EFMFUF JGSFRVFTUBVUIVJEOVMMEBUBCBTFT EBUBCBTF EPDVNFOUTHSPVQT HSPVQ JO HFU EBUBCBTFT EBUBCBTF EPDVNFOUTVTFST SFRVFTUBVUIVJE EBUBCFMPOHJOH(SPVQT ʜ ‎ ࣮ࡍͷϦΫΤετ͸͏·͘ಈ͚͘ͲγϛϡϨʔλʔ͚ͩಈ͔ͳ͍ʜʁ

Slide 28

Slide 28 text

ͭ·͍ͣͨͱ͜Ζ ‎ 'JSFTUPSF(PPHMF"QQT4DSJQUͰಛఆͷΩʔͷΈߋ৽͢Δग़དྷͳ͍ ‎ ΦϒδΣΫτΛճऔಘ͔ͯ͠Βɺߋ৽͢Δඞཁ͕͋Δ  \ lOBNFzl໊લz  ^ \ lBOPUIFS,FZzl໊લz  ^ \ lBOPUIFS,FZzl໊લz  ^ ݩͷσʔλ ߋ৽͢Δσʔλ อଘ͞ΕΔσʔλ

Slide 29

Slide 29 text

ͭ·͍ͣͨͱ͜Ζ ‎ λάʹΑΔݕࡧΛ͍ͨ͠ ‎ $MPVE'JSFTUPSFͰ͸ɺ഑ྻͷத਎ʹରͯ͠ΫΤϦΛ࣮ߦ͢Δ͜ͱ ͸ग़དྷͳ͍ 

Slide 30

Slide 30 text

λάʹΑΔݕࡧ ‎ $MPVE'VODUJPOTΛ࢖༻͠ɺ'JSFTUPSFͷPO8SJUFΠϕϯτΛϑοΫ ‎ ػࡐͷσʔλ͕ߋ৽͞ΕͨλΠϛϯάʹ߹ΘͤͯλάΛߋ৽͢Δ  /groups/{group}/tags/{name} -equipments Array(Reference(Equipment))

Slide 31

Slide 31 text

·ͱΊ

Slide 32

Slide 32 text

·ͱΊ ‎ 'JSFCBTFΛ࢖ͬͯαʔϏεΛ࡞Δͱ͢͹΍͘࡞ΕΔ ‎ 'JSFTUPSF)PTUJOH'VODUJPOT͕Ϛδศར ‎ "OESPJEΞϓϦΛ࡞Δͷ΋ϥΠϒϥϦ͕͋ΔͷͰศར  ‎ εϓϨουγʔτܦ༝ͰσʔλΛೖΕΔͷ΋Ϛδศར ‎ 'JSFTUPSF(PPHMF"QQT4DSJQU͸ಡΊΔίʔυͷྔͳͷͰಡΉͱྑ ‎ 3FGFSFODF͸ϊϦͰ࢖͏ͱ௧͍໨ΛݟΔ