yujiro's blog

エンジニアリング全般の事書きます

SwiftUI & Combine MVVM サンプル

概要

そろそろSwiftUI & Combine のキャッチアップとMVVM 構成のアーキテクチャについて考察しないといけないなーと思ったのでGW中にノリで色々いじってみた。

下記のような簡易ログイン画面を用意して、SwiftUI & Combine と MVVM + クリーンアーキテクチャ構成で、一通りの雰囲気が掴めるように実装までやってみた。

aft.gif (10.2 MB)

続きを読む

DTO を用意してドメインオブジェクトの流出を防ぐ

先月発売された「ドメイン駆動設計入門」を読んでいる。

www.shoeisha.co.jp

ドメイン駆動設計においては、ドメインオブジェクトを利用するのはアプリケーションサービスに留めるべきで、それより外の世界にドメインオブジェクトを流出させるべきではない、とされる。

続きを読む

オープン・クローズドの原則(OCP)について

Robert C. Martin のCleanArchitecture にはSOLID原則について記載があるが、どの原則もアーキテクチャの観点から論じられている。

「単一責任の原則(SRP)」をコンポーネント向けに言い換えたものが「閉鎖性共通の原則(CCP)」にあたり

「インターフェース分離の原則(ISP)」ををコンポーネント向けに言い換えたものが全再利用の原則(CRP) にあたるのは以前書いた記事でも少し述べた。

bamboo-yujiro.hatenablog.com

「オープン・クローズドの原則」もアーキテクチャの単位で述べられているのだけれど、 まずは理解を深めるために、ここでは一般的なオープン・クローズドの原則(OCP)についてまとめてみようと思う。


続きを読む

CleanArchitecture - 「コンポーネントの凝集性」についてまとめる

CleanArchitecture 第13章「コンポーネントの凝集性」を簡単にまとめる。

コンポーネントとは

CleanArchitecture に簡潔に記載されているので、そのまま引用する。

コンポーネントとは、デプロイの単位のことである。システムの一部としてデプロイできる、最小限のまとまりを指す。Javaならjarファイル、Rubyならgemファイル、.NETならDLLなどがそれにあたる。コンパイル型言語ならバイナリファイル、インタプリタ型言語ならソースファイルになる。

CleanArchitecture 達人に学ぶソフトウェアの構造と設計 第12章「コンポーネント

続きを読む

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSSingleObjectArrayI objectAtIndex:]: index 18446744073709551615 beyond bounds [0 .. 0]'

先日、iOSアプリのクラッシュログで以下が発見された

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSSingleObjectArrayI objectAtIndex:]: index 18446744073709551615 beyond bounds [0 .. 0]'
続きを読む

Kotlin でby キーワードを使ってコレクションオブジェクトを簡単に実装する

コレクションオブジェクトを実装する際、Kotlin だとby キーワードを使って実装をシンプルにすることができます。

続きを読む