Attribute / AnnotationでCファミリーAPIを“Swifty”に ― レガシーAPIをモダンかつ安全に利用する方法 by 下森 周平

iOSDC Japan 2025
LT(5分)

Attribute / AnnotationでCファミリーAPIを“Swifty”に ― レガシーAPIをモダンかつ安全に利用する方法

forestunder_dev 下森 周平 forestunder_dev

こんな経験ありませんか?
C言語ライブラリのエラーコードをSwift.Errorとして扱えたら楽なのに...
C言語関数を使う際に必要なUnsafeMutablePointerを間違えた操作をしてクラッシュしてしまった...

その不満、関数にattribute(属性)を足すだけで、解決できるかもしれません。
上記の例ではエラーコードの宣言箇所にattribute((ns_error_domain(CustomError))を追加するだけでSwiftではErrorに準拠したCustomErrorとしてモダンに扱えます。
また、Xcode26から導入される__counted_byを使えばコンパイラレベルでC言語関数を安全に呼び出せることを保証できるかもしれません。

本トークでは、そんなSwiftの特徴であるモダンな文法やメモリ安全性を、attributeやannotationをたった1行付与することでCファミリーAPIに持ち込むユースケースを解説・紹介します。

実際の現場での導入事例やXcode26で利用できる新たなアノテーション(counted_by)の使い方を紹介しながら、「書き換えゼロのセーフティ向上」と「API が一気に Swifty になる爽快感」をお届けします。