TCA魔法学入門🪄
by
Naoki Odajima
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
TCA魔法学入門🪄 2024/03/18 TCAわいわいLT会
Slide 2
Slide 2 text
Naoki Odajima ● CyberAgent, inc. Ameba ● @devdazy ● サモランガチ勢🐟
Slide 3
Slide 3 text
TCAって魔法(みたいなコード)多くないですか? ● ビルトインされてる便利な奴らが多すぎる ● 使ってみたらうまく動いた…けどどう動いてる? ● ちょっとだけ正体を知ろう、というのが趣旨 ● あわよくば使っている技術を利用できるようになりたい
Slide 4
Slide 4 text
もくじ ● @Dependency ● _printChanges(_:)
Slide 5
Slide 5 text
もくじ ● @Dependency ● _printChanges(_:)
Slide 6
Slide 6 text
@Dependency ● DIのアクセス部分を担当するProperty Wrapper ● 通常時、テスト時、プレビュー時に合わ せて、勝手に切り替わってくれる ● どうやってる?🤔
Slide 7
Slide 7 text
DependencyContext ● 実行状態を表す DependencyContextが定義さ れている
Slide 8
Slide 8 text
DependencyContext - defaultContext ● Environment Variablesの XCODE_RUNNING_FOR_P REVIEWSの値でプレビュー中 かチェック ● プレビューだけ処理を飛ばした いみたいな時に使える👀
Slide 9
Slide 9 text
DependencyContext - defaultContext ● ProcessInfoのいろんな値で値 でテスト中かチェック ● _XCTIsTestingはpublicなので 利用できる🙌
Slide 10
Slide 10 text
DependencyContext - defaultContext ● SWIFT_DEPENDENCIES_C ONTEXTで、強制的に別の状 態にすることもできる💡
Slide 11
Slide 11 text
DependencyContext - defaultContext ● スキームの編集から Environment Variables を設定可能
Slide 12
Slide 12 text
Dependenciesについては… ● ここまでの内容を包含しためちゃんこ詳しい記事をアイカワさんが公開してらっしゃ います。ぜひ見ましょう!! ● 利用シーンから Dependencies の仕組みを紐解く
Slide 13
Slide 13 text
もくじ ● @Dependency ● _printChanges(_:)
Slide 14
Slide 14 text
_printChanges(_:) ● Reducerにつけるだけで、受け取った ActionとStateの変化(差分)を標準出 力してくれる便利なやつ ● カスタマイズできる?🤔 ● つけたままで本番への影響は?🤨
Slide 15
Slide 15 text
_printChanges(_:) ● 実はprinter: _ReducerPrinter?なる引数がある ● デフォルトでcustomDumpになっており、いつもの出力はこいつのおかげ
Slide 16
Slide 16 text
_printChanges(_:) - _ReducerPrinter ● customDump ○ 受け取ったActionと発生したStateの差分 を出力 ● actionLabels ○ 受け取ったActionのみ出力 ● ただprintを呼んでいるだけなので、な んでもできそう
Slide 17
Slide 17 text
_printChanges(_:) ● プリプロセッサマクロで、DEBUG時に のみ出力されるようになっているた め、本番への影響はほとんどない ● プリンター用のQueueで実行されるた め、デバッグ時の影響もほとんどない
Slide 18
Slide 18 text
おわり ありがとうございました!