ペンギン村 Tech Blog

技術をこよなく愛するエンジニア集団が在住するペンギン村から、世界へ役立つ(かもしれない)技術情報を発信する技術系ブログです。某アラレちゃんが済む村とは一切関係ありません。んちゃ!

Swift 4.2 で追加されるコンパイラディレクティブ(SE-0196)

何でもは知らない、知ってることだけ。

どうも、最近書き出しの挨拶を考えるのに時間を要する tobi462 です。

今日は SE-0196 で追加されたコンパイラディレクティブの紹介です。

今まで書いた Swift 4.2 の記事は以下です。

いつのまにかシリーズ化してきましたね。 (化物語みたいに)

Tl;Dr

#warning("強制アンラップはやめるべき") // コンパイル時の警告
let message = self.message!

#error("APIのアクセストークンを設定してください") // コンパイルエラー
let API_TOKEN = ""

in Objective-C

Objective-Cでは以下のようなコンパイラディレクティブが利用できました。

#warning 暫定対処、後ほど修正するべき
#error APIトークンを設定する必要あり

それぞれコンパイル時にWarning、Errorとできる仕組みです。

これによって後ほど修正すべき箇所をWarningとして警告しておいたり、ライブラリのテンプレートコード中に埋め込んでおき、実装が必須であることを明示できるというメリットがあります。

これはコメントで代替することも可能ですが、(標準の)コンパイル時において警告またはエラーとして明示することができる点がメリットになります。

in Swift 4.2

Objective-Cでサポートされていたこの機能が、Swift 4.2 でようやくサポートされました。

#warning("暫定対処、後ほど修正するべき")
#error("APIトークンを設定する必要あり")

また、#if のような他のコンパイラディレクティブとも併用して利用することも出来るようです。

#if os(iOS)
#error("macOSはサポート外です")
#endif

上記のように、あるライブラリを作成していたときに特定のプラットフォームだけサポート外としてエラーにしたいということもできるのは便利と言えるでしょう。

まとめ

やれやれ、1記事にするほどの内容でも無かったんじゃないかな、阿良々木くん。

というわけで Swift でもコンパイラディレクティブ(Warning、Error)が使えるようになったという話でした。

また次回?