[Swift]TCA初心者がアプリを作ってみて、役に立ったこと、つまづいたこと
概要
TCAを触ったことがない状態から、アプリを作成してリリースするまでのことを記事にした。
- TCAの学習で役に立った資料
- TCAを使ってみてつまずいたこと
- TCAを使ってみてよかったこと
環境
- TCA v1.13.1
- Xcode: v15.3
作ったアプリ
タイムライン
TCAの学習を開始して、リリースするまで3ヵ月(10Week)かかった
- Week1~Week3: TCAの学習
- Week4~Week10: アプリの開発
学習で役に立った資料
学習編
TCAのREADME
TCAの思想や必要な資料へのリンクなどが書かている。
TCAのチュートリアル
TCAの雰囲気に触れる。
TCAのリポジトリの SwiftUICaseStudies
TCAの各要素(State, Action, Reducer)やそれをViewに組み合わせる方法などを基礎を学べる。
Viewの分割やNavigationのサンプルもあって、アプリを開発するために必要な情報を得ることができた。
TCAのリポジトリのサンプルアプリ
TCAのリポジトリには、サンプルアプリが7個ある。アプリを作るときに、実際にTCAをどうやって使用するかを学べた。
ビルドできるため実装と動作を比べながら学べる。
TCAで作られた大きめのゲームアプリ
大きめのアプリを作成するときの実装例をみれる。
Dependencyの作り方やモジュールの分割の方法が学べた。
上記すべて、TCAを開発しているPointfree社が提供している資料やリポジトリ。資料の充実度が分かる!(◎_◎)
開発編
個人的な Effective TCA
ベストプラクティスなどがまとめてあって、何回も読んだ。
実装で困ったときに、答えが見つかったりする。
Swiftによるアプリ開発のためのThe Composable Architectureがすごく良いので紹介したい
TCAについてのこと、つまずきやすいポイント、参考資料へのリンクなどまとまって、とても良い
公式ドキュメント
困ったときの答えは、だいたいここにある。
特に、NavigationやPerformanceは、大事なことが書いてあった。
英語なのがしんどいけど。
TCAを使ってみてつまずいたこと
Child ViewをParent Viewから分割する方法
- Examples-01-GettingStarted-Composition-TowCountersを見ると、答えがわかった。
-
Scope
を使用するとできる。 - Viewを分割することで、Reducerの中身がスッキリする、また、再利用性も高くなる。
Navigation
- Navigationも
State
で管理するというのが、初見で難しかった。 - 公式DocumentのNavigationの章を読むことで、理解した。(公式ドキュメント)
- 自分でもまとめてみた
知らないMacroがたくさんある
-
@Reducer
、@Presents
みたいな、TCAで定義されているマクロがたくさんでてくる。 - 初めのうちは、よくわらないので、とりあえず呪文だと思うことにした。
- 慣れてきたら、定義元に実装を見に行くとよかった。コード以外にコメントも丁寧に記述してあって、理解の助けになった。
TCAを使ってみてよかったこと
サンプルプロジェクトがたくさんある
上でも書いたように、TCAを開発しているPointfree社から、たくさんのコードやサンプルプロジェクトが提供されている。
実装に困ったときなどは、だいたいサンプルプロジェクトのコードを読みに行くことで、答えが見つかる。
実装方針やベストプラクティスが公式から提供されているため、使用する側からすると、やりやすい。
ViewとLogic(Reducer)の部分を分離できる
制約として、状態(State)を変更するときは、Viewではなく、Reducerで行う必要がある。
厳しい制約だが、そのおかげで、ViewとLogicの分離ができ、ロジックの理解や変更がしやすいコードになった。
そのほか、感想
学習コストが少し高いと感じたが、資料が充実していて、大きくつまずくことはなかった。。
Macro
のおかげて、定型的なコード(boilerplate)をあまり書かなくて済むため、書いていてあまりストレスがなかった。
Discussion