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

do-not-delete-softly

 do-not-delete-softly

MOROHASHI Kyosuke

August 31, 2015
Tweet

More Decks by MOROHASHI Kyosuke

Other Decks in Programming

Transcript

  1. ࿦ཧ࡟আΛ
    ͠ͳ͍
    2015-08-31
    ࿦ཧ࡟আCasual Talks #1
    @moro

    View Slide

  2. ॾڮګհ(@moro)
    Kyosuke MOROHASHI

    View Slide

  3. View Slide

  4. View Slide

  5. ఻͍͑ͨ͜ͱ

    View Slide

  6. ࿦ཧ࡟আͳΜͯ
    ͳ͔ͬͨ

    View Slide

  7. ‣࡟আ͍ͯ͠ͳ͍
    ‣࡟আ͍ͯ͠ͳ͍ͷͰ࡟আͱ
    ݺͿ΂͖Ͱͳ͍ɻ
    ‣ͥΜͥΜ࿦ཧతͰ΋softͰ
    ΋ͳ͍.

    View Slide

  8. ࿦ཧ࡟আΛ

    ͨ͘͠ͳΔͱ͖

    View Slide

  9. ઈ൛঎඼ʹ

    ࡟আϑϥάΛ෇͚͍ͨ

    View Slide

  10. ࣮ݱ͍ͨ͜͠ͱ
    ‣ ઈ൛ͨ͠঎඼Λ࿦ཧ࡟আͯ͠ɺ
    Ұཡ΍ݕࡧͰදࣔ͞Εͳ͍Α
    ͏ʹ͍ͨ͠ɻ
    ‣ ৽͘͠ߪೖ΋Ͱ͖ͳ͍ͨ͘͠ɻ

    View Slide

  11. ຊ౰ʹ”࡟আ”ͳͷ͔?
    ‣աڈʹങͬͨސ٬ͷߪങཤ
    ྺʹ͸දࣔ͢Δ
    ‣ച্ूܭͷର৅ʹͳΔ

    View Slide

  12. ΄Μͱ͏ʹཉ͔ͬͨ͠΋ͷ
    status = :ઈ൛

    View Slide

  13. class Product < AR::Base
    scope :sellable, -> { where.not(status: :絶版) }
    end
    class ProductsController < AppC
    def index
    @products = Product.sellable.order(nantoka)
    end
    end
    class Backroom::ProductsController < AppC
    def index
    @products = Product.order(kantoka)
    end
    end

    View Slide

  14. default_scope :sellable 

    ΋ඇਪ঑ɻʮσϑΥϧτʯ
    ͡Όͳ͍Ͱ͢͠

    View Slide

  15. class Order < AR::Base
    default_scope -> { where(deleted_at: nil }
    end
    # 忘れた頃に
    def clean_old_orders(orders)
    orders.unscoped.destroy_all
    # さらに忘れた頃に
    clean_old_orders(Order.where(company_id: 42))

    View Slide

  16. ୀ৬ͨ͠ձһʹ
    ࡟আϑϥάΛ෇͚͍ͨ

    View Slide

  17. ࣮ݱ͍ͨ͜͠ͱ
    ‣ୀձͨ͠ձһ͸ɺ

    ϩάΠϯग़དྷͳ͍Α͏ʹɺ
    ࿦ཧ࡟আ͍ͨ͠

    View Slide

  18. ຊ౰ʹ”࡟আ”ͳͷ͔?
    ‣ ͦͷձһͷσʔλ͸Ͳ͏ͳΔ?
    ‣ a: ͥΜͿফ͢
    ‣ b: ͦͷ··࢒͢
    ‣ c: ಗ໊ͱͯ͠࢒͢
    ‣ d: γεςϜϢʔβ΁෇͚ସ͑

    View Slide

  19. ຊ౰ʹ”࡟আ”ͳͷ͔?
    ‣a: ͥΜͿফ͢
    ‣ ফ͠·͠ΐ͏!!!
    ‣ ෆ҆ͳΒඞཁͳͱ͜Ζ͚ͩ
    ΞʔΧΠϒ

    View Slide

  20. ຊ౰ʹ”࡟আ”ͳͷ͔?
    ‣b: ͦͷ··࢒͢
    ‣ ୀձձһΛ status = :ログイ
    ン不可 ʹ͢Δ

    (status͸ͦΕ͸ͦΕͰ pros/cons ͋Δ΋ͷͷ…)
    ‣ೝূ৘ใ͚ͩফ͢

    View Slide

  21. ຊ౰ʹ”࡟আ”ͳͷ͔?
    ‣c: ಗ໊ͱͯ͠࢒͢
    ‣ݸਓ৘ใͳͲΛফ͢Α͏ɺ
    ॲཧΛ଍͢

    View Slide

  22. ຊ౰ʹ”࡟আ”ͳͷ͔?
    ‣ d: γεςϜϢʔβ΁෇͚ସ͑
    ‣ͦ͏͍͏ॲཧΛ଍͢

    View Slide

  23. ຊ౰ʹ”࡟আ”ͳͷ͔?
    ‣ a: Ҏ֎͸ʮ࡟আʯ͍ͯ͠ͳ͍
    ‣ a: Ұॹʹফ͢
    ‣ b: ͦͷ··࢒͢
    ‣ c: ಗ໊ͱͯ͠࢒͢
    ‣ d: γεςϜϢʔβ΁෇͚ସ͑

    View Slide

  24. ʮ࿦ཧ࡟আʯͰ͸ͳ͘

    ΍Γ͍ͨ͜ͱʹԊͬͨઃܭΛ

    View Slide

  25. อ؅ظݶͷ
    ա͗ͨσʔλʹ
    ࡟আϑϥάΛ෇͚͍ͨ

    View Slide

  26. ࣮ݱ͍ͨ͜͠ͱ
    ‣ҰఆظؒҎ্ݹ͍σʔλΛ
    ࿦ཧ࡟আ͠ɺҰཡʹදࣔ͞
    Εͳ͍ͨ͘͠ɻ

    View Slide

  27. ຊ౰ʹ”࡟আ”ͳͷ͔?
    ‣ ϩάΛऔͬͯফ͢ɻ
    ‣ ࡟আͰ͖ͦ͏ɻ
    ‣ ؂ࠪʹඞཁetcͳͲͳΒ࢒͢ɻ

    View Slide

  28. ຊ౰ʹ”࡟আ”ͳͷ͔?
    ‣ٯʹߟ͑Δɻ
    ‣ Ұཡʹදࣔ͢Δ߲໨Λ

    ৽͍͠΋ͷ͚ͩʹ͢Δɻ
    ‣ σʔλྔͷݒ೦ͱɺUXͷ

    ݒ೦͸ͦΕͧΕผͷ໰୊ɻ

    View Slide

  29. default_scope と同じ問題
    一番最初の画面に出すもの、が
    デフォルトなわけではない。

    View Slide

  30. ͳͥ࿦ཧ࡟আΛ
    ͢΂͖Ͱͳ͍ͷ͔

    (reprise)

    View Slide

  31. ‣ࢭΊ͕࣌Θ͔Βͳ͍ɻ
    ‣ શςʔϒϧʹ࡟আϑϥά
    ‣ ͭͶʹJOINͯ͠ϑϥάνΣοΫ

    View Slide

  32. ‣σʔλͷऴΘΓΛ

    ઃܭͰ͖͍ͯͳ͍ɻ
    ‣ઃܭͰ͖͍ͯͳ͍ͷͰ

    ࢭΊ͕ܾ࣌ΊΒΕͳ͍ɻ

    View Slide

  33. ͳͷʹʮ࿦ཧ࡟আʯͰ

    Կ͔ΛݴͬͨงғؾʹͳΔɻ

    ࢛จࣈख़ޠ͜Θ͍ɻ

    View Slide

  34. ࿦ཧ࡟আΛ

    ͠ͳ͍

    View Slide

  35. ‣σʔλͷʮऴΘΓํʯΛ

    ;ͭ͏ʹઃܭ͢Δɻ
    ‣࢛จࣈख़ޠͰԿ͔Λ

    ݴͬͨؾʹͳΒͳ͍ɻ

    View Slide

  36. ͋ΘͤͯಡΈ͍ͨ: http://qiita.com/Jxck_/items/156d0a231c6968f2a474

    View Slide

  37. ‣σʔλͷʮऴΘΓํʯΛ

    ;ͭ͏ʹઃܭ͢Δɻ
    ‣࢛จࣈख़ޠͰԿ͔Λ

    ݴͬͨؾʹͳΒͳ͍ɻ

    View Slide