Appleは先日のWWDC 2017で、Xcode 9に含まれるSwift 4マイグレータをオープンソースとして公開した。
Swiftマイグレータは、分離したツールではなくコンパイラの一部として、さらにSwift 3とSwift 4を同等にサポートすべく、完全に書き直されており、マイグレータは次のような手順でジョブを実行する。
-
Pre-fix-itパス - コンパイラがプライマリ入力ファイルの型チェックを行なえない場合に起動される。この場合には、マイグレータがコンパイラからすべての修正候補を取得して、プロセスを最大2回試みることによってコードのAST表現を生成する。
-
ASTパス - Swift 4よりも前からマイグレーションする場合、pre-fix-itパスに続いて実行されるパスである。このパスでは、ソースを新しいSDKに適合させるために、以前のSDKからのAPIレベルの変更が検討される。
-
Post-fix-itパス - Swift 4モードでコンパイラが提供する、すべての修正候補の適用が試みられる。修正ステップの実行毎に新たな問題が明らかになる可能性があるため、このステップは最大で7回実行される。
Pre-fix-itとPost-fix-itの両フェーズでは、マイグレータは、エラーに関する修正はデフォルトですべて適用するが、警告に関する修正はオプトインとなっている。
Swift 3.2とSwift 4をターゲットにしたコードは共存可能で、相互リンクも可能であるため、Swift 4へのマイグレーションは推奨ではあっても必須ではない点にも注意すべきだ。さらにコードベースでのマイグレーションには、コードの正確性や慣用的なコードの生成はもちろん、自動生成されたコードがコンパイル可能であることも期待するべきではない。Swift 4への移行に関わる既知の問題点と、適用可能ないくつかの回避策を記したXcodeのリリースノートが、登録されているすべての開発者に提供されている。
この記事を評価
- 編集者評
- 編集長アクション