Open7

デザインパターン/設計/アーキテクチャ

kzk4043kzk4043

いっぱいある&抽象的でいまいち理解してないので整理
デザインパターン/設計/アーキテクチャの違いもわからん

kzk4043kzk4043

デザインパターン/設計/アーキテクチャの違いもわからん
↓GPT

デザインパターン

デザインパターン​は、特定の頻繁に発生する設計問題に対する再利用可能な解答を提供します。パターンは、設計上の課題に対する経験に基づいたベストプラクティスの集積です。たとえば、GoF (Gang of Four) のデザインパターンには、シングルトン、ファクトリーメソッド、デコレーターなどがあります。

アーキテクチャ

アーキテクチャ​は、システム全体の構造を示します。これには、システム内の主要なコンポーネントとそれらの間の関係、およびシステムが満たすべき非機能要件(例えば、拡張性、性能、信頼性など)を含みます。アーキテクチャはシステム全体の視点から構築される計画であり、ソフトウェア、ハードウェア、ネットワーク、データベースなど複数の技術要素がどう統合されるかを含みます。

設計

設計​は、ソフトウェア開発において具体的なシステムやコンポーネントの詳細な計画と仕様を作成するプロセスです。設計には、モジュール設計、データ構造設計、インターフェース設計など、ソフトウェアの実装レベルに近い詳細が含まれます。設計のプロセスではデザインパターンを利用する事もあります。

違いのまとめ

  1. ​デザインパターン
    • 特定の問題解決のための再利用可能なテンプレート。
    • 具体的な設計の実装と関わる。
    • 使い方は小規模で、メソッドやクラス設計に重点をおくことが多い。
  2. ​アーキテクチャ
    • 全体的なシステムの構造。
    • 大規模な設計に対応し、異なるコンポーネントの相互作用やシステムの整合性が焦点。
    • 高レベルの計画と指針を提供する。
  3. ​設計
    • システムやソフトウェア開発のための具体的な計画。
    • 実装に向けた細かい詳細や仕様を含む。
    • デザインパターンやアーキテクチャの指針をもとに進められる。
    これらの概念は互いに補完し合っており、効果的なソフトウェア開発のためにはそれぞれの役割と相互作用を理解することが必要です。
kzk4043kzk4043

Container/Presentational

https://zenn.dev/buyselltech/articles/9460c75b7cd8d1

ロジックを責務とするContainer Componentと、UIを責務とするPresentational Componentに分けて実装

  • Containerはスタイルを持たない
  • PresentationalはStateを持たない(UIに関する状態であれば持つこともある)

Next.jsで私が取る構成だと大まかにページコンポがContainerで、各コンポがPresentationalにはなりそう。UIに関する状態ってのはアコーディオンの開閉とか?

kzk4043kzk4043

このパターンと直接は関係ないが、Presentationalの中でもTag自体を拡張したBasicなコンポと、スタイルを持つコンポみたいに分けることが多い気がする。

  • Basicなコンポ=スタイルを持たず、classNameを受け取れる
  • スタイルを持つコンポはclassNameは受け取らず、スタイルを変えたいならPropsとして受け取る
kzk4043kzk4043

ただこれapp routerとRSC出てきてどうなんだろうか…