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

【OPEN CODE】YOUTRUST サーバーサイド編

【OPEN CODE】YOUTRUST サーバーサイド編

【OPEN CODE #5】コードの中身を公開します! ( https://youtrust.connpass.com/event/295556/ )で発表した内容です。

Terai Shogo

October 02, 2023
Tweet

More Decks by Terai Shogo

Other Decks in Programming

Transcript

  1. © YOUTRUST, Inc. All Rights Reserved.
    YOUTRUST編

    View Slide

  2. © YOUTRUST, Inc. All Rights Reserved.
    自己紹介
    • 寺井 省吾
    • 2023年4月に株式会社YOUTRUSTに入社
    • バックエンドとフロントエンドの両方を実装
    • 最近はGitHub ActionsやRuboCopなどを使った
    開発フローの効率化に興味があります
    • Rubyのコミュニティ活動に関心があり、
    Rails GirlsのCoachやKaigi on RailsのOrganizerをしています
    @krpk1900_dev

    View Slide

  3. © YOUTRUST, Inc. All Rights Reserved.
    目次
    • サービスの紹介
    • バックエンド全体の設計について
    • 通知処理の設計について
    -----------時間があれば希望に合わせて紹介-----------
    • モックを活用しているRSpecについて
    • 使用しているgemについて
    • ModelやControllerの数などのstatsについて

    View Slide

  4. © YOUTRUST, Inc. All Rights Reserved.
    バックエンドの全体的な設計について
    • 問題点
    • Fat Model、Fat Controller
    • 目的
    • コードの見通しを良くするため
    • 解決策
    • 参照系・更新系・通知系・それらが組み合わさったもので分
    類して、配置する場所を分ける

    View Slide

  5. © YOUTRUST, Inc. All Rights Reserved.
    バックエンドの全体的な設計について
    • 参照系
    • Query(app/queries)
    • 更新系
    • Command(app/commands)
    • 通知系
    • Model(app/models/notifications)
    • 組み合わさったもの
    • UseCase(app/use_cases)

    View Slide

  6. © YOUTRUST, Inc. All Rights Reserved.
    バックエンドの全体的な設計について
    • 参照系のアクション(index)の場合

    View Slide

  7. © YOUTRUST, Inc. All Rights Reserved.
    バックエンドの全体的な設計について
    • 更新系のアクション(create, update, destroy)の場合

    View Slide

  8. © YOUTRUST, Inc. All Rights Reserved.
    実際にコードで解説!

    View Slide

  9. © YOUTRUST, Inc. All Rights Reserved.
    通知処理の設計について
    • YOUTRUSTでは、多くの通知処理を扱っている
    • サービス内通知(ユーザー通知)
    • プッシュ通知
    • Slack通知
    • メール通知
    • 目的
    • 見通しを良くしたい

    View Slide

  10. © YOUTRUST, Inc. All Rights Reserved.
    通知処理の設計について
    • 通知制御クラス
    • 通知詳細の呼び出しの条件判定など
    • 通知詳細クラス

    View Slide

  11. © YOUTRUST, Inc. All Rights Reserved.
    実際にコードで解説!

    View Slide