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
610
怠惰・短気・傲慢な家庭を築く / 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
IoTシステム開発の複雑さを低減するための統合的アーキテクチャ
kentaro
1
91
Bidirectional Quadratic Voting Leveraging Issue-Based Matching
kentaro
2
390
大高生へのメッセージ(令和6年度「大高未来塾」) / Messages to Current Students
kentaro
0
270
「始め方」の始め方 / How to Start Starting Things
kentaro
5
870
Dynamic IoT Applications and Isomorphic IoT Systems Using WebAssembly
kentaro
1
1.3k
わたしがこのところハマっている「ライセンスフリー無線」のご紹介 / An Invitation to License-Free Radio
kentaro
1
530
先行きの見えなさを楽しさに変える ーVUCA時代のキャリア論と絶対他力主義ー / How to develop your career in the VUCA era
kentaro
7
5.6k
組織の生産性を高める意思決定の構造と方法 / How to do make decision rapidly and effectively
kentaro
41
22k
キャリアを時間・空間軸で考える / Thinking about your career from both time and space viewpoints
kentaro
15
16k
Other Decks in Technology
See All in Technology
あれは良かった、あれは苦労したB2B2C型SaaSの新規開発におけるCloud Spanner
hirohito1108
2
910
日経のデータベース事業とElasticsearch
hinatades
PRO
0
200
Raycast AI APIを使ってちょっと便利な拡張機能を作ってみた / created-a-handy-extension-using-the-raycast-ai-api
kawamataryo
0
190
プロダクトエンジニア 360°フィードバックを実施した話
hacomono
PRO
0
140
PHPカンファレンス名古屋-テックリードの経験から学んだ設計の教訓
hayatokudou
2
530
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
170
OPENLOGI Company Profile
hr01
0
60k
EDRの検知の仕組みと検知回避について
chayakonanaika
11
4.3k
スキルだけでは満たせない、 “組織全体に”なじむオンボーディング/Onboarding that fits “throughout the organization” and cannot be satisfied by skills alone
bitkey
0
140
2/18/25: Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
0
160
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
6
1.2k
偏光画像処理ライブラリを作った話
elerac
1
160
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
91
5.9k
The Pragmatic Product Professional
lauravandoore
32
6.4k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
How GitHub (no longer) Works
holman
314
140k
The Language of Interfaces
destraynor
156
24k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
980
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.3k
Adopting Sorbet at Scale
ufuk
74
9.2k
Designing for humans not robots
tammielis
250
25k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
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ɺ͋Ε͜ΕͰ͖·͘ΔɻϚδศརʂങ͏͔͠ͳ͍ʂʂ