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

Comment that actually works

Comment that actually works

https://icare.connpass.com/event/261601/

【iCARE Dev Meetup #36】Rejected CFP 供養会 2022
での発表資料です。

Masafumi Okura

November 16, 2022
Tweet

More Decks by Masafumi Okura

Other Decks in Programming

Transcript

  1. ಈ࡞͠ͳ͍ίϝϯτ͸


    ͨͩͷίϝϯτͳͷͰ


    ಈ࡞͢ΔίϝϯτΛ࡞ͬͨ
    ʲiCARE Dev Meetup #36ʳRejected CFP ڙཆձ 2022
    OKURA Masafumi, 2022-11-16

    View Slide

  2. RubyKaigi

    View Slide

  3. ϓϩϙʔβϧ

    View Slide

  4. མͪͨʘ(^o^)ʗ

    View Slide

  5. ༨ஊ

    View Slide

  6. ϓϩϙʔβϧ͸


    બͿଆ΋େม

    View Slide

  7. མͪΔʹѱ͍


    Ͱ͸ͳ͍

    View Slide

  8. ؓ࿩ٳ୊

    View Slide

  9. ࣗݾ঺հ
    • ໊લɿେ૔խ࢙ʢ͓͓͘Β·͞;Έʣ


    • ॴଐɿϑϦʔϥϯε


    • ՝֎׆ಈɿKaigi on RailsɺAlbaɺGrow.rbͳͲ


    • झຯɿᘖᘣɺOSSɺొஃɺίϛϡχςΟࢀՃͳͲ

    View Slide

  10. ͓୊ɿಈ࡞͢ΔίϝϯτΛ࡞ͬͨ࿩
    1.ͳͥ࡞Ζ͏ͱࢥͬͨͷ͔ʁ


    2.ͲͷΑ͏ʹ࣮૷ͨ͠ͷ͔ʁ


    3.ΞΠσΞΛࢥ͍͖ͭɺ࣮ݱ͢Δ·Ͱ

    View Slide

  11. ಈ࡞͢Δίϝϯτ

    View Slide

  12. Xa


    https://github.com/
    okuramasafumi/xa

    View Slide

  13. eXecutable


    annotation

    View Slide

  14. 1. ͳͥ࡞Ζ͏ͱ


    ࢥͬͨͷ͔

    View Slide

  15. ͦΕɺίϝϯτ


    ͡Όͳͯ͘΋


    Α͘ͳ͍ʁ

    View Slide

  16. ྫɿ


    ʮ͜ͷΫϥεΛܧঝͨ͠


    αϒΫϥε͸fooϝιουΛ


    ΦʔόʔϥΠυ͢Δ͜ͱʯ

    View Slide

  17. ίϝϯτ͕


    ͋ͬͯ΋


    ಡ·ΕΔͱ͸


    ݶΒͳ͍

    View Slide

  18. ίϝϯτ಺ͷࢦࣔ


    ͸ಈ࡞͸͠ͳ͍

    View Slide

  19. ಈ࡞͢Δίϝϯτ


    ͱ͸ʁ

    View Slide

  20. DSLͱͯ͠ͷ


    ίϝϯτ

    View Slide

  21. Rubyͷදݱྗ


    ͳΒՄೳͰ͸ʁ

    View Slide

  22. 2. ͲͷΑ͏ʹ


    ࣮૷ͨ͠ͷ͔

    View Slide

  23. ΤσΟλ΁

    View Slide

  24. 3. ΞΠσΞΛ


    ࢥ͍͖ͭɺ


    ࣮ݱ͢Δ·Ͱ

    View Slide

  25. ΞΠσΞΛ࣮ݱ͢ΔͨΊͷώϯτ
    I.ࠣࡉͳಈػΛେ੾ʹ͢Δ


    II.ݴޠΛΑ͘ཧղ͢Δ


    III.࡞Γଓ͚Δ

    View Slide

  26. ⅰ. ࠣࡉͳಈػΛ


    େ੾ʹ͢Δ

    View Slide

  27. ࢥ͍͖ͭ

    View Slide

  28. ՗ཱͪ

    View Slide

  29. ࣗ෼ҰਓͰ͸


    ͳ͍ͷ͔΋ʁ

    View Slide

  30. PoC


    (Proof of Concept)

    View Slide

  31. ਺࣌ؒͰ


    ࡞ͬͯΈΔ

    View Slide

  32. ⅱ. ݴޠΛΑ͘


    ཧղ͢Δ

    View Slide

  33. ݴޠ͸࠷΋


    جຊతͳπʔϧ

    View Slide

  34. XaʹඞཁͩͬͨRubyͷ஌ࣝ
    • ϒϩοΫͷத਎Λઐ༻ͷධՁΦϒδΣΫτͰinstance_eval͢Δ͜ͱ
    ͰɺͦͷΦϒδΣΫτͷதʹཁૉΛด͡ࠐΊΔ͜ͱ͕Ͱ͖Δ


    • ϝιουݺͼग़͠͸ׅހ͕লུͰ͖Δ


    • ฏจͬΆ͍ݟͨ໨΋࣮ݱͰ͖Δ


    • TracePointΛ࢖͑͹DSLͷ಺༰Λޙ͔ΒݕূͰ͖Δ

    View Slide

  35. Ruby͍͢͝

    View Slide

  36. ݴޠΛΑ͘ཧղ


    ͍ͯ͠ͳ͍ͱ


    ࡞Εͳ͍΋ͷ΋͋Δ

    View Slide

  37. ⅲ. ࡞Γଓ͚Δ

    View Slide

  38. Xa͸ࣗ෼͕࡞ͬͨ


    ͍͍ͩͨ7ݸ໨


    ͘Β͍ͷgem

    View Slide

  39. ࡞͖ͬͯͨgemͷҰ෦
    • YusoɿӡૹྉۚσʔλϕʔεɺॳΊͯ࡞͕ͬͨϝϯς͞Εͯͳ͍


    • AlbaɿJSONγϦΞϥΠβɺ୅ද࡞


    • rubocop-sensibleɿRuboCopͷطఆͷઃఆΛஔ͖׵͑Δ


    • necoɿίϚϯυύλʔϯͷ࣮૷ɺվमத


    • tiny_hooksɿίʔϧόοΫ࣮૷ɺActiveSupportΑΓ͔ͳΓ଎͍

    View Slide

  40. ౷Ұੑ͸ͳ͍

    View Slide

  41. ͋Ε͜Εࢼ͢

    View Slide

  42. ୅ද࡞ͷAlba͸


    ଟ෼4ͭ໨


    ͘Β͍ͷgem

    View Slide

  43. ࡞Γଓ͚Δ

    View Slide

  44. ·ͱΊ

    View Slide

  45. ΞΠσΞΛܗʹ


    ͢ΔͨΊʹඞཁͳ


    ΋ͷ

    View Slide

  46. ΞΠσΞͦͷ΋ͷ

    View Slide

  47. ٕज़

    View Slide

  48. ҙࢥ

    View Slide

  49. ΍ͬͯΈΑ͏ʂ

    View Slide

  50. Happy hacking!

    View Slide