From d7222f616babb86f118a195e0b1df716c5ba05bd Mon Sep 17 00:00:00 2001 From: stzn Date: Thu, 20 Jun 2024 07:25:51 +0900 Subject: [PATCH 1/6] =?UTF-8?q?Migration=20Strategy=E3=81=AE=E7=BF=BB?= =?UTF-8?q?=E8=A8=B3=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Guide.docc/MigrationStorategy.md | 71 ++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Guide.docc/MigrationStorategy.md diff --git a/Guide.docc/MigrationStorategy.md b/Guide.docc/MigrationStorategy.md new file mode 100644 index 0000000..a79b647 --- /dev/null +++ b/Guide.docc/MigrationStorategy.md @@ -0,0 +1,71 @@ +原文: https://github.com/apple/swift-migration-guide/blob/main/Guide.docc/MigrationStrategy.md + +更新日: 2024/6/20 + +ここまで反映: https://github.com/apple/swift-migration-guide/commit/40b11e0f54b6d35345d005511e013c230a520d26 + + +# 移行戦略 + +Swift 6言語モードへプロジェクトを移行し始めましょう。 + +モジュールでStrict Concurrency CheckをCompleteにすると、コンパイラによって報告される多くのデータ競合の安全性の問題が発生する可能性があります。数百、場合によっては数千の警告は珍しくありません。そのような膨大の問題に直面したとき、特にSwiftのデータ隔離モデルについて学び始めたばかりであった場合、これは難し過ぎると感じるかもしれません。 + +**慌てないで** + +移行を進めていくと、実際、たいていの場合はほんの少し変更を加えるだけで移行を進めていけることに気づくでしょう。そして、その過程を通して、Swiftの並行処理システムがどのように動作するかについてのメンタルモデルが、あなたの頭の中に急速に作られていくでしょう。 + +> 重要:このガイダンスが推奨された方法だと思わないでください。自信を持って他のアプローチを取ってください。 + +## 戦略 + +このドキュメントでは、よいスタート地点となる得る一般的な戦略の概要を説明します。すべてのプロジェクトに有効な単一のアプローチはありません。 + +このアプローチには、次の3つの主要なステップがあります: +- モジュールを選択する +- Swift 5でより厳密なチェックを有効にする +- 警告に対処する + +このプロセスは繰り返し行なうものです。1つのモジュールのたった1つの変更であっても、プロジェクト全体の状態に大きな影響を与える可能性があります。 + +## 外側から始める + +プロジェクトの最も外側にある根本のモジュールから始める方が簡単な可能性があります。これは、このモジュールは定義上、他のモジュールに依存していないからです。ここでの変更は、局所的にしか影響を及ぼさないので、作業量を抑制できます。 + +しかし、変更は、そのモジュールだけで終える**必要はありません**。あなたがコントロールできる、安全でないグローバルな状態や自動で`Sendable`に準拠している型が存在する依存関係は、プロジェクト全体の中の多くの警告の根本原因になる場合があります。多くの場合、これらは最初に焦点を当てると最もよいものです。 + +## Swift5言語モードを使う + +何もチェックせず、Swift 5からSwift 6言語モードにいきなりプロジェクトを移行させるのは、とても難しいと感じるかもしれません。その代わりに、Swift 5言語モードのままで、Swift 6のチェックメカニズムの多くを段階的に有効にできます。これは、問題のある部分を警告としてのみ表示し、ビルドとテストをこれまで通り動かすことができます。 + +まず、Swift Concurrencyのupcoming featureを1つだけ有効にします。こうすることで、一度に1つの*特定の種類*の問題に集中できます。 + +プロポーザル | 内容 | upcoming featureフラグ +:-----------|-------------|------------- +[SE-0401][] | プロパティラッパが行なうアクター隔離の推論の削除 | `DisableOutwardActorInference` +[SE-0412][] | グローバル変数に対するStrict concurrencyチェック | `GlobalConcurrency` +[SE-0418][] | メソッドとkey pathリテラルに対する`Sendable`の推論 | `InferSendableFromCaptures` + +[SE-0401]: https://github.com/swiftlang/swift-evolution/blob/main/proposals/0401-remove-property-wrapper-isolation.md +[SE-0412]: https://github.com/swiftlang/swift-evolution/blob/main/proposals/0412-strict-concurrency-for-global-variables.md +[SE-0418]: https://github.com/swiftlang/swift-evolution/blob/main/proposals/0418-inferring-sendable-for-methods.md + +これらは独立して、どの順番でも有効にできます。 + +upcoming featureフラグによって明らかになった問題に対処したら、次のステップは、そのモジュールに対して、[厳密な並行性の確認を完全にする][CompleteChecking]ことです。これでコンパイラによるすべてのデータ隔離チェックが有効になります。 + +[CompleteChecking]: + +## 警告に対処する + +警告を調査する際には、1つの指針で行なうことを強くおすすめします。つまり、**今のコードの状態で正しくする**ということです。問題に対処するためにコードをリファクタリングしたいという衝動を抑えてください。 + +Strict Concurrency CheckをCompleteにして警告のない状態にするためには、必要なコードの変更量を最小限に抑えると効果的です。これが完了したら、警告を抑制するために適用した安全ではないなオプトアウトをより安全な隔離メカニズムを導入するタイミングを、リファクタリングをする機会の目安としてください。 + +> 重要: よくある問題に対処する方法については、を参照してください。 + +## 繰り返す + +最初のうちは、データ隔離の問題を無効にしたり回避したりするテクニックを使うことになるでしょう。上位モジュールで、これ以上問題を無効にしたり回避したりする必要がないと感じたら、ワークアラウンドが必要な依存関係のうちの1つを次のターゲットにしてください。 + +先に進むためにすべての警告を排除する必要はありません。とてもわずかな変更でさえもが大きな影響を与える可能性があることを覚えておいてください。依存関係の1つを更新できれば、いつでもその依存関係を利用しているモジュールに戻って作業できます。 \ No newline at end of file From 4fc5b6ac4669b12380107c1619138f0650f12953 Mon Sep 17 00:00:00 2001 From: stzn Date: Sat, 6 Jul 2024 08:36:14 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=83=86=E3=83=BC?= =?UTF-8?q?=E3=83=96=E3=83=AB=E3=81=AE=E8=BF=BD=E5=8A=A0=E3=80=81=E6=96=87?= =?UTF-8?q?=E8=A8=80=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Guide.docc/MigrationStorategy.md | 44 +++++++++++++++----------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/Guide.docc/MigrationStorategy.md b/Guide.docc/MigrationStorategy.md index a79b647..673a7fb 100644 --- a/Guide.docc/MigrationStorategy.md +++ b/Guide.docc/MigrationStorategy.md @@ -1,58 +1,56 @@ -原文: https://github.com/apple/swift-migration-guide/blob/main/Guide.docc/MigrationStrategy.md - -更新日: 2024/6/20 - -ここまで反映: https://github.com/apple/swift-migration-guide/commit/40b11e0f54b6d35345d005511e013c230a520d26 - - # 移行戦略 Swift 6言語モードへプロジェクトを移行し始めましょう。 -モジュールでStrict Concurrency CheckをCompleteにすると、コンパイラによって報告される多くのデータ競合の安全性の問題が発生する可能性があります。数百、場合によっては数千の警告は珍しくありません。そのような膨大の問題に直面したとき、特にSwiftのデータ隔離モデルについて学び始めたばかりであった場合、これは難し過ぎると感じるかもしれません。 +|原文|https://www.swift.org/migration/documentation/swift-6-concurrency-migration-guide/migrationstrategy| +|---|---| +|更新日|2024/6/20(翻訳を最後に更新した日付)| +|ここまで反映|https://github.com/apple/swift-migration-guide/commit/40b11e0f54b6d35345d005511e013c230a520d26| + +モジュールで完全な並行性の確認を有効にすると、コンパイラによって報告される多くのデータ競合安全性の問題が発生する可能性があります。数百、場合によっては数千の警告は珍しくありません。そのような膨大な問題に直面したとき、特にSwiftのデータ隔離モデルについて学び始めたばかりであった場合、これは難しすぎると感じるかもしれません。 **慌てないで** -移行を進めていくと、実際、たいていの場合はほんの少し変更を加えるだけで移行を進めていけることに気づくでしょう。そして、その過程を通して、Swiftの並行処理システムがどのように動作するかについてのメンタルモデルが、あなたの頭の中に急速に作られていくでしょう。 +移行を進めていくと、実際にはたいていの場合、ほんの少し変更を加えるだけで移行を進られることに気づくでしょう。そして、その過程を通して、Swiftの並行処理システムがどのように動作するかについてのメンタルモデルがあなたの頭の中に急速に作られていくでしょう。 -> 重要:このガイダンスが推奨された方法だと思わないでください。自信を持って他のアプローチを取ってください。 +> 重要:このガイダンスが唯一の推奨される方法だと思わないでください。他のアプローチも自信を持って試してみてください。 ## 戦略 -このドキュメントでは、よいスタート地点となる得る一般的な戦略の概要を説明します。すべてのプロジェクトに有効な単一のアプローチはありません。 +このドキュメントでは、良いスタート地点となる一般的な戦略の概要を説明します。すべてのプロジェクトに有効な単一のアプローチはありません。 このアプローチには、次の3つの主要なステップがあります: - モジュールを選択する -- Swift 5でより厳密なチェックを有効にする +- Swift 5でよりより厳密な並行性の確認を有効にする - 警告に対処する このプロセスは繰り返し行なうものです。1つのモジュールのたった1つの変更であっても、プロジェクト全体の状態に大きな影響を与える可能性があります。 ## 外側から始める -プロジェクトの最も外側にある根本のモジュールから始める方が簡単な可能性があります。これは、このモジュールは定義上、他のモジュールに依存していないからです。ここでの変更は、局所的にしか影響を及ぼさないので、作業量を抑制できます。 +プロジェクトの最も外側にある基礎的なモジュールから始める方が簡単な場合があります。これは、このモジュールの定義上、他のモジュールに依存していないからです。ここでの変更は、局所的にしか影響を及ぼさないので、作業量を抑えられます。 -しかし、変更は、そのモジュールだけで終える**必要はありません**。あなたがコントロールできる、安全でないグローバルな状態や自動で`Sendable`に準拠している型が存在する依存関係は、プロジェクト全体の中の多くの警告の根本原因になる場合があります。多くの場合、これらは最初に焦点を当てると最もよいものです。 +しかし、変更はそのモジュールだけで終える**必要はありません**。あなたがコントロールできる、安全でないグローバルな状態や自動で`Sendable`に準拠している型が存在する依存関係は、プロジェクト全体の中の多くの警告の根本原因になる場合があります。多くの場合、これらは最初に焦点を当てると最も効果的です。 ## Swift5言語モードを使う -何もチェックせず、Swift 5からSwift 6言語モードにいきなりプロジェクトを移行させるのは、とても難しいと感じるかもしれません。その代わりに、Swift 5言語モードのままで、Swift 6のチェックメカニズムの多くを段階的に有効にできます。これは、問題のある部分を警告としてのみ表示し、ビルドとテストをこれまで通り動かすことができます。 +何もチェックせず、Swift 5からSwift 6言語モードにいきなりプロジェクトを移行させるのは、とても難しいと感じるかもしれません。その代わりに、Swift 5言語モードのままで、Swift 6のチェックメカニズムの多くを段階的に有効にできます。これは、問題のある部分を警告としてのみ表示し、ビルドとテストをこれまで通り行なえるようにします。 -まず、Swift Concurrencyのupcoming featureを1つだけ有効にします。こうすることで、一度に1つの*特定の種類*の問題に集中できます。 +まず、Swift Concurrencyのupcoming featureを1つだけ有効にしましょう。こうすることで、一度に1つの*特定の種類*の問題に集中できます。 プロポーザル | 内容 | upcoming featureフラグ :-----------|-------------|------------- -[SE-0401][] | プロパティラッパが行なうアクター隔離の推論の削除 | `DisableOutwardActorInference` -[SE-0412][] | グローバル変数に対するStrict concurrencyチェック | `GlobalConcurrency` +[SE-0401][] | プロパティラッパーが行なうアクター隔離の推論の削除 | `DisableOutwardActorInference` +[SE-0412][] | グローバル変数に対する厳密な並行性の確認 | `GlobalConcurrency` [SE-0418][] | メソッドとkey pathリテラルに対する`Sendable`の推論 | `InferSendableFromCaptures` [SE-0401]: https://github.com/swiftlang/swift-evolution/blob/main/proposals/0401-remove-property-wrapper-isolation.md [SE-0412]: https://github.com/swiftlang/swift-evolution/blob/main/proposals/0412-strict-concurrency-for-global-variables.md [SE-0418]: https://github.com/swiftlang/swift-evolution/blob/main/proposals/0418-inferring-sendable-for-methods.md -これらは独立して、どの順番でも有効にできます。 +これらは独立しており、どの順番でも有効にできます。 -upcoming featureフラグによって明らかになった問題に対処したら、次のステップは、そのモジュールに対して、[厳密な並行性の確認を完全にする][CompleteChecking]ことです。これでコンパイラによるすべてのデータ隔離チェックが有効になります。 +upcoming featureフラグによって明らかになった問題に対処したら、次のステップは、そのモジュールに対して、[完全な並行性の確認を有効にする][CompleteChecking]ことです。これでコンパイラによるすべてのデータ隔離チェックが有効になります。 [CompleteChecking]: @@ -60,12 +58,12 @@ upcoming featureフラグによって明らかになった問題に対処した 警告を調査する際には、1つの指針で行なうことを強くおすすめします。つまり、**今のコードの状態で正しくする**ということです。問題に対処するためにコードをリファクタリングしたいという衝動を抑えてください。 -Strict Concurrency CheckをCompleteにして警告のない状態にするためには、必要なコードの変更量を最小限に抑えると効果的です。これが完了したら、警告を抑制するために適用した安全ではないなオプトアウトをより安全な隔離メカニズムを導入するタイミングを、リファクタリングをする機会の目安としてください。 +完全な並行性の確認を有効にしても警告のない状態にするためには、必要なコードの変更量を最小限に抑えることが効果的です。これが完了したら、警告を抑制するために適用した安全でないオプトアウトを、より安全な隔離メカニズムに置き換えるためのリファクタリングを行なう機会として利用してください。 -> 重要: よくある問題に対処する方法については、を参照してください。 +> 重要: 頻出のコンパイルエラーに対処する方法については、を参照してください。 ## 繰り返す 最初のうちは、データ隔離の問題を無効にしたり回避したりするテクニックを使うことになるでしょう。上位モジュールで、これ以上問題を無効にしたり回避したりする必要がないと感じたら、ワークアラウンドが必要な依存関係のうちの1つを次のターゲットにしてください。 -先に進むためにすべての警告を排除する必要はありません。とてもわずかな変更でさえもが大きな影響を与える可能性があることを覚えておいてください。依存関係の1つを更新できれば、いつでもその依存関係を利用しているモジュールに戻って作業できます。 \ No newline at end of file +先に進むためにすべての警告を排除する必要はありません。とても些細な変更でさえもが大きな影響を与える可能性があることを覚えておいてください。依存関係の1つを更新できれば、いつでもモジュールに戻ることができます。 \ No newline at end of file From 3d9add5c21cae8204811d6dac5f18be89866fbff Mon Sep 17 00:00:00 2001 From: shiz <35151927+stzn@users.noreply.github.com> Date: Sun, 7 Jul 2024 08:27:21 +0900 Subject: [PATCH 3/6] =?UTF-8?q?=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=81=AE=E5=8F=8D=E6=98=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: SHIMOTORI Shigure --- Guide.docc/MigrationStorategy.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Guide.docc/MigrationStorategy.md b/Guide.docc/MigrationStorategy.md index 673a7fb..4bacc68 100644 --- a/Guide.docc/MigrationStorategy.md +++ b/Guide.docc/MigrationStorategy.md @@ -1,6 +1,6 @@ # 移行戦略 -Swift 6言語モードへプロジェクトを移行し始めましょう。 +プロジェクトのSwift 6言語モードへの移行を始めましょう。 |原文|https://www.swift.org/migration/documentation/swift-6-concurrency-migration-guide/migrationstrategy| |---|---| @@ -11,7 +11,7 @@ Swift 6言語モードへプロジェクトを移行し始めましょう。 **慌てないで** -移行を進めていくと、実際にはたいていの場合、ほんの少し変更を加えるだけで移行を進られることに気づくでしょう。そして、その過程を通して、Swiftの並行処理システムがどのように動作するかについてのメンタルモデルがあなたの頭の中に急速に作られていくでしょう。 +移行を進めていくと、実際にはたいていの場合、ほんの少し変更を加えるだけで移行を進められることに気づくでしょう。そして、その過程を通して、Swiftの並行処理システムがどのように動作するかについてのメンタルモデルがあなたの頭の中に急速に作られていくでしょう。 > 重要:このガイダンスが唯一の推奨される方法だと思わないでください。他のアプローチも自信を持って試してみてください。 @@ -21,10 +21,10 @@ Swift 6言語モードへプロジェクトを移行し始めましょう。 このアプローチには、次の3つの主要なステップがあります: - モジュールを選択する -- Swift 5でよりより厳密な並行性の確認を有効にする +- Swift 5でより厳密な並行性の確認を有効にする - 警告に対処する -このプロセスは繰り返し行なうものです。1つのモジュールのたった1つの変更であっても、プロジェクト全体の状態に大きな影響を与える可能性があります。 +このプロセスは _繰り返し_ 行なうものです。1つのモジュールのたった1つの変更であっても、プロジェクト全体の状態に大きな影響を与える可能性があります。 ## 外側から始める @@ -34,7 +34,7 @@ Swift 6言語モードへプロジェクトを移行し始めましょう。 ## Swift5言語モードを使う -何もチェックせず、Swift 5からSwift 6言語モードにいきなりプロジェクトを移行させるのは、とても難しいと感じるかもしれません。その代わりに、Swift 5言語モードのままで、Swift 6のチェックメカニズムの多くを段階的に有効にできます。これは、問題のある部分を警告としてのみ表示し、ビルドとテストをこれまで通り行なえるようにします。 +何も確認せず、Swift 5からSwift 6言語モードにいきなりプロジェクトを移行させるのは、とても難しいと感じるかもしれません。その代わりに、Swift 5言語モードのままで、Swift 6の確認メカニズムの多くを段階的に有効にできます。これは、問題のある部分を警告としてのみ表示し、ビルドとテストをこれまで通り行なえるようにします。 まず、Swift Concurrencyのupcoming featureを1つだけ有効にしましょう。こうすることで、一度に1つの*特定の種類*の問題に集中できます。 From 43b9896c7f71df48167bd38ba5b2e63f8e3659f8 Mon Sep 17 00:00:00 2001 From: shiz <35151927+stzn@users.noreply.github.com> Date: Tue, 9 Jul 2024 07:00:30 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=81=AE=E5=8F=8D=E6=98=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Guide.docc/MigrationStorategy.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Guide.docc/MigrationStorategy.md b/Guide.docc/MigrationStorategy.md index 4bacc68..49624b7 100644 --- a/Guide.docc/MigrationStorategy.md +++ b/Guide.docc/MigrationStorategy.md @@ -28,7 +28,7 @@ ## 外側から始める -プロジェクトの最も外側にある基礎的なモジュールから始める方が簡単な場合があります。これは、このモジュールの定義上、他のモジュールに依存していないからです。ここでの変更は、局所的にしか影響を及ぼさないので、作業量を抑えられます。 +プロジェクトの最も外側にあるルートのモジュールから始める方が簡単な場合があります。このモジュールは、(最も外側でルートであるという)定義上、他のモジュールから依存されていません。このモジュールへの変更は局所的にしか影響を及ぼさないので、作業量を抑えられます。 しかし、変更はそのモジュールだけで終える**必要はありません**。あなたがコントロールできる、安全でないグローバルな状態や自動で`Sendable`に準拠している型が存在する依存関係は、プロジェクト全体の中の多くの警告の根本原因になる場合があります。多くの場合、これらは最初に焦点を当てると最も効果的です。 @@ -66,4 +66,4 @@ upcoming featureフラグによって明らかになった問題に対処した 最初のうちは、データ隔離の問題を無効にしたり回避したりするテクニックを使うことになるでしょう。上位モジュールで、これ以上問題を無効にしたり回避したりする必要がないと感じたら、ワークアラウンドが必要な依存関係のうちの1つを次のターゲットにしてください。 -先に進むためにすべての警告を排除する必要はありません。とても些細な変更でさえもが大きな影響を与える可能性があることを覚えておいてください。依存関係の1つを更新できれば、いつでもモジュールに戻ることができます。 \ No newline at end of file +先に進むためにすべての警告を排除する必要はありません。とても些細な変更でさえもが大きな影響を与える可能性があることを覚えておいてください。依存関係の1つを更新できれば、いつでも元のモジュールを更新する作業に立ち戻ることができます。 \ No newline at end of file From 3869efb0a22c4b30b21c670bac11be017651b47b Mon Sep 17 00:00:00 2001 From: shiz <35151927+stzn@users.noreply.github.com> Date: Wed, 10 Jul 2024 06:22:43 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=81=AE=E5=8F=8D=E6=98=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 佐藤剛士 --- Guide.docc/MigrationStorategy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Guide.docc/MigrationStorategy.md b/Guide.docc/MigrationStorategy.md index 49624b7..1a29d37 100644 --- a/Guide.docc/MigrationStorategy.md +++ b/Guide.docc/MigrationStorategy.md @@ -7,7 +7,7 @@ |更新日|2024/6/20(翻訳を最後に更新した日付)| |ここまで反映|https://github.com/apple/swift-migration-guide/commit/40b11e0f54b6d35345d005511e013c230a520d26| -モジュールで完全な並行性の確認を有効にすると、コンパイラによって報告される多くのデータ競合安全性の問題が発生する可能性があります。数百、場合によっては数千の警告は珍しくありません。そのような膨大な問題に直面したとき、特にSwiftのデータ隔離モデルについて学び始めたばかりであった場合、これは難しすぎると感じるかもしれません。 +モジュールで完全な並行性の確認を有効にすると、コンパイラによって報告されるデータ競合安全性の問題が大量に発生する可能性があります。数百、場合によっては数千の警告は珍しくありません。そのような膨大な問題に直面したとき、特にSwiftのデータ隔離モデルについて学び始めたばかりであった場合、これは難しすぎると感じるかもしれません。 **慌てないで** From b9290226c6fdb3b383753d99fb45c02f5534a9a9 Mon Sep 17 00:00:00 2001 From: shiz <35151927+stzn@users.noreply.github.com> Date: Mon, 15 Jul 2024 05:11:00 +0900 Subject: [PATCH 6/6] =?UTF-8?q?=E3=83=AB=E3=83=BC=E3=83=88=E3=83=A2?= =?UTF-8?q?=E3=82=B8=E3=83=A5=E3=83=BC=E3=83=AB->=E6=9C=80=E4=B8=8A?= =?UTF-8?q?=E4=BD=8D=E3=83=A2=E3=82=B8=E3=83=A5=E3=83=BC=E3=83=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Guide.docc/MigrationStorategy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Guide.docc/MigrationStorategy.md b/Guide.docc/MigrationStorategy.md index 1a29d37..569001e 100644 --- a/Guide.docc/MigrationStorategy.md +++ b/Guide.docc/MigrationStorategy.md @@ -28,7 +28,7 @@ ## 外側から始める -プロジェクトの最も外側にあるルートのモジュールから始める方が簡単な場合があります。このモジュールは、(最も外側でルートであるという)定義上、他のモジュールから依存されていません。このモジュールへの変更は局所的にしか影響を及ぼさないので、作業量を抑えられます。 +プロジェクトの最も外側にある最上位モジュールから始める方が簡単な場合があります。このモジュールは、(最も外側で最上位であるという)定義上、他のモジュールから依存されていません。このモジュールへの変更は局所的にしか影響を及ぼさないので、作業量を抑えられます。 しかし、変更はそのモジュールだけで終える**必要はありません**。あなたがコントロールできる、安全でないグローバルな状態や自動で`Sendable`に準拠している型が存在する依存関係は、プロジェクト全体の中の多くの警告の根本原因になる場合があります。多くの場合、これらは最初に焦点を当てると最も効果的です。