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

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

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

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