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

RubyKaigi のはなし (Fukuoka RubyistsKaigi 03 Keynote)

RubyKaigi のはなし (Fukuoka RubyistsKaigi 03 Keynote)

Talk given at Fukuoka RubyistsKaigi 03

Sorah Fukumori

February 18, 2023
Tweet

More Decks by Sorah Fukumori

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ • Sorah Fukumori • https://sorah.jp/ • RubyKaigi Organizer •

    Staff Software Engineer @ Cookpad Inc. • ۙ೥ͷझຯ: FFXIV, ηΨԻήʔ, ϓϩηΧ,
 ϒϧΞΧ͋ͨΓ
  2. ࣗݾ঺հ • ͍͓ͪ͏Rubyίϛολ • झຯͱ࢓ࣄͰ Ruby ͷ Debian ύοέʔδΛಠࣗϏϧυ͍ͯ͠ ͯɺύοέʔδͷյΕɺಛघͳ

    ؀ڥͰͷςετࣦഊͳͲΛ
 ௚ͨ͠Γใࠂͨ͠Γ͍ͯ͠Δ • https://github.com/sorah-rbpkg ͔ͭͬͯͶ https://github.com/ruby/ruby/commits/master?author=sorah
  3. ੾Γ୓͘… ੾Γ୓͍ͨ࿩ • COVID-19 Ҏ߱ͷ RubyKaigi Ͱ͍Ζ͍Ζ੾Γ୓͍ͨ࿩Λ͠Α͏ͱࢥ͍·͢ • RubyKaigi 2020:

    Ωϟϯηϧ • RubyKaigi Takeout 2020: YouTube • RubyKaigi Takeout 2021: ༗ྉ഑৴! • RubyKaigi 2022: ϋΠϒϦου; ө૾ԻڹΫϧʔ౤ೖ • RubyKaigi 2023: ΦϑϥΠϯ֦େɾҾ͖ଓ͖ϋΠϒϦου
  4. Ϟνϕʔγϣϯ • ruby-core ͔Β͸एׯ཭Ε͍ͯΔ͚Ͳ Ruby ίϛϡχςΟʹ͸Ը͕͋Δ͠ࢧԉ ͍ͨ͠ • Πϕϯτӡ༻ɺΘΓͱָ͠ΜͰ͍Δ •

    ϦΞϧλΠϜʹ໨ͷલͰ෺΍ਓ͕ಈ͍ͨΓɺͦΕʹΑͬͯσʔλΛಘΒΕͨ Γ͢Δͷָ͕͍ͬ͠Ά͍ • ෣୆ਐߦ͔ΒGPS/NMEAͰ༡ΜͩΓຊۀͷྫྷଂݿ·Ͱ…ɻ
  5. RubyKaigi • Sorah: Orgz since 2018, Wi-Fi since 2017 •

    ͍Ζ͍Ζ΍ͬͯ·͢ • Sponsor Relations • Wi-Fi NOC • ౰೔ͷΦϖϨʔγϣϯશൠΤεΧϨઌ
  6. Takeout-app • https://github.com/ruby-no-kai/takeout-app • RubyKaigi Takeout 2021 ͔Βͷ virtual venue

    Λ୲͏ Rails app • ͱ͍ͬͯ΋΄ͱΜͲ React (TypeScript) ͕ίʔυͷେ൒Λ઎ΊͯΔ • Rails + React + AWS͍Ζ͍Ζɺͱ͍͏ߏ੒
  7. RubyKaigi ͷ virtual venue ͷཁ݅ • ͍Ζ͍Ζ͋ͬͯ಺੡͢Δ͜ͱʹ • ༗ྉԽ͢Δ͜ͱʹͨ͠ͷͰɺͦ΋ͦ΋ YouTube

    ͕ແཧ • ෳ਺τϥοΫ • ӳޠʮͷΈʯ௨༁͕͋Δ • ӳޠʮ͚ͩʯࣈນΛग़͍ͨ͠ • ෺ཧతମݧ͸ͳΔ΂͘࠶ݱ͍ͨ͠ (Committer ໊ࡳͱ͔) • εϙϯαʔϕωϑΟοτͷఏڙ༨஍Λͭ͘Γ͔ͨͬͨ • ಺੡͢ΔͳΒ 1k ਓن໛Λ҆ͪ͘ΌΜͱࡹ͚Δ͜ͱ • ΍ͬͯͯͨͷ͍͠
  8. ಺੡͢Δͧ • ͱ͘ʹ in-person venue ͕ͳ͍ঢ়ଶͷΧϯϑΝϨϯεͰɺvirtual venue ͸֎ͷ ద౰ͳαʔϏεΛ࣋ͬͯ͘Δ………ʹ͢ΔͱɺϞνϕʔγϣϯҡ͕࣋ͭΒ͔ͬ ͨ

    • ͋ͱ virtual venue తͳ΍ͭΛ୳ͯ͠ൺֱͨ͠Γ contact sales ͢Δମྗͷ໰୊ ΋……… • ϦΞϧλΠϜͰ͍Ζ͍Ζ͏͘͝ΞϓϦ࡞Δͷɺͨͷͦ͠͏͡ΌΜ
  9. 2021 Ͱ࣮૷ͨ͠ػೳͨͪ • ϥΠϒ഑৴ͷ࠶ੜ • ௨༁Ϟʔυ • νϟοτ (໊લ, ΞΠίϯ,

    ϩʔϧ, ݱࡏͷεϐʔΧʔͷڧௐදࣔ, ϞσϨʔγϣϯ, RubyKaigi໊ٛͰͷൃݴ, ϐϯࢭΊ) • ෳ਺τϥοΫͷαϙʔτ • ࣈນ • ນؒө૾ͷੜ੒
  10. ߏ੒ • جຊతʹϚωʔδυαʔϏεͳͲΛΨϯΨϯ࢖ͬͯ Rails όοΫΤϯυ͕΍Δ͜ͱ΍ෛՙΛ཈͍͑ͯΔ • σϓϩΠ: Heroku • νϟοτ:

    Chime SDK for Messaging • ө૾഑৴: Amazon IVS • ө૾ૹग़: AWS Elemental MediaLive • ࣈນ: Amazon Transcribe • CDN: Amazon CloudFront
  11. AWS Blog ʹ guest post Λॻ͍ͨ • AWS ͷ Chime

    SDK Λ࢖ͬͨେ͖ͳࣄྫʹͳͬͨΑ͏Ͱ guest post Λॻ͔ͤ ͯ΋Βͬͨ • https://aws.amazon.com/blogs/business-productivity/how-rubykaigi-built-an- event-site-in-days-with-the-amazon-chime-sdk-and-amazon-ivs/ • ࡉ͔ͳ಺༰͸͜͜ʹ৐ͬͯ·͢
  12. AWS Blog ʹ guest post Λॻ͍ͨ • AWS ͷ Chime

    SDK Λ࢖ͬͨେ͖ͳࣄྫʹͳͬͨΑ͏Ͱ guest post Λॻ͔ͤ ͯ΋Βͬͨ • https://aws.amazon.com/blogs/business-productivity/how-rubykaigi-built-an- event-site-in-days-with-the-amazon-chime-sdk-and-amazon-ivs/ • ͜Ε͔Β஻Δࡉ͔ͳ಺༰͸͜͜ʹ৐ͬͯ·͢
  13. Takeout-app: νϟοτ • Chime SDK for Messaging ͰνϟοτʹٻΊΒΕΔόοΫΤϯυͱΫϥΠΞ ϯτ༻ SDK

    ͕खʹೖΔ • Chime SDK ଆͷϢʔβʔ؅ཧ෦෼ͱɺϑϩϯτΤϯυͷ࣮૷Λ͢Δ͚ͩͰΑ ͯ͘ศར • Display Name తͳଐੑʹ Ruby Committer ΍ Speaker ϑϥάΛಥͬࠐΜͩ
  14. Takeout-app: ө૾഑৴ • ഑৴͸ IVS ʹؙ౤͛ɻγϯϓϧͳ௿஗ԆɾϓϥΠϕʔτ഑৴͕Ͱ͖ͯɺϑϩϯ τΤϯυ༻ͷ JS SDK ΋͍ͭͯΔ

    • IVS ʹ͸ݱ৔͔Β௚઀Ͱ͸ͳ͘ MediaLive Λ௨ͯ͠Δɻࣈນ༻ͷԻ੠ΛऔΓग़ ͨ͠Γͱ͔ɺ഑৴ݩΛ੾Γସ͑ͨΓͱ͔Λ࣮ݱͤ͞ΔͨΊ • MediaLive Ͱ΋ HLS ഑৴͸Ͱ͖Δ͕ɺ஗Ԇ͕େ͖͍ͷͱࣗ෼Ͱ΍Βͳ͖Ό ͍͚ͳ͍ൣғ͕େ͖͍ͷͰ΍ͬͯͳ͍ • takeout-app ͸ MediaLive ͷ͜ͱ͸ؔ৺ʹ࣋ͨͤͯͳ͍
  15. Takeout-app: ࣈນ • ࣈນ͸ Amazon Transcribe Ͱࣗಈจࣈى͍ͤͯ͜͠͞Δ • MediaLive ͔ΒԻ੠͚ͩ

    EC2 Πϯελϯεʹඈ͹ͯ͠ɺ ff mpeg ͱ Ruby Ͱड͚औͬͯ Transcribe ʹ౤͛ͯΔ • ͪΌΜͱϦΞϧλΠϜॲཧ༻ͷετϦʔϛϯά API ࣮૷͕ aws-sdk-ruby ʹଘࡏͯ͠ͼͬ͘ Γͨ͠ • Transcribe ͔Βͷ݁Ռ͸ Chime SDK Ͱνϟοτͷൃݴͱͯ͠഑৴ • ࣮͸ࣈນϘλϯΛԡ͢ͱཪͰ͸ࣈນ഑৴༻ͷνϟοτϧʔϜʹࢀՃͨ͠Γ཭୤ͨ͠Γͯ͠Δ • ΧελϜࣙॻʹ a_matsuda ۘ੡ࣙॻΛಥͬࠐΜͰ͋ΔɻͦΖͦΖΞοϓσʔτ͕͍Δ͔΋
  16. όοΫΤϯυͷ Rails • ࣮͸΄ͱΜͲ࢓ࣄ͕ͳ͍ • νέοτൢചͷ Tito ͔Β Webhook Λड͚ͯࢀՃऀσʔλΛอ࣋

    • ϩάΠϯ/ϓϩϑΟʔϧొ࿥ • νϟοτ΍഑৴༻ͷτʔΫϯ, ΞΫηεΩʔ෷͍ग़͠ • ը໘্ͷදࣔ಺༰ (/api/conference) ͷ੍ޚͱͦͷ؅ཧը໘
  17. /api/conference ͷࠩ෼ߋ৽ • IVS ΍ Chime SDK ͔ΒϝλσʔλΛ഑৴͢Δ͜ͱ͕Ͱ͖Δ • Chime

    SDK ͸ϑϩϯτΤϯυͰෆՄࢹʹͳΔΑ͏ͳಛघϝοηʔδͱ͠ ͯɺIVS ͸ HLS ͷηάϝϯτʹ೚ҙͷσʔλΛྲྀ͢ػೳ͕͋Δ • αΠζ੍ݶ͕͖ͭΊͳͷͰࠩ෼σʔλΛ഑৴ • ͜ΕΛϑϩϯτΤϯυͰ͏·͍͜ͱࠩ෼ߋ৽Λ͢Δ࣮૷Λ͍ͯͨ͠ • ʮ͜ͷ࣌ؒʹͳͬͨΒ͜Εʹ੾Γସ͑ΔʯΈ͍ͨͳͷ΋ग़དྷΔΑ͏ʹͨ͠
  18. ࠩ෼ߋ৽όάΓ·͘Γ • ࣮ࡍʹग़ͯ͠ΈͨΒ͍Ζ͍ΖͳέʔεͰෆ۩߹͕ଟൃͨ͠ • Takeout 2021 Ͱηογϣϯ಺༰ͷ৘ใ͕ߋ৽͞Εͯͳ͔ͬͨΓ·͖΋Ͳͬͨ Γ͍ͯͨ͠ͷ͸͜ͷॴҝͰ͢ • Rails/CDN

    ͔Β߱ͬͯ͘Δσʔλͱ഑৴͔ΒྲྀΕͯ͘Δஅยతͳࠩ෼Λɺཁૉ ͝ͱʹͲͪΒ͕৽͍͔͠൑அͯ͠Ϛʔδ͢ΔΑ͏ͳແ஡ͳ࣮૷ɺ΍ͬͺΓແ ஡ͩͬͨ…ɻ
  19. ࠩ෼ߋ৽ 2022 • RubyKaigi 2022 ͷ takeout-app Ͱ͸ࠩ෼σʔλͱͯ͠ͷ഑৴Λ΍Ί·ͨ͠ • S3

    ʹߋ৽ͨ͠ޙͷϑϧͷσʔλΛஔ͍ͯɺ͜ͷ URL ΛऔΓʹ͍͚ͱ͍͏ͷΛ഑ ৴ͯ͠αΠζ্ݶΛ workaround ͢ΔΑ͏ʹ • ࠩ෼Ͱ͸ͳ͘ͳͬͨͷͰϚʔδΛؤுΔඞཁ͸ͳ͍ • Rails ΁ͷ thundering herd Λ (CDN ͕͋ΔͷͰେৎ෉ͩͱࢥ͏͚Ͳ) ආ͚ΔͨΊ ʹ S3 Λܦ༝ͤͯ͞Δɻ΍Γ͔͗͢΋ • ͕͢͞ʹ҆ఆ͠·ͨ͠
  20. 2021 ͷ഑৴େࣄނ • ͳΜ͔഑৴΋·͖΋ͲͬͨΓ஗Ԇͨ͠Γ͍Ζ͍Ζ͕͋Γ·ͨ͠Ͷ… • τϥ΢Ϛڃͷ΍Β͔͠ • ͜Ε͸׬શʹϦϋʔαϧෆ଍ • MediaLive

    ૢ࡞ΛؚΊͨ഑৴ΦϖϨʔγϣϯ͕͜ͳΕͯͳ͔ͬͨ • ͦͯ͠ MediaLive ʹొ࿥ͨ͠εέδϡʔϧ͕ɺมߋ࣌Ұ෦͕ফ͑ͯͳͯ͘ηογϣ ϯ్தͰ͍͖ͳΓͳΜ͔ൃಈͯ͠࠶ੜ͕ࢭ·ͬͨΓ…͕ൃੜͨ͠ͱ͍͏ͷ͕ਅ૬ • ͦͯ͠ίϯύω͸ rails console ͔͠ͳ͔ͬͨ
  21. Wi-Fi ۙگ: Setup/Teardown • RubyKaigi 2017, 2018, 2019 ͸ձ৔ͷύονύωϧ΍εΠονΛഈआ͢Δ͜ͱ ͕Ͱ͖͍ͯͨɻಛʹ෱Ԭɾ޿ౡ͸ॊೈʹ΍Βͤͯ΋Β͑ͯײँ…!

    • 2022, 2023 ͸ઃඋࣗମ͕ͳ͍ͷͰࣗલͰϑϨοπ͕͖ͯϧʔλΛஔ͍ͨ৔ॴ ͔ΒͲΜͲΜ෦԰ؒͷઢΛҾ͍͍ͯ͘ඞཁ͕͋Δ • NOCϝϯόʔͷΈͳ͞·ʹײँ (ײँ)
  22. Wi-Fi ۙگ: ػࡐ • RubyKaigi 2019 ͷλΠϛϯάͰ Cisco ͷ Wi-Fi

    WLC/AP Λ਺ඦສ͘Β͍ௐୡ ͨ͠ • εϙϯαʔͷΈͳ͞·ʹײँ………ɻ • ෺ͷି͠आΓ͕໘౗ͩͬͨΓɺݹΊػࡐ͔͠आΓΒΕͳ͔ͬͨΓͱ͍͏എܠ • ௐୡ͢ΔλΠϛϯά͕ඍົʹѱͯ͘ Wi-Fi 6 ରԠ͕ඍົͳײ͡ʹͳͬͯ͠·ͬ ͨͷ͸൵͍͠
  23. Wi-Fi ۙگ: ্ྲྀ • ϑϨοπޫΛ͔ͭͬͯτϯωϧΛு͍ͬͯ·͢ • ձ৔2ճઢ * ձ৔ػࡐ2ͭ *

    ର޲2ڌ఺ * {private,public} = 16τϯωϧ • 2018 ೥͘Β͍͔Β KMC (ژେϚΠίϯΫϥϒ) ͰࣗՈ੡ ISP Λ΍͍ͬͯΔͷͰ 2020 ͔Β͸ RubyKaigi Ͱ΋࢖͏Α͏ʹ͍ͯ͠Δ • https://bgp.tools/as/59128 • https://peeringdb.com/asn/59128 • (τϥϯδοτ͸ HomeNOC ͞Μ΍ Softether ͞Μ͔Β໯͍ͬͯͯɺײँ)
  24. Wi-Fi ۙگ: ্ྲྀ • AS59128 ଆͷڌ఺͸ژ౎ɾ౦ژ • Ͳ͏ͯ͠΋ಛੑ্(?) NTT੢೔ຊͷ۠ؒͰͷ։࠵͕͋Δ •

    ژ౎ͷ෦ࣨ·Ͱ΋ RubyKaigi ༻ͷର޲ϧʔλΛஔ͖ʹ͍ͬͨΓ͍ͯ͠·ͨ͠ • ౦ژଆ͸ sorah ࣗ୐΋͋Δ͚ͲɺCookpad ͷΦϑΟεωοτϫʔΫ༻ͷ DC ʹ΋࠷ۙؒआΓͯ͠ ͍·͢ • RubyKaigi Ͱ͸΋ͪΖΜ DC ଆͷઃඋΛ͔ͭͬͨ • AWS Direct Connect ΋ؒआΓ͍ͯͯ͠ɺAS59128 Ͱ͸ public peer, RubyKaigi Ͱ͸ VPC ͱͷ ઀ଓʹར༻ (ແବʹ߽՚)
  25. Wi-Fi ۙگ: AWSଆ • DNS ΍ syslog αʔόྨ͸࠷ۙ͸ EKS ʹཱͯΔΑ͏ʹͯ͠Έ͍ͯΔ

    • (ECS͸࢓ࣄͰ͔ͭͬͯΔͨ͠·ʹ͸ EKS ΋͍͍͔ͳɺ͘Β͍ͷࡶͳબ୒) • 2019 ·Ͱ͸ૉͷ EC2 ͩͬͨͷͰΦϖϨʔγϣϯ΍ߏங࡞ۀతʹ͸͍ͩͿָ ʹ • ͜Ε΋౰વ GitHub ʹશ෦͕͋ͬͯ·͢
  26. 2022 Day 2 ͷো֐ • ओϗʔϧʹ2ຊϑϨοπޫΛҾ͍͍ͯͨ • Day 0 ʹݟͨͱ͜Ζऩ༰ઃඋ΍ܦ࿏͕͔ͳΓॏෳͯͦ͠͏

    (ਖ਼௚Ψνϟ) ͱ͍ ͏ͷ͸ؾ෇͍͍ͯͨ • ʮࢮ͵ͱ͖͸྆ํͩΊ͔΋Ͷʯͬͯ࿩ͯͨ͠ • ࢮΜͩ………ɻ • ΍ͨΒύέϩε͕ଟ͍
  27. 2022 Day 2 ͷো֐ • ഑৴΋ؚΊͯෆ҆ఆ͗ͯ͢શ໓ • PPPoE ͷ ISP

    ΋࢖ͬͯΈͯ੾Γ෼͚͍ͯͬͨ݁͠ՌͲ͏Έͯ΋྆ํಉ͡ NTT ଆͷ໰୊Ͱམͪͯͨ • ձ৔ͷϑϦʔ Wi-Fi ͱಉ͡ճઢΛ࢖Θͤͯ΋Β͏͜ͱʹަবͷ຤੒ޭͨ͠ͷ Ͱɺ഑৴͚ͩͦΕͰ࠶։ͨ͠ • ͨͩΊͪΌͪ͘Ό஗͍………ɻ
  28. 2022 Day 2 ͷো֐ • Θ͕ͨ͠ීஈ RubyKaigi ͷΦϖϨʔγϣϯ΍޿ใΛ·Δͬͱݟ͍ͯΔ͍ͤͰ ো֐ରԠʹ௥ΘΕΔͱΞφ΢ϯεͳͲ͕શͯϘϩϘϩʹͳΔͱ͍͏ͷ΋෼ ͔ͬͯ͠·ͬͨ

    • ͳΜ͔͏·͍͜ͱ΍ͬͯ͘ΕΔਓ͸௫·͓͖͍͑ͯͨ • ௨༁ͳͲͳͲͷεέδϡʔϧௐ੔͕ཪͰγϡοͱ૸͍ͬͯͨͷ͸͕͢͞Ͱ ͋ͬͨ
  29. 2022 Day 2 ͷো֐ • Day 2 ͷ 21 ࣌͘Β͍ʹո͍͠ػࡐͷ

    reboot Λ NTT ʹ΍ͬͯ΋Β͑ͨ • Day 3 ͸ͦΕͰ෮چͯ͠ΊͰͨ͠ͱ͍͏ײ͡ • ͦΕ͸ͦΕͱͯ͠ 2022 ͷߏ੒͸ͳΜ͔ͦ΋ͦ΋ύέϩε͕ͪ͠Ͱෆ҆ͳͷͰ ௥ࢼͱௐࠪ͸ਐΊ͍ͨͱ͜Ζ
  30. 2023 • ࠓճͷ௕໺ݝদຊࢢ͸NTT౦೔ຊ؅಺ͳͷͰϥοΩʔ • ҟܦ࿏Ͱ 2 ճઢҾ֬͘཰Λ্͛ΔͨΊʹओϗʔϧɾখϗʔϧͰ 1 ͭͣͭϑϨοπ ޫΛΦʔμʔͯ͋͠Δ

    • ͨͩͦΕͰ΋ࠜຊ͸ҰॹͰճආෆՄೳͳؾ͕͢Δ
 (ͳ͓౎಺ͳΒΫϩεɾωΫετͰ1ຊͣͭҾ͚͹࣮֬ʹճආͰ͖Δ) • 2022 ͷτϯωϧߏ੒͸ύέϩεଟ͔ͬͨͷͰೖ೦ʹ௥ࢼ͍ͨ͠༧ఆ……ɻ • ࠓճ΋෦԰ؒ഑ઢ͸େมͳݟࠐΈɻΈΜͳέʔϒϧ౿·ͳ͍ͰͶɻ
  31. ࠷ۙͷࠔΓ͝ͱ • RubyKaigi ʹ͍ͯ΋࿩͔͚͠ΒΕͳͯ͘ࠔ͍ͬͯ·͢ • Rubyist ͱ࿩͍ͨ͠ͷ͕ͩ…………ɻ • ·ͭ΋ͱ͞Μ͕΅ͬͪͱ͍͏ࣄ৅ͷཧղ౓্͕ঢͭͭ͋͠Γ·͢ •

    Ջ͡Όͳ͔ͬͨΒϗϫΠΤͰύιίϯΧλΧλͯ͠ͳ͍ͷͰɺύιίϯΧλΧλͯ͠ ͯ΋ͦͷลͰ࡞ۀͯͨ͠ΒώϚͩͱࢥ͍ͬͯͩ͘͞!!!! • ๩͔ͬͨ͠Βಈ͖ճͬͯΔ͔߇ࣨ΍෣୆ཪͰ࡞ۀͯ͠·͢ • ࠶ൃ๷ࢭͷͨΊɺ2023 Ͱ͸໊ࡳʹʮώϚͰ͢ʯͱॻ͘༧ఆ