👫

NOT A HOTELのSmartHomeアプリで使っている技術の記事まとめ(2022/12)

2022/12/27に公開約1,600字

はじめに

現在NOT A HOTELという会社のSmartHomeチームで、HomeControllerというアプリを開発しているアマゾネスです。
HomeControllerどんなアプリかというと、エアコンや照明など室内環境をコントロールできるスマートホームiPadアプリです。
詳細はこちら → https://news.notahotel.com/p/vol31-not-a-hotel

ちなみに、アプリはNOT A HOTELが販売している建物限定で使用できるアプリなので、非公開配布してます。

2022年10月に本格稼働したばかりのアプリなので、出来たてほやほやです。最近作られたアプリということもあり、TCAやSwiftConcurrencyなど巷で話題の技術が結構使われています。

12月入るまでは「あぁ〜新規事業やってるわ〜」的な超濃密な日々を過ごしておりまして、全く技術記事書けていませんでした。ということで、TCAアドベントカレンダーに便乗して、現在お手伝いしてもらってる@kalupas226と共に、ちょろちょろ書かせていただきました。本記事はそのまとめになります。

記事一覧

大前提として、HomeControllerにはTCAが使われており、以下に紹介する記事は全てTCAに関連する記事になります。

サウナの室内温度、エアコンの設定状態など、リアルタイム表示する仕組み

https://zenn.dev/zones/articles/5f845b065e64f5
https://zenn.dev/zones/articles/5b143c7f2dc177

リアルタイム表示で使用されているAsyncStreamのテスト

https://zenn.dev/kalupas226/articles/634300ae1ca106

UserDefaultsの使用方法とテストの実装

https://zenn.dev/kalupas226/articles/02db56b29b1b0b

TCAのテストで担保される網羅性をオフにする、Ehaustivityとの付き合い方

https://zenn.dev/kalupas226/articles/eb8aaec9915bfe

「一定時間何もしなかったら、デフォルトの画面に戻す」という実装に使っているdebounceについて

https://zenn.dev/zones/articles/9ccff172a3cbf1

実装やレビューの時に意識していきたい点が書かれている、TCAのPerformanceというドキュメントについて

https://zenn.dev/kalupas226/articles/c4128a0f99d07b

DI(Dependencies)の仕組み。ReducerProtocol化を進めるときに、みんな気になるポイント(かも)

https://zenn.dev/kalupas226/articles/25ec066246473e

おわりに

以上、これらは全てHomeControllerを実装して生まれた知見たちです。
現在、マルチモジュール化+ReducerProtocol化+SwiftConcurrency対応を同時進行で進めていて、今後も知見がたまっていくでしょう。
今に至るまで、先人の知恵を沢山お借りしているので、我々も記事を書いて、得た知見を共有していきたい所存です。
誰かの助けになりますように🙏

Discussion

ログインするとコメントできます