銀河鉄道

Swift|@preconcurrency import ActivityKit 警告をゆるめる

サムネイル
preconcurrencyimportActivityKit
厳密チェックを
ゆるめる

古いAPIやアノテーションを優しく受け入れるための“互換モードimport”

互換モードとは

Swift 5.5以降、「async/await」や「@MainActor」など、
並行処理の仕組み(Concurrency Model)が導入された。

でも、ActivityKitみたいにAppleが後から非同期対応した古いフレームワークは、
一部の定義が「昔の書き方」のまま。
(つまり、asyncやactorの注釈が微妙にズレてる)

そこでSwiftが用意したのがこれ

@preconcurrency import ActivityKit

これは、「このフレームワークはまだ完璧に並行処理対応しきってないかもしれないけど、
警告出さずに優しく受け入れよう
」という意味のマーク

効果(実際に何が起きるのか)

状況@preconcurrency なし@preconcurrency あり
ActivityKit呼び出し「awaitしてるけど実際待ってない」警告が出やすい 警告が静かになる
コンパイル時のチェック最新の厳格なルールで検証少し緩めに解釈(旧型のAPIも許容)
実行時の動作同じ同じ(動きは変わらない)

つまり何のため?

“古いAPIを、最新のConcurrencyルールに混ぜても怒られないようにするおまじない”

挙動やロジックには影響しない

@preconcurrency import「コンパイル時のチェック方法をゆるめるだけ」
実行時の挙動・処理内容・結果には全く関係ない

しくみをやさしく説明すると

Swiftコンパイラには2つの段階がある:

段階何をしてるか@preconcurrency の影響
コンパイル時文法や型の整合性をチェックチェックをちょっと緩める(警告を減らす)
実行時実際のロジックを動かす影響なし(完全に同じ動き)

つまり、
@preconcurrency import ActivityKit は“検査のルールをちょっと優しくする”だけ。
コードがどう動くか(タイマーや通知の挙動)は1ミリも変わない

まとめ

  • 実行ロジック → 完全に同じ
  • 動作速度 → 変化なし
  • メモリ・CPU → 影響なし
  • 非同期の仕組み → 同じく動作
  • 変わるのは → 警告の出方だけ

Vocabulary List

EnglishJapanese
concurrency並行処理(async/awaitを含む仕組み)
annotationアノテーション(属性・メタ情報)
preconcurrency並行処理導入前の互換モード
backward compatibility下位互換性
compiler warningコンパイラ警告

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。