開発者たちが既存の Swift リアクティブフレームワークに対する Pledge の価値に疑問を呈する

BigGo Editorial Team
開発者たちが既存の Swift リアクティブフレームワークに対する Pledge の価値に疑問を呈する

Swift 開発者たちは、新しいリアクティブプログラミングフレームワークである Pledge のメリットについて議論しており、多くの開発者が Apple の Combine や SwiftUI の組み込み状態管理などの確立されたソリューションに対する優位性に疑問を投げかけています。Swift アプリケーションにおける状態管理とイベント伝播を簡素化することを目指すこのフレームワークは、Apple エコシステムにおけるリアクティブプログラミングの進化する状況について議論を巻き起こしています。

コミュニティの反応は様々

開発者コミュニティは、既存のソリューションと比較した Pledge の価値提案に対して懐疑的な見方を示しています。Pledge はスレッドセーフな実装、優先度ベースの通知、レート制限などの機能を提供していますが、複数の開発者は、堅牢な代替手段がすでに存在する中で、これらの機能が新しいフレームワークを採用する正当な理由になるかどうかを疑問視しています。

「これは RxSwift/Combine の主要部分だけを取り出して、有用な部分を除外したように見えます。例えば、ネットワーキングの例では明示的なプロパティが必要ですが、私ならこのような場合、Observable を直接返すコードを使用するでしょう。」

この意見は、Pledge が確立されたフレームワークに対して実質的な利点を追加せずに車輪の再発明をしているのではないかという、より広範な懸念を反映しています。一部の開発者は、Apple 自体が新しいマクロベースの Observable フレームワークでは従来の関数型リアクティブプログラミング(FRP)パターンから離れつつあるように見えると指摘し、よりシンプルなアプローチが支持を得ている可能性を示唆しています。

プラットフォーム互換性が差別化要因になる可能性

議論の中で強調された潜在的な利点の一つは、Apple の Combine フレームワークが利用できない環境における Pledge の互換性です。あるコメンターは、Combine が公式にサポートされていない Linux 上の Swift において、Pledge が価値を持つ可能性があると指摘しました。しかし、他の人々はすぐに OpenCombine や CombineX などの既存の代替手段がすでにこのギャップに対応していると指摘しました。

このフレームワークの作成者は、Pledge が主に UIKit 開発をターゲットにしていると説明しました。UIKit では SwiftUI の統合されたアプローチとは異なり、リアクティブな状態管理が組み込まれていません。このポジショニングは、Pledge が古い UI フレームワークで作業している開発者や、さまざまな理由で SwiftUI に移行できない開発者をサポートすることを目指していることを示唆しています。

Pledgeの主な機能

  • スレッドセーフな実装
  • 優先度ベースの通知
  • カスタマイズ可能な配信キュー
  • バッチ更新
  • レート制限(スロットリングとデバウンシング)
  • 関数型オペレーター(map、filterなど)
  • グローバル状態管理

言及されている代替リアクティブフレームワーク

  • Apple の Combine
  • RxSwift
  • OpenCombine
  • CombineX
  • SwiftUI の @Published プロパティラッパー
  • Apple の新しいマクロベースの Observable フレームワーク

リアクティブプログラミングの複雑さに関する懸念

いくつかのコメントは、Swift におけるリアクティブプログラミングアプローチに関するより広範な懸念に触れています。ある開発者は、関数型リアクティブプログラミングで構築された過度に複雑なコードベースから PTSD を抱えていると述べ、特に Kickstarter の MVVM アプローチに言及しました。これは、強力だが潜在的に複雑なリアクティブパターンと、よりシンプルで直接的なアプローチの間の Swift コミュニティにおける継続的な緊張関係を浮き彫りにしています。

この議論は、開発者が特に既存のソリューションと大幅に重複する場合、新しい依存関係の追加についてより慎重になっている成熟したエコシステムを反映しています。Apple がマクロベースの Observable フレームワークのような新しいパターンを導入し続ける中、コミュニティはリアクティビティとシンプルさのバランスを求めているようです。

興味深いことに、議論の中で混乱が見られ、あるコメンターは Pledge をリアクティブプログラミングソリューションではなく認証フレームワークと勘違いしていました。これは、混雑したエコシステムにおいて新しいフレームワークの目的を明確に伝えることの難しさを浮き彫りにしています。

参考: Pledge