Swiftでlibwebpラッパーを作っている

Swiftでlibwebpラッパーを作っている。

最初のモチベーションとして、社内のデザイナーがWebP*1への変換ってどうするの?って言い始めた時に、 ちょっとググってみたところ、そんなに便利なMacGUIで変換できるアプリがないなーという話があって、 試しにMacアプリの練習がてら作ってみるかーというところだった。

何も考えずにlibwebpをSwiftのModuleとしてimportして実際に使うアプリを作ってみようとしてみたところ、 CのライブラリをSwiftで扱うのが意外と大変なので、一旦ライブラリとして外だししてみようと思い始めた。

ただ、自分で作るのだるいので誰かいいもの作ってないかと検索してみるとiOS/macOS/Swift周りのWebP界隈は現在こんな状況だった。

というわけで、以下のような要件でライブラリを作ってみることに。

  1. libwebpをラップしてエンコード・デコード出来る
  2. macOS/iOS/Linuxで使える
  3. Swift3ベースでC触ってる感がなくて済む

ということで色々試行錯誤してv0.0.1のタグを打って、もともと最初に作っていたMacアプリ側でcarthage経由でインストールできた。 まだエンコードしか詳細なAPIに対応してなくてデコードの方は適当。詳細なAPIに対応すると、デコード時にcrop/resizeが出来るらしい。 あと、macOS/iOS両方でビルド出来るようにしてあって多分Linuxでもビルドできる状態にも出来そうだけどまだ未対応。

github.com

macOSだけでよければbrewでインストールしたlibwebpにリンクさえしとけばとりあえず動くけど、 iOSでも動かそうとするとlibwebpをiOS端末のCPU向けにビルドしないといけなかったりして、 プロジェクト構成作る時点からすでに結構めんどかったりする。

ということで、その辺の詳細な知見をAdvent Calendarの時に書くのでよろしくお願いします。

qiita.com