$30 off During Our Annual Pro Sale. View Details »

Exceptional Rails

Shinichi Maeshima
October 27, 2023
2.7k

Exceptional Rails

kaigi on rails 2023での発表内容です

https://kaigionrails.org/2023/talks/willnet/

Shinichi Maeshima

October 27, 2023
Tweet

Transcript

  1. !XJMMOFU
    &YDFQUJPOBM3BJMT

    View Slide

  2. Shinichi Maeshima



    @netwillnet
    @willnet
    https://blog.willnet.in
    Willnet Inc.

    View Slide

  3. ٕज़ސ໰ۀΛ͍ͯ͠·͢

    View Slide

  4. ͓࢓ࣄ4/4తͳ΋ͷΛ։ൃ
    ͍ͯ͠·͢

    View Slide

  5. &YDFQUJPOBM
    3BJMT

    View Slide

  6. View Slide

  7. 3BJMTΞϓϦέʔγϣϯʹ͓
    ͚Δྫ֎ͱͷ෇͖߹͍ํʹ
    ͍ͭͯ࿩͠·͢

    View Slide

  8. 3BJMTΞϓϦέʔγϣϯʹ͓
    ͚Δྫ֎ͱͷ෇͖߹͍ํʹ
    ͍ͭͯ࿩͠·͢

    View Slide

  9. lྫ֎ͱ͸ɺ௨ྫͷݪଇʹ͋ͯ
    ͸·͍ͬͯͳ͍͜ͱɻҰൠͷ
    ݪଇͷద༻Λड͚ͳ͍͜ͱɻz
    IUUQTKBXJLJQFEJBPSHXJLJ&#&#&"

    View Slide

  10. 3VCZ3BJMTͷจ຺Ͱ͸SBJTF

    View Slide

  11. 3BJMTΞϓϦέʔγϣϯʹ͓
    ͚Δྫ֎ͱͷ෇͖߹͍ํʹ
    ͍ͭͯ࿩͠·͢

    View Slide

  12. ྫ֎ͱͷ෇͖߹͍ํɺͱ͸
    w ͍ͭྫ֎Λൃੜͤ͞Δ͔
    w ൃੜͨ͠ྫ֎Λ͍ͭͲͷΑ͏ʹSFTDVF͢Δͷ͔
    w ௨஌͕ඞཁͳྫ֎ΛͲͷΑ͏ʹ։ൃऀʹ௨஌͢Δ͔
    w ΤϥʔϖʔδΛϢʔβʹͲ͏දࣔ͢Δͷ͔

    View Slide

  13. 3BJMTΞϓϦέʔγϣϯͰ
    ͍ͭྫ֎Λൃੜͤ͞Δ͔

    View Slide

  14. ʮඞཁ͕͋Δͱ͖͚ͩ
    ྫ֎Λൃੜͤ͞Δʯ

    View Slide

  15. ݴ͍׵͑Δͱ
    ʮྫ֎Λൃੜͤ͞ͳͯ͘໰୊
    ͳ͍ͱ͖͸ൃੜͤ͞ͳ͍ʯ

    View Slide

  16. ͳͥʁ

    View Slide

  17. ྫ֎͸ϑϩʔ͕෼͔ΓͮΒ͘ͳΔ

    View Slide

  18. View Slide

  19. View Slide

  20. SBJTFʹΑΔϑϩʔͷΘ͔ΓͮΒ͞
    w SBJTF͸ରԠ͢ΔCFHJOʜSFTDVF·ͰભҠ͢ΔͷͰҰݟ͚ͨͩ͠Ͱ͸Ͳ͜ʹભ
    Ҡ͢Δ͔Θ͔Βͳ͍ࣄ͕͋Δ
    w CFHJOʜSFTDVF͕ผϝιουʹॻ͔Ε͍ͯͨΒͳ͓͞Β෼͔ΓͮΒ͍
    w SFTDVFͰิ଍͢ΔΤϥʔ಺༰ʹΑͬͯ͸ɺྫ֎ൃੜݩ͕ෳ਺͋Δ͔΋ʁ
    w Ͳ͏͍͏ભҠΛͨͲΔ͔෼͔ΓͮΒ͍

    View Slide

  21. ྫ֎͸஗͍

    View Slide

  22. View Slide

  23. View Slide

  24. ഒҎ্஗͍

    View Slide

  25. ʮඞཁ͕͋Δͱ͖͚ͩ
    ྫ֎Λൃੜͤ͞Δʯ

    View Slide

  26. ඞཁ͕͋Δͱ͖ͱ͸ʁ

    View Slide

  27. ݪଇͱͯ͠ҟৗܥ

    View Slide

  28. ਖ਼ৗܥɺ४ਖ਼ৗܥɺҟৗܥ

    View Slide

  29. ஫͜ͷݴ༿ͷఆٛ͸͋͘·Ͱ
    ͜ͷൃදʹ͓͍ͯ͜ͷΑ͏ʹఆ
    ٛ͠·͢ɺͱ͍͏΋ͷͰ͢

    View Slide

  30. ਖ਼ৗܥͷྫ
    ϩάΠϯϑΥʔϜʹਖ਼͍͠ϝʔ
    ϧΞυϨεͱύεϫʔυΛೖྗ
    ͯ͠ϩάΠϯͰ͖ͨ

    View Slide

  31. ४ਖ਼ৗܥͷྫ
    ϩάΠϯϑΥʔϜʹؒҧͬͨϝʔϧ
    ΞυϨεͱύεϫʔυΛೖྗͯ͠
    ʮϝʔϧΞυϨε·ͨ͸ύεϫʔυ
    ͕ؒҧ͍͑ͯ·͢ʯͱදࣔ͞Εͨ

    View Slide

  32. ҟৗܥͷྫ
    %#αʔό΁ͷ઀ଓʹ
    ࣦഊͨ͠

    View Slide

  33. ҟৗܥͰྫ֎Λൃੜͤ͞Δ࣮ྫ

    View Slide

  34. དྷΔ͸ͣͷͳ͍෼ذʹདྷͯ͠·
    ͬͨ

    View Slide

  35. View Slide

  36. Ϣʔβೖྗʹґଘ͠ͳ͍
    Ϟσϧมߋͷࣦഊ

    View Slide

  37. View Slide

  38. View Slide

  39. Ϣʔβೖྗແ͠Ͱ࡟আ͢ΔͷͰ͋Ε͹
    جຊ੒ޭ͢Δ͸ͣ

    View Slide

  40. ͳΜΒ͔ͷཁҼͰ࡟আʹࣦഊͨ͠ͱ͖ʹ
    ྫ֎Λൃੜͤͯ͞ؾ෇͚ΔΑ͏ʹ͓ͯ͘͠

    View Slide

  41. Λ͚ͭ๨ΕΔͱʜʁ

    View Slide

  42. ࡟আʹࣦഊͨ͠ͱ͖΋Ϣʔβʹ͸z࡟আ͠
    ·ͨ͠zͱදࣔ͞Εͯ͠·͏

    View Slide

  43. Ϣʔβೖྗ஋Λ࢖Θͣ
    %#Λߋ৽͢Δͱ͖͸zzΛ
    ͚ͭͯؾ෇͚ΔΑ͏ʹ͢Δ

    View Slide

  44. ݪଇͱͯ͠ҟৗܥ

    View Slide

  45. ݪଇʹର͢Δྫ֎

    View Slide

  46. ४ਖ਼ৗܥͰ΋ྫ֎Λൃੜͤ͞Δ
    े෼ͳϝϦοτ͕͋Ε͹👌

    View Slide

  47. ྫ"DUJWF3FDPSE3FDPSE/PU'PVOE

    View Slide

  48. ྫ֎Λආ͚Δͱ͜͏ͳΔ

    View Slide

  49. શ෦ͷͰ͜ΕΛ΍Δͷ͸͍ͨ΁Μ

    View Slide

  50. ྫ֎Λ౤্͛ͯҐͷϨΠϠʹ
    ॲཧΛ೚ͤΔͱָ

    View Slide

  51. ྫ֎Λ͍ͭͲͷΑ͏ʹSFTDVF͢Δ͔

    View Slide

  52. ྫ֎Λ͍ͭͲͷΑ͏ʹSFTDVF͢Δ͔

    View Slide

  53. ͖ͬ͞࿩ͨ͠ʮྫ֎Λൃੜͤ͞Δʯ
    έʔεҎ֎͸ͳΔ΂͘ૣ͘SFTDVF
    ͢Δ

    View Slide

  54. ૣ͘SFTDVFͨ͠΄͏͕ϑϩʔ͕
    Θ͔Γ΍͍͢

    View Slide


  55. View Slide

  56. View Slide

  57. View Slide

  58. ྫ֎Λ͍ͭͲͷΑ͏ʹSFTDVF͢Δ͔

    View Slide

  59. ͳΔ΂͘۩ମతʹྫ֎Λࢦఆ͢Δ

    View Slide

  60. View Slide

  61. UZQP͍ͯ͠Δͷʹؾ෇͚ͳ͍

    View Slide

  62. ૝ఆ͍ͯ͠ͳ͍ྫ֎Λิ଍ͯ͠͠·͏
    ͱෆ۩߹ʹؾ෇͘ͷ͕஗ΕΔ

    View Slide

  63. View Slide

  64. ͳΔ΂͘CFHJOʜSFTDVFΛڱ͘͢Δ

    View Slide

  65. View Slide

  66. 9QPTUʹࣦഊͨ͠ΒGBMTFΛฦ͍ͨ͠

    View Slide

  67. View Slide

  68. VQEBUF͕ྫ֎Λग़ͨ͠Β9QPTU͕
    ੒ޭ͍ͯ͠ΔͷʹGBMTF͕ฦͬͯ͠·͏

    View Slide

  69. ૝ఆ͍ͯ͠ͳ͍ྫ֎Λิ଍ͯ͠͠·͏
    ͱෆ۩߹ʹؾ෇͘ͷ͕஗ΕΔ

    View Slide

  70. View Slide

  71. VQEBUF͕ྫ֎Λൃੜͤͨ͞Β
    ͙͢ؾ෇͚Δ

    View Slide

  72. ։ൃऀʹର͢Δ௨஌Λ
    Ͳ͏͢Δ͔

    View Slide

  73. VQEBUF͕ྫ֎Λग़ͯ͠΋
    ϢʔβʹΤϥʔը໘͸ݟͤͨ͘ͳ͍ͱͨ͠Βʁ

    View Slide

  74. View Slide

  75. ϩάʹॻ͖ग़͚ͩͩ͢ͱ
    ຒ΋Εͯ͠·͍·͢Ͷ

    View Slide

  76. ΤϥʔτϥοΩϯάαʔϏε
    w 4FOUSZ
    w 3PMMCBS
    w )POFZ#BEHFS
    w "JSCSBLF
    w 3BZHVO
    w FUD

    View Slide

  77. Ϣʔβʹ͸ΤϥʔΛݟͤͣʹ
    ։ൃऀʹ௨஌͢Δ

    View Slide

  78. 3BJMTҎ߱͸͜͏ॻ͚Δ

    View Slide

  79. ϒϩοΫ಺Ͱࢦఆͨ͠ྫ֎্͕͕ͬͨ
    Βɺࣄલʹొ࿥͓͍ͯͨ͠ॲཧΛߦ͏

    View Slide

  80. ʮ4FOUSZʹྫ֎৘ใΛૹΔʯ
    Λࣄલొ࿥͢Δઃఆ

    View Slide

  81. ࣮ࡍʹઃఆ͞ΕΔίʔυ

    View Slide

  82. IBOEMFͷͱ͖͸ྫ֎ΛѲΓͭͿ͢

    View Slide

  83. SFDPSEͷͱ͖͸࠶౓SBJTF͢Δ

    View Slide

  84. ࡉ͔͍࢓༷͸3BJMTΨΠυΛݟͯͶ

    View Slide

  85. ͜͜͸௨஌͢Δඞཁ͕͋Δʁͳ͍ʁ

    View Slide

  86. ઈରͷਖ਼ղ͸ͳ͍͚Ͳ
    ҰൠతʹͲ͏൑அ͢ΔͱΑͦ͞͏ʁ

    View Slide

  87. ։ൃऀʹྫ֎Λ௨஌͢Δ൑அج४
    w Ͳ͏͍͏ঢ়گͰΤϥʔ͕ى͖Δ͔Λߟ͑Δ
    w ྫ9ͷαʔό͕ෆௐˠෆௐΛͪ͜ΒଆͰղফ͢Δ͜ͱ͸Ͱ͖ͳ͍
    w ྫ"1*ΩʔΛؒҧ͍͑ͯͯΤϥʔˠΩʔΛઃఆ͠௚ͤ͹ղফ͢Δ
    w ରԠͰ͖ͳ͍Τϥʔʹ͍ͭͯ௨஌͕དྷͯ΋ϊΠζʹͳΔͷͰආ͚Δ
    w ྫ͑͹4FOUSZʹ͸XBSOJOHɺEFCVHͳͲͷϨϕϧ͕ઃఆͰ͖ͯ௨ৗͷྫ֎ͱ۠
    ผ͢Δ͜ͱ͕Ͱ͖Δ
    w ࠓճͷྫͰ͸XBSOJOHʹઃఆ͞Εͨྫ֎͕୹ظؒʹͨ͘͞Μൃੜ͢ΔΑ͏ͳΒ
    ௨஌͢ΔɺΑ͏ͳ΍Γํ͕ྑͦ͞͏ʁ ଞͷղ΋͋Γͦ͏

    View Slide

  88. View Slide

  89. ͋Θ࣮ͤͯࢪ͍ͨ͠ɿෆཁͳΤ
    ϥʔΛ௨஌͠ͳ͍Α͏ʹௐ੔͢
    Δɺ௨஌͞Εͨ΋ͷΛτϦΞʔ
    δͯ͠ॗʑͱରԠͰ͖Δମ੍ͮ
    ͘Γ

    View Slide

  90. ΤϥʔϖʔδΛ
    Ͳ͏΍ͬͯදࣔ͢Δ͔

    View Slide

  91. View Slide

  92. ͜ΕͰ͸ෆ׬શ

    View Slide

  93. ΋͠SBDL૚Ͱ
    ྫ֎͕ى͖ͨΒʁ

    View Slide

  94. View Slide

  95. 3BJMT͸σϑΥϧτͰ
    ΤϥʔϖʔδΛදࣔ͢Δ
    3BDLϛυϧ΢ΣΞΛ༻ҙ͠
    ͍ͯΔ

    View Slide

  96. ΍ϖʔδΛදࣔ͢Δ
    Α͏ͳ൚༻తͳରԠ͸3BDL
    ϛυϧ΢ΣΞʹ೚ͤΔͱ%3:

    View Slide

  97. SFTDVF@GSPN͸
    ಛผͳέʔεͰͷΈ࢖͏

    View Slide

  98. ΤϥʔϖʔδΛදࣔ͢Δ
    3BDLϛυϧ΢ΣΞͬͯͲ͏
    ಈ͍͍ͯΔʁ

    View Slide

  99. 3"*-4@&/7QSPEVDUJPO
    SBJMTNJEEMFXBSF

    View Slide

  100. 3BDL૚Ͱྫ֎Λิ଍ͨ͠ΒͲ͏ͳΔʁ

    w DPO
    fi
    HBDUJPO@EJTQBUDITIPX@FYDFQUJPOTͰΤϥʔϖʔδΛදࣔ͢Δ͔൱
    ͔͕ܾ·Δ
    w ςετ؀ڥҎ֎͸σϑΥϧτʮදࣔ͢Δʯʹͳ͍ͬͯΔ
    w ςετ؀ڥͰ͸ɺ3BJMT·Ͱ͸୯ʹʮදࣔ͠ͳ͍ʯ͕σϑΥϧτͩͬͨ
    ͕ɺ3BJMT͔Β͸
    ʮ"DUJPO%JTQBUDI&YDFQUJPO8SBQQFSSFTDVF@SFTQPOTFTʹଘࡏ͢Δྫ
    ֎ΫϥεͰ͋Ε͹දࣔ͢Δʯͱ͍͏ઃఆʹͳ͍ͬͯΔ
    w Τϥʔϖʔδ͕දࣔ͞ΕΔ͜ͱΛςετ͍ͨ͠ϢʔεέʔεʹରԠ͍ͯ͠
    Δ

    View Slide

  101. 3BDL૚Ͱྫ֎Λิ଍ͨ͠ΒͲ͏ͳΔʁ

    w DPO
    fi
    HDPOTJEFS@BMM@SFRVFTUT@MPDBMͰσόοά༻ͷΤϥʔϖʔδ͔ຊ൪༻ͷ
    Τϥʔϖʔδ͔͕ܾ·Δ
    w ຊ൪༻ͷΤϥʔϖʔδ͸DPO
    fi
    HFYDFQUJPOT@BQQʹઃఆ͞Εͨ3BDLΞϓϦέ
    ʔγϣϯΛDBMMͨ݁͠Ռ͕දࣔ͞ΕΔ
    w σϑΥϧτ͸"DUJPO%JTQBUDI1VCMJD&YDFQUJPOTΠϯελϯε͕ઃఆ͞
    Ε͍ͯΔ

    View Slide

  102. 3BDL૚Ͱྫ֎Λิ଍ͨ͠ΒͲ͏ͳΔʁ

    w "DUJPO%JTQBUDI1VCMJD&YDFQUJPOT͸
    "DUJPO%JTQBUDI&YDFQUJPO8SBQQFSSFTDVF@SFTQPOTFTΛݟͯɺྫ֎Ϋϥεʹ
    ରԠ͢ΔϨεϙϯεεςʔλεΛಘΔ
    w ରԠ͕ͳ͍ྫ֎͸ JOUFSOBM@TFSWFS@FSSPS
    ѻ͍
    w ϦΫΤετϑΥʔϚοτ͕IUNMͩͬͨΒɺQVCMJD\εςʔλε^IUNMΛදࣔ͢Δ
    w ରԠ͢ΔϑΝΠϧ͕ͳ͚Ε͹ۭ
    w ϦΫΤετϑΥʔϚοτ͕KTPOͩͬͨΒA\TUBUVT FSSPS#BE3FRVFTU^A
    ͷΑ͏ͳ+40/Λฦ͢

    View Slide

  103. ಠࣗͷྫ֎ΫϥεΛରԠ͍ͤͨ͞ͱ͖͸͜͏ॻ͘

    View Slide

  104. ಈతͳΤϥʔϖʔδΛදࣔ
    ͔ͨͬͨ͠ΒͲ͏͢Δʁ

    View Slide

  105. DPOGJHFYDFQUJPOT@BQQΛಠࣗͷ
    3BDLΞϓϦέʔγϣϯʹ͢Δ͜ͱ
    ͰಈతͳΤϥʔϖʔδΛ࡞Δ͜ͱ͸
    Ͱ͖Δ

    View Slide

  106. ݸਓతʹ͸σϑΥϧτͳ࢓
    ૊ΈΛ࢖ͬͯ੩తͳϖʔδ
    Λදࣔͤ͞Δͷ͕͓͢͢Ί

    View Slide

  107. ಈతͳΤϥʔϖʔδͷσϝϦοτ
    w ։ൃ࣌ʹຊ൪ͷΤϥʔϖʔδΛݟΔ͜ͱ͕΄΅ͳ͍
    w ը໘่͕Ε͍ͯͯ΋ؾ෇͖ͮΒ͍
    w ΤϥʔϖʔδΛදࣔ͢ΔϩδοΫʹόά͕͋ͬͯ΋ؾ෇͖ͮΒ͍
    w ΤϥʔϖʔδΛදࣔ͢ΔλΠϛϯάͰΤϥʔʹͳΓɺਖ਼͘͠Τϥʔϖʔδ
    ΛදࣔͰ͖ͳ͍

    View Slide

  108. Ͳ͏ͯ͠΋ಈతͳΤϥʔ
    ϖʔδ͕ඞཁͳΒ
    SBNCVMBODFΛ࢖͏

    View Slide

  109. SBNCVMBODFͷओͳػೳͱϝϦοτ
    w ϏϡʔςϯϓϨʔτΛར༻ͯ͠ಈతʹΤϥʔϖʔδΛ࡞੒Ͱ͖Δ
    w ʮΤϥʔϖʔδΛಈతʹදࣔ͢ΔʯΛࣗ࡞͢ΔͱϋϚΔϙΠϯτΛճආͰ͖
    Δ
    w ΤϥʔϖʔδΛදࣔ͢Δ෦෼ͷ୯ମςετ͕؆୯ʹॻ͚Δ
    w ։ൃ؀ڥͰ΋ΤϥʔϖʔδΛ֬ೝ͢Δ͜ͱ͕Ͱ͖Δ
    w FYIUUQMPDBMIPTUSBNCVMBODFOPU@GPVOE

    View Slide

  110. ͱ͸͍͑·ͩߟ͑Δ͜ͱ͸͋Δ
    w ʮ%#ͱ઀ଓͰ͖ͳ͍ʯͳͲͷக໋తͳέʔεʹͲ͏ରԠ͢Δ͔
    w ද่ࣔΕΛආ͚Δํ๏
    w ϏδϡΞϧϦάϨογϣϯςετ

    View Slide

  111. ·ͱΊ
    w 3BJMTΞϓϦέʔγϣϯͰ͍ͭྫ֎Λൃੜͤ͞Δ͔
    w ൃੜͨ͠ྫ֎ΛͲͷΑ͏ʹѻ͏͔
    w ։ൃऀʹ௨஌͢Δํ๏
    w ΤϥʔϖʔδΛදࣔ͢Δํ๏
    w ͳͲͳͲɺͦΕͧΕ۩ମྫΛަ͑ͯઆ໌͠·ͨ͠
    w ࣭໰ͳͲ͋ͬͨΒ͜ͷ͋ͱXJMMOFUΛ௚઀ั·͑Δ͔
    w EJTDPVSTFDMFBOSBJMTPSHʹτϐοΫΛ࡞͍ͬͯΔͷͰίϝϯτ͍ͩ͘͞

    View Slide

  112. IUUQTEJTDPVSTFDMFBOSBJMTPSHUUPQJD

    View Slide