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

4つの観点から比較するRubyの型システム

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 4つの観点から比較するRubyの型システム

Avatar for ippachi

ippachi

June 15, 2021
Tweet

More Decks by ippachi

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ ിத Ұീ ippachi • I D • Githubɿippach i

    • Twitterɿ@ippachi101 8 • Lik e • Ruby/Vim/TDD/Architecture 2 image
  2. Ruby 3 with type • ܕϥΠϒϥϦ͕ެ͔ࣜΒఏڙ͞Ε·ͨ͠ • RB S •

    Ruby 2Ͱ΋࢖͑ΔΑ • ͚Ͳ࣮͸ܕγεςϜΛ࣮ݱͰ͖Δgemͬͯଞʹ΋͋ΔΜͰ͢ 8
  3. RBS

  4. RBS • Ruby 3ͱҰॹʹެ։͞Εͨެࣜͷ΋ͷ • Ruby 2Ͱ΋࢖͑Δ • ੩తղੳͷΈ •

    جຊతʹ͸steepͱҰॹʹ࢖༻͢Δ • ͳͷͰجຊతʹ͸͜ͷεϥΠυͰRBSΛݴٴ͍ͯ͠Δͱ͖͸ɺSteep΋ηοτͩͱࢥͬ ͍ͯͩ͘͞ 16
  5. ಋೖํ๏ - RBS • rbsͱsteepΛGem fi leʹ௥Ճ • steep init

    • Steep fi leΛฤू • steep check 17
  6. Language server - RBS • VS Cod e • steep-vscod

    e • Vi m • steep langserve r • ͍͍ײ͡ʹ X
  7. Language server - Sorbet • VS Cod e • sorbet-ls

    p • Vi m • srb tc --enable-all-experimental-lsp-features —lsp • ͍͍ײ͡ʹ X
  8. Language server - Solargraph • VS Cod e • Ruby

    solargraph • Vi m • ͍͍ײ͡ • coc.nvimͷ৔߹ :CocInstall coc-solargraph X
  9. طଘϓϩδΣΫτ΁ͷಋೖࢧԉ - RBS • rbs prototype r b • ੩తղੳʹΑΓఆٛΛࣗಈੜ੒

    • ୯७ͳ΋ͷҎ֎͸untype d • rbs prototype runtim e • ࣮ࡍʹrubyΛಈ͔ͯ͠ఆٛΛࣗಈੜ੒ • User.instance_method s • ΄΅શͯuntyped 35
  10. طଘϓϩδΣΫτ΁ͷಋೖࢧԉ - RBS • typepro f • ੩తղੳʹΑΓఆٛΛࣗಈੜ੒ • ܕΛؤுͬͯਪ࿦͢Δ

    • prototype rbΑΓ΋ܕ͕ఆٛͰ͖Δ • ਫ਼౓͸·ͩߴ͘͸ͳ͍(Β͍͠ ) • ࢀߟ • https://pocke.hatenablog.com/entry/2020/12/18/230235 36
  11. طଘϓϩδΣΫτ΁ͷಋೖࢧԉ - Sorbet • https://sorbet.org/docs/adoptin g • Αͼͩ͞Ε͍ͯΔϝιουΛఆٛ • ͓ͦΒ͘શͯuntype

    d • ࣗ෼Ͱ໌ࣔతॻ͘ͷ͕લఏͳͷͰࣗಈܕఆٛͷαϙʔτ͸ബ͍ • ϑΝΠϧຖͰܕͷϨϕϧΛઃఆͰ͖Δ 37
  12. ܕγεςϜͱͯ͠ͷදݱྗ(ػೳ਺) 48 RBS Sorbet Solargraph Interface o o Abstract o

    o Final o Override checking o Overload o o Sealed o Union type o o o Intersection type o o Optional type o o o Record type o o Tuple type o o Proc type o o o Enum o
  13. ΤσΟλࢧԉ - ൺֱํ๏ • Language serverͷ௨৴Λ֬ೝ • initializeͷϨεϙϯεͱɺregister capabilityͷϦΫΤετ •

    ஫) ͋ͬͯΔ͔Θ͔Βͳ͍ͷͰࢀߟఔ౓ʹଊ͍͑ͯͩ͘͞ • ࢖ͬͯΈͨײ͡ͱͯ͠ൺֱͷॱ൪͸มΘΒͳ͍ҹ৅Ͱ͢ 50
  14. ΤσΟλࢧԉ 52 Steep Sorbet Solargraph hover o o o completion

    o o o signature help o o definition o o o type definition o o references o o document highlight o o document symbol o o workspace symbol o o o code action o rename o o implementation o formatting o folding range o