View in English

  • Apple Developer
    • 今すぐ始める

    「今すぐ始める」を詳しく見る

    • 概要
    • 学ぶ
    • Apple Developer Program

    最新情報

    • 最新ニュース
    • Hello Developer
    • プラットフォーム

    プラットフォームを詳しく見る

    • Appleプラットフォーム
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    特集

    • デザイン
    • 配信
    • ゲーム
    • アクセサリ
    • Web
    • Home
    • CarPlay
    • テクノロジー

    テクノロジーを詳しく見る

    • 概要
    • Xcode
    • Swift
    • SwiftUI

    特集

    • アクセシビリティ
    • App Intent
    • Apple Intelligence
    • ゲーム
    • 機械学習とAI
    • セキュリティ
    • Xcode Cloud
    • コミュニティ

    コミュニティを詳しく見る

    • 概要
    • 「Appleに相談」イベント
    • コミュニティによるイベント
    • デベロッパフォーラム
    • オープンソース

    特集

    • WWDC
    • Swift Student Challenge
    • デベロッパストーリー
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Center
    • ドキュメント

    ドキュメントを詳しく見る

    • ドキュメントライブラリ
    • テクノロジー概要
    • サンプルコード
    • ヒューマンインターフェイスガイドライン
    • ビデオ

    リリースノート

    • 注目のアップデート
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • ダウンロード

    ダウンロードを詳しく見る

    • すべてのダウンロード
    • オペレーティングシステム
    • アプリ
    • デザインリソース

    特集

    • Xcode
    • TestFlight
    • フォント
    • SF Symbols
    • Icon Composer
    • サポート

    サポートを詳しく見る

    • 概要
    • ヘルプガイド
    • デベロッパフォーラム
    • フィードバックアシスタント
    • お問い合わせ

    特集

    • アカウントヘルプ
    • App Reviewガイドライン
    • App Store Connectヘルプ
    • 近日導入予定の要件
    • 契約およびガイドライン
    • システムステータス
  • クイックリンク

    • イベント
    • ニュース
    • Forum
    • サンプルコード
    • ビデオ
 

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • すべてのビデオ
  • 利用方法

