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

RBSとSteepで始める型のあるRails開発とその運用

yamashun
October 22, 2022

 RBSとSteepで始める型のあるRails開発とその運用

yamashun

October 22, 2022
Tweet

Other Decks in Programming

Transcript

  1. 3#4ಋೖલʹߟ͍͑ͯͨ͜ͱ w ܕͷϑΟʔυόοΫΛ׆༻ͯ͠ίʔυͷอकੑΛվળͰ͖ͳ͍͔ w 3VCZͷܕΛऔΓר͘؀ڥ͕੔͖ͬͯͨʁ w 3#43BJMT 3#4$PMMFDUJPOͳͲ w ෆ҆

    w ࢓ࣄͰ࢖͏ʹ͸ૣ͍ʁ w ϋϚΓͲ͜Ζ͕ଟ͘ಋೖίετʹݟ߹Θͳ͍͔΋ʜɺࣄྫ͕গͳ͍ʜ ࢓ࣄͷ3BJMTϓϩμΫτͰ࢖༻͸ݟૹ͍ͬͯͨ
  2. ॏཁࢹͨ͜͠ͱ w ֶशίετΛ཈͑Δ w ख࡞ۀΛݮΒ͢ w ؅ཧ͠΍͍͢ঢ়ଶΛอͭ w υΩϡϝϯτͷ੔උ w

    3#4पลͷ஌͕ࣝͳ͍ͱ൑அͰ͖ͳ͍ ͜ͱΛݮΒ͢ w ࣗಈߋ৽ɺεΫϦϓτͷ׆༻ w $*ͷ׆༻ w ෆਖ਼ͳঢ়ଶ͕ೖΒͳ͍Α͏ʹ͢Δ ීஈͷ։ൃͰ΍Δ͜ͱ
  3. 3#4ͷ෼ྨ ෼ྨ ߋ৽ͷλΠϛϯά मਖ਼ํ๏ ࣗ࡞ΫϥεɾϞδϡʔϧͳͲͷ 3#4 ίʔυमਖ਼࣌ ࣗ෼Ͱॻ͘ SCTQSPUPUZQFίϚϯυ (FNͷ3#4

    3#4$PMMFDUJPOʹ͋Γ (FNͷ௥Ճɺߋ৽ SCTDPMMFDUJPOVQEBUF (FNͷ3#4 3#4$PMMFDUJPOʹͳ͠ (FNͷ௥Ճɺߋ৽ ࣗ෼Ͱॻ͘ QSPUPUZQFίϚϯυ 3#43BJMT͔Βੜ੒͞ΕΔ3#4 ߋ৽ର৅ͱͳΔίʔυमਖ਼࣌ SBJMTSCT@SBJMTBMM ඪ४ϥΠϒϥϦͷ3#4 ίʔυमਖ਼࣌ ʢνΣοΫΤϥʔͱͳΔ࣌ʣ SCT@DPMMFDUJPOZNMʹ௥Ճ SCTDPMMFDUJPOVQEBUF 3#4Λ෼ྨͯͦ͠ΕͧΕͲͷΑ͏ʹ؅ཧ͢Δ͔ΛυΩϡϝϯτԽ͍ͯͬͨ͠ ˞ଞʹ΋(FNͷϦϙδτϦʹ3#4͕ॻ͔Ε͍ͯΔ৔߹΋͋Δ
  4. 3#4ͷߋ৽ ෼ྨ ߋ৽ͷλΠϛϯά मਖ਼ํ๏ ࣗ࡞ΫϥεɾϞδϡʔϧͳͲͷ 3#4 ίʔυमਖ਼࣌ ࣗ෼Ͱॻ͘ SCTQSPUPUZQFίϚϯυ (FNͷ3#4

    3#4$PMMFDUJPOʹ͋Γ (FNͷ௥Ճɺߋ৽ SCTDPMMFDUJPOVQEBUF (FNͷ3#4 3#4$PMMFDUJPOʹͳ͠ (FNͷ௥Ճɺߋ৽ ࣗ෼Ͱॻ͘ QSPUPUZQFίϚϯυ 3#43BJMT͔Βੜ੒͞ΕΔ3#4 ߋ৽ର৅ͱͳΔίʔυमਖ਼࣌ SBJMTSCT@SBJMTBMM ඪ४ϥΠϒϥϦͷ3#4 ίʔυमਖ਼࣌ ʢνΣοΫΤϥʔͱͳΔ࣌ʣ SCT@DPMMFDUJPOZNMʹ௥Ճ SCTDPMMFDUJPOVQEBUF
  5. ࣗલͷΫϥεͱϞδϡʔϧ w ߋ৽ͷλΠϛϯά w ίʔυͷ௥Ճɺमਖ਼ w ߋ৽ํ๏ w ࣗ෼Ͱॻ͘ w

    SCTQSPUPUZQFίϚϯυͱซ༻ w ΍ͬͯΈͯ w ࠷ॳ͸গ͕͔͔͕࣌ؒͬͨ͠׳Εͯ͘Δͱ͋·Γखؒʹ͸ײ͡ͳ͘ͳ͖ͬͯͨ w ίʔυίϝϯτΛॻ͘Α͏ͳײ֮ w ͨ·ʹॻ͖ํ͕Θ͔Βͳͯ࣌ؒ͘Λ࢖͏ w ೉͍͠৔߹͸VOUZQFEΛ࢖͏
  6. 3#4ͷߋ৽ ෼ྨ ߋ৽ͷλΠϛϯά मਖ਼ํ๏ ࣗ࡞ΫϥεɾϞδϡʔϧͳͲͷ 3#4 ίʔυमਖ਼࣌ ࣗ෼Ͱॻ͘ SCTQSPUPUZQFίϚϯυ (FNͷ3#4

    3#4$PMMFDUJPOʹ͋Γ (FNͷ௥Ճɺߋ৽ SCTDPMMFDUJPOVQEBUF (FNͷ3#4 3#4$PMMFDUJPOʹͳ͠ (FNͷ௥Ճɺߋ৽ ࣗ෼Ͱॻ͘ QSPUPUZQFίϚϯυ 3#43BJMT͔Βੜ੒͞ΕΔ3#4 ߋ৽ର৅ͱͳΔίʔυमਖ਼࣌ SBJMTSCT@SBJMTBMM ඪ४ϥΠϒϥϦͷ3#4 ίʔυमਖ਼࣌ ʢνΣοΫΤϥʔͱͳΔ࣌ʣ SCT@DPMMFDUJPOZNMʹ௥Ճ SCTDPMMFDUJPOVQEBUF
  7. (FNͷ3#4 3#4$PMMFDUJPOʹ͋Γ w ߋ৽ͷλΠϛϯά w (FNͷ௥ՃɺόʔδϣϯΞοϓɺ3#4$PMMMFDUJPOͷϦϙδτϦଆͷमਖ਼͕ೖΔ৔߹ w ߋ৽ํ๏ w SCTDPMMFDUJPOJOTUBMMPSVQEBUFίϚϯυ

    w ΍ͬͯΈͯ w ࣮ߦΛ๨Ε࣮ͯମͱͣΕΔ͜ͱ͕ଟ͔ͬͨ SCT@DPMMFDUJPOMPDLZBNM ྫʣHFNΛ௥Ճ SCTDPMMFDUJPOJOTUBMM $*ͰνΣοΫ͢ΔରԠΛ ೖΕͨ
  8. 3#4ͷߋ৽ ෼ྨ ߋ৽ͷλΠϛϯά मਖ਼ํ๏ ࣗ࡞ΫϥεɾϞδϡʔϧͳͲͷ 3#4 ίʔυमਖ਼࣌ ࣗ෼Ͱॻ͘ SCTQSPUPUZQFίϚϯυ (FNͷ3#4

    3#4$PMMFDUJPOʹ͋Γ (FNͷ௥Ճɺߋ৽ SCTDPMMFDUJPOVQEBUF (FNͷ3#4 3#4$PMMFDUJPOʹͳ͠ (FNͷ௥Ճɺߋ৽ ࣗ෼Ͱॻ͘ QSPUPUZQFίϚϯυ 3#43BJMT͔Βੜ੒͞ΕΔ3#4 ߋ৽ର৅ͱͳΔίʔυमਖ਼࣌ SBJMTSCT@SBJMTBMM ඪ४ϥΠϒϥϦͷ3#4 ίʔυमਖ਼࣌ ʢνΣοΫΤϥʔͱͳΔ࣌ʣ SCT@DPMMFDUJPOZNMʹ௥Ճ SCTDPMMFDUJPOVQEBUF
  9. (FNͷ3#4 3#4$PMMFDUJPOʹͳ͠ (FNͷMJCҎԼͷϑΝΠϧ શͯͷSCTΛੜ੒ ࠷ॳʹܾΊͨӡ༻ w ߋ৽ͷλΠϛϯά w (FNͷ௥ՃɺόʔδϣϯΞοϓ w

    ߋ৽ํ๏ w SCTQSPUPUZQFSCίϚϯυͰŠPVUEJSΦϓγϣϯΛ࢖ͬͯHFNͷ3#4Λ·ͱΊͯੜ੒ɹɹɹ ඞཁʹԠͯ͡खͰमਖ਼ w ΍ͬͯΈͯ w ࣗಈੜ੒ͨ͠ϑΝΠϧʹΤϥʔ͕ଟൃɻ݁ہखͰमਖ਼͕ඞཁͰ͕͔͔࣌ؒΔ w HFN͕ߋ৽͞Εͨ৔߹ʹमਖ਼ՕॴΛಛఆ͢Δͷ͕ࠔ೉ ࣮ࡍʹܕ͕ඞཁͳͷ͸ ΞϓϦέʔγϣϯ͔ΒݺͿ Ұ෦ͷύϒϦοΫϝιου
  10. (FNͷMJCҎԼͰΑ͘࢖͏QVCMJDϝιουͷΈ࡞੒ (FNͷ3#4 3#4$PMMFDUJPOʹͳ͠ ݱࡏͷӡ༻ w ߋ৽ͷλΠϛϯά w (FNͷ௥ՃɺόʔδϣϯΞοϓ w ߋ৽ํ๏

    w ΞϓϦέʔγϣϯ͔ΒݺͿύϒϦοΫϝιουʹؔ͢ΔܕͷΈखಈͰ࡞੒͢Δ w ΍ͬͯΈͯ w มߋલͱൺ΂ͯ3#4ͷ࡞੒࣌ؒ͸͔ͳΓ୹ॖͰ͖ͨ w ܕͷϑΟʔυόοΫ͸ݶఆతʹ͸ͳΔ w (FNߋ৽΁ͷ௥ਵ͸ґવͱͯ͠՝୊
  11. 3#4ͷߋ৽ ෼ྨ ߋ৽ͷλΠϛϯά मਖ਼ํ๏ ࣗ࡞ΫϥεɾϞδϡʔϧͳͲͷ 3#4 ίʔυमਖ਼࣌ ࣗ෼Ͱॻ͘ SCTQSPUPUZQFίϚϯυ (FNͷ3#4

    3#4$PMMFDUJPOʹ͋Γ (FNͷ௥Ճɺߋ৽ SCTDPMMFDUJPOVQEBUF (FNͷ3#4 3#4$PMMFDUJPOʹͳ͠ (FNͷ௥Ճɺߋ৽ ࣗ෼Ͱॻ͘ QSPUPUZQFίϚϯυ 3#43BJMT͔Βੜ੒͞ΕΔ3#4 ߋ৽ର৅ͱͳΔίʔυमਖ਼࣌ SBJMTSCT@SBJMTBMM ඪ४ϥΠϒϥϦͷ3#4 ίʔυमਖ਼࣌ ʢνΣοΫΤϥʔͱͳΔ࣌ʣ SCT@DPMMFDUJPOZNMʹ௥Ճ SCTDPMMFDUJPOVQEBUF
  12. 3#4ͷߋ৽ ෼ྨ ߋ৽ͷλΠϛϯά मਖ਼ํ๏ ࣗ࡞ΫϥεɾϞδϡʔϧͳͲͷ 3#4 ίʔυमਖ਼࣌ ࣗ෼Ͱॻ͘ SCTQSPUPUZQFίϚϯυ (FNͷ3#4

    3#4$PMMFDUJPOʹ͋Γ (FNͷ௥Ճɺߋ৽ SCTDPMMFDUJPOVQEBUF (FNͷ3#4 3#4$PMMFDUJPOʹͳ͠ (FNͷ௥Ճɺߋ৽ ࣗ෼Ͱॻ͘ QSPUPUZQFίϚϯυ 3#43BJMT͔Βੜ੒͞ΕΔ3#4 ߋ৽ର৅ͱͳΔίʔυमਖ਼࣌ SBJMTSCT@SBJMTBMM ඪ४ϥΠϒϥϦͷ3#4 ίʔυमਖ਼࣌ ʢνΣοΫΤϥʔͱͳΔ࣌ʣ SCT@DPMMFDUJPOZNMʹ௥Ճ SCTDPMMFDUJPOVQEBUF ৄࡉ͸ׂѪ
  13. $*ɿ4UFFQ$IFDL w TBWFFYQFDUBJPOTɿνΣοΫͰFSSPS XBSOJOHͱͳΔ಺༰ΛZNMʹه࿥͢Δ w XJUIFYQFDUBUJPOTɿTUFFQDIFDL࣮ߦ࣌ʹZNMʹه࿥ͨ͠FSSPS XBSOJOH͸ແࢹ͢Δ w ࢖͍͗͢஫ҙ w

    ίʔυͷϑΝΠϧ಺ͷҐஔ·Ͱه࿥ w मਖ਼͕ೖͬͨ࣌ʹΤϥʔͷҐஔ ͕มΘΔͱZNMͷ࠶मਖ਼͕ඞཁ อଘ಺༰ͷྫ IUUQTHJUIVCDPNTPVUBSPTUFFQQVMM ৄ͘͠͸
  14. ͲΕ͙Β͍ܕΛ࢖͍͑ͯΔ͔ w ΞϓϦέʔγϣϯͷن໛ w ·ͩ·ͩن໛͸খ͍͞ ࣌఺ $PEF-0$ 5FTU-0$ $PEFUP5FTU 3BUJP

       3BJMTTUBUT ˞WJFXͳͲҰ෦ͷίʔυΛআ͘ 5ZQFEDBMMT 6OUZQFEDBMMT 5ZQFE    4UFFQTUBUT w ܕఆٛͷର৅ w BQQɺMJCҎԼͷίʔυʹ3#4 Λॻ͍͍ͯΔ 6OUZQFEʹର͢Δ ϝιουݺͼग़͠
  15. ·ͱΊ w 3#4Λ৽ن3BJMTϓϩδΣΫτʹಋೖͨ͠ࡍʹ΍ͬͨ͜ͱΛ঺հ w ීஈͷ։ൃͰ΍Δ͜ͱΛ3#4Ͱ΋΍Δ w 3#4ͷछྨຖʹߋ৽ํ๏Λ੔උ w $*Λ׆༻ w

    ϝϦοτͷํ͕େ͖͘ײ͍ͯ͡ΔͷͰࠓޙ΋ଓ͚͍ͯ͘ w 3#4Λ࢖ͬͯΈͯ߹Θͳ͚Ε͹͙͢֎ͤΔͷͰͲΜͲΜ࢖͍͖ͬͯ·͠ΐ͏ʂ