295 Views
July 19, 25
スライド概要
2025/7/19 の HAKATA.swift feat. Japan-\(region).swift #1 で発表したスライドです。
Swift Concurrency がコードを複雑化している場面をたびたび見るような気がして、お強い人たちの集まる HAKATA.swift でお尋ねしてみることにしてみました。大半がライブコーディングだった都合でスライドの中身は激薄ですけれど、とりあえず要所については記載してあります。
正統派趣味人プログラマー。プログラミングとは幼馴染です。
おしえて! Swift Concurrency 熊谷友宏 @es̲kumagai 2025/07/19 HAKATA.swift feat. Japan-\(region).swift #1
▶︎ ▶︎ ▶︎ ▶︎ 熊谷 友宏 Tomohiro Kumagai Swift 言語が好み 小さな勉強会を開催(2014年9月27日より) 株式会社ゆめみさんで 熊谷さんのやさしい Swift 勉強会 開催 & コードレビュー • いろんな人のレビューをしたい機運が高まり中 • 言語仕様を学ぶことの効果の高さを実感中 プログラミングの楽しさを伝えていきたい
Swift Concurrency について 聞きたいことがある
▶︎ ▶︎ 背景 Migrating to Swift 6 の導入部分を読むことで 自分の Swift Concurrency への理解が進んできた 他者の見る機会が増えてきた中で、 Swift Concurrency が 制御を難しくさせている印象 を受けた
まるで、あの頃のように Objective-C - atomicity c m l u 2@ ITT h 2 c -‐‑‒2BS T M 35 RP RBN STBT PO Z O T K 2013/5/25 第4回 iphone̲dev̲jp 東京 iPhone/Mac 勉強会
並行処理が必要な場面って、限られてくるものなのでは かつては、重たい処理がメインスレッドを邪魔しないため に 並列で処理 するくらいが主だった印象 そのほかは、なんだかんだで メインスレッドで処理していた気がする ⋯ ▶︎ ▶︎ ▶︎ 違和感
▶︎ そこで質問! これから思い描くコードで問題なさそうか、 お強い顔ぶれの集まる HAKATA.swift でお尋ねしたい。 それにしても顔ぶれ、強すぎないか …!
▶︎ ▶︎ そこで質問! これから思い描くコードで問題なさそうか、 お強い顔ぶれの集まる HAKATA.swift でお尋ねしたい。 コードを見てもらうにあたって 簡単な想定で描く都合、余計なところが気になるかもしれない • アプリの構成、設計・責務まわりは寛容に見つつ … • 特に Swift Concurrency の扱い・影響まわりに着目してほしい
▶︎ ▶︎ ▶︎ ▶︎ Coding Time SNS タイムラインの閲覧アプリを想定 UIKit を使用 ビュー表示時にタイムラインを読み込む フォアグラウンドに来たときに トークンが設定されていれば、更新ボタンを有効化
気になること、まとめ 1. ほとんどは @MainActor で良いのでは? • 重たい処理は Main Actor 外に送る? - Task.detached ? nonisolated func ⋯ async ? withTaskGroup ? async let? • 待ち時間がある(中断ポイント)だけなら Main Actor 上で待てば良い? 2. できれば nonisolated にしておきたいが … • 状態保護が必要なときに、インスタンスを別途隔離? • 非同期機能で、型に Sendable が必要になるのが 悩みどころ • 関連機能がすべて同期的なら nonisolated を優先? • 内部状態の読み書きが必要な場面で Actor を検討?
Enjoy! Swift Thank you 熊谷友宏 @es̲kumagai