UseCase

UseCaseは、ビジネスロジックを記述するためのモジュールです。 UseCaseは一般的に、Entityを利用して、ビジネスロジックを実行して、結果を返したり、Repositoryを利用して、デー…

設計Wiki

2026年の目標

あっという間に、2026年になりました。 去年1年間は、ブログやOSSなどの無駄なアウトはなるべく減らして、自分のためのアプリを作ったり、アーキテクチャの研究をしたり、デザインシステムを作ってみたり…

ブログ

Entity

Entityとは、Idによって同一性を保証するクラスのことです。 なぜEntityが必要なのか? 一般的なアプリケーションでは、データが変化するということが頻繁に起こります。 たとえば、クラスであれ…

設計Wiki

Repository

RepositoryとはEntityの永続化を隠蔽するためのモジュールです。 なぜRepositoryが必要なのか? Repositoryを使用することで、ビジネスロジックを記述する際に、どのDBを…

設計Wiki

ビジネスロジック

ビジネスロジックとは、アプリケーションで扱う、そのサービスや業務が“どういうルールで動くか”を表した処理のことです。 ビジネスロジックを実現することが、アプリケーションの主な目的となります。 ビジネ…

設計Wiki

いいね問題

いいね問題 モバイルアプリのようにユーザーとのインタラクションが多い場面で、ページ間での情報が一致しない問題がしばしば発生します。この現象は俗に「いいね問題」と呼ばれることもあります。 いいね問題と…

Wikiプログラミング

PageとView

UIを何らかの要素にモジュール分割したい場合に、よくPageとViewという概念を使います。 UIを書く際にどのような単位でモジュール化するかを予め決めておくと、〇〇Pageや〇〇Viewなどサフィ…

プログラミング設計Wikiプレゼンテーション層

Result型

Dart言語には、例外とエラーという概念があります。これらはどちらもされる対象であり、プログラムを停止させることができるものですが、厳密には異なるものとされています。 例外は、するべき対象です。つま…

プログラミング設計Wikiドメイン層

メタデータ

データは通常DBに格納するのが一般的です。しかし、データが大きくてデータの本体をDBに永続化してしまうと、パフォーマンスやコスト的によろしくないといった場合もあります。 その場合、データ本体はオブジ…

Wikiプログラミング設計ドメイン層

ドメインプリミティブ

ビジネスロジックを記述する際に、処理がコードの至る所に散らばってしまい、データや計算の整合性が取れなくなってしまうことがあります。 例えば、長さを扱うアプリケーションで単純に型で長さを扱った場合、メ…

プログラミング設計Wikiドメイン層