環境で動作確認したものです。正式版では動作が変わる可能性もあります。(うまく動作しない場合は、シュミレータやXcodeを再起動したりするとうまくいきます。)前書き過去に以下のような記事を上げていましたが、そのCombine版になります。[Swift]ObjectMapper+RxSwiftを実装した備忘録[Swift]Alamofire+RxSwift+CodableでAPIクライアントを作るそのまんま置き換えというのは、厳しい部分がありましたがなんとか同じような書き方に集約しております。Combineについては【iOS】Combineフレームワークまとめを見ていただくのが早いかと思います。(手軽に試すならPodがおすすめ)をインストールしてください。余談(Alamofireをインストールしていることに関して)URLSession使うのにAlamofireを入れるんかい?という疑問が来そうなので、記載しておきます。[Swift]Alamofire+RxSwift+CodableでAPIクライアントを作るに全く同じ記載があるので省略します。3.リクエスト・レスポンスの作成こちらも先の記事内に同様の記載あるので、必要ない方は読み飛ばして大丈夫です。レスポンスモデルが違うので一応記述しています。例として、APIを叩くと以下のレスポンス(Json)が返ってくるとする。]}上記のJsonからレスポンスを作成。Int}2リクエストの作成[2]で作成したプロトコルに適応するリクエストになるよう作成。}}余談こちらのMyjsonというとサービスを使うと、指定したjsonをhttpsで返してくれるURLを発行してくれるので、サクッと試したい方はお使いください。4.ネットワーククライアントを作成1DataTaskPublisherに関してURLSessionに用意されたDataTaskPublisherを用いることで比較的きれいに書くことができます。Subscriptionとかを意識する必要があり、結構めんどくさいです。DataTaskPublisherでその辺をまるっと考えなくて済むのはありがたい感じです。(細かいところ処理わけしたいとかある場合は、結局自前でやることになるかと思います)2コード実際に作成したコードは以下になります。}}備考メソッドの説明を記載しておきます。ステータスコードの判定。実際に使用した際の記述例になります。sinkに関して成功時でもreceiveValueで値を受け取った後に、receiveCompletionのfinishedに入ってくる点に注意。流れが逆になってる感じが若干違和感ですが、プログレスを消す処理などは成功・失敗共にここで一元管理できそう。Disposebagだと思ってみると上記のコードもスーッと入ってこないでしょうか?やっていることは同じです。&cancellables)~省略~こちらのほうがより直感的で、かつ必要に応じてcompletionのクロージャをセットすれば良い仕組みになっている。(あくまでも個人的な好み)5.オプション[4]のネットワーククライアント内で説明していなかったものになります。実際はなくても動作しますが、あったほうが良いと思い作成。Modeに対応するためにDataTaskPublisher拡張します。(extensionで書いてますが普通にtryCatchを繋げれば使用できます。Modeように処理を記載します。小さいサイズのURLという形で処理を分けていました。}}各モードごとに分岐が可能です。StatusCodeのバリデーションに対応Alamofireに用意されているValidateのようなことがしたかったので作成。defaultの場合にエラーコードが0ですが、各自アプリで決めたエラーコードに置き換えるか、Errorを継承した独自クラスを作成してください。再ログインのために、ルート画面をスプラッシュやログイン画面に入れ替えるみたいなことは、こちらで一元管理することもできます。後書きRxSwift導入した頃は、なんやこれ、、、と思っていたが、、、いざCombineに移行しようとしたときに、その便利さにあらために気づかされたりしました笑とはいえ、公式でサポートしてくれるのはありがたいことであり、RxSwiftはライブラリとしても地味に大きかったりするので(セットアップとかアプデ時間かかるよね問題)その辺は移行して解消できたらなぁとは思いつつ。iOSって感じで仕事してきました。個人でベンチャー企業のアプリ開発にもコミットしてます。SQLを書いたり、rails、node、phpを触りサーバー周りをかじったり。upLoginユーザーは見つかりませんでした。