タグ

Combineに関するmiguchiのブックマーク (25)

  • SwiftUIを使ったアプリを1年運用してみてわかったこと|株式会社カウシェ

    記事は、2021年9月にiOSDC Japan 2021で発表した「SwiftUIで使ったアプリを1年運用してみてわかったこと」のトークセッションを文字起こししたものです。実際のセッション動画はこちら) こんにちは!カウシェの@akifumiです。 SwiftUIが発表され早2年が経ちました。 そんなSwiftUIですが、番アプリで採用されているケースはまだまだ少ないかと思います。 そんな中、積極的に新しい技術を取り入れようと、私たちが2020年9月にリリースした、シェア買いアプリ「カウシェ」は、大部分をSwiftUI, Combineを活用して作っています。 今日は、リリースから1年運用した今、 SwiftUI, Combineを活用し、どのようなアーキテクチャで開発・運用しているのか SwiftUIで開発中に問題となった点 運用している中でわかった良かった点・悪かった点 などを紹

    SwiftUIを使ったアプリを1年運用してみてわかったこと|株式会社カウシェ
  • Combine初心者講座 -SwiftUIの相棒を使いこなそう- - bravesoft

    こんにちは。和尚です! 明日はクリスマスイブ? 今年も残すところ数日。。。一年ってあっという間ですね(ジャネーの法則) さてさて、今回のブログですがApple公式の非同期フレームワークである「Combine」を使った実際の機能の組み方についての紹介ブログとなります。 SwiftUIでアプリを作り始めたはいいけど、Web APIの呼び出し方がわからなかったり、フォームバリデーションってどうやってやるんだろう。と思ってる人は多いと思います。実際にSwifUIの参考書はUIの作り方までしか紹介していないものも多く、そのような参考書を買った場合、リリースできるようなアプリを作成することは難しいです。このブログはそういった悩めるSwiftUI初心者層向けの記事となります。 この記事を読んで得られるもの Combineについての基礎知識 WebAPIの呼び出し方の基礎 フォームバリデーションの作り方の

    Combine初心者講座 -SwiftUIの相棒を使いこなそう- - bravesoft
  • Swift Combine初めの1歩 - Qiita

    概要 Swift初心者でCombineを少し触れたい人へ。 簡単なコードを説明します。 今日の例 今日はこれがわかるようになるのが目標! わからなくてもOK。後で説明します。 わかった人は読まなくて良いです。 import Combine let a = CurrentValueSubject<Int, Never>(3) let b = Just(1) let publisher = b.combineLatest(a).map{b,a in a + b} publisher.sink{ added in print(added) } a.send(10)

    Swift Combine初めの1歩 - Qiita
  • SwiftUI x Combineのメモリリークを防ぐ3つのTips - スタディサプリ Product Team Blog

    こんにちは!iOSエンジニアの @chuymaster です!私たちのチームが2年近くかけて開発した 「スタディサプリ 中学講座」 のiOSアプリがようやくリリースされました!🎉🎉 いやぁ〜みんなで頑張りましたよ!中学生のお子様がいらっしゃる方はぜひお試しください! ところで、皆さんはメモリリークに気をつけていますか?「スタディサプリ 中学講座」はMVVMアーキテクチャで、SwiftUIとCombineを使って開発をしています。SwiftUIのViewはとても軽いのでメモリ管理についてはあまり意識しなくてもいいですね。しかし、ViewModel の方は気をつけなければ循環参照が発生して、メモリリークが起きてしまうことがあります。それを防ぐ3つのTipsを、この記事で紹介します。ぜひ試してみてください! 前提 記事で紹介したコードと現象は、Xcode 13.2.1 / iOS 15.2

    SwiftUI x Combineのメモリリークを防ぐ3つのTips - スタディサプリ Product Team Blog
  • SwiftUIとCombineを使ったMVVMの実装 - トレタ開発者ブログ

    この記事は トレタ Advent Calendar 2019 の23日目の記事です。 こんにちは。iOS & Androidエンジニアの山口です。 トレタでは、主にトレタnowの開発を行っています。 これまで、UIKit、RxSwift(RxCocoa)を使ったMVVMアーキテクチャで実装することが多かったこともあり、 SwiftUI、Combineを使った場合にはどう書けばよいか考えてみました。 なお、この記事はSwiftUIを使う際に重要なポイントとなる PropertyWrappersやDynamicMemberLookup、それらを利用したObservedObjectやBindingについて の知識がある前提で記述しています。 ViewModel Protocol の定義 早速ですが、コードから説明していきます。 まず、すべてのViewModelが準拠すべきシンプルなProtoco

    SwiftUIとCombineを使ったMVVMの実装 - トレタ開発者ブログ
  • GitHub - Alamofire/Alamofire: Elegant HTTP Networking in Swift

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - Alamofire/Alamofire: Elegant HTTP Networking in Swift
  • 【Swift】Combine ✕ Firestore ✕ Codableで通信処理を書く(取得・追加・削除の処理) - Qiita

    はじめに Combineを使った非同期処理として、URLSessionは標準ライブラリが提供されておりますが、Firestoreは自分で実装する必要があります。 このあたりの日語での情報量が、URLSessionと比較して、未開拓に感じましたので、自分が実装したサンプルコードを記事にしてみました。 今回、書いた処理は、Firestoreからの取得・追加・削除の処理です。(CRUDの中では更新がありませんが、更新処理は追加処理とほぼ変わらないため割愛します。) 追記(2022/03/01) @GleamingCake さんからコメント頂き、知ったのですが、公式リポジトリ内でコミュニティベースのCombineをサポートするAPIが実装されているようです。今回の記事で私が実装した方法とは少し異なりますが、同じユースケースが実現可能なメソッドがありましたので、リンクを載せさせていただきます。 な

    【Swift】Combine ✕ Firestore ✕ Codableで通信処理を書く(取得・追加・削除の処理) - Qiita
  • Combine(Swift)に関しての特に参考になった知見 - Qiita

    スレッドについて .receive(on: DispatchQueue.main)を用いるとメインスレッドで受けれるので良さそうである。 .receive(on: RunLoop.main)は、スクロール中に止まるらしい(Timerがスクロール中に止まるのと同じく) UIControlをCombineで購読したい デフォルトで用意されているものはない。 CombineCocoaを利用すればできる模様。 UIKitでもCombineしたい!を叶えるCombineCocoaを試してみる もしUIKitUIを作りCombineで非同期処理を行うなら絶対にCombineCocoaの導入を検討するべきではないだろうか CombineCommunity/CombineCocoa 自分でPublisher, Subscriptionを作っても良い。 zafarivaev/UIControl+Combi

    Combine(Swift)に関しての特に参考になった知見 - Qiita
  • 【Swift】Combineで作るアプリのテストコードを書いてみた - Qiita

    はじめに Combineを使った通信まわりのテストコードの情報がまだ少ないように感じましたので、作ったサンプルアプリのコードを載せてみようと思い、書いてみました。 今回のアプリのアーキテクチャは、MVVMです。 この記事でわかること CombineでURLSessionを使ったリクエストを書いたときのテストコードの書き方 MVVMで実装したときのテストコード Modelのテストよりも、個人的にはViewModelのテストのほうが、Combine特有の実装が必要だと思うので、ViewModelの方が重要かなと思います。 Model層のテスト 今回のModel層は、実際にAPIに対してリクエストするところが該当します。 コードには、すべてCombineをimportしてください。 アプリのコード protocol GithubAPIClientProtocl: AnyObject { func

    【Swift】Combineで作るアプリのテストコードを書いてみた - Qiita
  • 【Swift】CombineをUIKitとSwiftUIで使うときの実装を比較する - Qiita

    はじめに Combineを学習していると、SwiftUIとの組み合わせの実装をよく見るのですが、UIKitでも全然使えるとのことで、今回は、UIKitSwiftUIで同じ動きをするサンプルアプリを作って、実装方法の違いや実装中に感じたことを記事にしました。 今回は、MVVMで実装しています。 当初、ViewModelはUIKitとSwfitUIで異なる実装をしていたのですが、@links_2_3_4 さんからアドバイスを頂いて、ViewModelも共通化しました。 結論 僕の経験値はUIKit>>>>>SwiftUIで、圧倒的にUIKitの経験の方が多いですが、 Combineを使った実装は、個人的にはSwiftUI>UIKitSwiftUIのほうが書きやすかったです。 実装時間もSwiftUIのほうが早く、今後もう少し機能を追加したいってなった時にSwiftUIのほうが、実装のイメー

    【Swift】CombineをUIKitとSwiftUIで使うときの実装を比較する - Qiita
  • 【Swift × Combine】Combine入門 ①【コードあり】 - Qiita

    目的 Combineとは何かを学ぶこと 「Combineを使ってミニアプリを作れる」くらいのレベルになること 目次 1 : Combineとは 2 : 文字列の値を渡す 3 : 2つ以上の受け取り先を用意する 4 : store() : 複数のSubscriptionをまとめて保持する 5 : assign : 値の代入 1 : Combineとは Appleが提供しているSwiftのフレームワーク。 オブジェクトからオブジェクトに何かしらのイベントを伝える仕組み を提供する。 (イベントの例 : API通信,アプリ内で発生した状態変化 等) 2 : 文字列の値を渡す プログラム import UIKit import Combine // イベントの送受信を仲介 // イベントは「文字列を渡して表示させる」 let subject = PassthroughSubject<String,

    【Swift × Combine】Combine入門 ①【コードあり】 - Qiita
  • 【swift Combine】WWDC2019 から Combine についてまとめてみた - Qiita

    目的 ・Combine を理解すること ・他の人の解説ではなく、実際のWWDC2019の動画をみて Combine についてまとめること ・英語の動画から技術を学ぶこと なぜCombineなのか? ・Appleが提供する標準ライブラリであり、今後使用率が上がると考えているから ・WWDC2019で発表された比較的新しいライブラリだから ・発表時期から、SwiftUI との相性が良いと考えたから ※今後、Combineを学んだ後、RxSwiftについても学びたいと思う。 参考文献 【Combine の概要】 【Combine のコード】 【Combine の概要】 WWDC2019で初めて登場した「Combine」というフレームワークについての話。 話をしているのは Foundationチームのマネージャーである Tony Parker。 ※Foundation というのは Swift の標

    【swift Combine】WWDC2019 から Combine についてまとめてみた - Qiita
  • 【Swift】UIKit × CombineでViewとViewModelを分けてみた - Qiita

    はじめに FatなViewControllerを生成してしまったので、Combineを使いViewとViewModelに分けてみました。 開発環境 Xcode 13.2.1 Swift 5.5.2 Combineって(使ったものだけざっくりと) Combineを使うと イベント処理のコードを一元化し、 ネストしたクロージャや規約ベースのコールバックといった面倒なテクニックを排除し、 コードを読みやすく、保守しやすくすることができる。 CurrentValueSubjectって 値を保持して、値が変わるたびに新しい要素を公開する 保持した値は、.valueで取得できる final class CurrentValueSubject<Output, Failure> where Failure : Error

    【Swift】UIKit × CombineでViewとViewModelを分けてみた - Qiita
  • SwiftUIとCombineで半強制アップデートを実装する - Qiita

    初めに 個人開発アプリをリリースしたが、今後の追加実装のことを考えると強制アップデートを実装したいと考えた。 隙間時間に開発しているため、可能な限り簡単にすましたかった。特に今回はバックエンドのサーバがないアプリだったため、別途サーバを用意するなどはしたくなかった。 そこで、【iOS】半強制アップデートの仕組みをカジュアルに実装するという記事を見つけ、この方法ならアプリ側だけで実装できると思い、採用に至った。 強制でなく、半強制な理由は、頻繁にアップデートをした時に強制アップデートの場合はユーザの負担になると考えたため。 ストアのアップデートを公開すれば半強制アップデートも自動で反応するので運用も楽。 参考にした記事ではAlamofireとUIKitを利用していたが、自分のアプリに合わせてSwiftUIとCombineで書き直した。 半強制アップデートの仕組み appleが用意しているap

    SwiftUIとCombineで半強制アップデートを実装する - Qiita
  • SwiftUI + CombineでMVVMサンプルアプリを作ってみた! - Qiita

    この記事は,フラー株式会社 Advent Calendar 2021 の 20日目の記事です。 19日目の記事は @ujikawa1026 さんによる 「コーディングしない」という不安に対してマネージャーはどう向き合うか でした。 はじめに こんにちは!フラーでiOSエンジニアのアルバイトをしている前澤です。 これまでのiOS開発では主にUIKitとRxSwiftを使ったMVVM設計パターンによる開発をしてきました。一方で比較的新しいフレームワークであるSwiftUI, Combineについてはほとんど触ったことがありませんでした。 ただ、SwiftUIのコードベースで宣言的にUIを実装していける点が魅力的だと感じていました。また、CombineはApple標準のリアクティププログラミングのフレームワークでこちらもぜひ使ってみたいと思ってました。 そこで今回SwiftUI + Combin

    SwiftUI + CombineでMVVMサンプルアプリを作ってみた! - Qiita
  • 【SwiftUI × Combine】ログイン画面を作ってみる MVVM編 - Qiita

    前提 MVVMの理解のためにログイン画面を作ります。 UnitTest, UITestも簡単に書いてみます。 環境 macOS 11.4 xcode13.1 swift5 できたもの 参考 MVVM以外にも色々なアーキテクチャが実装例付きで説明されていてわかりやすい書籍です。 MVVMの実装例の記事は色々ありますがこれが一番わかりやすかったです。 実装 M: Model Modelの説明として「iOSアプリ設計パターン入門」にこう記載されています。 Model は UI に関係しない純粋なドメインロジックやそのデータを持ちます。 今回は入力されたメールアドレスとパスワードのValidationを行うModelを作ります。 ログイン機能はサーバーサイドにHTTPRequestを送って認証・認可を行いますが そのようにAPIを使う場合もModelになると思います。 enum LoginVali

    【SwiftUI × Combine】ログイン画面を作ってみる MVVM編 - Qiita
  • こんな時どう書くの?初級者向けSwift Combineチートシート - Qiita

    この記事は、ニフティグループ Advent Calendar 2021 13日目の記事です。 ニフティライフスタイル所属エンジニアから3人目の投稿です! iOSアプリエンジニアなのでiOSアプリについての記事を投稿します。 はじめに WWDC 2019にてCombineが発表されて早2年、ようやくiOS12のサポートが切れて自分のプロダクトにCombineが導入できる!って方もいるのではないでしょうか... 私が携わっているニフティ不動産アプリもついにiOS13以上サポートになり、今年初めてCombineをプロダクトコードに導入しました。 DelegateやClosureを駆使して実装してきた私にとって、Combineの宣言的な概念や実装を理解するのは結構大変でした。 今回は自分の復習も兼ねて、Combineをざっと学んでみたけどこんな時にどんな文法を使えば良いんだっけ?というときに使える

    こんな時どう書くの?初級者向けSwift Combineチートシート - Qiita
  • 【SwiftUI × Combine】さくっと無限スクロールを実装する - Qiita

    やること SwiftUIとCombineを用いて無限スクロールを実装します。 このような仕様のアプリを作ってみました。 1. TextFieldで何かしら検索を行なって、結果をリストに格納し、表示する 2. スクロールが終わりそうなときに追加のコンテンツを読み込み、リストに追加し、表示する 2の部分について書いていきます。 実際にはAPIを呼ぶことを想定していますが 今回は無限スクロールをどうやって実現するのかという点に絞ります。 環境 macOS 11.4 xcode13.1 swift5 できたもの 無限スクロールの記事を書きました。 スクロールバーをよくみないとわからないかも。。。 【SwiftUI × Combine】さくっと無限スクロールを実装する #Qiitahttps://t.co/SsedGsNrcZ pic.twitter.com/feDFyHzl9S — Yusuke

    【SwiftUI × Combine】さくっと無限スクロールを実装する - Qiita
  • SwiftUIの機能 @State, @ObservedObject, @EnvironmentObjectの違いとは| 開発者ブログ | 株式会社アイソルート

    ホーム> 開発者ブログ> SwiftUIの機能 @State, @ObservedObject, @EnvironmentObjectの違いとは 「SwiftUIの機能 @State, @ObservedObject, @EnvironmentObjectの違いとは」 SwiftUIにて登場する@State, @ObservedObject, @EnvironmentObjectの違いとは? それぞれがどういったもので、どの場面で利用できるのかを解説します。 イントロ こんにちは。モバイルソリューショングループのyamazaki.hです。 WWDC 2019で発表されたフレームワークSwiftUI。最近になってTutorialを実践しています。 SwiftUI Tutorialの実践についてはide.tさんの記事がありますので、よければこちらもどうぞ。 SwiftUIチュートリアルをやって

  • Combine入門 | Combineを使ってネットワーク接続する方法 | アールケー開発

    この記事では、Combineを使ってネットワークアクセスする方法を解説します。 Combineが初めての方やCombineの他の例については、次の記事もご覧ください。 [clink url=”https://www.rk-k.com/archives/3937″] DataTaskを実行するPublisherを作る Combineを使ってネットワークアクセスするには、DataTask用のPublisherを作ります。Publisherを作るためのメソッドは以下の2つです。 func dataTaskPublisher(for: URL) -> URLSession.DataTaskPublisher func dataTaskPublisher(for: URLRequest) -> URLSession.DataTaskPublisher 引数が異なる2つのメソッドです。最初のメソッドは

    Combine入門 | Combineを使ってネットワーク接続する方法 | アールケー開発