Xcode Cloudでビルドの前後に処理を行う

今更だが、Xcode Cloudが便利だ。Apple純正のCI/CD環境ということもあって、設定で複雑なことをする必要がなく、やれることも限られている分わかりやすい。

大抵のアプリのビルドでは、Xcode Cloudの標準の機能だけで問題なくApp Storeへの申請/TestFlightでの配布ができているのだが、稀にビルドの前後に何らかの処理を行いたいケースがある。

https://developer.apple.com/documentation/xcode/writing-custom-build-scripts

Xcode Cloudには、Custom Build Scriptという仕組みが用意されており、このルールに従ってスクリプトを用意すると、下記のタイミングで任意の処理を実行できる。

  • レポジトリからのCloneが終わった直後(ci_post_clone.sh)
  • xcodebuildが実行される直前(ci_pre_xcodebuild.sh)
  • xcodebuildが終わった直後(ci_post_xcodebuild.sh) ※失敗時も呼ばれる

ビルド番号(CI_BUILD_NUMBER)や何をトリガーにワークフローが開始されたのか(CI_START_CONDITION)などの情報を環境変数として参照できるようになっている。

https://developer.apple.com/documentation/xcode/environment-variable-reference

デバッグ用の情報(COMMIT HASHなど)をアプリ内で参照できるようにする、など色々使える場面があって、覚えておくと何かと便利。

M1 iMacへの買い換え

2020年末に購入したM1チップ搭載のMacBook Proが快適だ。Xcodeを使ったアプリ開発やPremiereでの動画編集はもちろん、最近少しずつ増えてきたニューラルネットワークが内部的に使われているようなAIアプリのパフォーマンスにおいて、Intel搭載のiMacとは顕著な差があることを実感している。

早くiMacもApple Silicon搭載の27インチモデルが発売されないかとずっと待ってきたが、待ち続けているうちに2年が経過してしまった。2023年中には発売されるのではないかという噂もあったが、昨今のApple製品の値段設定を見ていると発売されてもかなり高価になりそうなこと、それを待つ間の作業今のiMacの作業効率で失う生産性のバランスを考えて、24インチモデルの現行iMacに買い換えることにした。

Apple Siliconが出た当初はDockerや音源プラグインなどで色々問題があったが、最近ではほとんど解消され、さらにはプログラムの最適化も進んでおり環境構築もかなりスムーズに終わった。環境が綺麗な状態で、パフォーマンスをテストしておこうと思う。

“M1 iMacへの買い換え” の続きを読む

M1(Apple silicon)のMacBook Pro

ARMベースのM1チップを搭載したMacが発売されたので、アプリの開発/動作確認用に1台購入した。幸い、Rosetta2の出来がよいようで、自分の出しているMacアプリは基本的にARMベースのMacでも無事に動くことが確認できた。アプリの動作確認ついでに、マシンのパフォーマンスがどれぐらいなのかテストしてみた。

“M1(Apple silicon)のMacBook Pro” の続きを読む

m4aファイルをwavに変換するクイックアクション

ここ数年、ギターの録音はAmpliTube for iPhone/iPadを使うようになった。AmpliTubeでは、録音したトラックをm4aファイルとして書き出すことができるのだが、Cubaseではm4aを直接読み込むことができないので、一度wavファイルに変換して読み込んでいる。この作業が毎回手間なので、Finderから右クリックで一発でwavに変換するためのクイックアクションを作った。

“m4aファイルをwavに変換するクイックアクション” の続きを読む

Privateレポジトリへの依存があるプロジェクトをBitriseでビルドする

Swift Package ManagerでPrivateなレポジトリのパッケージへの依存を含むプロジェクトをBitrise上でビルドしようとして、認証周りで少しハマってしまった。

“Privateレポジトリへの依存があるプロジェクトをBitriseでビルドする” の続きを読む

CatalystとSwiftUIを同時に使うとUIDocumentPickerViewControllerやUIActivityViewControllerが画面に表示されない

CatalystでiOS / macOS両方で動くアプリを作ってみようと思ったところ、表題の通りmacOSでUIDocumentPickerViewController / UIActivityViewControllerが正しく動作しない(画面に表示されない)問題にぶつかり、ハマってしまった。

11/3追記: ワークアラウンドを見つけたので追記

“CatalystとSwiftUIを同時に使うとUIDocumentPickerViewControllerやUIActivityViewControllerが画面に表示されない” の続きを読む

Dockアイコンにドロップされたファイルを処理する

Non Document-basedアプリケーションで、Dockアイコンにファイルをドラッグ&ドロップできるように実装しようとしたら、意外と情報が見つからず苦労したのでまとめておく。 “Dockアイコンにドロップされたファイルを処理する” の続きを読む

 MacBook Pro Late2016を買った

2011年に買ったMacBook Proは、開発や映像編集に使う上では未だに快適に動いており、値段的なことを考えてもなかなか新しいMacBook Proに買い換えるタイミングが訪れなかったのだが、唯一バッテリーだけは劣化してきてしまったので、ついに去年の秋に発表されたモデルを買った。 ” MacBook Pro Late2016を買った” の続きを読む

macOSアプリのCI事情8 – 一連の流れをコマンドで実行してみる

pkgファイルをiTunes Connectにアップロードするところまでをコマンドラインから実行できるようになったら、一度流れを整理しておこう。 “macOSアプリのCI事情8 – 一連の流れをコマンドで実行してみる” の続きを読む

macOSアプリのCI事情7 – deliverでpkgファイルをiTunes Connectにアップロードする

iTunes Connectにアップロード可能なpkgファイルをコマンドラインから作れるようになったら、今度はそのpkgファイルをコマンドラインからiTunes Connectにアップロードしてみよう。 “macOSアプリのCI事情7 – deliverでpkgファイルをiTunes Connectにアップロードする” の続きを読む