Upgrade to Pro — share decks privately, control downloads, hide ads and more …

怠惰・短気・傲慢な家庭を築く / How to Build a Peaceful Family

怠惰・短気・傲慢な家庭を築く / How to Build a Peaceful Family

K-Ruby #23

Kentaro Kuribayashi

June 12, 2019
Tweet

More Decks by Kentaro Kuribayashi

Other Decks in Technology

Transcript

  1. ʙϓϩάϥϚͷࡾେඒಙͷԠ༻ྫͱͯ͠ʙ
    ܀ྛ݈ଠ࿠(.0ϖύϘגࣜձࣾ
    ,3VCZ
    ଵଦɾ୹ؾɾၗຫͳՈఉΛங͘

    View Slide

  2. (.0ϖύϘגࣜձࣾ
    ܀ྛ݈ଠ࿠!LFOUBSP
    औక໾$50
    IUUQTLFOUBSPLPSH

    View Slide

  3. ͍·ࣛࣇౡʢݝग़਎ʣͰ
    ΋ͬͱ΋੎͍ͷ͋Δ୅ΤϯδχΞ

    View Slide

  4. ՝୊ͱղܾํ਑ͷఏࣔ

    View Slide

  5. Α͋͘Γ͕ͪͳՈఉ಺ͷ͢Εҧ͍
    ‣ ʮ͋ͷ࿩ɺͨ͠ΑͶɻ͖͍ͯͳ͔ͬͨͷʁʯ
    ‣ ʮ஗͘ͳΔͳΒɺ༦৯ͷྔΛௐ੔͢Δ͔Βલ΋͍ͬͯͬͯΑʂʯ
    ‣ ʮ·ͨిؾ͚ͭͬͺͳ͠ʂʯ
    ‣ ʮ͝൧Ͱ͖Δ͔Βɺ෦԰͔Βग़͖ͯͯ४උͯ͠΄͍͠ʂʯ

    View Slide

  6. ͢Εҧ͍ΛݮΒ͢ʹ͸ʁʢϚΠϯυฤʣ
    ‣ ͓ޓ͍ɺ૬खʹظ଴͠ա͗Δͷ͕ʮ͢Εҧ͍ʯͷͦ΋ͦ΋ͷݪҼ
    ‣ ૬ख͕Ͳ͏ೝࣝ͠;Δ·͏͔͸ɺࣗ෼͕ίϯτϩʔϧͰ͖Δ͜ͱͰ͸ͳ͍
    ‣ Ξυϥʔ৺ཧֶ෩ʹ͍͏ͱɺʮ૬खͷ՝୊Λࣗ෼ͷ՝୊ͱࠞಉ͍ͯ͠Δʯͱ͍
    ͏͜ͱ
    ‣ ʮ૬खʹظ଴͠ͳ͍͚Ͳɺࣗ෼͸ՄೳͳݶΓ࣮ߦ͢Δʯʢ˜NBTVJESJWFʣ
    ‣ ʮʮ૬खͷ՝୊ʯͷղܾ΁ڠྗ͢Δࣄ͸େࣄʯʢ˜NBTVJESJWFʣ
    ग़ॴ: ʮଞਓʹظ଴͠ͳ͍ʯ͸ʮ՝୊ͷ෼཭ʯ

    View Slide

  7. ͢Εҧ͍ΛݮΒ͢ʹ͸ʁʢΤϯδχΞϦϯάฤʣ
    ᶃ ฉ͍ͯ΋๨Εͯ͠·͏ɻͦ΋ͦ΋ฉ͍ͯͳ͍
    ˠ৘ใڞ༗Λ؆୯ʹͰ͖ΔΑ͏ʹ͠Α͏
    ˠڞ༗͍ͯ͠Δ৘ใΛఆظతʹϓογϡ͠Α͏
    ᶄ ΍Δ΂͖ϧʔςΟϯΛ๨Εͯ͠·͏
    ˠͦ΋ͦ΋๨Εͯ΋໰୊ͳ͘͠Α͏
    ᶅ ख͕཭ͤͳ͍࣌ʹख఻ͬͯ΄͍͚͠Ͳۙ͘ʹ͍ͳ͍
    ˠ؆୯ʹݺ΂ΔΑ͏ʹ͠Α͏

    View Slide

  8. ϓϩάϥϚΒ͍͠ղܾΛਤΔ
    ग़ॴ: Wikipedia: ϓϩάϥϚ#ϓϩάϥϚͷࡾେඒಙ
    ࡾେඒಙΛ͓͓͍ʹൃشͯ͠ϓϩάϥϚΒ͘͠՝୊Λղܾ͠Α͏

    View Slide

  9. ᶃ ฉ͍ͯ΋๨Εͯ͠·͏͠ɺ
    ͦ΋ͦ΋ฉ͍ͯͳ͍໰୊

    View Slide

  10. ڞ༗ΧϨϯμʔ΁ͷ༧ఆ௥Ճ
    ڞ༗ΧϨϯμʔ
    ύλʔϯᶃ
    (PPHMFΧϨϯμʔΞϓϦͰ
    ڞ༗͍ͨ͠༧ఆΛొ࿥
    Ͷ͑ɺ(PPHMF
    ࠓ೔ͷ༧ఆʹ˓˓Λ௥Ճͯ͠
    ύλʔϯᶄ
    (PPHMF)PNFܦ༝Ͱ
    ڞ༗͍ͨ͠༧ఆΛొ࿥

    View Slide

  11. ڞ༗ΧϨϯμʔͷ༧ఆࢀর
    ڞ༗ΧϨϯμʔ
    ύλʔϯᶃ
    ("4Λ࢖ͬͨ-*/&ϘοτͰ
    ༧ఆΛఆظతʹ௨஌
    Ͷ͑ɺ(PPHMF
    ࠓ೔ͷ༧ఆΛڭ͑ͯ
    ύλʔϯᶄ
    (PPHMF)PNFܦ༝Ͱࢀর
    ʢڞ༗ΧϨϯμʔઃఆʣ

    View Slide

  12. ᶄ ΍Δ΂͖ϧʔςΟϯΛ
    ๨Εͯ͠·͏໰୊

    View Slide

  13. ͓ۚΛ࢖ͬͯղܾ͍ͯ͘͠
    ‣ ఱؾ༧ใΛฉ͖๨ΕͯɺӍʹ߱ΒΕΔ
    ˠ(PPHMF)PNFͷʮ͍͖ͬͯ·͢ʯͷϧʔςΟϯʹ૊ΈࠐΉ
    ‣ ΤΞίϯΛফ͠๨ΕΔ
    ˠ/BUVSF3FNPΛಋೖ͠ɺ(PPHMF)PNFͷʢུʣ
    ‣ র໌Λফ͠๨ΕΔ
    ˠ࿓Լ΍τΠϨͳͲҰ࣌తʹ఺౮͢Ε͹͍͍͚ͩͷ৔ॴͷর໌͸ɺਓײηϯ
    αʔ෇͖-&%ిٿʹೖΕସ͑Δɻͦͷଞͷ৔ॴ͸)VFΛಋೖͯ͠ɺ(PPʢུʣ

    View Slide

  14. ᶅ ख͕཭ͤͳ͍࣌ʹख఻ͬͯ΄͍͠
    ͚Ͳۙ͘ʹ͍ͳ͍໰୊

    View Slide

  15. લఏզ͕ՈͷؒऔΓ
    ͜͜ͰྉཧΛ͍ͯ͠Δɻ
    Ωονϯ͔Βɺେ੠Λͩ
    ͢͜ͱͳ͘ݺͼ͍ͨ

    View Slide

  16. .4UBDLܦ༝Ͱ(PPHMF)PNFʹ஻ΒͤΔσϞಈը
    ग़ॴ: ίʔυ: kentaro/m5stack-daily-call,σϞಈը: https://twitter.com/kentaro/status/1138126301552754688

    View Slide

  17. ͍͍ͷ͕Ͱ͖ͨͱࢥ͍͖΍ʜʜ

    View Slide

  18. (PPHMF)PNFͰී௨ʹͰ͖Μ͡ΌΜʜʢ೥݄ʙʣ
    ग़ॴ: Google Home σόΠεʹԻ੠ϝοηʔδΛϒϩʔυΩϟετ͢Δ - Google Home ϔϧϓ
    ͜ͷൃදʹ͓͚Δख๏΋
    ʮϘλϯΛϙνοͱʯͰ
    ϝοηʔδͰ͖Δར఺͸͋
    Δɺͱ͸ࢥ͏ʜʜ

    View Slide

  19. ར༻͍ͯ͠Δٕज़ཁૉͷ঺հ

    View Slide

  20. .4UBDLܦ༝Ͱ(PPHMF)PNFͰԻ੠Λྲྀ͢·Ͱ
    ᶃ .4UBDL্Ͱԡ͞ΕͨϘλϯʹͻ΋ͮ͘ςΩετΛɺ(PPHMFͷ$MPVE5FYU
    UP4QFFDI"1*Λ༻͍ͯɺಡΈ্͛Ի੠ͷ.1ʹม׵
    ᶄ N%/4ϓϩτίϧΛ༻͍ͯɺ-"/಺ʹ͋ΔԻ੠Λྲྀ͍ͨ͠(PPHMF)PNFσ
    όΠεΛ୳͢
    ᶅ $BTU7ϓϩτίϧͰɺᶃͷ.1ϑΝΠϧͷ63-ΛᶄͰݟ͚ͭͨ(PPHMF
    )PNFσόΠεʹૹ৴
    ˠ(PPHMF)PNFσόΠε͕ɺԻ੠ϑΝΠϧΛ࠶ੜ

    View Slide

  21. ᶃ(PPHMFͷ
    $MPVE5FYUUP4QFFDI"1*

    View Slide

  22. $MPVE5FYUUP4QFFDI"1*Λ࢖͏
    ग़ॴ: Cloud Text-to-Speech - Ի੠߹੒ | Cloud Text-to-Speech API
    ·ͣ͸͜ͷϑΥʔϜͰ
    ࢼͯ͠ΈΔ
    ೖྗςΩετΛ
    ಡΈ্͛Ի੠ʹม׵͢Δ

    View Slide

  23. ௐ੔ͨ͠ύϥϝλΛϓϩάϥϜ͔Βར༻ʢ3VCZͷྫʣ
    ग़ॴ: googleapis/google-cloud-ruby
    3VCZͩͱ͜Μͳײ͡

    View Slide

  24. ࢼͯ͠ΈΔʹࡍͯ͠ͷ஫ҙ఺
    ‣ άάΔͱग़ͯ͘Δ࣮૷ྫ͸ɺ(PPHMF຋༁ͷ༻͍͍ͯΔඇެࣜ"1*ΛϋοΫͯ͠
    ͍Δ΋ͷ͕ଟ͍
    ‣ ࠓճɺ.4UBDLͰςΩετ͔ΒಡΈ্͛Ի੠ϑΝΠϧΛ࡞ΔͨΊʹར༻ͨ͠ϥΠϒϥϦIPSJIJSP
    FTQHPPHMFUUT΋ಉ༷
    ‣ αεςφϒϧͳίʔυʹ͢ΔͳΒɺલϖʔδͷྫͰ༻͍͍ͯΔ$MPVE5FYUUP
    4QFFDI"1*Λ࢖͏ํ͕Αͦ͞͏ʢʁʣ

    View Slide

  25. ᶄN%/4Ͱ
    (PPHMF)PNFσόΠεΛ୳͢

    View Slide

  26. N%/4ͱ͸ʁ
    ‣ .VMUJDBTU%/4ͷུ
    ‣ "QQMFͷ#POKPVSͷͨΊʹࡦఆ͞Εͨ࢓༷Ͱɺ3'$Ͱఆٛ͞Ε͍ͯΔ
    ‣ ϚϧνΩϟετΞυϨεͷɺ6%1ϙʔτʹ%/4ΫΤϦΛ
    ౤͛Δ͜ͱͰɺωοτϫʔΫ಺ͷσόΠεʹϚϧνΩϟετసૹ͢Δ
    ‣ ໰͍߹Θͤʹରͯ͠ɺN%/4ʹରԠ͍ͯ͠ΔσόΠε͕Ԡ౴ͯ͘͠Δ
    ‣ (PPHMF)PNFσόΠε΋ରԠ͍ͯ͠Δ
    ‣ ಛผͳઃఆ΍ɺ%/4αʔόΛඞཁͱͤͣʹ໊લղܾ͕Ͱ͖Δͷ͕ར఺
    ग़ॴ: Multicast DNS

    View Slide

  27. N%/4Ͱ(PPHMF)PNFσόΠεΛ୳ࡧʢdns-sd(1)ʣ
    ৸ࣨͱϦϏϯάͷ୆ͷ
    σόΠε͕ݟ͔ͭͬͨ
    ग़ॴ: Google Homeͷ໊લͱIPΞυϨεΛݕग़͢Δํ๏

    View Slide

  28. dns-ds(1)ʹ͍ͭͯͷิ଍
    ‣ type͸_app-proto._tcp͔_app-proto._udpͱ͍͏ܗΛऔΔ
    ‣ app-proto͸ɺ*"/"ͷ4FSWJDF/BNFBOE5SBOTQPSU1SPUPDPM1PSU
    /VNCFS3FHJTUSZͱ͍͏ϖʔδͰొ࿥ɾ؅ཧ͞Ε͍ͯΔʢݹ͍ϚχϡΞϧͩ
    ͱ%/4437 3'$
    4FSWJDF5ZQFT͕ग़ͯ͘Δʣ
    ‣ ্هϖʔδͰɺgooglecastͱ͍͏αʔϏε໊ͷొ࿥Λ֬ೝͰ͖Δ
    ग़ॴ: man 1 dns-sd

    View Slide

  29. N%/4Ͱ(PPHMF)PNFσόΠεΛ୳ࡧʢ/PEFKTͷྫʣ
    ৸ࣨͱϦϏϯάͷ୆ͷ
    σόΠε͕ݟ͔ͭͬͨ
    ग़ॴ: Google Homeͷ໊લͱIPΞυϨεΛݕग़͢Δํ๏

    View Slide

  30. ᶅ$BTU7ϓϩτίϧͰ
    Ի੠ϑΝΠϧΛΘͨ͢

    View Slide

  31. $BTU7ͱ͸ʁ
    ‣ ݩʑ͸ɺ$ISPNFDBTUͱ௨৴͢ΔͨΊͷϓϩτίϧ
    ‣ (PPHMF)PNFͰ΋ར༻͞Ε͍ͯΔͨΊɺ(PPHMF)PNFσόΠεͱ௨৴͢Δ
    ࡍʹ͸ɺ$BTU7ϓϩτίϧΛ༻͍Δඞཁ͕͋Δ
    ‣ ΫϥΠΞϯτ͸5-4ܦ༝ͰσόΠεͷ൪ϙʔτʹ઀ଓ͠ɺ1SPUPDPM
    #V⒎FSTͰΤϯίʔυ͞ΕͨϝοηʔδΛ΍ΓͱΓ͢Δ͜ͱͰ௨৴͢Δ
    ‣ ৄ͘͠͸ɺUIJCBVUTOPEFDBTUW࡞ऀʹΑΔղઆͱɺ$ISPNJVNͷιʔεʹ
    ؚ·ΕΔϓϩτίϧఆٛΛࢀরͷ͜ͱ
    ࢀߟ: thibauts/node-castv2 - Protocol description

    View Slide

  32. ϓϩάϥϜ͔ΒԻ੠ϑΝΠϧΛૹΔʢ/PEFKTͷྫʣ
    ग़ॴ: thibauts/node-castv2-client
    /PEFͩͱ͜Μͳײ͡

    View Slide

  33. ͓ΘΓʹ

    View Slide

  34. ·ͱΊ
    ‣ Ո଒ؒͷʮ͢Εҧ͍ʯ͸ɺ૬खʹظ଴͗͢͠Δ͍ͤͰى͜Δ
    ‣ ϚΠϯυ໘Ͱͷ͢Εҧ͍ͷղܾࡦ͸ʮ՝୊ͷ෼཭ʯʢΞυϥʔ৺ཧֶʣ
    ‣ ͓ޓ͍ͷ՝୊ղܾΛɺΤϯδχΞϦϯάʹΑͬͯࢧԉ͢Δ͜ͱ΋େࣄ
    ‣ .4UBDLͱ(PPHMF)PNFͷ૊Έ߹ΘͤʹΑΓɺ೚ҙͷಡΈ্͛Ի੠ΛྲྀͤΔ
    Α͏ʹͨ͠
    ‣ $MPVE554"1*ɺN%/4ɺ$BTU7ͳͲɺٕज़ཁૉͷ૊Έ߹Θ͕ͤ໘ന͍
    ‣ (PPHMF)PNFɺ͋Ε͜ΕͰ͖·͘ΔɻϚδศརʂങ͏͔͠ͳ͍ʂʂ

    View Slide