Slide 1

Slide 1 text

IRB and Reline Kaigi in RubyKaigi 2024 RubyKaigi 2024ࣄޙษڧձ ࢥ͍ग़͕ࢭ·Βͳ͍ 2024-05-31 Mari Imaizumi @ima1zumi

Slide 2

Slide 2 text

Haisai • Mari Imaizumi @ima1zumi • STORES, Inc. • IRB and Reline committer 2

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

IRB and Reline Kaigi in RubyKaigi 2024 4

Slide 5

Slide 5 text

IRB Reline team • @tompng / Tomoya Ishida • @st0012 / Stan Lo • @hasumikin / Hitoshi Hasumi • @ima1zumi / Mari Imaizumi 5

Slide 6

Slide 6 text

IRB Reline team • IRB, Reline, ruby/yamatanooroti, etc ʹίϛοτͰ͖Δ • ruby/ruby ʹ͸ίϛοτͰ͖ͳ͍ͷͰɺRubyίϛολʔͰ͸ͳ͍ • IRB, Reline ͷϦϦʔε͕Ͱ͖Δ 6

Slide 7

Slide 7 text

IRB Reline team 7

Slide 8

Slide 8 text

IRB Reline team • Rubyίϛολʔ͸Day 0ʹຖ೥։ൃऀձٞΛ͍ͯ͠Δ • IRB Reline team΋࣮࣭։ൃऀձٞͯ͠Δ • ډञ԰΍όʔ΍ΦϑΟγϟϧύʔςΟʔձ৔Ͱ • ࠓ೥͸Day 1-3ͷ໷ʹ͍Ζ͍Ζͳͱ͜ΖͰߦΘΕ͍ͯͨ 8

Slide 9

Slide 9 text

Α͋͘Δ࣭໰: Stanͱ͸Ͳ͏΍ͬͯίϛϡχέʔ γϣϯ͍ͯ͠Δͷ͔ • ӳޠ • ීஈ͸Slack΍GitHubͰͷςΩετίϛϡχέʔγϣϯ • RubyKaigiͷͱ͖͸ର໘Ͱӳޠ • ࢲͷӳޠྗͰ͸ࡶஊ͸ݫ͍͠ɻͰ΋IRB΍Relineͷ࿩͸ͳΜͱ͔ΪϦΪϦ͍ͭͯ ͍͚ͨΓɺ͍͍͚ͭͯͳ͔ͬͨΓ͢Δ • จ຺Ͱ͍ͩͿิ׬͕ޮ͍ͯͦ͏ • ӳձ࿩͕ۤखͰ΋ίʔυͱ͍͏ڞ௨ೝ͕ࣝ͋Δͱ࿩͠΍͍͢ 9

Slide 10

Slide 10 text

KaigiͰٞ࿦ͨ͠τϐοΫͷ ঺հ 10

Slide 11

Slide 11 text

ເ ΍Γ͍ͨ͜ͱɺ΋͘͠͸ᆵ 11

Slide 12

Slide 12 text

Remote IRB • ಈ࡞தͷRubyϓϩηεʹIRB͔Βattach͢Δ • productionͰσόοά͢Δͷʹ࢖͑Δ͔΋ • Ͳ͏΍ͬͯ௨৴͢ΔʁReline͸Ͳ͏͢Δʁ • RubyKaigiޙʹ࣮૷Λ͍͔ͭ͘ݟ͚ͭͨ • https://github.com/QWYNG/irb-remote (druby) • https://mametter.hatenablog.com/entry/20070527/p1 (Unix socket) 12

Slide 13

Slide 13 text

repl_type_completorΛσϑΥϧτʹ͍ͨ͠ • IRBͷิ׬Λܕิ׬ʹ͢ΔϥΠϒϥϦ • σϑΥϧτ͸ਖ਼نදݱͰิ׬ର৅Λग़͍ͯ͠ΔͷͰਫ਼౓͕ѱ͍ • repl_type_completorΛσϑΥϧτʹ͍ͨ͠ • ར༻࣮੷͕͋Δͱਪન͠΍͍͢ • ಛʹೖΕΔσϝϦοτ͸ͳ͍ • /sig ʹRBSϑΝΠϧ͕େྔʹ͋ΔͱIRBͷىಈ͕஗͘ͳΔ͔΋ • Πϯετʔϧ&ઃఆํ๏ • IRBͷܕิ׬Λ༗ޮʹ͢Δํ๏ - Eggshell https://imaizumimr.hatenablog.com/entry/2023/11/22/232624 13

Slide 14

Slide 14 text

yamatanooroti͕஗͍ • ୺຤޲͚ςεςΟϯάϑϨʔϜϫʔΫ • E2EςετͷΑ͏ͳ΋ͷ • ruby/yamatanooroti is forked from aycabta/yamatanooroti • sleep 0.1 Ͱग़ྗΛ଴͍ͬͯΔ͔Β஗͍ • ϦτϥΠ͕΄͍͠ 14

Slide 15

Slide 15 text

·ͱΊ • ·ͩ·ͩເ͕͍ͬͺ͍͋Δ • ख఻ͬͯ΋Β͑Δͱ͋Γ͕͍ͨ • ͜Μͳ͜ͱ͕΍ΕͨΒ͍͍ͳɺͱ͍͏ϑΟʔυόοΫ΋ͱͯ΋ॿ͔Γ ·͢ • ࿓Լձٞ͸ͱͯ΋ָ͍͠ 15

Slide 16

Slide 16 text

Appendix 16

Slide 17

Slide 17 text

ฤूίϚϯυͷϦϑΝΫλϦϯά͍ͨ͠ • ઃఆ͸ `beginning-of-line` ͕ͩݺ͹ΕΔϝιου͸ `beginning_of_line` • alias_method࿙Ε͕ͱ͖Ͳ͖͋Δ • ίʔυத͔Βݺ͹Εͯͳ͍͔ΒෆཁϝιουΈ͍ͨʹݟ͑Δ 17

Slide 18

Slide 18 text

ed_quoted_insert͕࣮ݱͰ͖ͳ͍ • ೖྗͨ͠จࣈΛͦͷ··ߦʹ௥Ճ͢Δػೳ • C-aΛೖྗͨ͠Βߦ಄ҠಈͰ͸ͳ͘^Aͱೖྗ͞ΕΔ • ͍·ͷRelineͰ͸ΩʔೖྗͰಛఆͷঢ়ଶʹભҠͤ͞Δͷ͸೉͍͠ • bracketed_paste_startΈ͍ͨʹ௨ৗͷॲཧ͕૸Βͳ͍Α͏ʹ͢Ε͹Α ͦ͞͏ 18