プレビュー
アプリを作るとき、他の人と共有してフィードバックを得たいと思うかもしれません。伝統的に、これはAppleのTestFlightのようなプラットフォームにアプリをビルドし、署名し、プッシュすることによってチームが行うことです。しかし、このプロセスは面倒で時間がかかることがあり、特に同僚や友人からの素早いフィードバックを求めている場合はなおさらです。
このプロセスをより合理化するために、Tuistはアプリのプレビューを生成して誰とでも共有する方法を提供する。
::: 警告 デバイスの製造には署名が必要です。
デバイス用にビルドする場合、アプリが正しく署名されていることを確認するのは、現在のところお客様の責任です。将来的にはこれを合理化する予定です。
:::
bash
tuist build App # Build the app for the simulator
tuist build App -- -destination 'generic/platform=iOS' # Build the app for the device
tuist share Appbash
xcodebuild -scheme App -project App.xcodeproj -configuration Debug # Build the app for the simulator
xcodebuild -scheme App -project App.xcodeproj -configuration Debug -destination 'generic/platform=iOS' # Build the app for the device
tuist share App --configuration Debug --platforms iOS
tuist share App.ipa # Share an existing .ipa fileこのコマンドを実行すると、シミュレーターでも実機でも、アプリを実行するためのリンクが生成される。必要なのは、以下のコマンドを実行することだけだ:
bash
tuist run {url}
tuist run --device "My iPhone" {url} # Run the app on a specific device.ipa ファイルを共有する場合、プレビューリンクを使用してモバイルデバイスからアプリを直接ダウンロードできます。.ipa プレビューへのリンクは、デフォルトでは_公開_ となっています。将来的には非公開にするオプションが追加され、リンクの受信者はアプリをダウンロードするためにTuistアカウントで認証する必要があります。
tuist run は、latest 、ブランチ名、特定のコミットハッシュなどの指定子に基づいて最新のプレビューを実行することもできます:
bash
tuist run App@latest # Runs latest App preview associated with the project's default branch
tuist run App@my-feature-branch # Runs latest App preview associated with a given branch
tuist run App@00dde7f56b1b8795a26b8085a781fb3715e834be # Runs latest App preview associated with a given git commit shaトラック
トラックによって、プレビューを名前付きのグループに整理することができます。例えば、社内テスター用にbeta トラックを用意し、自動ビルド用にnightly トラックを用意することができます。トラックは簡単に作成できます。共有時にトラック名を指定するだけで、存在しない場合は自動的に作成されます。
特定のトラックでプレビューを共有するには、--track オプションを使用します:
bash
tuist share App --track beta
tuist share App --track nightlyこれは次のような場合に役立つ:
- プレビューの整理 :目的別にプレビューをグループ化する(例:
ベータ版:、夜間版:、内部版:)。 - アプリ内アップデート :Tuist SDKは、どのアップデートをユーザーに通知するかを決定するためにトラックを使用します。
- フィルタリング :Tuistのダッシュボードでトラックごとのプレビューを簡単に検索・管理できる
プレビューの可視性
プレビューにアクセスできるのは、プロジェクトが所属する組織にアクセスできる人だけです。期限切れリンクのサポートを追加する予定です。
TuistのmacOSアプリ
Tuist Previewsの実行をさらに簡単にするために、我々はTuist macOSメニューバーアプリを開発した。Tuist CLI経由でプレビューを実行する代わりに、macOSアプリをダウンロードすることができる。brew install --cask tuist/tuist/tuist を実行してアプリをインストールすることもできます。
プレビューページで「実行」をクリックすると、macOSアプリが現在選択されているデバイス上で自動的に起動します。
要件
Xcodeをローカルにインストールし、macOS 14以降を使用している必要があります。
TuistのiOSアプリ
macOSアプリと同様に、Tuist iOSアプリはプレビューへのアクセスと実行を効率化します。
プル/マージリクエストのコメント
GITプラットフォームとの統合が必要です。
プル/マージリクエストのコメントを自動的に取得するには、リモートプロジェクトとGitプラットフォームを統合します。
:::
新しい機能のテストは、あらゆるコードレビューの一部であるべきだ。しかし、アプリをローカルでビルドしなければならないことは、不必要な摩擦を増やし、開発者が自分のデバイスで機能をテストすることをスキップしてしまうことになりがちだ。しかし、、各プルリクエストに、Tuist macOSアプリで選択したデバイス上でアプリを自動的に実行するビルドへのリンクが含まれていたらどうだろう?
TuistプロジェクトがGitHubなどのGitプラットフォームと接続されたら、CIワークフローにtuist share MyAppを追加します。するとTuistはプルリクエストに直接プレビューリンクを投稿します:
.
アプリ内アップデート通知
Tuist SDK](https://github.com/tuist/sdk)を使用すると、新しいプレビュー版が利用可能になったことをアプリが検出し、ユーザーに通知することができます。これはテスターを最新ビルドに保つのに便利です。
SDKは、同じプレビュートラック 内の更新をチェックします。--track を使ってプレビューを明示的なトラックと共有すると、SDK はそのトラックの更新を探します。トラックが指定されていない場合は、git ブランチがトラックとして使用されます。そのため、main ブランチからビルドされたプレビューは、main からビルドされた新しいプレビューについてのみ通知されます。
インストール
Swift Packageの依存関係としてTuist SDKを追加する:
swift
.package(url: "https://github.com/tuist/sdk", .upToNextMajor(from: "0.1.0"))アップデートの監視
monitorPreviewUpdates を使用して、新しいプレビュー・バージョンを定期的にチェックしてください:
swift
import TuistSDK
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.task {
TuistSDK(
fullHandle: "myorg/myapp",
apiKey: "your-api-key"
)
.monitorPreviewUpdates()
}
}
}
}単一更新チェック
手動更新チェック用:
swift
let sdk = TuistSDK(
fullHandle: "myorg/myapp",
apiKey: "your-api-key"
)
if let preview = try await sdk.checkForUpdate() {
print("New version available: \(preview.version ?? "unknown")")
}アップデート監視の停止
monitorPreviewUpdates キャンセル可能なタスク を返す:
swift
let task = sdk.monitorPreviewUpdates { preview in
// Handle update
}
// Later, to stop monitoring:
task.cancel()::: 情報
アップデートチェックは、シミュレータおよびApp Storeビルドでは自動的に無効になります。
:::
READMEバッジ
Tuistプレビューをリポジトリでより見やすくするために、README ファイルに最新のTuistプレビューを指すバッジを追加することができます:
トゥイスト・プレビュー](https://tuist.dev/Dimillian/IcySky/previews/latest)。
README にバッジを追加するには、以下のマークダウンを使用し、アカウントとプロジェクトのハンドルを独自のものに置き換えてください:
[](https://tuist.dev/{account-handle}/{project-handle}/previews/latest)プロジェクトに異なるバンドル識別子を持つ複数のアプリが含まれている場合、bundle-id クエリパラメータを追加することで、どのアプリのプレビューにリンクするかを指定できます:
[](https://tuist.dev/{account-handle}/{project-handle}/previews/latest?bundle-id=com.example.app)オートメーション
--json フラグを使えば、tuist share コマンドからJSON出力を得ることができる:
tuist share --jsonJSON出力は、CIプロバイダを使用してSlackメッセージを投稿するなどのカスタム自動化を作成するのに便利です。JSONには、url キーにプレビューのフルリンク、qrCodeURL キーにQRコード画像のURLが含まれており、実際のデバイスからプレビューをダウンロードしやすくなっています。JSON出力の例を以下に示す:
json
{
"id": 1234567890,
"url": "https://cloud.tuist.io/preview/1234567890",
"qrCodeURL": "https://cloud.tuist.io/preview/1234567890/qr-code.svg"
}

