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

「Railsを学び、現場に入るまで」 Rails Developers Meetup 2017 LT

mikaji
December 09, 2017

「Railsを学び、現場に入るまで」 Rails Developers Meetup 2017 LT

現在、Railsをイチから学ぶためにはRailsチュートリアルをこなしたり書籍などを利用すると思われる。しかし実際に現場で開発すると、アプリケーションのレイヤー構成やRailsの罠に戸惑うことがある。本発表ではRails初学者が現場で開発をするときに感じるであろうギャップをいくつか紹介する。Rails初学者、またメンターなどを行っている開発者にとって知見となることを期待する。

mikaji

December 09, 2017
Tweet

More Decks by mikaji

Other Decks in Programming

Transcript

  1. RailsΛֶͼɺݱ৔ʹೖΔ·Ͱ
    RAILS DEVELOPERS MEETUP 2017 LT @KOJI MIKAMI

    View full-size slide

  2. ࠓ೔࿩͢͜ͱ

    View full-size slide

  3. ֓ཁ
    Railsྺ = ΤϯδχΞྺ

    View full-size slide

  4. ֓ཁ
    RailsΛֶͼɺݱ৔ʹೖΔ·Ͱ
    ▸ νϡʔτϦΞϧԿप͔΍ΔˠݸਓͰΞϓϦέʔγϣϯॻ͍ͯΈΔ
    ▸ ݱ৔ʹೖΔˠ͍͔ͭ͘ͷนʹͿͪ౰ͨΔ
    ▸ Ͳ͜Ͱͭ·ͮ͘ͷ͔
    ▸ ϝϯλʔ΍·ΘΓͷϝϯόʔ͸Ͳ͜ΛϑΥϩʔ͢Ε͹Α͍ͷ͔
    ▸ ࢲ͕Ϳ͔ͭͬͨนΛέʔεελσΟͰ͓ૹΓ͠·͢

    View full-size slide

  5. ຊ୊
    Զ͕Ϳ͔ͭͬͨนʢ࣮࿩ʣ
    ▸ ίʔυϨϏϡʔ͕௨Βͳ͍
    ৽ػೳ࣮૷͢Δͧʂ

    View full-size slide

  6. ຊ୊
    Զ͕Ϳ͔ͭͬͨน
    ▸ ίʔυϨϏϡʔ͕௨Βͳ͍
    Ͳ͏͍͏ઃܭ͕
    ͍͍Μͩʂ

    View full-size slide

  7. ຊ୊
    Զ͕Ϳ͔ͭͬͨน
    ▸ ίʔυϨϏϡʔ͕௨Βͳ͍
    ࣮૷ऴΘͬͨʂ
    PRग़ͧ͢ʂ

    View full-size slide

  8. ຊ୊
    Զ͕Ϳ͔ͭͬͨน
    ▸ ίʔυϨϏϡʔ͕௨Βͳ͍

    View full-size slide

  9. ຊ୊
    Զ͕Ϳ͔ͭͬͨน
    ▸ ίʔυϨϏϡʔ͕௨Βͳ͍
    ίϝϯτ͕ͨ͘͞Μ෇͍ͯർฐ…

    View full-size slide

  10. ຊ୊
    Զ͕Ϳ͔ͭͬͨน
    ▸ Ͳ͏ͯ͜͠Μͳʹίϝϯτ͕෇͍ͨͷ͔
    ▸ ActiveRecordΛ͏·͘࢖͍͑ͯͳ͍
    ▸ Ͳ͜ʢMVC, etc…ʣʹͲ͏࣮૷͢Δͷ͕ྑ͍͔͋΍;΍ʹͳͬ
    ͍ͯΔ

    View full-size slide

  11. Զ͕Ϳ͔ͭͬͨน
    ▸ ActiveRecordΛ͏·͘࢖͍͑ͯͳ͍
    ▸ N+1ΫΤϦΛ࡞͍ͬͯΔʢద੾ʹϩʔυͰ͖͍ͯͳ͍ʣ
    ▸ ςΩτʔʹincludes͢Δ

    k0kubun͞ΜͷʮActiveRecordͷjoinsͱpreloadͱincludesͱeager_loadͷҧ͍ʯΛಡΈ·
    ͠ΐ͏ https://qiita.com/k0kubun/items/80c5a5494f53bb88dc58
    Case 1.

    View full-size slide

  12. Զ͕Ϳ͔ͭͬͨน
    ▸ Ͳ͜ʹ࣮૷͢Δ͔Ͱ೰Ή
    ▸ ActiveRecordʹҾ͖ͮΒΕΔ
    ▸ σϑΥϧτͷϨΠϠʔͱͷҧ͍
    Case 1.

    View full-size slide

  13. Case 2.
    ActiveRecordܧঝ͠ͳͯ͘΋ྑ͍ͷ͔Α
    ▸ ActiveRecordύλʔϯ

    σʔλϕʔεͷςʔϒϧ΍ϏϡʔͷྻΛϥοϓ͠ɺσʔλϕʔεΞΫηεΛΧϓ
    ηϧԽ͠ɺυϝΠϯϩδοΫΛ௥Ճ͢ΔΦϒδΣΫτ[1]
    [1] http://bliki-ja.github.io/pofeaa/ActiveRecord/
    Ϟσϧ = ActiveRecordΛඞͣܧঝ
    ςʔϒϧ : Ϟσϧͩͱࢥͬͯ͠·͏

    View full-size slide

  14. ActiveRecordΛܧঝ͠ͳ͍ϞσϧΛ࡞ͬͯ΋ྑ͍
    ▸ ςʔϒϧͷͳ͍FormͰActiveModelϞδϡʔϧΛ࢖͏
    ▸ ActiveModel::ValidatorΫϥεΛ࢖ͬͯόϦσʔλΛ෼཭͢Δ
    ▸ Ϣʔεέʔεͱͯ͠ߟ͑Δ

    →ςʔϒϧͱ1:1Ͱඥ෇͔ͳ͍ϞσϦϯάʹͭͳ͕Δ

    →αʔϏεΦϒδΣΫτͱͯ͠෼཭͢Δͷ΋͋Γ
    ৄ͘͠͸joker͞ΜͷʮͯΊ͑ΒͷRails͸ΦϒδΣΫτࢦ޲͡ΌͶ͑ʂ·ͣ͸CallbackΫϥεɺValidatorΫϥεΛ׆༻͠
    ΖʂʯΛಡΜͰΈ͍ͯͩ͘͞ https://qiita.com/joker1007/items/2a03500017766bdb0234
    Case 2.

    View full-size slide

  15. ϓϩδΣΫτͰαʔϏεΦϒ
    δΣΫτಋೖͯ͠Δਓʁ
    Case 2.

    View full-size slide

  16. ϨΠϠʔͰ೰Ή
    Case 3.
    rails new
    ྫ: Ϛετυϯ

    View full-size slide

  17. ϨΠϠʔͰ೰Ή ྫ: Ϛετυϯ

    Զͷ஌ͬͯΔߏ଄͡Όͳ͍…
    rails new
    Case 3.

    View full-size slide

  18. σϑΥϧτͷ··։ൃ͢ΔϝϦοτ
    ▸ νʔϜͰೝࣝΛἧ͑΍͍͢
    ▸ ࣮૷ՕॴͰ೰Ή͕࣌ؒݮΔ
    ▸ ϨʔϧΛ֎Εʹ͍͘
    Case 3.

    View full-size slide

  19. ϨΠϠʔΛ௥Ճ͢ΔϝϦοτ
    ▸ ϑΝοτϞσϧɺϑΝοτίϯτϩʔϥʔΛճආ
    ▸ ςετॻ͖΍͍͢
    ▸ ϝϯς͠΍͍͢
    Case 3.

    View full-size slide

  20. ϦʔυΤϯδχΞʹઃܭͷҙਤΛฉ͜͏
    Case 3.

    View full-size slide

  21. ͓ΘΓʹ
    ݁࿦
    ‣ joker͞ΜͷʮԶ͕ѱ͔ͬͨɻૉ௚ʹؒҧ͍ΛೝΊΔ͔Βɺ΋͏αʔϏεΫϥεͱ͔࡞
    Δͷ͸ࢭΊͯ͘ΕʯΛಡΉ

    https://qiita.com/joker1007/items/25de535cd8bb2857a685
    ‣ onk͞Μͷʮ;ͭ͏ͷRailsΞϓϦέʔγϣϯ։ൃʯΛݟΔ

    railsdm#2ͷൃදͰ͢Ͷ

    https://www.slideshare.net/takafumionaka/rails-77195340
    ‣ Sandi MetzͷʮΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυʯΛಡΉ

    View full-size slide