単純な View に対してのみ Preview を実装することを検討する。 #18
YusukeHosonuma
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Overview
SwiftUI ではプレビュー機能が API として統合されており、PreviewProvider を実装することで任意の View に対してプレビューを提供することができる。
これは
@ObservedObject
や@Environment
、@EnvironmentObject
などを使ったケースも例外ではなく、基本的には作成したすべての View に対してプレビューを提供することができると考えられる。ただし、そうしたインタラクティブな振る舞いをする View は、単純に値を受け取って表示するだけの View よりもプレビューの実装コストが高くなり、場合によってはプレビューを実現するための(プロトコルなどを用いた)抽象化が必要になるケースもある。
また、そうしたプレビューは API 変更の影響で壊れやすく、その修正コストもそれなりにかさむ。かといって、放っておけばプレビューはプロジェクト全体で利用できなくなり、実質的にプレビューは機能しなくなる。
チーム開発などにおいてはとくに、どこまでのプレビューを用意するのが適切であるのかよく検討すること。
Discussion
経験則的には細かなレイアウトを複数パターンで確認したいと言ったような、値(およびクロージャ)を受け取るだけの単純な View に対してのみ実装するという方針が、ベストではないかと感じている。
テストコードと同様、度を過ぎたプレビュー実装は負債にしかならないため、バランスをよく考えて実装し、時には捨てる勇気を持つこと。
プレビューはあくまで生産性を高める手段であって、目的ではないことを忘れずに居ること。
Example
以下のアプリでは、価値があるであろう View に対してのみにプレビューを実装をしている。
https://github.com/YusukeHosonuma/Swift-Evolution-Browser
ただし、小規模で個人開発であるという事実も強く影響しているので参考程度まで。
Reference
Beta Was this translation helpful? Give feedback.
All reactions