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

Railsでクリーンアーキテクチャを考えてきた

 Railsでクリーンアーキテクチャを考えてきた

複雑なシステムの設計と開発におけるクリーンアーキテクチャ、レイヤードアーキテクチャ、ドメインモデリング、モジュラーモノリスの活用について詳細に解説します。
具体例として輸送管理システムCREWExpressを紹介し、
依存関係のルールや抽象度の高い設計をRailsに適用する方法を共有します。
特にMVCにユースケース層を追加し、システムの柔軟性を保つ工夫について詳述します。また、Railsの一般的な開発手法であるRailsWayだけでは対応しきれない複雑さに対して、どのようにクリーンアーキテクチャの考え方を取り入れているのかを実例を交えて説明します。
クリーンアーキテクチャの基本概念や依存性逆転の原則をRails環境でどのように実現しているかについても触れています。

suzuki masayuki

June 15, 2024
Tweet

More Decks by suzuki masayuki

Other Decks in Programming

Transcript

  1. © 2024 • Azit Inc. Railsを使用しながらシステムの 複雑性をさげるために レイヤードアーキテクチャ、 ドメインモデリング(戦略的DDD), モジュラーモノリス

    を使った設計を工夫して 複雑なシステムに対応をしている 自己紹介 鈴木まー Object-Oriented Conference の動画編集者 Object-Oriented Conference の動画編集者
  2. © 2024 • Azit Inc. ユースケース記述のサンプル システムはユーザーが選択した支払い方法を取得する。 システムは支払い情報(クレジットカード情報、住所情報など)を取得する。 システム支払処理をする 支払いが成功した場合:

       システムは在庫を更新する。    システムはユーザーの購入履歴を更新する。 支払いが失敗した場合:    システムはユーザーにエラーメッセージを送信する 自分たちのクリーンアーキテクチャ
  3. © 2024 • Azit Inc. public void processPurchase() { retrievePaymentMethod();

    retrievePaymentInformation(); if (processPayment()) { updateInventory(); updatePurchaseHistory(); } else { sendErrorMessage(); } さっきのユースケース 記述をユースケースクラス にしたもの