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
はじめに Combineを使った非同期処理として、URLSessionは標準ライブラリが提供されておりますが、Firestoreは自分で実装する必要があります。 このあたりの日本語での情報量が、URLSessionと比較して、未開拓に感じましたので、自分が実装したサンプルコードを記事にしてみました。 今回、書いた処理は、Firestoreからの取得・追加・削除の処理です。(CRUDの中では更新がありませんが、更新処理は追加処理とほぼ変わらないため割愛します。) 追記(2022/03/01) @GleamingCake さんからコメント頂き、知ったのですが、公式リポジトリ内でコミュニティベースのCombineをサポートするAPIが実装されているようです。今回の記事で私が実装した方法とは少し異なりますが、同じユースケースが実現可能なメソッドがありましたので、リンクを載せさせていただきます。 な
スレッドについて .receive(on: DispatchQueue.main)を用いるとメインスレッドで受けれるので良さそうである。 .receive(on: RunLoop.main)は、スクロール中に止まるらしい(Timerがスクロール中に止まるのと同じく) UIControlをCombineで購読したい デフォルトで用意されているものはない。 CombineCocoaを利用すればできる模様。 UIKitでもCombineしたい!を叶えるCombineCocoaを試してみる もしUIKitでUIを作りCombineで非同期処理を行うなら絶対にCombineCocoaの導入を検討するべきではないだろうか CombineCommunity/CombineCocoa 自分でPublisher, Subscriptionを作っても良い。 zafarivaev/UIControl+Combi
# プログラミング言語Swiftとは # Swiftとは Swiftは2014年にAppleが発表したオープンソースのプログラミング言語です。iOS、macOS、iPadOS、watchOS、tvOS向けのアプリケーション開発、またサーバー向けのアプリケーション開発も可能です。iOSやmacOSのアプリ開発において、これまではObjective-Cという言語が使われてきました。Objective-Cは初学者にとって複雑で学習コストが高い言語でしたが、Swiftは見た目のシンプルさとモダンな言語の特徴を取り入れることにより初学者にも学習しやすいように開発されました。 # Swiftの特徴 Swiftは次のような特徴があります。 # モダンな設計 Swiftはモダンなプログラミング言語にある特徴を取り入れ、読みやすくメンテナンスしやすいように設計されています。セミコロンの排除や、型推論、クロー
はじめに Combineを使った通信まわりのテストコードの情報がまだ少ないように感じましたので、作ったサンプルアプリのコードを載せてみようと思い、書いてみました。 今回のアプリのアーキテクチャは、MVVMです。 この記事でわかること CombineでURLSessionを使ったリクエストを書いたときのテストコードの書き方 MVVMで実装したときのテストコード Modelのテストよりも、個人的にはViewModelのテストのほうが、Combine特有の実装が必要だと思うので、ViewModelの方が重要かなと思います。 Model層のテスト 今回のModel層は、実際にAPIに対してリクエストするところが該当します。 コードには、すべてCombineをimportしてください。 アプリのコード protocol GithubAPIClientProtocl: AnyObject { func
はじめに Combineを学習していると、SwiftUIとの組み合わせの実装をよく見るのですが、UIKitでも全然使えるとのことで、今回は、UIKitとSwiftUIで同じ動きをするサンプルアプリを作って、実装方法の違いや実装中に感じたことを記事にしました。 今回は、MVVMで実装しています。 当初、ViewModelはUIKitとSwfitUIで異なる実装をしていたのですが、@links_2_3_4 さんからアドバイスを頂いて、ViewModelも共通化しました。 結論 僕の経験値はUIKit>>>>>SwiftUIで、圧倒的にUIKitの経験の方が多いですが、 Combineを使った実装は、個人的にはSwiftUI>UIKitでSwiftUIのほうが書きやすかったです。 実装時間もSwiftUIのほうが早く、今後もう少し機能を追加したいってなった時にSwiftUIのほうが、実装のイメー
目的 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,
目的 ・Combine を理解すること ・他の人の解説ではなく、実際のWWDC2019の動画をみて Combine についてまとめること ・英語の動画から技術を学ぶこと なぜCombineなのか? ・Appleが提供する標準ライブラリであり、今後使用率が上がると考えているから ・WWDC2019で発表された比較的新しいライブラリだから ・発表時期から、SwiftUI との相性が良いと考えたから ※今後、Combineを学んだ後、RxSwiftについても学びたいと思う。 参考文献 【Combine の概要】 【Combine のコード】 【Combine の概要】 WWDC2019で初めて登場した「Combine」というフレームワークについての話。 話をしているのは Foundationチームのマネージャーである Tony Parker。 ※Foundation というのは Swift の標
はじめに 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
初めに 個人開発アプリをリリースしたが、今後の追加実装のことを考えると強制アップデートを実装したいと考えた。 隙間時間に開発しているため、可能な限り簡単にすましたかった。特に今回はバックエンドのサーバがないアプリだったため、別途サーバを用意するなどはしたくなかった。 そこで、【iOS】半強制アップデートの仕組みをカジュアルに実装するという記事を見つけ、この方法ならアプリ側だけで実装できると思い、採用に至った。 強制でなく、半強制な理由は、頻繁にアップデートをした時に強制アップデートの場合はユーザの負担になると考えたため。 ストアのアップデートを公開すれば半強制アップデートも自動で反応するので運用も楽。 参考にした記事ではAlamofireとUIKitを利用していたが、自分のアプリに合わせてSwiftUIとCombineで書き直した。 半強制アップデートの仕組み appleが用意しているap
この記事は,フラー株式会社 Advent Calendar 2021 の 20日目の記事です。 19日目の記事は @ujikawa1026 さんによる 「コーディングしない」という不安に対してマネージャーはどう向き合うか でした。 はじめに こんにちは!フラーでiOSエンジニアのアルバイトをしている前澤です。 これまでのiOS開発では主にUIKitとRxSwiftを使ったMVVM設計パターンによる開発をしてきました。一方で比較的新しいフレームワークであるSwiftUI, Combineについてはほとんど触ったことがありませんでした。 ただ、SwiftUIのコードベースで宣言的にUIを実装していける点が魅力的だと感じていました。また、CombineはApple標準のリアクティププログラミングのフレームワークでこちらもぜひ使ってみたいと思ってました。 そこで今回SwiftUI + Combin
前提 MVVMの理解のためにログイン画面を作ります。 UnitTest, UITestも簡単に書いてみます。 環境 macOS 11.4 xcode13.1 swift5 できたもの 参考 MVVM以外にも色々なアーキテクチャが実装例付きで説明されていてわかりやすい書籍です。 MVVMの実装例の記事は色々ありますがこれが一番わかりやすかったです。 実装 M: Model Modelの説明として「iOSアプリ設計パターン入門」にこう記載されています。 Model は UI に関係しない純粋なドメインロジックやそのデータを持ちます。 今回は入力されたメールアドレスとパスワードのValidationを行うModelを作ります。 ログイン機能はサーバーサイドにHTTPRequestを送って認証・認可を行いますが そのようにAPIを使う場合もModelになると思います。 enum LoginVali
この記事は、ニフティグループ Advent Calendar 2021 13日目の記事です。 ニフティライフスタイル所属エンジニアから3人目の投稿です! iOSアプリエンジニアなのでiOSアプリについての記事を投稿します。 はじめに WWDC 2019にてCombineが発表されて早2年、ようやくiOS12のサポートが切れて自分のプロダクトにCombineが導入できる!って方もいるのではないでしょうか... 私が携わっているニフティ不動産アプリもついにiOS13以上サポートになり、今年初めてCombineをプロダクトコードに導入しました。 DelegateやClosureを駆使して実装してきた私にとって、Combineの宣言的な概念や実装を理解するのは結構大変でした。 今回は自分の復習も兼ねて、Combineをざっと学んでみたけどこんな時にどんな文法を使えば良いんだっけ?というときに使える
やること 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の機能 @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の他の例については、次の記事もご覧ください。 [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つのメソッドです。最初のメソッドは
はじめに サンプルの概要 仕様に関して 開発環境に関して APIクライアントの実装に関して 実装方針に関して 全体の実装 APIクライアント Session.swift User.swift Request.swift SearchUsersRequest.swift ItemsResponse.swift その他 SearchUserView.swift UserListRowView.swift ImageView.swift SearchUserViewModel.swift SearchUserModel.swift ImageLoader.swift ImageCache.swift SampleApp.swift おわりに 参考 はじめに "Processing URL Session Data Task Results with Combine"(https://develo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く