まず初めに
Xcode26 (のSwift6.2コンパイラ) から、SE-0451 の 生識別子 (Raw identifiers) が利用可能になりました。
そのプロポーザルが動機を説明する中で SF Symbols の例が挙げられてた事もあり、せっかくなのでSF Symbols名を生識別子で提供するライブラリを作ってみました。
SFSymbolKeys
作ったばかりのライブラリですが、GitHub で 公開しています。
SwiftUIでの使用例
生識別子 `9.square.fill`
を使って、以下のようにコードを書くことができます。
識別子なので、typoしたらコンパイラが指摘してくれます。
@available
属性を設定しているので、OSバージョン・チェックの指摘もしてくれます。
ただし、このライブラリは SwiftUI など他フレームワーク用の拡張メソッドを提供しません。以下のような拡張メソッドを自身で用意してください。
extension Image {
init(symbolKey: SFSymbolKey) {
self.init(systemName: symbolKey.name)
}
}
付録: このライブラリの作り方
生識別子部分のコードは、Tools/SFSymbolKeyCodeGen の素朴なコードジェネレータで生成しています。
そして肝心の SF Symbols の名前の一覧は、SF Symbols アプリから力技のコピー&ペーストで作成しています。魔法はありませんので、私がメンテナンスを怠けても皆さん自身の手でメンテナンス可能です。
おわりに
本格的なアプリ開発だと使用するアイコンは厳選されるし、工夫して実装すれば SF Symbols名を指定するコードを散在しないようにもできるので、このライブラリの出番も少ないかな?と感じてたりします。
とはいえ、そんな工夫した方針が無いまま開発が進んだり、試作などで雑にアイコンを設定したい時もあるので、そんな場合にこのライブラリが役に立つかな?とも思ったりします。
気になった方は、お試しで使ってみてください。