👫
NOT A HOTELのSmartHomeアプリで使っている技術の記事まとめ(2022/12)
はじめに
現在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に関連する記事になります。
サウナの室内温度、エアコンの設定状態など、リアルタイム表示する仕組み
リアルタイム表示で使用されているAsyncStreamのテスト
UserDefaultsの使用方法とテストの実装
TCAのテストで担保される網羅性をオフにする、Ehaustivityとの付き合い方
「一定時間何もしなかったら、デフォルトの画面に戻す」という実装に使っているdebounceについて
実装やレビューの時に意識していきたい点が書かれている、TCAのPerformanceというドキュメントについて
DI(Dependencies)の仕組み。ReducerProtocol化を進めるときに、みんな気になるポイント(かも)
おわりに
以上、これらは全てHomeControllerを実装して生まれた知見たちです。
現在、マルチモジュール化+ReducerProtocol化+SwiftConcurrency対応を同時進行で進めていて、今後も知見がたまっていくでしょう。
今に至るまで、先人の知恵を沢山お借りしているので、我々も記事を書いて、得た知見を共有していきたい所存です。
誰かの助けになりますように🙏
Discussion