distributing-tauri-for-ios について
distributing-tauri-for-iosは、Tauri v2アプリをApple App Storeで配布するためのガイドスキルです。iOSのビルドや配布を担当する開発者向けに、署名設定、アップロード、TestFlight、審査準備を扱います。
主な機能
- 01Bundle IDとバージョンの設定
- 02証明書とプロビジョニングプロファイルの準備
- 03IPAのビルドとアップロード
- 04TestFlightでのテスト設定
- 05ストア情報の準備と審査申請
活用シーン
- 01Tauri iOSアプリのApp Store署名設定
- 02App Store Connectビルドの作成とアップロード
- 03TestFlightテストとストア審査の準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dchuk/ claude-code-tauri-skills --skill distributing-tauri-for-iosインストール後、Claude Code で/distributing-tauri-for-iosを入力して読み込まれたか確認します。
詳細
iOS 向け Tauri アプリの配布
このスキルでは、Tauri v2 アプリケーションを Apple の iOS App Store に配布する完全な手順を説明します。
前提条件
Tauri iOS アプリを配布する前に、以下を確認してください。
- macOS 開発マシン(iOS ビルドに必要)
- iOS SDK を含む Xcode がインストールされていること
- Apple Developer Program への登録(年間 99 ドル)
- Tauri プロジェクトが iOS 向けに初期化されていること(
tauri ios init)
Apple Developer Program への登録
developer.apple.com/programs で登録します。
- Apple ID でサインインします
- Apple Developer Agreement に同意します
- 登録を完了します(個人または組織)
- 承認を待ちます(通常 24~48 時間)
バンドル ID の設定
バンドル ID は一意で、すべての設定で一致している必要があります。
tauri.conf.json
{
"identifier": "com.yourcompany.yourapp",
"version": "1.0.0",
"bundle": {
"iOS": {
"bundleVersion": "1"
}
}
}
設定に関する注意事項:
identifier:逆ドメイン形式で、App Store Connect と一致している必要がありますversion:CFBundleShortVersionString(ユーザーに表示されるバージョン)になりますbundleVersion:CFBundleVersion(ビルド番号)になります。アップロードごとに増やす必要があります
App Store Connect でバンドル ID を登録する
- Certificates, Identifiers & Profiles に移動します
- 「+」をクリックして、新しい識別子を登録します
- 「App IDs」を選択し、続いて「App」を選択します
- 説明を入力し、
tauri.conf.jsonと一致する明示的なバンドル ID を入力します - 必要な機能を選択します
- 「Register」をクリックします
コード署名の設定
証明書を作成する
配布証明書(App Store に必要):
- macOS でキーチェーンアクセスを開きます
- キーチェーンアクセス > 証明書アシスタント > 認証局に証明書を要求 を選択します
- メールアドレスを入力し、「ディスクに保存」を選択します
- Certificates に移動します
- 「+」をクリックし、「Apple Distribution」を選択します
- 証明書署名要求をアップロードします
- ダウンロードしてダブルクリックし、インストールします
プロビジョニングプロファイルを作成する
App Store 配布プロファイル:
- Profiles に移動します
- 「+」をクリックして、新しいプロファイルを作成します
- 「Distribution」の下にある「App Store Connect」を選択します
- App ID を選択します
- 配布証明書を選択します
- プロファイルに名前を付けて生成します
.mobileprovisionファイルをダウンロードします
プロビジョニングプロファイルをインストールする
# Copy to Xcode provisioning profiles directory
cp ~/Downloads/YourApp_AppStore.mobileprovision \
~/Library/MobileDevice/Provisioning\ Profiles/
または、ファイルをダブルクリックすると自動的にインストールされます。
Xcode プロジェクトの設定
Xcode で Tauri iOS プロジェクトを開きます。
tauri ios build --open
Xcode で署名を設定する
- ナビゲーターでプロジェクトを選択します
- アプリのターゲットを選択します
- 「Signing & Capabilities」タブに移動します
- 手動で管理する場合は、「Automatically manage signing」のチェックを外します
- チームを選択します
- App Store のプロビジョニングプロファイルを選択します
必要な機能
アプリの要件に応じて機能を追加します。
| 機能 | 必要な場合 |
|---|---|
| プッシュ通知 | APNs を使用する場合 |
| バックグラウンドモード | バックグラウンドタスクを実行する場合 |
| App Groups | 拡張機能間でデータを共有する場合 |
| 関連付けられたドメイン | ユニバーサルリンクを使用する場合 |
Info.plist の設定
src-tauri/gen/apple/[AppName]_iOS/Info.plist にあります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>Your App Name</string>
<key>CFBundleName</key>
<string>YourApp</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>NSCameraUsageDescription</key>
<string>This app requires camera access for...</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires photo library access for...</string>
</dict>
</plist>
必要な使用目的の説明(アプリでこれらの機能を使用する場合のみ追加してください):
NSCameraUsageDescription:カメラへのアクセスNSPhotoLibraryUsageDescription:フォトライブラリNSLocationWhenInUseUsageDescription:位置情報サービスNSMicrophoneUsageDescription:マイクへのアクセス
アプリアイコン
ソース画像から iOS アプリアイコンを生成します(1024x1024 を推奨)。
tauri icon /path/to/app-icon.png --ios-color '#ffffff'
これにより、必要なすべてのアイコンサイズが src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/ に生成されます。
App Store 向けビルド
コマンドラインでのビルド
# Build IPA for App Store Connect
tauri ios build --export-method app-store-connect
IPA は以下に生成されます。
src-tauri/gen/apple/build/arm64/[AppName].ipa
ビルドオプション
# Build with specific target
tauri ios build --target aarch64-apple-ios --export-method app-store-connect
# Build in release mode (default for export-method)
tauri ios build --release --export-method app-store-connect
# Build and open in Xcode for manual archive
tauri ios build --open
Xcode を使ったアーカイブ(代替方法)
- プロジェクトを開きます:
tauri ios build --open - 宛先として「Any iOS Device」を選択します
- Product > Archive を選択します
- Window > Organizer を選択してアーカイブを表示します
- 「Distribute App」をクリックします
- 「App Store Connect」を選択します
- ウィザードの手順に従います
App Store Connect API キーの設定
アップロードを自動化するための API キーを作成します:
- App Store Connect > Users and Access に移動します
- 「Integrations」タブを選択します
- 「App Store Connect API」をクリックしてから「+」をクリックします
- キーに名前を付け、「Admin」または「Developer」ロールを選択します
- 「Generate」をクリックします
.p8ファイルをダウンロードします(一度しかダウンロードできません)- Key ID と Issuer ID を控えます
API キーの保存
# Create directory
mkdir -p ~/.appstoreconnect/private_keys
# Move the key file (rename to include Key ID)
mv ~/Downloads/AuthKey_XXXXXXXXXX.p8 ~/.appstoreconnect/private_keys/
# Alternative location
mkdir -p ~/private_keys
mv ~/Downloads/AuthKey_XXXXXXXXXX.p8 ~/private_keys/
環境変数(任意)
export APPLE_API_KEY_ID="XXXXXXXXXX"
export APPLE_API_ISSUER="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
App Store Connect へのアップロード
altool を使う
xcrun altool --upload-app \
--type ios \
--file "src-tauri/gen/apple/build/arm64/YourApp.ipa" \
--apiKey "$APPLE_API_KEY_ID" \
--apiIssuer "$APPLE_API_ISSUER"
Transporter アプリを使う
- Mac App Store から Transporter をダウンロードします
- Apple ID でサインインします
- IPA ファイルをドラッグ&ドロップします
- 「Deliver」をクリックします
Xcode Organizer を使う
- Window > Organizer を選択します
- アーカイブを選択します
- 「Distribute App」をクリックします
- 「App Store Connect」を選択します
- 「Upload」または「Export」を選択します
- 画面の指示に従います
TestFlight によるベータテスト
アップロードの処理後(通常 15~30 分):
内部テスト
- App Store Connect > Your App > TestFlight を選択します
- 内部テスターを追加します(最大 100 人。App Store Connect ユーザーである必要があります)
- テスターに招待メールが届きます
外部テスト
- テストグループを作成します
- ビルドをグループに追加します
- ベータ版 App Review に提出します(外部テスターには必須です)
- 外部テスターを追加します(最大 10,000 人)
- テスターは TestFlight アプリからインストールします
App Store への提出
App Store Connect でアプリを作成する
- App Store Connect に移動します
- My Apps > 「+」 > New App を選択します
- iOS プラットフォームを選択します
- アプリ名、主要言語、バンドル ID、SKU を入力します
- 「Create」をクリックします
App Store の掲載情報を準備する
必要なアセット:
| アセット | 仕様 |
|---|---|
| スクリーンショット | 6.7"(1290x2796)、6.5"(1284x2778)、5.5"(1242x2208) |
| アプリアイコン | 1024x1024 PNG(アルファなし) |
| 説明 | 最大 4000 文字 |
| キーワード | 最大 100 文字 |
| サポート URL | 必須 |
| プライバシーポリシー URL | 必須 |
アプリのプライバシー
アプリのプライバシーに関する質問に回答します:
- App Store Connect > Your App > App Privacy を選択します
- データ収集に関する質問に回答します
- 収集するデータの種類を指定します
- データの利用目的を示します
審査に提出する
- App Store Connect でビルドを選択します
- 必須のメタデータをすべて入力します
- 輸出コンプライアンスに関する質問に回答します
- 「Submit for Review」をクリックします
審査には通常 24~48 時間かかります。
よくある問題と解決策
コード署名エラー
「No signing certificate found」
# List available certificates
security find-identity -v -p codesigning
# Verify certificate is valid
security find-certificate -c "Apple Distribution" -p
「Provisioning profile doesn't match」
- すべての場所でバンドル ID が完全に一致していることを確認します
- 証明書を変更した場合は、プロビジョニングプロファイルを再生成します
ビルドの失敗
「Unsupported architecture」
# Ensure building for correct target
tauri ios build --target aarch64-apple-ios --export-method app-store-connect
「Missing entitlements」
- Xcode のケイパビリティが App ID のケイパビリティと一致していることを確認します
- ケイパビリティを変更した後は、プロビジョニングプロファイルを再生成します
アップロードエラー
「Invalid binary」
- 最小 iOS バージョンが正しく設定されていることを確認します
- 必須アイコンがすべて揃っていることを確認します
- Info.plist に必須キーがあることを確認します
「Missing compliance」 暗号化を使用していない場合は、Info.plist に追加します:
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
CI/CD との統合
GitHub Actions の例
name: iOS Release
on:
push:
tags:
- 'v*'
jobs:
build-ios:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Rust
uses: dtolnay/rust-action@stable
with:
targets: aarch64-apple-ios
- name: Install dependencies
run: npm ci
- name: Install certificate
env:
CERTIFICATE_BASE64: ${{ secrets.APPLE_CERTIFICATE_BASE64 }}
CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
run: |
CERTIFICATE_PATH=$RUNNER_TEMP/certificate.p12
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
echo -n "$CERTIFICATE_BASE64" | base64 --decode > $CERTIFICATE_PATH
security create-keychain -p "" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "" $KEYCHAIN_PATH
security import $CERTIFICATE_PATH -P "$CERTIFICATE_PASSWORD" \
-A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
- name: Install provisioning profile
env:
PROVISIONING_PROFILE_BASE64: ${{ secrets.PROVISIONING_PROFILE_BASE64 }}
run: |
PP_PATH=$RUNNER_TEMP/profile.mobileprovision
echo -n "$PROVISIONING_PROFILE_BASE64" | base64 --decode > $PP_PATH
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles/
- name: Build iOS
run: npm run tauri ios build -- --export-method app-store-connect
- name: Upload to App Store Connect
env:
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
run: |
mkdir -p ~/.appstoreconnect/private_keys
echo "$APPLE_API_KEY" > ~/.appstoreconnect/private_keys/AuthKey_$APPLE_API_KEY_ID.p8
xcrun altool --upload-app --type ios \
--file src-tauri/gen/apple/build/arm64/*.ipa \
--apiKey $APPLE_API_KEY_ID \
--apiIssuer $APPLE_API_ISSUER
バージョン管理
バージョンの更新
App Store に提出するたびに、適切にバージョンを更新します:
{
"version": "1.0.0",
"bundle": {
"iOS": {
"bundleVersion": "1"
}
}
}
version:ユーザーに見える変更に応じて更新します(1.0.0 -> 1.0.1 または 1.1.0)bundleVersion:アップロードのたびに更新する必要があります(1 -> 2 -> 3)
バージョンスクリプトの例
#!/bin/bash
# increment-build.sh
CONFIG="src-tauri/tauri.conf.json"
CURRENT=$(jq -r '.bundle.iOS.bundleVersion' $CONFIG)
NEW=$((CURRENT + 1))
jq ".bundle.iOS.bundleVersion = \"$NEW\"" $CONFIG > tmp.json && mv tmp.json $CONFIG
echo "Bundle version incremented to $NEW"