その他のビデオ

  • 概要
  • Summary
  • トランスクリプト
  • コード
  • Swift Testingへの移行

    テストフレームワークの相互運用性を利用して、不安を感じることなくSwift Testingを導入し、XCTestと併用する方法を紹介します。開発を高速化しカバレッジを向上させる高度なテスト機能を段階的に導入するための、ベストプラクティスとパターンも学びます。

    関連する章

    • 0:07 - Introduction
    • 1:08 - Swift Testing basics
    • 2:50 - Migration strategy
    • 5:48 - Test framework interoperability
    • 7:43 - Interoperability modes
    • 13:02 - Common migration patterns
    • 15:34 - Parameterized tests
    • 18:02 - Exit tests
    • 20:04 - Next steps

    リソース

      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC26

    • Swiftの新機能

    WWDC24

    • Swift Testingについて
    • Swift Testingの詳細
  • このビデオを検索

    こんにちは!

    Jerryです Swift Testingチームの エンジニアを担当しています。 今日はこれまでになく簡単に XCTestからSwift Testingへの 移行方法をお伝えします。

    Swift TestingはXcode 16で 導入されました。 モダンなテストライブラリで テストを記述するための 表現力豊かで簡潔なインターフェイスです。 Swiftエコシステムにも うまく馴染んでいます。 Swiftの並行処理を念頭に 置いて構築されているため テストケースを並列実行して 結果を素早く提供します。

    まずSwift Testingの 基本的な構成要素をおさらいし XCTestの類似概念と 比較します。 次にXCTestプロジェクトへの Swift Testingの追加を行います。 テストフレームワークの 相互運用性機能を使って 既存コードを再利用する 方法もデモします。

    XCTestを使っていない方も ぜひ引き続きご覧ください! Swift Testingの機能を使って XCTestが到達できなかった 大胆に進む方法を紹介します!

    Swift Testingの基本から 始めましょう。

    テストファイルの冒頭で Swift Testingフレームワークをインポートし 内部型にアクセスするため testableインポートも追加します。 次に新しい関数を作成し @Testマクロでアノテーションして テストとして宣言します。

    Swiftはraw識別子をサポートしており バッククォートで示されます。 スペースや句読点を混在させて 長いテスト名を読みやすくできます。 テスト本体では #expectマクロを使って 果物が熱帯性気候を持つという 期待値を作成します。 新しいテストの作成は これだけです! @Testマクロと#expectマクロは ほとんどのテストの核心的な構成要素です。 Swift Testingを初めて使う場合や 記憶を呼び起こしたい場合は 「Meet Swift Testing」が 素晴らしいリソースです。 追加の構成要素と テストワークフローを網羅しています。

    #expectマクロは非常に柔軟で 多くのXCTestアサーションを置き換えます。 無条件失敗であるXCTFailの 代替として Issue.recordを使います。

    Swift Testingを使えば 少ないコードで より強力で表現力豊かな テストを記述できます。 ただしいくつかのシナリオでは 引き続きXCTestを使います。 UI自動化とパフォーマンステストAPIは XCTestでのみ利用可能です Objective-C例外をスローする コードをテストする場合は Objective-Cで記述した XCTestも使う必要があります。 SwiftコードはSwiftのXCTestも含め これらの例外を安全に 処理できないためです。 さあ皆さんもテストを書きたく なってきたはずです!

    Swift Testingへの移行方法を デモします。

    テストコードを少量ずつ 移行する戦略を説明します。

    次にテストフレームワークの 相互運用性を紹介します 既存テストコードを再利用できる 強力なツールです。

    移行をスムーズに進めるために 従うべきいくつかの 一般的なパターンも共有します。 はい。 移行戦略についてお話しします。

    古いテストを変更すると 小さな変更でもリスクが生じます。 そのため既存のXCTestは ほぼそのままにします。 準備ができたら少数ずつ テストを修正し 最も頻繁に更新するものに 集中します。

    既存のテストターゲットには 両フレームワークのテストを含められます。 そのため新しいテストには すでにSwift Testingが使えます ただしXCTestクラスの 中には置けません。 はい! 移行戦略が決まったので 実際に試してみましょう。 近所の鳥に果物の配達を トレーニングするアプリを作りました。 鳥が季節の変わり目に 渡りをするように 私もSwift Testingへ 移行する季節だと思います。

    こちらがFruitデータ構造用の XCTestスイートです。 最近フルーツに気候情報を追加しましたが まだテストしていません。 Swift Testingを使って 新しいテストを追加したいのですが このファイルを離れずに できます! まずSwift Testingフレームワークを インポートします。

    次にこのファイルの末尾に テストを追加します。

    Swift Testingがテストスイートの外に 配置できるのが気に入っています。 テストが増えたら後で 親スイートを作れます。 Testナビゲータで 新しいテストが追加されています。 メニューを開いて を選択します。

    完了しました! 新しいテストが正常に実行されました。

    一部のテストはより多くの セットアップが必要です。 このテストはフルーツの配列の すべての名前がユニークか確認します。 このテストは元々 アサーションのセットアップに 複数行のコードを使っていました。

    後でテストを実行したとき 失敗の原因を理解するのが困難でした。 テストはストーリーを伝えようとしましたが コードに埋もれてしまいました。 この複数ステップのアサーションを ヘルパー関数に抽出しました。 何をテストしているか どうテストするかが明確になりました。 仕上げとして ファイルと行番号のパラメータを提供し XCTFailに渡しました。

    Xcodeはヘルパーを呼び出した 行に失敗を紐付けます。

    Swift Testingで 新しいテストを作成したいのですが このヘルパーを呼び出して 最終的にXCTFailも呼びます。 しかしXCTFailはSwift Testingの 一部ではありません。

    ここでテストフレームワークの 相互運用性が役立ちます! 1つのテストフレームワークのAPIを 安全に呼び出せる機能で 別のフレームワークのテスト本体から 呼び出せます。

    相互運用性を考える際には 2つの方向があります。 XCTestのAPIを呼び出して Swift Testingのテストで 問題を報告できます。 これがassertUniqueヘルパーを 再利用する際に起こることです。 逆方向ではSwift Testing APIを 呼び出して XCTestで問題を 報告できます。 これは後で説明します。

    いずれの場合もクロスフレームワークの 問題が発生します 問題報告APIと それが呼ばれるテストが 異なるフレームワークに 属しています。 Xcodeはデフォルトで 相互運用性を有効にして処理します。 方法をお見せします。

    assertUniqueヘルパーを testUniqueFruitNamesで呼び出します。 ヘルパーはXCTFailを使って 失敗を報告します。 同じ本体を持つSwift Testing テストを別途作成しました。 このヘルパーは同じ失敗を 報告するはずですが このテストではクロスフレームワークの問題になります。

    このテストを実行した後の 結果を比較してみましょう。

    テストがパスしましたが 実際には失敗すると思っていました 上のXCTestと同様に。 テストの失敗は良いことです ヘルパーがバグを検出しているという 証拠だからです。 いくつかのメッセージがありますね。 クリックして確認します。

    相互運用性により紫の三角で示された 2つの警告が作成されました。 これらはエラーではないため テストはまだパスしています。 1つ目の警告はLycheeが 重複した名前であることを示し 2つ目の警告は XCTFailをSwift Testingの Issue.recordに置き換えるよう指示します。

    相互運用性にはクロスフレームワークの 問題の処理に 異なるモードがあります。 limitedモードを説明しました。 このモードではXCTestからの クロスフレームワークの問題は警告です。 Xcode 27以前に作成した テストプランはlimitedモードを引き継ぎます。 新しいプロジェクトでは Xcodeはcompleteモードを使います。 このモードでは同じ問題が エラーとして残ります。

    テストプランの設定でいつでも モードを変更できます。 セクションに あります。 completeモードにすると テスト結果がどう変わるか確認します。 テストプランを編集します。

    相互運用性でフィルタして

    モードをCompleteに変更します。

    「Unique fruit names」テストに 戻って再実行します。

    テストが失敗しました。 メッセージを確認します。

    completeモードはXCTFailで 作成されたエラーを保持します。 また移行を促す警告も 保持されます。 completeモードはlimitedモードより 1段階上です。 クロスフレームワークの問題を 警告からエラーに昇格させるため 見落としにくくなります。

    completeモードよりさらに上が strictモードです。 XCTestからのクロスフレームワークの 問題に対して strictモードはfatalエラーで テストを即座に停止します。 XCTest APIをSwift Testing APIに 置き換える箇所を見つけるのに役立ちます。 モードをstrictに変更済みです。 テストを再実行します。

    おお! ヘルパー関数のXCTFailを 呼び出した箇所でテストが停止しました! このメッセージを確認します。

    再びXCTFailを置き換えるよう 指示されています しかしこのヘルパーを呼び出す XCTestがまだあることも忘れずに。 そのため相互運用性はSwift Testingからの クロスフレームワーク問題もサポートします。 すべてのモードでこれらの問題はエラーのままです。 つまり両フレームワークの テストから Swift Testing APIを 呼び出せます。 XCTFailの置き換えは 数ステップで完了します。 まずXCTestのインポートを Swift Testingのインポートに置き換えます。

    次にXCTFailをIssue.recordに置き換え sourceLocationが元の ファイルと行番号パラメータを置き換えます。

    ヘルパーを更新したら すべてのテストケースを再実行します。

    CMD+Uを使います これはProduct Testのショートカットです。

    更新後のヘルパーで 新しいテストと 元のXCTestの両方が 期待通りに失敗します。 テストフレームワークの 相互運用性のおかげで XCTest APIを Swift Testing APIに置き換えても テストの意味は変わりませんでした。 もう1つまだ紹介していない モードがあります。 モードをnoneに設定して 相互運用性をオプトアウトできます。 オプトアウト後はXcodeが クロスフレームワークの問題を報告しません どちらの方向でも。 しかしこれらの問題は アプリのバグを示す可能性があります。 相互運用性を無効にすると そのバグを見逃します。 このモードを使う必要がある場合は 一時的にのみ使用してください。 代わりにcompleteまたはstrictモードを 使用してください。 completeモードはクロスフレームワークの 問題をエラーとして維持し limitedモードから 1段階上げるのに適しています。 strictモードはまさに 厳格です! XCTestからのクロスフレームワーク問題を 完全に防ぎたい場合に 最適です。 相互運用性とその異なるモードは Swift Packageプロジェクトでも 使えます。 こちらはswift-tools-version: 6.3で 作成したプロジェクトの例で XCTestからのクロスフレームワーク問題を 生成するテストがあります。 デフォルトではSwift 6.4ツールチェーンが limitedモードを有効にします。

    swift testコマンドで このプロジェクトを実行すると クロスフレームワーク問題が 警告として報告されます。

    completeモードを使うには パッケージをswift-tools-version 6.4以降に更新します。

    ツールバージョンを上げると 先ほどの問題がエラーになります。

    環境変数を使っていつでも デフォルトモードを上書きできます。 SWIFT_TESTING_XCTEST_INTEROP_MODE 値にはモード名を 小文字で指定します。

    最後に相互運用性は 両テストフレームワークの 限定されたAPIセットをサポートします。 先ほどXCTFailと Issue.record APIをデモしました。 XCTestでは他のすべての テストアサーションもサポートし Swift Testingでは 両方の期待値マクロをサポートします。 #expectと#requireです。 Swift TestingのKnown Issue APIは XCTestアサーション失敗を既知としてマークでき Test.cancelはXCTestの テストケースをスキップできます。

    移行の過程でいくつかの 一般的なパターンに遭遇するかもしれません。 それらへの対処のヒントを 共有します。

    最初のパターンは テストのスキップです。 XCTestではXCTSkip APIを 使ってテストをスキップします。

    Swift Testing APIで置き換えるには Test.cancelを使います。 Swift Testingで新しいテストを 書く場合も Test.cancelは同様に機能します。 しかしSwift Testingにはtraitがあります テスト関数やスイートに 添付できるアノテーションです。

    テストの有効化ロジックを テスト本体の外に移動して enabledまたはdisabledトレイトを使います。

    もう1つの一般的なパターンは 失敗時の停止です。 XCTestでは continueAfterFailureプロパティを falseに設定します。 これにより最初のアサーション失敗で テストが停止します。 Swift Testing APIで置き換えるには #requireマクロを使います。 失敗時にエラーをスローして テストを停止します continueAfterFailureを 設定する必要はなくなります。 Swift Testingでは どの期待値がテストを停止し どれが停止しないかを選べます。

    詳細については デベロッパドキュメントの 「Migrating a test from XCTest」を参照してください。 より多くのシナリオを網羅しており 移行の過程での 参考資料として最適です。 XcodeのCoding Assistantも このドキュメントを参照しています。 移行戦略の策定や 作業のレビューを支援できます。 移行の一部を自動化する スキルも備えています。 多くのことをカバーしました! まとめとして Swift Testingへ 自信を持って移行する方法をお伝えします。

    準備ができるまでXCTestの 修正を急ぐ必要はありません。 Swift Testingで 新しいテストを書くことに集中します。 相互運用性を活用することで XCTest APIをラップするヘルパーコードを 再利用できます。

    その過程でXCTestからの クロスフレームワーク問題が浮かび上がります。 相互運用性によりXCTest APIを Swift Testing APIに置き換えて これらの問題を解決できます Xcode 27ではデフォルトで 相互運用性が有効です。 今後のクロスフレームワーク問題をすべて 確実に対処するために completeまたはstrictモードに アップグレードしてください。

    次にSwift Testingに スポットライトを当てます。

    Swift Testingに移行すると テストをさらに強化する 新しいツールが使えます。 パラメータ化テストから始めましょう。

    これは異なる引数で 繰り返されるテストです。 各引数が 個別のテストケースになります。 パラメータ化テストケースを含む すべてのSwift Testingテストは デフォルトで並列実行されます。 直列実行より高速になります。 こちらの例を見てください。

    プロジェクトのbirdテストを Swift Testingに移行しました。 すべての鳥が40〜100回 羽ばたけるか確認します。 その組み合わせごとに 別々のテストは書けません 数が多すぎます。 元のXCTestの本体では ネストされたループを使って すべての組み合わせを生成しました。 テストを実行します。

    いくつか気になる点がありました。 組み合わせが多いため テストの完了に時間がかかりました。 また失敗しましたが どの鳥が失敗したかがわかりません。

    XCTestを使い続けていれば エラーをキャッチするか デバッガでテストを実行する必要があります。 もっと良い方法があります。 これをパラメータ化テストにしましょう。 テスト本体からループを削除し

    代わりにbirdとcountを テスト関数のパラメータとして定義します。

    birdsとcountsの入力を @Testマクロの引数として提供します。

    Swift Testingは最初の引数から 各birdと 2番目の引数から 各countをペアにします。 テストを再実行します。

    おお! 今回はテストがほぼ瞬時に完了しました Swift Testingがすべての組み合わせを 並列実行したためです。 Testナビゲータで パラメータ化テストの左側に 開示矢印が表示されています。 クリックしてテストしている すべての組み合わせを表示します。

    非常に多くのテストケースがあります。 失敗している組み合わせを 見つけなければなりません。 Testナビゲータで 失敗したテスト結果をフィルタします。

    ありました! ツバメは43回未満では 羽ばたけません。 パラメータ化テストを使って テスト実行が大幅に強化されました。 結果が速くなっただけでなく どのテスト入力が失敗したかが 明確にわかります。

    次にexit testsでテストカバレッジを 強化する方法をご紹介します。 exit testsはmacOS Linux FreeBSD Windowsのみサポートされます。 テストカバレッジが必要な コードを探していて Birdイニシャライザに 何かを見つけました。

    新しいBirdに空の名前が 渡された場合 preconditionの失敗で プログラムを停止します。

    すでにテスト済みかどうかは メニューで確認できます を表示します。

    カバレッジアノテーションが preconditionを赤で表示しており このコードがテストされていないことを示します。 exit testはこのカバレッジを 追加するのに最適なツールです。

    exit testは #expectマクロで定義します。 期待するプロセスの 終了条件を指定し exit testの本体を指定します。 テストを開始すると Swift Testingがexit testの本体を 子プロセスで実行します。 そのコードは分離されているため クラッシュしても他のテストを 妨げません。 exit testは子プロセスの 完了を待ち 終了ステータスを確認して テストの成否を判断します。 テストスイートのこのextensionに 新しいテストを追加できます。 #expectマクロを使って exit testを作成し プロセスが失敗で終了するよう 指定します。

    exit testの本体内で 空の名前のBirdを作成します。 クラッシュするはずですが分離されます Swift Testingがこのコードを 別プロセスで実行するためです。 すべてのテストを実行します。

    exit testがパスしました! もう一度カバレッジを確認します。 右クリックして Birdイニシャライザのを選択します。 戻ったのでカバレッジを 再度確認します。 カバレッジアノテーションが preconditionを緑で表示し テスト済みを示しています!

    テストを強化する2つの方法を 簡単にご紹介しました Swift Testingの改善アイデアがあれば ぜひコントリビュートしてください! Swift Testingは オープンソースだからです。 GitHubのSwiftLang organizationの一部です。 これまで以上に多くのプラットフォームで 利用可能で 今年からFreeBSDの フルサポートも開始されました。

    Testing Workgroupが プロジェクトを管理しており Swiftコミュニティのメンバーなら 誰でも参加できる定例会議を開催しています。 新機能はSwift Evolutionに よって導かれます。 実は相互運用性もその1つです! Swift Forumsに参加して 意見やアイデアを共有してください。 さあ鳥のように羽ばたいて Swift Testingに移行しましょう! Xcode 27の相互運用性により この移行がこれまでになく容易になりました。 プロジェクトで試して 異なるモードを探ってみてください。 その過程で強力なツールを 活用できます パラメータ化テストや exit testsなどです。 さらに詳しくはWWDC 2024の 「Go further with Swift Testing」をご確認ください。 テストのリノベーションを楽しんでください!

    • 1:12 - Name a test using a raw identifier

      import Testing
      
      @testable import DemoApp
      
      @Test func `Default climate: tropical`() async throws {
          let fruit = Fruit(name: "Coconut")
          #expect(fruit.climate == .tropical)
      }
    • 5:03 - Wrap XCTFail in a test helper function

      func testUniqueFruitNames() async throws {
          assertUnique(Market.fruits + [Fruit.lychee])
      }
      
      // TestHelpers.swift
      
      func assertUnique(_ fruits: [Fruit], file: StaticString = #filePath, line: UInt = #line) {
          var uniqueNames = Set<String>()
          for name in fruits.map(\.name) {
              if !uniqueNames.insert(name).inserted {
                  XCTFail("Duplicate name: \(name)", file: file, line: line)
              }
          }
      }
    • 10:12 - Replace XCTFail with Issue.record in the test helper

      import Testing
      
      func assertUnique(_ fruits: [Fruit], sourceLocation: SourceLocation = ...) {
          var uniqueNames = Set<String>()
          for name in fruits.map(\.name) {
              if !uniqueNames.insert(name).inserted {
                  Issue.record("Duplicate name: \(name)", sourceLocation: sourceLocation)
              }
          }
      }
    • 12:15 - Run Swift Package tests with the strict interoperability mode from Terminal

      > SWIFT_TESTING_XCTEST_INTEROP_MODE=strict swift test
    • 13:10 - Common migration: skipping tests

      let isFall = false
      
      // XCTest
      func testSwallowFallMigration() async throws {
          try XCTSkipIf(!isFall, "Wrong season for migration")
          // ...
      }
      
      // Test.cancel interoperability from Swift Testing
      func testSwallowFallMigration() async throws {
          if !isFall {
              try Test.cancel("Wrong season for migration")
          }
          // ...
      }
      
      // ✅ Prefer test trait in Swift Testing
      @Test(.enabled(if: isFall, "Wrong season for migration"))
      func `Swallow fall migration`() async throws {
         // ...
      }
    • 13:41 - Common migration: halting after test failures

      func testExample() async throws {
          #expect(Fruit.banana.climate == .temperate)
      
          try #require(Fruit.banana == Fruit.plantain)
          XCTFail("This is never reached")
      }
    • 15:57 - Example of nested loops which can be converted into a parameterized @Test function

      struct BirdTests {
      
          @Test func `Birds flap wings successfully`() async throws {
              for bird in Aviary.birds {
                  for count in (40...100) {
                      try await bird.flapWings(count: count)
                  }
              }
          }
      
      }
    • 16:47 - Refactor nested loops into a parameterized @Test function

      struct BirdTests {
      
          @Test(arguments: Aviary.birds, 40...100)
          func `Birds flap wings successfully`(bird: Bird, count: Int) async throws {
              try await bird.flapWings(count: count)
          }
      
      }
    • 18:21 - Precondition check on empty input name in an initializer

      // In `Bird.init(...)`
      if name.isEmpty {
          preconditionFailure("Bird name cannot be empty")
      }
    • 19:27 - Add coverage for precondition failure with exit test

      extension BirdTests {
      
          @Test func `Bird with empty name crashes`() async throws {
              await #expect(processExitsWith: .failure) {
                  _ = Bird(name: "")
              }
          }
      
      }
    • 0:07 - Introduction
    • How to fearlessly migrate from XCTest to Swift Testing using the new interoperability feature.

    • 1:08 - Swift Testing basics
    • A quick review of core Swift Testing building blocks — the @Test macro, #expect, and how they compare to XCTest assertions.

    • 2:50 - Migration strategy
    • Covers the recommended incremental approach: leave existing XCTests in place, and start writing new tests in Swift Testing right away.

    • 5:48 - Test framework interoperability
    • Introduces the interoperability feature that lets you safely call XCTest or Swift Testing API from within a test belonging to the other framework.

    • 7:43 - Interoperability modes
    • Walks through the four interoperability modes — Limited, Complete, Strict, and None — and how to configure them in Xcode Test Plans and Swift packages.

    • 13:02 - Common migration patterns
    • Covers practical patterns you will encounter during migration, including replacing XCTSkip with Test.cancel or traits, and continueAfterFailure with #require.

    • 15:34 - Parameterized tests
    • Shows how to replace loop-based XCTest cases with Swift Testing parameterized tests for faster parallel execution and clearer failure reporting.

    • 18:02 - Exit tests
    • Demonstrates how to use Swift Testing exit tests to cover code paths that call preconditionFailure or crash, running them safely in a child process.

    • 20:04 - Next steps
    • Recaps the migration path, highlights Swift Testing open-source availability and cross-platform support, and encourages community participation.

Developer Footer

  • ビデオ
  • WWDC26
  • Swift Testingへの移行
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • Apple Intelligence
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習とAI
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • Mini Apps Partner Program
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    最新ニュースを読む。
    Apple Developerアプリを入手する。
    Copyright © 2026 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン