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
怠惰・短気・傲慢な家庭を築く / How to Build a Peaceful Family
Search
Kentaro Kuribayashi
June 12, 2019
Technology
0
600
怠惰・短気・傲慢な家庭を築く / How to Build a Peaceful Family
K-Ruby #23
Kentaro Kuribayashi
June 12, 2019
Tweet
Share
More Decks by Kentaro Kuribayashi
See All by Kentaro Kuribayashi
Bidirectional Quadratic Voting Leveraging Issue-Based Matching
kentaro
2
300
大高生へのメッセージ(令和6年度「大高未来塾」) / Messages to Current Students
kentaro
0
220
「始め方」の始め方 / How to Start Starting Things
kentaro
5
820
Dynamic IoT Applications and Isomorphic IoT Systems Using WebAssembly
kentaro
1
1.2k
わたしがこのところハマっている「ライセンスフリー無線」のご紹介 / An Invitation to License-Free Radio
kentaro
1
460
先行きの見えなさを楽しさに変える ーVUCA時代のキャリア論と絶対他力主義ー / How to develop your career in the VUCA era
kentaro
7
4.9k
組織の生産性を高める意思決定の構造と方法 / How to do make decision rapidly and effectively
kentaro
39
22k
キャリアを時間・空間軸で考える / Thinking about your career from both time and space viewpoints
kentaro
15
16k
WEB+DB PRESSで特集記事を書く方法 / How to Become an Author of WEB+DB PRESS
kentaro
7
1.4k
Other Decks in Technology
See All in Technology
Terraform未経験の御様に対してどの ように導⼊を進めていったか
tkikuchi
2
430
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
470
いざ、BSC討伐の旅
nikinusu
2
780
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
180
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
990
Why App Signing Matters for Your Android Apps - Android Bangkok Conference 2024
akexorcist
0
120
強いチームと開発生産性
onk
PRO
34
11k
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
220
隣接領域をBeyondするFinatextのエンジニア組織設計 / beyond-engineering-areas
stajima
1
270
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
170
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
300
DMARC 対応の話 - MIXI CTO オフィスアワー #04
bbqallstars
1
160
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Gamification - CAS2011
davidbonilla
80
5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Designing the Hi-DPI Web
ddemaree
280
34k
Code Reviewing Like a Champion
maltzj
520
39k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Designing for Performance
lara
604
68k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
Transcript
ʙϓϩάϥϚͷࡾେඒಙͷԠ༻ྫͱͯ͠ʙ ܀ྛ݈ଠ(.0ϖύϘגࣜձࣾ ,3VCZ ଵଦɾؾɾၗຫͳՈఉΛங͘
(.0ϖύϘגࣜձࣾ ܀ྛ݈ଠ!LFOUBSP औక$50 IUUQTLFOUBSPLPSH
͍·ࣛࣇౡʢݝग़ʣͰ ͬͱ͍ͷ͋ΔΤϯδχΞ
՝ͱղܾํͷఏࣔ
Α͋͘Γ͕ͪͳՈఉͷ͢Εҧ͍ ‣ ʮ͋ͷɺͨ͠ΑͶɻ͖͍ͯͳ͔ͬͨͷʁʯ ‣ ʮ͘ͳΔͳΒɺ༦৯ͷྔΛௐ͢Δ͔Βલ͍ͬͯͬͯΑʂʯ ‣ ʮ·ͨిؾ͚ͭͬͺͳ͠ʂʯ ‣ ʮ͝൧Ͱ͖Δ͔Βɺ෦͔Βग़͖ͯͯ४උͯ͠΄͍͠ʂʯ
͢Εҧ͍ΛݮΒ͢ʹʁʢϚΠϯυฤʣ ‣ ͓ޓ͍ɺ૬खʹظ͠ա͗Δͷ͕ʮ͢Εҧ͍ʯͷͦͦͷݪҼ ‣ ૬ख͕Ͳ͏ೝࣝ͠;Δ·͏͔ɺ͕ࣗίϯτϩʔϧͰ͖Δ͜ͱͰͳ͍ ‣ Ξυϥʔ৺ཧֶ෩ʹ͍͏ͱɺʮ૬खͷ՝Λࣗͷ՝ͱࠞಉ͍ͯ͠Δʯͱ͍ ͏͜ͱ ‣ ʮ૬खʹظ͠ͳ͍͚ͲɺࣗՄೳͳݶΓ࣮ߦ͢ΔʯʢNBTVJESJWFʣ
‣ ʮʮ૬खͷ՝ʯͷղܾڠྗ͢ΔࣄେࣄʯʢNBTVJESJWFʣ ग़ॴ: ʮଞਓʹظ͠ͳ͍ʯʮ՝ͷʯ
͢Εҧ͍ΛݮΒ͢ʹʁʢΤϯδχΞϦϯάฤʣ ᶃ ฉ͍ͯΕͯ͠·͏ɻͦͦฉ͍ͯͳ͍ ˠใڞ༗Λ؆୯ʹͰ͖ΔΑ͏ʹ͠Α͏ ˠڞ༗͍ͯ͠ΔใΛఆظతʹϓογϡ͠Α͏ ᶄ Δ͖ϧʔςΟϯΛΕͯ͠·͏ ˠͦͦΕͯͳ͘͠Α͏ ᶅ ख͕ͤͳ͍࣌ʹखͬͯ΄͍͚͠Ͳۙ͘ʹ͍ͳ͍
ˠ؆୯ʹݺΔΑ͏ʹ͠Α͏
ϓϩάϥϚΒ͍͠ղܾΛਤΔ ग़ॴ: Wikipedia: ϓϩάϥϚ#ϓϩάϥϚͷࡾେඒಙ ࡾେඒಙΛ͓͓͍ʹൃشͯ͠ϓϩάϥϚΒ͘͠՝Λղܾ͠Α͏
ᶃ ฉ͍ͯΕͯ͠·͏͠ɺ ͦͦฉ͍ͯͳ͍
ڞ༗ΧϨϯμʔͷ༧ఆՃ ڞ༗ΧϨϯμʔ ύλʔϯᶃ (PPHMFΧϨϯμʔΞϓϦͰ ڞ༗͍ͨ͠༧ఆΛొ Ͷ͑ɺ(PPHMF ࠓͷ༧ఆʹ˓˓ΛՃͯ͠ ύλʔϯᶄ (PPHMF)PNFܦ༝Ͱ ڞ༗͍ͨ͠༧ఆΛొ
ڞ༗ΧϨϯμʔͷ༧ఆࢀর ڞ༗ΧϨϯμʔ ύλʔϯᶃ ("4Λͬͨ-*/&ϘοτͰ ༧ఆΛఆظతʹ௨ Ͷ͑ɺ(PPHMF ࠓͷ༧ఆΛڭ͑ͯ ύλʔϯᶄ (PPHMF)PNFܦ༝Ͱࢀর ʢڞ༗ΧϨϯμʔઃఆʣ
ᶄ Δ͖ϧʔςΟϯΛ Εͯ͠·͏
͓ۚΛͬͯղܾ͍ͯ͘͠ ‣ ఱؾ༧ใΛฉ͖ΕͯɺӍʹ߱ΒΕΔ ˠ(PPHMF)PNFͷʮ͍͖ͬͯ·͢ʯͷϧʔςΟϯʹΈࠐΉ ‣ ΤΞίϯΛফ͠ΕΔ ˠ/BUVSF3FNPΛಋೖ͠ɺ(PPHMF)PNFͷʢུʣ ‣ র໌Λফ͠ΕΔ ˠ࿓ԼτΠϨͳͲҰ࣌తʹ౮͢Ε͍͍͚ͩͷॴͷর໌ɺਓײηϯ
αʔ͖-&%ిٿʹೖΕସ͑Δɻͦͷଞͷॴ)VFΛಋೖͯ͠ɺ(PPʢུʣ
ᶅ ख͕ͤͳ͍࣌ʹखͬͯ΄͍͠ ͚Ͳۙ͘ʹ͍ͳ͍
લఏզ͕ՈͷؒऔΓ ͜͜ͰྉཧΛ͍ͯ͠Δɻ Ωονϯ͔ΒɺେΛͩ ͢͜ͱͳ͘ݺͼ͍ͨ
.4UBDLܦ༝Ͱ(PPHMF)PNFʹΒͤΔσϞಈը ग़ॴ: ίʔυ: kentaro/m5stack-daily-call,σϞಈը: https://twitter.com/kentaro/status/1138126301552754688
͍͍ͷ͕Ͱ͖ͨͱࢥ͍͖ʜʜ
(PPHMF)PNFͰී௨ʹͰ͖Μ͡ΌΜʜʢ݄ʙʣ ग़ॴ: Google Home σόΠεʹԻϝοηʔδΛϒϩʔυΩϟετ͢Δ - Google Home ϔϧϓ ͜ͷൃදʹ͓͚Δख๏
ʮϘλϯΛϙνοͱʯͰ ϝοηʔδͰ͖Δར͋ Δɺͱࢥ͏ʜʜ
ར༻͍ͯ͠Δٕज़ཁૉͷհ
.4UBDLܦ༝Ͱ(PPHMF)PNFͰԻΛྲྀ͢·Ͱ ᶃ .4UBDL্Ͱԡ͞ΕͨϘλϯʹͻͮ͘ςΩετΛɺ(PPHMFͷ$MPVE5FYU UP4QFFDI"1*Λ༻͍ͯɺಡΈ্͛Իͷ.1ʹม ᶄ N%/4ϓϩτίϧΛ༻͍ͯɺ-"/ʹ͋ΔԻΛྲྀ͍ͨ͠(PPHMF)PNFσ όΠεΛ୳͢ ᶅ $BTU7ϓϩτίϧͰɺᶃͷ.1ϑΝΠϧͷ63-ΛᶄͰݟ͚ͭͨ(PPHMF )PNFσόΠεʹૹ৴
ˠ(PPHMF)PNFσόΠε͕ɺԻϑΝΠϧΛ࠶ੜ
ᶃ(PPHMFͷ $MPVE5FYUUP4QFFDI"1*
$MPVE5FYUUP4QFFDI"1*Λ͏ ग़ॴ: Cloud Text-to-Speech - Ի߹ | Cloud Text-to-Speech API
·ͣ͜ͷϑΥʔϜͰ ࢼͯ͠ΈΔ ೖྗςΩετΛ ಡΈ্͛Իʹม͢Δ
ௐͨ͠ύϥϝλΛϓϩάϥϜ͔Βར༻ʢ3VCZͷྫʣ ग़ॴ: googleapis/google-cloud-ruby 3VCZͩͱ͜Μͳײ͡
ࢼͯ͠ΈΔʹࡍͯ͠ͷҙ ‣ άάΔͱग़ͯ͘Δ࣮ྫɺ(PPHMF༁ͷ༻͍͍ͯΔඇެࣜ"1*ΛϋοΫͯ͠ ͍Δͷ͕ଟ͍ ‣ ࠓճɺ.4UBDLͰςΩετ͔ΒಡΈ্͛ԻϑΝΠϧΛ࡞ΔͨΊʹར༻ͨ͠ϥΠϒϥϦIPSJIJSP FTQHPPHMFUUTಉ༷ ‣ αεςφϒϧͳίʔυʹ͢ΔͳΒɺલϖʔδͷྫͰ༻͍͍ͯΔ$MPVE5FYUUP 4QFFDI"1*Λ͏ํ͕Αͦ͞͏ʢʁʣ
ᶄN%/4Ͱ (PPHMF)PNFσόΠεΛ୳͢
N%/4ͱʁ ‣ .VMUJDBTU%/4ͷུ ‣ "QQMFͷ#POKPVSͷͨΊʹࡦఆ͞Ε༷ͨͰɺ3'$Ͱఆٛ͞Ε͍ͯΔ ‣ ϚϧνΩϟετΞυϨεͷɺ6%1ϙʔτʹ%/4ΫΤϦΛ ͛Δ͜ͱͰɺωοτϫʔΫͷσόΠεʹϚϧνΩϟετసૹ͢Δ ‣ ͍߹Θͤʹରͯ͠ɺN%/4ʹରԠ͍ͯ͠ΔσόΠε͕Ԡͯ͘͠Δ
‣ (PPHMF)PNFσόΠεରԠ͍ͯ͠Δ ‣ ಛผͳઃఆɺ%/4αʔόΛඞཁͱͤͣʹ໊લղܾ͕Ͱ͖Δͷ͕ར ग़ॴ: Multicast DNS
N%/4Ͱ(PPHMF)PNFσόΠεΛ୳ࡧʢdns-sd(1)ʣ ৸ࣨͱϦϏϯάͷͷ σόΠε͕ݟ͔ͭͬͨ ग़ॴ: Google Homeͷ໊લͱIPΞυϨεΛݕग़͢Δํ๏
dns-ds(1)ʹ͍ͭͯͷิ ‣ type_app-proto._tcp͔_app-proto._udpͱ͍͏ܗΛऔΔ ‣ app-protoɺ*"/"ͷ4FSWJDF/BNFBOE5SBOTQPSU1SPUPDPM1PSU /VNCFS3FHJTUSZͱ͍͏ϖʔδͰొɾཧ͞Ε͍ͯΔʢݹ͍ϚχϡΞϧͩ ͱ%/4437 3'$ 4FSWJDF5ZQFT͕ग़ͯ͘Δʣ ‣
্هϖʔδͰɺgooglecastͱ͍͏αʔϏε໊ͷొΛ֬ೝͰ͖Δ ग़ॴ: man 1 dns-sd
N%/4Ͱ(PPHMF)PNFσόΠεΛ୳ࡧʢ/PEFKTͷྫʣ ৸ࣨͱϦϏϯάͷͷ σόΠε͕ݟ͔ͭͬͨ ग़ॴ: Google Homeͷ໊લͱIPΞυϨεΛݕग़͢Δํ๏
ᶅ$BTU7ϓϩτίϧͰ ԻϑΝΠϧΛΘͨ͢
$BTU7ͱʁ ‣ ݩʑɺ$ISPNFDBTUͱ௨৴͢ΔͨΊͷϓϩτίϧ ‣ (PPHMF)PNFͰར༻͞Ε͍ͯΔͨΊɺ(PPHMF)PNFσόΠεͱ௨৴͢Δ ࡍʹɺ$BTU7ϓϩτίϧΛ༻͍Δඞཁ͕͋Δ ‣ ΫϥΠΞϯτ5-4ܦ༝ͰσόΠεͷ൪ϙʔτʹଓ͠ɺ1SPUPDPM #V⒎FSTͰΤϯίʔυ͞ΕͨϝοηʔδΛΓͱΓ͢Δ͜ͱͰ௨৴͢Δ ‣
ৄ͘͠ɺUIJCBVUTOPEFDBTUW࡞ऀʹΑΔղઆͱɺ$ISPNJVNͷιʔεʹ ؚ·ΕΔϓϩτίϧఆٛΛࢀরͷ͜ͱ ࢀߟ: thibauts/node-castv2 - Protocol description
ϓϩάϥϜ͔ΒԻϑΝΠϧΛૹΔʢ/PEFKTͷྫʣ ग़ॴ: thibauts/node-castv2-client /PEFͩͱ͜Μͳײ͡
͓ΘΓʹ
·ͱΊ ‣ Ոؒͷʮ͢Εҧ͍ʯɺ૬खʹظ͗͢͠Δ͍ͤͰى͜Δ ‣ ϚΠϯυ໘Ͱͷ͢Εҧ͍ͷղܾࡦʮ՝ͷʯʢΞυϥʔ৺ཧֶʣ ‣ ͓ޓ͍ͷ՝ղܾΛɺΤϯδχΞϦϯάʹΑͬͯࢧԉ͢Δ͜ͱେࣄ ‣ .4UBDLͱ(PPHMF)PNFͷΈ߹ΘͤʹΑΓɺҙͷಡΈ্͛ԻΛྲྀͤΔ Α͏ʹͨ͠
‣ $MPVE554"1*ɺN%/4ɺ$BTU7ͳͲɺٕज़ཁૉͷΈ߹Θ͕ͤ໘ന͍ ‣ (PPHMF)PNFɺ͋Ε͜ΕͰ͖·͘ΔɻϚδศརʂങ͏͔͠ͳ͍ʂʂ