generated at
2/23/2025, 10:06:41 PM
アプリケーションレイヤ
#設計
#レイヤードアーキテクチャ
WEBアプリケーションや
フレームワーク
固有の関心ごとで、どのアプリ作る上でも大体出てくる
ドメイン
知識は持たない
routesや
Web API
の振り分けを行うController
非機能要件
の知識
エラーハンドリング
大体は専用のライブラリが存在する
自分でつくろうとすると大変
素直にライブラリを利用するとよい
パフォーマンスを追求しはじめると
計算機科学(CS)
の深い知識やアルゴリズムが必要となってくる
ライブラリのお作法にしたがうと利用者は設計と速度が両立したロジックを書ける
ボイラープレート
を減らしてくれる
Rails
はWebアプリ全体を抽象化した
TanStack Query
は
Server State
を抽象化した
キャッシュ管理
はアプリケーションレイヤの一種だと思う
外界の世界や基盤技術の影響を受けやすい
プラットフォーム側の制約とか
インフラ技術は3年程度で新しくなる
歴史的には3年ごとにデータアクセスのテクニックは変更される
このあたりの知識は
技術トレンドの新陳代謝
がはげしいので陳腐化もはやい
技術の進化により抽象度も高まる傾向にある
自身が変化する速度 < 世界が変化する速度
なので
車輪の再発明
はやめておくに越したことはない
息の長いプロダクトではアプリレイヤの
UIの改善、ユースケースの再設計
などの
新陳代謝
に
ドメイン
が巻き込まれないように、
関心事の分離
をする
DDD
とか
オニオンアーキテクチャ
とか
レイヤードアーキテクチャ
とか
ビジネスロジック
:
サービス(Service)
データアクセス
:
Repository
ドメインモデル
:
Entity
ドメインモデルの内部には、永続化にまつわる情報を混入させるべきではない
関連
ETC原則