のんびり精進

調べた情報などをおすそ分けできれば。

Dart

Freezedの代替方法を考える(Immutability編)

前編では、同一性を判定できる機能を Freezed を使わずにクラスに持たせる方法を確認しました。 kabochapo.hateblo.jp 今回は immutability です。 前回は equatable を使うだけでできるという仮定で検証作業ばかりだったのですが、今回はいくつかの方法を試…

Freezedの代替方法を考える(同一性判定編)

以前に考えていたときに試したコードなどが発掘されたので記事にすることにしました。 まず Freezed について pub.dev 用途 Freezed は Dart のクラスの自作しにくい機能を自動生成によって楽に実現できるパッケージで、様々な機能があります。 同一性(Equa…

例外(Exception)って扱いにくくない?

例外の長い歴史の中で既に語りつくされている気がしますが、既存の情報をあまり見ていないのでわかりません。 記事のカテゴリとして Dart を含めていますが、例外を持つ様々な言語で共通するところがあると思います。 経験など 昨年まで業務で PHP、JavaScri…

Dart/FlutterのローカルDBの比較

モバイル以外にも対応したローカル DB を使いたかったので、複数のパッケージを調べてみました。 Hive を特に詳しく調べたため、そこだけ情報量が多めです。 2022年12月補足(結論) 記事を書いたときは Isar に注目していましたが、現在は Drift に落ち着き…

Dart/Flutterでドメイン駆動設計(DDD)してみた - 実装編

前編である「導入編」の続きです。 まずそちらをざっと一読されることをお勧めします。 kabochapo.hateblo.jp ソースコードは本記事投稿後にたびたび改変しており、記事内容との相違があります。ご了承ください。 github.com 作るアプリについて(ご注意) F…

Dart/Flutterでドメイン駆動設計(DDD)してみた - 導入編

カテゴリ別にメモを管理できるアプリの開発を DDD(Domain-driven design)でやってみたものです。 github.com 二つの記事から成り、この記事はその一つ目です。 導入編(本記事) 解決しようとした問題点や、DDD と関連用語の意味の他、モデリング・レイヤ…

【Dart】シンプルに派生クラスを作る(別名の代わり)

クラスに別名を付けることができれば後述の問題が解決するのですが、今のところできないため、代わりに 元のクラスと機能は同じままで継承するシンプルな方法がないか調べてまとめた記事です。 ※タイトルに「複製」という言葉を使っていましたが、同じものが…

【Flutter】依存オブジェクトの注入

1ヶ月ちょっと前に Flutter の provider というパッケージに関する記事を書きました。 qiita.com そこでは、provider の機能の一つとして「DI の仕組みを提供」と説明しています。 しかし記事を複雑化するのを避けて掘り下げないままにしました。 代わりにこ…

【Dart】Mapの順番(HashMap, LinkedHashMap, SplayTreeMap)

様々な言語によくあるハッシュマップでは順番の概念がなく、その一方で、PHP(連想配列)など一部の言語の実装では順番があったりします。 言語を切り替えて開発したりしばらく使わなかったりすると混乱する部分です。 Dart の Map についてはどうなっている…

【Dart/Flutter】静的解析の強化と注意

静的解析の機能は Dart や Flutter のツールに組み込まれていて、IDE でもプラグインで提供されていますが、そのまま使っても足りないことがわかりました。 例えば、const を付けるのが望ましい箇所であっても Android Studio や VS Code は教えてくれません…