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

C957eec8e07ba60e0e1283d94a406596?s=47 Koji Mikami
December 09, 2017

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

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

C957eec8e07ba60e0e1283d94a406596?s=128

Koji Mikami

December 09, 2017
Tweet

Transcript

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

  2. ࠓ೔࿩͢͜ͱ

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

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

    ▸ ࢲ͕Ϳ͔ͭͬͨนΛέʔεελσΟͰ͓ૹΓ͠·͢
  5. ຊ୊ Զ͕Ϳ͔ͭͬͨนʢ࣮࿩ʣ ▸ ίʔυϨϏϡʔ͕௨Βͳ͍ ৽ػೳ࣮૷͢Δͧʂ

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

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

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

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

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

  11. Զ͕Ϳ͔ͭͬͨน ▸ ActiveRecordΛ͏·͘࢖͍͑ͯͳ͍ ▸ N+1ΫΤϦΛ࡞͍ͬͯΔʢద੾ʹϩʔυͰ͖͍ͯͳ͍ʣ ▸ ςΩτʔʹincludes͢Δ
 k0kubun͞ΜͷʮActiveRecordͷjoinsͱpreloadͱincludesͱeager_loadͷҧ͍ʯΛಡΈ· ͠ΐ͏ https://qiita.com/k0kubun/items/80c5a5494f53bb88dc58

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

  13. Case 2. ActiveRecordܧঝ͠ͳͯ͘΋ྑ͍ͷ͔Α ▸ ActiveRecordύλʔϯ
 σʔλϕʔεͷςʔϒϧ΍ϏϡʔͷྻΛϥοϓ͠ɺσʔλϕʔεΞΫηεΛΧϓ ηϧԽ͠ɺυϝΠϯϩδοΫΛ௥Ճ͢ΔΦϒδΣΫτ[1] [1] http://bliki-ja.github.io/pofeaa/ActiveRecord/ Ϟσϧ

    = ActiveRecordΛඞͣܧঝ ςʔϒϧ : Ϟσϧͩͱࢥͬͯ͠·͏
  14. ActiveRecordΛܧঝ͠ͳ͍ϞσϧΛ࡞ͬͯ΋ྑ͍ ▸ ςʔϒϧͷͳ͍FormͰActiveModelϞδϡʔϧΛ࢖͏ ▸ ActiveModel::ValidatorΫϥεΛ࢖ͬͯόϦσʔλΛ෼཭͢Δ ▸ Ϣʔεέʔεͱͯ͠ߟ͑Δ
 →ςʔϒϧͱ1:1Ͱඥ෇͔ͳ͍ϞσϦϯάʹͭͳ͕Δ
 →αʔϏεΦϒδΣΫτͱͯ͠෼཭͢Δͷ΋͋Γ ৄ͘͠͸joker͞ΜͷʮͯΊ͑ΒͷRails͸ΦϒδΣΫτࢦ޲͡ΌͶ͑ʂ·ͣ͸CallbackΫϥεɺValidatorΫϥεΛ׆༻͠

    ΖʂʯΛಡΜͰΈ͍ͯͩ͘͞ https://qiita.com/joker1007/items/2a03500017766bdb0234 Case 2.
  15. ϓϩδΣΫτͰαʔϏεΦϒ δΣΫτಋೖͯ͠Δਓʁ Case 2.

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

  17. ϨΠϠʔͰ೰Ή ྫ: Ϛετυϯ Զͷ஌ͬͯΔߏ଄͡Όͳ͍… rails new Case 3.

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

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

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

  21. ͓ΘΓʹ ݁࿦ ‣ joker͞ΜͷʮԶ͕ѱ͔ͬͨɻૉ௚ʹؒҧ͍ΛೝΊΔ͔Βɺ΋͏αʔϏεΫϥεͱ͔࡞ Δͷ͸ࢭΊͯ͘ΕʯΛಡΉ
 https://qiita.com/joker1007/items/25de535cd8bb2857a685 ‣ onk͞Μͷʮ;ͭ͏ͷRailsΞϓϦέʔγϣϯ։ൃʯΛݟΔ
 railsdm#2ͷൃදͰ͢Ͷ
 https://www.slideshare.net/takafumionaka/rails-77195340

    ‣ Sandi MetzͷʮΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυʯΛಡΉ
  22. THANK YOU!!