iOS開発で役立ったTIPS集

実機やエミュレーターで通信速度が遅い状態を再現する方法
エミュレーター(mac)
- Mac側の通信状態を制御できる「Network Link Conditioner」をインストールして制御する
実機
- デベロッパモードをONにしておく
-
デベロッパ > ネットワークリンク調節器
で任意の通信速度に制御可能
図1 | 図2 |
---|---|
![]() |
![]() |

ビルド時にエラーが直らない場合の対処法
- コード上でのエラーやビルド対象がGeneric Devicesになっていないかなどを確認。
- Clean Build Folder
Cmd + Shift + K
or Clean Build Folder ImmediatelyCmd + Opt + Shift + K
- Derived Data削除
- Xcode再起動
- マシン再起動

Derived Data削除のいろんなやり方
- XcodeのSettings
Cmd + ,
> Locations > Derived Data の矢印からフォルダを開いて削除 - 素のコマンド実行
rm -rf ~/Library/Developer/Xcode/DerivedData/
- DevCleaner (GUIツール)
- RaycastのXcode Pluginを使う
個人的には最後のやりかた(Raycast)が気に入っています。

並列テストONのプロジェクトでローカルでのテスト実行時にエミュレータがたくさん立ち上げないようにする
結論: ローカル実行専用のSchemeを作成する
並列テストが有効になっているSchemeかつ共通設定だと変えることができない(Gitで差分が出てしまう)ケースが有る。
しかしSchemeは SharedをOFFにするとバージョン管理=共有されないので、適当なSchemeをコピーして並列テストをOFFにすれば良い。

Build/Runを早くする
用途に合わせてビルドと実行を別々に行うと時間短縮に
- ビルドのみ
Cmd + B
- 最後のビルドで実行(差分がない状態でもう一度RUN)
Ctrl + Cmd + R
ビルド時間の表示をする設定
defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

コマンドラインからシミュレーターの現在地GPSを設定する
位置情報を利用する機能のデバッグにとても便利 ❗
-
set-simulator-location
コマンドを使うと、lat,lng形式か自然言語で現在地を設定できる -
-c
でlat,lng形式の座標指定 🗺️ -
-q
で自然言語による位置指定、日本語も利用可能 🇯🇵
set-simulator-location -c 35.360720, 138.727440
set-simulator-location -q 東京駅

実行中のシミュレーターでURLを開く
Custom URL SchemeやUniversal Linkの指定で、開きたい画面で一発で開くことができる!
xcrun simctl openurl booted [URL]
デバイス内でブラウザのアドレスバーにURLを入れて開いたり、リンクをタップしたのと同じ挙動になる。
シミュレーター上でURLを入れたり、コピペするのが面倒なときに便利。

よりカンタンに呼び出せてAndroidでも同時にURLを開けるZSH関数
毎回 xcrun
するのは面倒。
加えてAndroid開発をしていると adb shell am start
で同様にURLを開きたくなることがある。
そこで独自にZSH関数を定義し、かつURLの履歴を fzf
を噛ませてインクリメンタルに遡れるようにすると便利。
例えばこのように open_url
関数を定義すると便利。
open_url [URL] # URLを指定してiOS/Androidの両方で開く
open_url -i [URL] # URLを指定してiOSで開く
open_url # fzfを起動して履歴からURLを選択
無論このスクリプトは自作ではなく完全CLAUDE製です 🤖
他のLLMでも作成は可能なので、これをコピーするよりも各自のユースケースに合わせて制作した方がよいかもしれません。

現在インストールされているアプリをアンインストールする
初回起動のデバッグなどでアンイストール作業が実質不要に!
xcrun simctl uninstall booted <your app identifier>
ターミナルからできるので、画面のアイコン長押しが不要で作業短縮。
さらにPre-actionsステップでこのコマンドを実行するSchemeを作っておくと、実行するだけで自動で再インストールしてから起動になるのでなお便利。
実機の場合は booted
ではなくデバイスIDを指定する (本記事では割愛します)

FYI: xcrun simctl
コマンドについて
他にも xcrun simctl
の使い方はいろいろあるのでこのあたりの記事を参考にしてみて

シミュレーターのタイムゾーンを変える
タイムゾーンを変えてのデバッグに便利!
Environment variables(環境変数)に TZ
を指定する。
例えば TZ=Asia/Bangkok
とすると、タイ バンコクのタイムゾーンで起動する。
シミュレーター上ではシステムのタイムゾーンを指定できない(Mac上で変えるしかない)ので、デバッグ時だけタイムゾーンを変えるにはこの方法。
seealso

複数シミュレーターで同時に検証
あらかじめシミュレーターを起動しておいたうえで、生成された .app
ファイルを起動中のシミュレーター内にドラッグ・アンド・ドロップするとインストールできる。
.app
はDerivedDataフォルダに出力されるため、BuildのPost-actionsでファイルをDesktop等にコピーするようなスクリプトを走らせると便利。
例えば
derivedDataPath=$(find ~/Library/Developer/Xcode/DerivedData/ -type d -name "*YOUR_APP_NAME*" -print -quit)
filePath=$derivedDataPath/Build/Products/Debug(Development)-iphonesimulator/YOUR_APP_NAME.app
cp -r $filePath ~/Desktop
これをBuildのPost-actionsに追加。
seealso

Xcode上の任意のコードを右クリックしGitHubで開く
VSCodeやIntelliJなどの主要IDEにはあるのに、Xcodeにはなくて不便。
しかし、automatorを使った右クリックのServiceメニュー拡張を作ってくれている方がいるのでこれを使う。
quick-actionsディレクトリ以下のautomatorファイルを登録するだけで「Open on GitHub」と「Copy GitHub link to clipboard」が追加されます。