Swift 4.2からSwift 5.0へのプロジェクトの転送

こんにちは、Habr! Antoine Van Der Leeによる記事「Swift 5.0:プロジェクトとフレームワークの移行方法」の翻訳を紹介します



Swift 5.0は2019年3月にリリースされ、ABI Swiftの最初の安定リリースです。 多くのリソースがSwift 5.0の新機能をカバーしていますが、プロジェクトをSwift 5.0にアップグレードするために何をする必要があるかについてはほとんど説明していません。



この投稿では、既存のプロジェクトをSwift 5.0にアップグレードするために実行できる手順について説明します。



プロジェクトがすでにSwift 4.2に移植されていることを確認します。

この記事がプロダクトマネージャーを説得して移行の時間を計画するのに役立ったとしても驚かないでしょう。

移民アシスタントを使用した自動移行



Xcodeでは、移行アシスタントを使用して、コードを現在のSwift構文に自動的に更新することをお勧めします。 この変換では、インストールされたバージョンのXcodeで利用可能なSwiftの最新バージョンが使用されます。



Xcode 10.2はSwift 5.0を含む最初のバージョンなので、このバージョンのソフトウェアを使用する必要があります。



多くの場合、この機能は大変な作業を行います。 したがって、 編集->変換->現在のSwift構文へ...に移動してコードポートを開始することをお勧めします。



ヒント: プロジェクトとフレームワークに対してのみこれを行うようにしてください。 外部依存関係の変換はスキップできます。







依存関係の更新



おそらく、更新が必要なSwiftの依存関係がいくつかあります。 AlamofireやMoyaなどの多くの大規模なオープンソースプロジェクトは、バージョンSwift 5.0で既に作業を開始しています。



ただし、依存関係のすべてが既に更新されているわけではありません。 転送を実行してから自分でプルリクエストを送信することをお勧めしますが、おそらくプロジェクトオーナーが自分で行うまで少し待つ必要があります。



この転送後にアプリケーションの完全な集中テストを実施する予定がある場合、依存関係を直接更新することも価値があります。 テストではこれらの更新を直接カバーするため、「ダブルウィン」として機能する場合があります。



CI環境の更新



Travis、Jenkins、またはその他のCIプラットフォームを使用している場合は、Xcodeも更新する必要があります。







Swiftで結果を使用する



Xcode Converterは、基本的なコード変更のみを実行します。 Swift標準ライブラリに含まれている新しいResult型は考慮されません。 多くのフレームワークでは、コードに「結果」タイプが含まれています。 これは、不要な列挙型のデータが大量にあることを意味する場合があります。 ただし、それらを依存関係からのデータで急いで置き換えないでください。外部構造のコード変更に依存します。



一般的なタイプのエラー





現在の「結果」タイプは、適切なケースのタイプのみを定義している可能性があります。



Swift 5.0の結果では、予想されるエラーの種類を判断する必要もあります。 立派な市民として、あなたはあなたが期待するものに基づいてこの種の間違いを具体的にしようとするべきです。 ただし、移行を高速化する場合は、タイプをSwift.Errorに設定することもできます。



ヒント: Swift 5.0の新しい結果タイプについて詳しく知りたい場合は、 この記事を読むことをお勧めします。



ABIの安定性を考慮します



実際、ABIの安定性は別の問題です。 詳細については、Swiftの公式ブログをご覧ください。



アプリケーションが標準のSwiftライブラリを埋め込む必要がなくなるため、ダウンロードするアプリケーションのサイズ が小さくなることに注意してください!



これにより、製品を転送する時間を見つけることができます。

Swift 5.0をさらに詳しく知りたい場合は、 Appleブログの投稿 「Migrating to Swift 5.0」にスキップできます。



All Articles