fastlaneを使ってmacアプリをビルドする
/ 4 min read
Updated:Table of Contents
はじめに
自分は今Raelizeというmac向けのIMEを作っています。IMEは普通のアプリ開発と違って、ビルド後に~/Library/Input Methods に配置して、さらにPCをログアウトしないと動作検証ができません(と思っていました…)。
しかし、調べてみると実は毎回ログアウトしなくても、ビルドしたIMEをkillすれば検証ができることが分かりました。
だったら、fastlaneで全部自動化できそうだなということでやってみました。試してみるまでは、fastlaneはモバイル専用と思ってましたが、macアプリでも動きました。
| ツール | バージョン |
|---|---|
| Ruby | 3.3.0 |
| fastlane | 2.220.0 |
| Xcode | 15.3 |
| Swift | 5.10 |
作ったlane
実際に作ったlaneです。リポジトリはこちらにあります。
default_platform(:mac)
platform :mac do desc "Build macOS App" lane :app_build do ime_path = "/Library/Input Methods"
build_mac_app( configuration: "Debug", export_method: "development", scheme: "Raelize", output_directory: "#{ENV["HOME"]}#{ime_path}", clean: true )
sh("pkill", "Raelize") endendplatformにはmacを指定して、build_mac_appでビルドするようにしました。
一応、buid_appでも動きましたが、build_mac_appを使うようにしました。公式ドキュメントには以下のように書いていて、こっちのほうがmac向けだと分かりやすいし、なんとなくmac向けにビルド設定が最適化されてそう(多分)と思ったので使いました(gymがbuild_appのエイリアスだということを初めて知りました)。
gym ## alias for "build_app"build_ios_app ## alias for "build_app (only iOS options)"build_mac_app ## alias for "build_app (only macOS options)"各項目の設定と意味は以下のとおりです。
| 項目 | 意味 |
|---|---|
| configuration | 開発用で使いたいのでDebugを指定します |
| export_method | 開発用にビルドしたいのでdevelopmentを指定します |
| scheme | ビルドするターゲットはRaelizeなのでRaelizeを指定します |
| output_directory | ビルド後のappの生成箇所を指定します。直接~/Library/Input Methods にビルドします |
| clean | キャッシュなどが残って意図しないエラーが出たりすると手間なのでcleanしてからビルドするようにしています(その分ビルド時間が伸びてる気がします) |
output_directoryではホームディレクトリを含めたいので、#{ENV["HOME"]} の環境変数を使っています。これで、誰がビルドしても一意の場所にビルドするようになります。
最後にsh アクションでRaelizeをpkillしてプロセスをkillします。
終わりに
初めてmac向けにfastlaneを使いました。IMEの検証がかなり面倒だったので、これで楽になりました。
自動化大好き!