Open7
The Swift Concurrency Migration Guide 日本語輪読会 - アーカイブ
The Swift Concurrency Migration Guide 日本語輪読会 とは
Apple の GitHub リポジトリで公開されている The Swift Concurrency Migration Guide https://github.com/apple/swift-migration-guide を日本語に訳したものを @treastrain と一緒に読みながら、Swift Concurrency への理解を深めていく会です!
第1回
コメント
00:02:48 聞こえてます!
00:03:00 www
00:03:09 👍
00:03:35 👍
00:03:43 👍
00:03:46 ワイワイ
00:03:51 🟧
00:03:52 ☺️
00:04:03 🙌
00:04:07 💕
00:04:35 ダイナミック背景ですね
00:04:37 ほんまや😳
00:06:43 わいわい
00:06:44 👏
00:06:51 ワイワイ
00:07:28 https://www.swift.org/migration
00:10:04 ありがとうございますmm
00:11:37 publicでなくexposeですね
00:11:37 ターゲットごとに分けられるのいいですね。SwiftPMでモジュール分けてもそれぞれ適応するしないきめられる
00:11:38 uses other languages exposed to Swift
00:14:37 compiler versionと language modeが別物なんですね?(まだよくわかってない)
00:19:46 英語版だとこんな例がありました
// Still requires 5
.target(
name: "NotQuiteReadyYet",
swiftSettings: [
.swiftLanguageVersion(.v5)
]
)
00:19:46 さっきそのあたりの変更入ってましたねw https://github.com/apple/swift-migration-guide/pull/52
00:21:18 デフォルトが v6 なんですかね?
00:22:17 新規プロジェクトでは6がデフォルトはありそうですが…
00:22:28 ならばデフォルト 5.10 とかなんだろうか.. 🤔
00:22:41 (どうなんだろう)
00:23:01 確認してみます
00:24:27 Compiler versionはSwiftコンパイラのバージョンであり、言語をコンパイルするためのツールのバージョンを示します。
Language versionはSwift言語自体のバージョンであり、言語仕様のバージョンを示します。
(ChatGPTに聞いてみました)
00:25:04 デフォルト5でした。
00:26:14 「プロジェクトの診断を警告として有効に〜」が自然ですかね…🤔?
00:26:45 XcodeのSwift Language Version
00:27:16 WWDCのMigrate your app to Swift 6の動画の3:37~でも
The Swift 6 language mode is [opt-in] for both existing and new projects.
といっていました。
https://youtu.be/75-c6jSE8kU?si=pabsC0BtjY-fFayx&t=217
00:28:12 警告->ワーニング(or warning)でもいいかもしれないですね!
00:28:32 まだですね。
00:29:01 昔、いれた事があって、結局無理!っとなってしまいました…
00:30:15 Packageは6.0でしたね
00:30:55 ワーニング(Warning)の方がしっくりきそうですね。
00:30:56 エラーとワーニングのほうが馴染みがあるかもーと思いました。
00:30:58 警告より注意の方がイメージに近いです
00:31:25 エラーとワーニングのほうが馴染みがあるかもーと思いました。
00:36:03 This allows you to make incremental progress
が原文なので、
「このため、段階的に(同時並行処理の)適応を進めることができます」
とかどうでしょう?progressを具体的にやることで置き換えるとよさそう
00:36:09 The withCheckedContinuation function is one of a suite of standard library APIs that exist to make interfacing non-async and async code possible.
00:38:36 今の段落、新しくコード追加されてますね
00:38:59 あ、見間違いでした!
00:41:08 @MainActor をクラス全体に入れて、他にも影響が〜的なのは結構わかりみがある(ただ、後から移行する時に、どっちだっけ〜?的なことはあるので、難しい😓)
00:41:08 WWDCのセッションでも言ってたやつですね
00:42:33 https://www.youtube.com/watch?v=75-c6jSE8kU
00:44:13 https://connpass.com/event/321888
00:44:52 Incremental Adaptaionに近々TaskGroupの記述が追加されそうです。
https://github.com/apple/swift-migration-guide/pull/56
00:45:54 😃 ありがとうございました!
00:46:01 ありがとうございました!
00:46:01 ありがとうございました!
00:46:02 ありがとうございました!
00:46:02 ありがとうございました!
00:46:05 ありがとうございました!!
00:46:08 ありがとうございました!!
00:46:09 ありがとうございました!
00:46:20 ありがとうございました!
第2回
コメント
00:05:40 あんまり見てない、、、
00:05:48 見てる
00:13:58 そういえばisolationの訳は「分離」か「隔離」かという話を@S_Shimotori さんと最近しましたねー。
https://github.com/stzn/swift-migration-guide-jp/pull/12#discussion_r1640418040
00:19:25 とりあえず先人に習っとけの精神(なのでsite:ac.jpでググった)
私の周りだけかもですけど隔離って言ってたような気がする・・?
程度の理由で↑は隔離を選択してます
00:19:32 個人的に「隔離」はなんか島流し的な文脈でややネガティブなイメージがありますね
00:19:49 https://x.com/stzn3/status/1801746242353135858
00:21:07 個人的な意見ですが、プログラム観点だと隔離がしっくりくる印象です。また、ドメインの隔離のような使い方なのかなと思いました。
00:27:51 モジュール化されてないビッグプロジェクトにSwift6を導入したいなら、モジュール化を先にやるべきなんですかね🤔
00:29:27 私用のためお先に失礼します(訳語迷ってるのでご興味あるかたはぜひご意見いただけると助かります・・!)
00:32:29 個人的にはそっちのほがよいかなと思っています。モジュールが大きいと変更範囲(影響範囲)も大きくなって、移行にお大変になるのかなと思ってます。
00:35:43 それ悩んでます
00:35:59 Non-isolatedの訳
00:36:21 https://github.com/stzn/swift-migration-guide-jp/pull/12#discussion_r1640495025
00:36:25 なるほど、目的による…ですか🤔 いきなりアプリ全体に変更が入ってしまうと大変そうだなと思ったのですが、目的によってはしないのもアリなんですね、ありがとうございます!とりあえずWWDCの動画見てみます!🙌
00:44:51 https://connpass.com/event/322933/
00:46:06 日本語訳のレビューのご協力をお願いしたいですmm
00:49:40 ありがとうございました!
00:49:43 ありがとうございました!
第3回
コメント
00:07:11 https://zenn.dev/treastrain/scraps/c14cc2a5ff0eba
00:07:43 第2回、参加できなかったのでアーカイブ嬉しいです!
00:16:54 出ないに等しいです
00:18:46 ちなみに、現状の日本語はどこでみるのが良いのでしょうか。stznさんのリポジトリだとまだ反映されていない感じでしょうか。
00:20:24 今来たばかりで状況がよくわかっていないですが…wよろしくお願いしますmm
00:26:09 https://zenn.dev/treastrain/articles/65f6cae11e0dc7
00:31:03 なかった気がします
00:31:35 https://github.com/swiftlang/swift-evolution/blob/main/proposals/0431-isolated-any-functions.md
00:31:36 https://github.com/swiftlang/swift-evolution/blob/main/proposals/0431-isolated-any-functions.md
00:42:14 https://connpass.com/event/323280/
00:42:31 次回CommonProblems行きそうですかね
00:45:09 https://zenn.dev/treastrain/scraps/c14cc2a5ff0eba
00:46:12 ありがとうございました!
00:46:27 ありがとうございましたー
第4回
コメント
00:02:02 お疲れ様です!(私用のため19:30まで参加します)
00:09:06 おー貴重な情報ありがとうございます!TSPL日本語版も合わせます!
00:23:53 WWDCに出ていたパイナップルの数がおかしくなるやつですねw
00:27:00 https://zenn.dev/treastrain/scraps/c14cc2a5ff0eba
00:27:46 あったWWDC22でした。https://developer.apple.com/jp/videos/play/wwdc2022/110351/
00:28:35 https://github.com/stzn/swift-migration-guide-jp/pull/12
00:28:38 私が訳したのが半月くらい前のやつで、本家は後半部分が増えてます!(途中も微量のアップデートあります)
00:29:24 (そして私はここで失礼しますお疲れ様です
00:29:37 https://developer.apple.com/jp/videos/play/wwdc2022/110351/?time=1198
00:37:33 このドキュメントsugoi更新激しいんですよねw
00:38:02 sugoi -> すごい
00:44:27 このプロポーサルですね。nonisolated(unsafe) https://github.com/swiftlang/swift-evolution/blob/7f5f3633d33ccc562abf7a6e54daf15274abed7b/proposals/0412-strict-concurrency-for-global-variables.md#detailed-design
00:44:48 https://zenn.dev/treastrain/articles/0b28369d80bc65
00:44:53 The attribute nonisolated(unsafe) can be used to annotate the global variable (or any form of storage).
00:46:23 https://connpass.com/event/324343/
第5回
コメント
00:06:13 https://zenn.dev/treastrain/scraps/c14cc2a5ff0eba
00:09:44 今更新版のPR出ているのでコメントいただけるとうれしいです- https://github.com/stzn/swift-migration-guide-jp/pull/25
00:14:06 ChickenValleyでChickenを囲っているということかw
00:18:20 最新版は変わってますねー
00:24:09 iOS SDKあるある
00:25:02 なるほど
00:30:16 6.0からでしたっけ?
00:35:06 6.0ではconformanceの宣言に付けられるようになりました。 @MainActor class MyViewController: @preconcurrency ViewDelegateProtocol {
00:36:46 func自体には5.6からつけられました
00:45:40 Equatableとか隔離されていないprotocolの同期要件ですかねー: nonisolated
00:49:13 補足 さっきのstatic let prizedHenの例はエラーになりますね。 Static property 'prizedHen' is not concurrency-safe because non-'Sendable' type 'Chicken' may have shared mutable state
00:51:36 https://connpass.com/event/324994/
第6回
コメント
00:08:06 https://zenn.dev/treastrain/scraps/c14cc2a5ff0eba
00:10:24 https://www.swift.org/migration/documentation/swift-6-concurrency-migration-guide/runtimebehavior/
00:10:46 翻訳、私がしました
00:11:05 https://github.com/stzn/swift-migration-guide-jp/pull/26
00:18:04 assert使ってるのえらいw
00:21:07 キューを自作してる感じか わかりづらいコードだけど賢いな
00:21:38 一気に最大10までaddTaskでタスクをして、 そのあとは直列的に一個実行した後にもう一個実行する よかった自分の理解とあってました
00:21:51 初参加だからどこにコメしていいかわかってない、Xとかのほうがよい?
00:21:59 かしこい🙂↕️
00:22:11 こういう処理書く日は来るのか…は分からないけども
00:22:57 おお〜 では安心してZoomにコメします(残らないかと思ったので)
00:23:33 キューじゃないのか、何が起きてるか理解できなかったw
00:23:46 宣伝入った
00:23:57 シームレスダイマ
00:24:37 https://github.com/ios-osushi/release-subscriptions
00:24:58 https://github.com/ios-osushi/release-subscriptions/blob/main/Sources/ReleaseSubscriptionsCore/Fetcher.swift
00:25:15 これソースあまり追えてないけど、すごいちゃんとしてるんだな…(実装ありがと)
00:27:07 追加されたgroupの結果の実行順は保証されない感じですよね?
00:27:14 たしかに一気に実行されると重くなりそうな処理の時はこういう処理入れると多少軽くなりそうですね
00:27:15 メモリがどのくらい食っているかは確認したいですね
00:28:05 ありがとうございます。
00:29:49 お、もう一通り読み終わったのか
00:30:04 マイグレーションの戦略ってことかな
00:30:40 https://swift-migration-guide.jp/documentation/swift-6-concurrency-migration-guide-----/migrationstorategy
00:31:32 「Migration」は「マイグレーション」でなく「移行」と訳すのか
00:31:49 あ、皆さんに聞きたいのですが、semanticsを効果と訳したんですがshimotori sanは「セマンティックの方が良い」とフィードバックもらったんですが、みなさんどうか聞きたい https://github.com/stzn/swift-migration-guide-jp/pull/26/files#r1677143445
00:33:03 「慌てないで」なんか真矢みきみがある
00:34:10 semantics を効果とは思わないかも…「意味」みたいなイメージ
00:34:38 そのまま「セマンティクス」のほうが個人的にはわかりやすいかも
00:34:41 shizさんのコメントの案がいいなと思いました!(そのまま+注釈)
00:37:17 「セマンティック」だとわかりにくい不安があったんですがむしろそのままのほうがよさそうですね。注釈つける案で更新しようと思います。
00:40:12 チャッと書いちゃったw
00:43:29 データ隔離チェック
00:43:36 データ競合チェックとは違うのかな?
00:43:44 あ、そろそろお先に失礼します。みなさん今日はありがとうございました!
00:43:53 完全な〜はStrict Concurrency Checkingのことです?
00:44:16 complete かと思った、原文を見てみるか
00:45:03 enable complete checking
00:45:06 だった
00:45:39 🙏
00:46:39 data isolation checks
00:46:41 ほんとだ
00:47:51 なるほど、データ競合を防ぐための手段として、データ隔離チェックがある感じか
00:48:27 https://connpass.com/event/325579/