Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
育児休業のご報告と、育児グッズとしてのスマートスピーカー / Parental Leave and SmartSpeaker
Kei Shiratsuchi
May 16, 2018
Technology
0
800
育児休業のご報告と、育児グッズとしてのスマートスピーカー / Parental Leave and SmartSpeaker
レトリバセミナー 2018/05/16
Movie:
https://www.youtube.com/watch?v=sC9Svn8Yc7c
Kei Shiratsuchi
May 16, 2018
Tweet
Share
More Decks by Kei Shiratsuchi
See All by Kei Shiratsuchi
実践 Rails アソシエーションリファクタリング / Rails association refactoring in practice
kei_s
8
4k
「Go言語でつくるインタプリタ」を Rust で移植してみた / "Write An Interpreter In Go" In Rust
kei_s
1
1.3k
Rust言語で作るインタプリタ / Write An Interpreter In Rust
kei_s
2
320
「深層学習による自然言語処理」読書会 第6章2.7
kei_s
0
380
「深層学習による自然言語処理」読書会 第5章5.1
kei_s
0
300
最近個人的に気になるプログラミング言語おさらい Ruby, Python, Go, Rust, Julia
kei_s
0
810
「深層学習による自然言語処理」読書会 第2章2.1~2.5
kei_s
0
360
「深層学習による自然言語処理」読書会 第4章4.3
kei_s
1
420
Chainer の Trainer 解説と NStepLSTM について
kei_s
0
770
Other Decks in Technology
See All in Technology
20230123_FinJAWS
takuyay0ne
0
120
03_ユーザビリティテスト
kouzoukaikaku
0
330
組織に対してSREを適用するとどうなるか
kuniim
2
650
SRE Lounge 2023/SRE Lounge 2023
lmi
1
310
Kaggleシミュレーションコンペの動向
nagiss
0
260
re:Inventで発表があったIoT事例の紹介と考察
kizawa2020
0
180
MarvelClient Upgrade 64bit クライアントへの自動アップグレード設定
mitsuru_katoh
0
120
ROS_Japan_UG_#49_LT
maeharakeisuke
0
220
Airdrop for Open Source Projects
epicsdao
0
660
AI Builderについて
miyakemito
0
880
データベースの発表には RDBMS 以外もありますよ
maroon1st
0
230
SPA・SSGでSSRのようなOGP対応!
simo123
2
150
Featured
See All Featured
Statistics for Hackers
jakevdp
785
210k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
109
16k
Happy Clients
brianwarren
90
5.8k
Rebuilding a faster, lazier Slack
samanthasiow
69
7.5k
Writing Fast Ruby
sferik
613
58k
How GitHub Uses GitHub to Build GitHub
holman
465
280k
Embracing the Ebb and Flow
colly
75
3.6k
YesSQL, Process and Tooling at Scale
rocio
159
12k
The Illustrated Children's Guide to Kubernetes
chrisshort
22
42k
Designing for Performance
lara
600
65k
Infographics Made Easy
chrislema
235
17k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
239
19k
Transcript
ҭࣇٳۀͷ͝ใࠂͱɺ ҭࣇάοζͱͯ͠ͷεϚʔτεϐʔΧʔ നܛ, Kei Shiratsuchi, @kei_s ϨτϦόηϛφʔ, 2018.05.16(Wed)
ࣗݾհ • നɹܛʢγϥπνɹέΠʣ • גࣜձࣾϨτϦό • 20164݄ೖࣾ • Ruby on
Rails / JavaScript / Python / Elixir (new!) • ϑϩϯτΤϯυଆͷ։ൃ • େֶ࣌ෳࡶωοτϫʔΫՊֶͷݚڀ
ҭࣇٳۀͷ͝ใࠂ
ࢠͷੜ • 2018/01/25 • ୈҰࢠ(່)͕ੜ • 2018/03/05 • ҭࣇٳۀऔಘ •
2018/05/07 • ҭࣇٳۀ͔Β෮ؼ • ·Δ·Δ2ϲ݄ͷҭࣇٳۀΛऔಘ
ҭࣇٳۀͱ • ҭࣇٳۀ - Wikipedia ‣ ҭࣇٳۀʢ͍͖͘͡Ύ͏͗ΐ͏ʣͱɺࢠΛཆҭ͢Δ ࿑ಇऀ͕๏ʹج͍ͮͯऔಘͰ͖Δٳۀͷ͜ͱͰ͋Δ ‣ औಘ͢ΔऀͷஉঁΘͳ͍ɻ·ͨɺࢠ͕࣮ࢠͰ͋Δ
͔ཆࢠͰ͋Δ͔Θͳ͍ɻ ‣ ՈͳͲͰࣄ্࣮ɺࢠͷੈ͕Մೳͳऀ͕͍ͯɺͦ Εʹؔͳ͘औಘՄೳͰ͋Δɻ
ҭࣇٳۀͷ๏ • ʮҭࣇٳۀɺհޢٳۀҭࣇຢՈհޢΛߦ͏࿑ಇ ऀͷࢱʹؔ͢Δ๏ʯ ‣ ࣄۀओɺ࿑ಇऀ͔Βͷҭࣇٳۀਃग़͕͋ͬͨͱ͖ɺ ֘ҭࣇٳۀਃग़ΛڋΉ͜ͱ͕Ͱ͖ͳ͍ʢୈ6ʣ ‣ ࣄۀओɺ࿑ಇऀ͕ҭࣇٳۀͷਃग़Λ͠ɺຢҭࣇٳ ۀΛͨ͜͠ͱΛཧ༝ͱͯ͠ɺ֘࿑ಇऀʹରͯ͠ղޏ
ͦͷଞෆརӹͳऔѻ͍Λͯ͠ͳΒͳ͍ʢୈ10ʣ
ҭࣇٳۀͷظؒ • ҭࣇٳۀɺࢠ͕1ࡀʹୡ͢Δ·Ͱͷؒʹऔಘ͢Δ͜ͱ ͕Ͱ͖ΔʢݪଇɻԆنఆ͋Δʣ • ҭࣇٳۀݪଇͱͯ͠ಉҰͷࢠʹ͍ͭͯ࿑ಇऀҰਓʹ ͖ͭ1ճݶΓߦ͏͜ͱ͕Ͱ͖Δ
ҭࣇٳۀͱ͓ۚ • ҭࣇٳۀڅ੍ • ޏ༻อݥͷΈͷதͷҰͭ • ݪଇͱͯ͠ٳۀ։ֹ࢝࣌ۚ×ࢧڅͷ67% • ҭࣇٳۀͷ։͔࢝Β180ܦաޙ50% •
(ৄ͍͜͠ͱόοΫΦϑΟεͷํʹ…)
ͳͥҭࣇٳۀͨ͠ͷʁ • Ͱ͖ΔͷͰ… • ༗څٳՋʹཧ༝Λॻ͔ͳ͍ͷͱಉ͡Ͱ… • ͱ͍͑ɺஉੑͰҭٳΛऔΔਓ·ͩগͳ͍ • உੑҭٳͱΔ(ͱΕΔ)ࣾձͷํ͕શମతʹੜ͖ͦ͢ ͏ͳͷͰɺͦ͏ͳͬͯ΄͍͠
ϨτϦόͰͷҭࣇٳۀ • ʮҭࣇٳۀͱΖ͏ͱࢥͬͯΔΜͰ͕͢ʯ ʮ͓ͬɺྃղͰ͢ʂʯ • ΊͬͪΌ͋Γ͕͍ͨ • 1ྫͩͬͨͷͰɺ੍Λඋͯ͠Βͬͨ • ҭٳऔಘલ͔Βɺక͕͖ͭ͘ͳ͍λεΫΛ࣋ͬͨΓɺ
ࣗ࡞ۀΛڐՄͯ͠ΒͬͨΓɺௐͯ͠Βͬͨ
զ͕Ոͷ߹ͷҭࣇٳۀͷ༷ࢠ
લఏ • ҭٳ։࢝࣌Ͱɺ່ੜޙ1ϲ݄ • ࠷ॳͷҰϲ݄ɺ࠺ͷ࣮ՈͰ͓ੈʹͳ͍ͬͯͨ • ࠺ҭٳऔಘத
ಥવٽ͘ • ͕ɺཧ༝ෆ໌ • ͩΜͩΜύλʔϯԽ͞Εͯ͘Δ • ͓ෲ͕ۭ͍ͨɺΦϜπΛସ͑ͯ΄͍͠ɺ͍ • ͲΕμϝͳ࣌ɺແݶ๊ͬ͜
৸ΒΕͳ͍ • ͪΌΜң͕খ͍͞ͷͰɺ͙͢ʹ͓ෲ͕ۭ͘ • ɺ2~3͓͖࣌ؒʹतೕ͢Δඞཁ͕͋Δ • ى͖ͯٽ͘ˠϛϧΫ४උˠҿ·ͤΔˠ͛ͬˠ৸͔ͭ͠ ͚ʢˠᄡೕළચড়ɾফಟʣ • 3͓͖࣌ؒͱݴ͍ͭͭɺ࣮࣭৸ΒΕΔͷ2࣌ؒͪΐͬͱ
• ՖคͷقઅͰɺҰى͖Δͱ৸͚ͳ͍…
࠺ͷμϝʔδ • ग़࢈ͷμϝʔδ͔ͳΓਂࠁ • ී௨ʹಈ͚Δ͜ͱΛલఏʹ͍͚ͯ͠ͳ͍ • ཱͯͳ͍ɺา͚ͳ͍ɺ಄௧ɺශ݂ɺ… • པΕΔͷཔΔ •
ɺδδόόɺපӃɺ๚ॿ࢈ࢣɺγολʔ • ࣏ࣗମͷࢠҭͯࢧԉͰඅ༻ॿ͕͋ͬͨΓ
ਓ͕૿͑Δʹ͕૿͑Δ • ࣮ՈʹཬؼΓग़࢈͕ͩͬͨɺͬͯ͘Δͱ͖ ՙ͕ഒ૿ͨ͠ • ϕουɺΦϜπɺணସ͑ɺͳͲͳͲ… • ݄ྸʹΑͬͯඞཁͳͷ͕มΘ͍ͬͯ͘ • ΦϜπͷαΠζɺقઅʹ߹Θͤͨ…
• ՈͷϦϑΝΫλϦϯά • ཁΒͳ͍ͷΛࣺͯΔɺ֦ு͍͢͠ऩೲάοζΛἧ͑Δ
ॕ͍ɺΠϕϯτ • ͍͍͓ͨͩͨॕ͍ͷֹۚʹ߹Θͤͯɺॕ͍Λ ݕ౼ͯ͠ൃ͢Δ • δδόόɺɺ༑ਓͷདྷ๚ͷఔΛௐͯ͠ɺ͓ ͯͳ͢͠Δ • ͱͯ͋Γ͕͍ͨʢ͕ɺҙ֎ͱ͍͠…!ʣ
ҭࣇٳۀͷ͍͋ͩͷ·ͱΊ • ʮٳۀʯ͚ͩͲʮٳΈʯͳ͍…! • ҭٳऔಘͯ͠Α͔ͬͨ…! • ओʹਭෆΛղফ͠ͳ͍ͱࣄʹͳΒͳ͍ • ͪΌΜΛҭͯΔͷɺ1ਓ݄ͰෆՄೳ •
ɺɺ࣏ࣗମʹཔΔ
ײँ • ҭٳΛͱΕͯɺͱͯॿ͔Γ·ͨ͠ʂ • ձࣾͷօ༷ɺຊʹ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ
ҭࣇάοζͱͯ͠ͷεϚʔτεϐʔΧʔ
ঢ়گ • ੜޙ2ϲ݄Λ͑ͯɺগͣͭ͠༨༟͕Ͱ͖͖ͯͨ • िʹ߹ܭ3࣌ؒ͘Β͍ࡉΕʹ࣌ؒΛׂ͚ΔΑ͏ʹ • ࣗΛͬͱศརʹ͍ͨ͠ • εϚʔτεϐʔΧʔ͕ؾʹͳΔ
Google Home • Google Home Λߪೖ • ϤυόγͰֹΩϟϯϖʔϯதͩͬͨʂ
εϚʔτεϐʔΧʔΛͲ͏͏ʁ • ʮԻʯͱͯ༗༻ • ԻͰૢ࡞͢Δ • ՈిΛίϯτϩʔϧ͢Δ • ԻͰه͢Δ •
͓Ήͭସ͑Λه͢Δ • ԻͰ௨͢Δ • σδΧϝͷࣗಈΞοϓϩʔυΛΒͤΔ
ԻͰՈిΛૢ࡞͢Δ
ՈిΛૢ࡞(1) • εϚʔτ֎ઢϦϞίϯ Nature Remo • Google Home ࿈ܞͯ͠ɺςϨϏɺΤΞίϯΛૢ࡞
ศརͳγνϡΤʔγϣϯ • ʮগ͠৸ͨͬΆ͍͔ΒɺςϨϏ͚ͭͯΈΑʯ ʢͯ͠͠͠ʣ ʮ͋Βɺٽ͖͡Ίͨ…!ʯ ʢ๊ͬ͜ʣ ʢςϨϏফ͍ͨ͠…͕ɺख͕;͕͍ͬͯ͞Δ…!ʣ ʮΦοέʔάʔάϧɺςϨϏফͯ͠ʂʯ
ՈిΛૢ࡞(2) • Ͱૢ࡞Ͱ͖ΔͷΊͬͪΌศར • ֎ઢϦϞίϯ͕ͳ͍Ոిૢ࡞͍ͨ͠ͷͰɺ Switch Bot ಋೖͨ͠ • ཧϘλϯΛԡͤΔ
• Google Home ࿈ܞػೳ͋Γ • ʮΦοέʔάʔάϧɺচஆফͯ͠ʂʯ
ͬͱศརʹ͑ͦ͏ • ͔ͤͬ͘ͳͷͰϦϋϏϦతʹίʔυॻ͖͍ͨ • ॻ͍ͨ • https://github.com/shiratsuchi/home-hack • ໔ࣄ߲ɿREADME.md ͕ͳ͍ɺҰఆঢ়گͰಈ࡞͠ͳ͍ɺ
νҎ֎ͷڥͰࢼͯ͠ͳ͍
ԻͰ͓Ήͭସ͑Λه͢Δ
͓Ήͭସ͑Λه͢Δ • तೕɺ͓ͬ͜͠ɺ͏Μͪͷه Λ͢Δඞཁ͕͋Δ • ࢠͷ݈߁ঢ়ଶͷѲ • ʮϐϤΖ͙ʯͱ͍͏ΞϓϦ • ෳਓͰొɺڞ༗Ͱ͖Δ
͓Ήͭସ͑Λه͢Δ • ه͠ΕΔʂ • ͓Ήͭସ͑ͨ͠Βେମ๊ͬ͜ʹҠߦ • εϚϗ࣋ͯͳ͍ • ๊ͬ͜ऴΘͬͨΒه͠ΕͯΔ •
ʮΦοέʔάʔάϧɺ͓ͬ͜͠هͯ͠ʂʯ
͓Ήͭସ͑Λه͢Δ • ϐϤΖ͙ʹެ։ API ͳ͍ • ΞϓϦͷ௨৴Λ͍ͯɺඇެ։ API Λղੳ •
ͱΓ͋͑ͣ Wireshark • SSL (https) ͳͷͰ ݟΕͳ͍…!
͓Ήͭସ͑Λه͢Δ • BurpSuite • SSL ௨৴ؒʹϓϩΩγͯ͠ɺ҉߸ԽΛղআɺ࠶҉߸Խ ͢Δ͜ͱͰ௨৴ΛΈΔ • ͍ΘΏΔதؒऀ(Man-in-the-middle)߈ܸ •
WEB+DB PRESS Vol.103 Ͱղઆ͞Ε͍ͯΔ
͓Ήͭସ͑Λه͢Δ • PC Ͱ Burp Suite ىಈɺϓϩΩγϙʔτ൪߸ઃఆ • iPhone Ͱ
PC ͷ IP, Port ʹϒϥβΞΫηεɺূ໌ॻΠϯε τʔϧ • iPhone ͷ Wi-fi ઃఆͰɺ PC ͷ IP, Port ΛϓϩΩγઃఆ • ʮઃఆ>Ұൠ>ใ>ূ໌ॻ৴པઃఆʯͰɺΠϯετʔϧ ͨ͠ূ໌ॻΛʮશ໘తʹ৴པ͢ΔʯʹνΣοΫ
͓Ήͭସ͑Λه͢Δ
͓Ήͭସ͑Λه͢Δ • ৭ʑࢼͯ͠ڍಈΛ֬ೝ • PC ͔Β JSON ϦΫΤετΛ͍ͬͯ͡ૹ৴ɺਖ਼ৗʹडཧ͞ ΕΔ·Ͱࢼߦࡨޡ •
(ར༻نΛಡΜͰࣗͷσʔλͳΒͳ͠ͱ֬ೝ) • Node.js ͰεΫϦϓτ࡞
͓Ήͭସ͑Λه͢Δ • IFTTT ͱ Google Home Λ࿈ܞ • ಛఆͷϑϨʔζΛͨ࣌͠ʹΞΫγϣϯ͢Δ •
ऴྃ࣌ʹൃ͢ΔϝοηʔδΛొ͢Δ • Google Cloud Functions ͰɺεΫϦϓτ࣮ߦͰ͖ΔΑ͏ʹ͢Δ • Node.js ͷεΫϦϓτΛ࣮ߦͰ͖Δ • IFTTT ͷ Webhook ΞΫγϣϯͰɺCloud Functions ͷΤϯυϙΠϯτΛ ୟ͘Α͏ʹ͢Δ
͓Ήͭସ͑Λه͢Δ • ʮΦοέʔάʔάϧɺ͓ͬ͜͠هͯ͠ʂʯ ˣ IFTTT ͕ىಈɺCloud Functions ͷΤϯυϙΠϯτΛୟ͘ ˣ Cloud
Functions ͰϐϤΖ͙ API Λୟ͍ͯه ˣ ʮ͓ͬ͜͠Λه͠·ͨ͠ʯ
͓Ήͭସ͑Λه͢Δ • ΊͬͪΌศར • ͓Ήͭସ͑͠ͳ͕ΒΕ͍͍ͷͰϥΫ • ग़ઌͰΦοέʔάʔάϧͬͯݴ͍ͦ͏ʹͳΔ • ׳Ε͖ͯͯɺݴ͍Ε͕ൃੜ͍ͯ͠Δ͕…
σδΧϝͷࣗಈΞοϓϩʔυΛ ԻͰ௨
σδΧϝͷࣗಈΞοϓϩʔυ • ࢠͷࣸਅΛΊͬͪΌࡱΔ • δδόόͷใࠂ݉ͶͯࡱΔ • εϚϗͷΧϝϥ͍͍͚ͲɺσδΧϝΓ៉ྷ • σδΧϝ͔ΒͷऔΓࠐΈ͕໘ •
ΧϝϥপʹΜͰͳ͍ͷͰɺखؒΛ͔͚ͨ͘ͳ͍
σδΧϝͷࣗಈΞοϓϩʔυ • औΓࠐΈΛۃྗϥΫʹ͍ͨ͠ • ͦͷੲ Eye-fi ͱ͍͏͕͕͋ͬͨɺEOL… • FlashAir -
ແઢLANػೳ͖ͭSDΧʔυ • ىಈ or ϑΝΠϧॻ͖ࠐΈͨ͠ࡍʹɺઃఆͨ͠ Wi-fi ʹ ଓͯ͠ HTTP ϦΫΤετΛ͛Δ͜ͱ͕Ͱ͖Δ • Lua εΫϦϓτΛอଘͯ͠ɺ࣮ߦͰ͖Δ
σδΧϝͷࣗಈΞοϓϩʔυ • FlashAir ͷઃఆ֓ཁ • ӈͷΑ͏ͳϑΝΠϧΛ /SD_WLAN/CONFIG ʹஔ͘ • ىಈ࣌ʹ
/bootstrap.lua ͕ ࣮ߦ͞ΕΔ [Vendor] CIPATH=/DCIM/100__TSB/FA000001.JPG APPMODE=5 APPNAME=myflashair APPSSID=FOOSSID APPNETWORKKEY=password0123 VERSION=FA9CAW3AW3.00.00 CID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX PRODUCT=FlashAir VENDOR=TOSHIBA LUA_RUN_SCRIPT=/bootstrap.lua
σδΧϝͷࣗಈΞοϓϩʔυ • FlashAir ΛͬͯɺσδΧϝ͔Β Google Photos ࣗಈͰΞο ϓϩʔυ͢Δ • Lua
εΫϦϓτͰඞཁͳࣸਅϑΝΠϧΛࠪɺ ͦΕͧΕҰαʔόʹΞοϓϩʔυɺ αʔό͔Β Google Photos ͷ API ͰࣸਅΛՃ͢Δ • αʔό Sinatra Ͱॻ͍ͨ
σδΧϝͷࣗಈΞοϓϩʔυ • FlashAir ͷ᠘ • Lua εΫϦϓτͰϑΝΠϧΛॻ͖ࠐΈ͢ΔͱɺϗετଆʢσδΧϝʣ͔Β ͷॻ͖ࠐΈͱিಥͯ͠ FAT ෆ߹ͰϘϦϡʔϜ͕յΕΔ
• ΞοϓϩʔυཤྺαʔόαΠυͰ࣋ͭ • ىಈ͙࣌͢ʹ Wi-fi ଓཱ͕֬͞Ε͍ͯͳ͍ • Lua εΫϦϓτͰɺWi-fi ଓཱ͕֬͢Δ·Ͱ sleep ͢Δ • Google Photos ͷ᠘ • Google Photo API ଘࡏͤͣɺʢջ͔͠ͷʣPicasa API ͕·ͩಈ͍͍ͯΔ
σδΧϝͷࣗಈΞοϓϩʔυ • ىಈ࣌ʹɺະΞοϓϩʔυͷࣸਅΛΞοϓϩʔυ͢Δ͜ͱ ͕Ͱ͖ΔΑ͏ʹͳͬͨ • ศར • Ξοϓϩʔυͷਐḿ͕Θ͔Βͳ͍… • ͍ͭిݯΛམͱ͍͍ͯ͠ͷ͔Θ͔Βͳ͍
• Τϥʔ͕ൃੜ͍ͯ͠Δͷ͔Θ͔Βͳ͍
ԻͰ௨ • Google Home ʹΒͤΔ • https://github.com/noelportugal/google-home-notifier • Node.js ͷϓϩάϥϜ
• LAN ͷ Google Home Λࢦఆͯ͠ɺҙͷจࣈྻΛΒͤΔ • Google Text-to-speech API ΛͬͯԻͷ URL ΛऔಘɺChrome Cast ϓϩτίϧͰσόΠεʹ URL Λ࠶ੜ͍ͤͯ͞Δ
ԻͰ௨ • google-home-notifier Λͬͨ௨αʔόΛ४උ • FlashAir ͷ Lua εΫϦϓτͰɺΞοϓϩʔυ։࢝࣌ɺऴྃ ࣌ʹ௨αʔόʹϦΫΤετΛ͛Δ
• ։࢝࣌ʹʮΧϝϥ͔ΒͷΞοϓϩʔυΛ։࢝͠·͢ʯ • ऴྃ࣌ʹʮΧϝϥ͔ΒͷΞοϓϩʔυ͕ऴྃ͠·͠ ͨʯ
ԻͰ௨ • ΊͬͪΌศར • σδΧϝͰࣸਅΛࡱΔͷ͕ۤ͡Όͳ͘ͳͬͨ • Google Photo ͱΧϝϥΛݟൺͯɺશ্͕͔ͯͬͨ֬ೝ͠ͳ͘ ͍͍ͯ
• FlashAir ͱࣗϧʔλͷ૬ੑ͕ѱ͍ͬΆͯ࣌͘ʑಈ࡞͠ͳ͍… • σόοά࣌ؒऔΕͯͳ͍…
·ͱΊ
·ͱΊ • ҭࣇٳۀ͕औΕͯɺͱͯॿ͔Γ·ͨ͠ʂ • ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ • εϚʔτεϐʔΧʔɺҭࣇάοζͰ͢ʂ • ͬͯΈ͍ͨํ͓͕͚͍ͩ͘͞