Sponsor Link
環境&対象
- macOS14.3
- Xcode 15.2
- iOS 17.2
- Swift 5.9
Macro
Swift5.9 で導入された macro は非常に便利です。
参考
MacroApple Developer Documentation
ですが、ドキュメントには、@… や #… と書く 等の実際に使用するケースでの説明が多く、どうやってプロジェクトで使用できるかの説明が抜けている気がします・・・
ということで、改めて、プロジェクトに macro を導入する手順を確認してみます。
Swift Package
がんばると(?)、Swift Package 経由ではない利用方法も存在するみたいですが、Swift Package を使って導入するのが圧倒的に 容易です。
追加したい Package / macro を含んでいる Swift Package
macro を使おうとしているので、macro を提供してくれる Package が必要です。
この記事では、以下の package を使います。
上記の Package に含まれている IsCheckEnum という macro を使ってみます。
プロジェクトに Dependency として追加
他の Swift Package と同様に、プロジェクトに 追加します
- プロジェクトを Xcode で開く
- “File” – “Add Package Dependencies…” を選択
- 右上のフィールドに、Package の URL を入力
- 右下の “Add Package” ボタンを押下
- “Choose Package Products for SDSMacros” で、Library を プロジェクトに 追加
- プロジェクトに 追加される
上記の Step5 になって、プロジェクトの Package Dependencies に追加した Package が表示されていれば 準備は完了です。
macro は、swift-syntax に依存するのが普通なので、swift-syntax も表示されるのは普通です。
macro を使用
使用例を見せたいだけなので、ContentView.swift に追記してしまいます。
使いたい macro である IsCheckEnum は、enum で定義した case それぞれ用に is?? という case に一致しているかのメソッドを作成するマクロです。
つまり、enum に付与する Attached macro です。言い換えると、定義された enum が必要となります。
import する
他の Swift Package と同様に 使用するためには import する必要があります。
//
// ContentView.swift
//
// Created by : Tomoaki Yagishita on 2024/02/09
// © 2024 SmallDeskSoftware
//
import SwiftUI
import Combine
import SDSMacros // -- import !
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
.padding()
}
}
#Preview {
ContentView()
}
macro を使用する
enum に attach する macro なので、以下のように、MyEnum という enum を定義して 付与しています。
//
// ContentView.swift
//
// Created by : Tomoaki Yagishita on 2024/02/09
// © 2024 SmallDeskSoftware
//
import SwiftUI
import Combine
import SDSMacros
@IsCheckEnum
enum MyEnum {
case pattern1
case pattern2
}
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
.padding()
}
}
#Preview {
ContentView()
}
Build してみて エラーが発生しなければ、macro は動作しているハズです。
macro を確認
動いているハズといっても、ケースによってはどのようなコードになっているか知りたいこともあります。
Xcode を使うことで、macro によって どのような コードが追加されているか確認することができます。
Xcode のエディタ上、 macro の位置で右クリックすると、以下のような context menu が表示されます。
“Expand Macro” を選択すると、以下のように、macro により処理されたコードが表示されるようになります。
ここで、break point 等を設定することも可能です。
なお、左上の close button をクリックすると、非表示に戻せます。
まとめ
macro の使い方を改めて、確認しました。
- macro を提供する Swift Package を用意する
- Dependency として プロジェクトに追加する
- import を忘れずに
- macro を使う
- Context Menu の “Expand Macro” を使うと、macro を確認できる
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
SwiftUI おすすめ本
SwiftUI を理解するには、以下の本がおすすめです。
SwiftUI ViewMatery
SwiftUI で開発していくときに、ViewやLayoutのための適切なmodifierを探すのが大変です。
英語での説明になってしまいますが、以下の”SwiftUI Views Mastery Bundle”という本がビジュアル的に確認して探せるので、便利です。
英語ではありますが、1ページに コードと画面が並んでいるので、非常にわかりやすいです。
View に適用できる modifier もわかりやすく説明されているので、ビューの理解だけではなく、どのような装飾ができるかも簡単にわかります。
超便利です
販売元のページは、こちらです。
SwiftUI 徹底入門
# SwiftUI は、毎年大きく改善されていますので、少し古くなってしまいましたが、いまでも 定番本です。
Swift学習におすすめの本
詳解Swift
Swift の学習には、詳解 Swift という書籍が、おすすめです。
著者は、Swift の初期から書籍を出していますし、Swift の前に主力言語だった Objective-C という言語についても同様の書籍を出しています。
最新版を購入するのがおすすめです。
現時点では、上記の Swift 5 に対応した第5版が最新版です。
Sponsor Link