Slide 1

Slide 1 text

YARD with RBS Syntax Omotesando.rb #87 2023/07/06 1

Slide 2

Slide 2 text

ࣗݾ঺հ • ໊લ: ਖ਼ಙ ޼(aka: ਆ଎) • ձࣾ: - • GitHub: @sinsoku (ը૾ӈ্) • Twitter: @sinsoku_listy (ը૾ӈԼ) • ޷͖ͳݴޠ: Rust • Railsྺ: 8೥͘Β͍ 2

Slide 3

Slide 3 text

ઌ݄͔ΒRBSΛ࢖͍࢝Ί·ͨ͠ 3

Slide 4

Slide 4 text

͖͔͚ͬ: MedPeerͷϒϩά 4

Slide 5

Slide 5 text

ࣾ಺ͷ૯ҙ: ܕͷԸܙΛड͚͍ͨ ʢͨͩ͠ܕ͸ࣗ෼Ͱॻ͖ͨ͘͸ͳ͍ʣ 5

Slide 6

Slide 6 text

RBSಋೖͷํ਑ • *.rbs ͸ࣗಈੜ੒͢Δ • rbs collection • rbs prototype • sord1 ʢYARD -> rbsʣ • gemͷෆ଍ͯ͠Δܕఆٛ͸࠷খݶ͚ͩ༻ҙ 1 https://github.com/AaronC81/sord 6

Slide 7

Slide 7 text

ಋೖͷৄࡉ͸ׂѪʢͨͿΜϒϩάॻ͘ʣ 7

Slide 8

Slide 8 text

͔͜͜Βຊ୊ 8

Slide 9

Slide 9 text

Α͋͘ΔYARDͷྫ class User # @param item [Item] ΞΠςϜ # @param amount [Integer] ਺ྔ # @param coupon [Coupon] Ϋʔϙϯ # @return [Boolean] ߪೖͷ੒ޭ/ࣦഊ def buy(item, amount, coupon = nil); end end 9

Slide 10

Slide 10 text

୭΋େͨ͠આ໌Λॻ͍͍ͯͳ͍ 10

Slide 11

Slide 11 text

ීஈ͸ܕ͚ͩॻ͚͹े෼Ͱ͸ʁ 2 2 େࣄͳ෦෼ʹ͸આ໌Λॻ͚͘ͲɺܕͱҾ਺໊Ͱे෼ͳέʔε΋ଟ͍ɻ 11

Slide 12

Slide 12 text

ͦΜͳgemΛ࡞Γ·ͨ͠ 12

Slide 13

Slide 13 text

! yard-sig https://github.com/sinsoku/yard-sig 13

Slide 14

Slide 14 text

͜Ε͕ class User # @param item [Item] ΞΠςϜ # @param amount [Integer] ਺ྔ # @param coupon [Coupon] Ϋʔϙϯ # @return [Boolean] ߪೖͷ੒ޭ/ࣦഊ def buy(item, amount, coupon = nil); end end 14

Slide 15

Slide 15 text

͜͏ͳΔ class User # @!sig (Item, Integer, ?Coupon) -> bool def buy(item, amount, coupon = nil); end end 15

Slide 16

Slide 16 text

yard-sig • YARDϓϥάΠϯ • yard doc --plugin sig Ͱ࢖༻Մ3 • จ๏͸RBS Syntaxͱಉ͡ • ಺෦Ͱ @param ΍ @return ͳͲͷλάʹม׵ 3 .yardopts ʹ --plugin sig Λࢦఆ͢Δͱָ 16

Slide 17

Slide 17 text

σϞʢϦϦʔε࡞ۀʣ 17

Slide 18

Slide 18 text

͓·͚: Rails v7.0.5ͷ has_one ͕ਏ͍ 18

Slide 19

Slide 19 text

໰୊ͷཁ໿ طଘϨίʔυ͕͋Δͱ͖ͷ create_association ͷڍಈ͕มΘΔɻ • v7.0.4: save(validate, INSERT) -> destroy(DELETE) • v7.0.5: destroy(DELETE) -> save(validate, INSERT) v7.0.4·Ͱ͸ผʑͷτϥϯβΫγϣϯͰɺόϦσʔγϣϯʹࣦഊ͠ ͯ΋طଘϨίʔυ͕࡟আ͞Ε͍ͯͨɻ 19

Slide 20

Slide 20 text

Өڹ͕͋Δέʔε 1. Uniquness Validator4 2. UNIQ constraint 3. DBґଘͷCustom Validation • ྫ: ϨίʔυΛ࡞੒͔ͯ͠Β10෼Ҏ಺ 4 v7.0.4Ͱ΋όάͬͯΔͷͰɺجຊతʹ͸ؾʹ͢Δඞཁ͕ͳ͍͸ͣɻ 20

Slide 21

Slide 21 text

rails/rails#48643 21