App Clip は、デバイスにインストールしなくても即座に起動するiOSアプリの軽量版です。iOS 14で導入されたこの技術により、ユーザーはNFCタグ、QRコード、またはApp Clip Codeをスキャンすることで、アプリの特定の機能にアクセスできます。App Clipのサイズは10 MBを超えず、起動にかかる時間は2秒未満です。これは、完全なインストールを必要とせずにネイティブアプリと即座にやり取りするためのAppleのソリューションです。
重要なポイント
App Clip は、完全なアプリの小さな部分をインストールせずに起動できるAppleのiOS向け技術です。ユーザーがNFCタグ、QRコード、またはApp Clip Codeをスキャンすると、オペレーティングシステムがApp Clipをダウンロードし、現在の画面の上にカードとして開きます。AppleはApp Clipを “支払い、注文、サインアップ” のシナリオ用に設計しました — 摩擦や待ち時間なしで実行されるべきアクションです。
App Clipは一時的モードで動作します。iOSは限られた期間(通常は数日間、またはユーザーが明示的に削除するまで)App Clipのデータを保存します。ユーザーが同じ機能を再び必要とする場合、App Clipは再ダウンロードされます。Appleは継続的な使用のために完全なアプリのインストールを促進するため、意図的にApp Clipの永続性を制限しています。App Clipで作成されたデータは、CloudKitを介してインストール時に自動的に完全なアプリに転送されます。
実際の例:レストランのテーブルにあるNFCタグをスキャンして注文と支払い(Panera、Pizza Hut)、レンタルスクーターのQRコードをスキャンしてロック解除(Lime、Bird)、駐車メーターのApp Clip Codeで支払い(PayByPhone)、店内の商品をスキャンして購入(Shopify)。これらのシナリオはすべて、インストール手順がないことでメリットを得る取引タスクであるという共通点があります。
App Clipは5つのメカニズムで起動します。最も一般的なのはNFCタグ(タップでApp Clip起動)、QRコード(カメラスキャンで画面下部にApp Clipカード表示)、App Clip Codes(模様のある枠と内蔵NFCタグを持つApple独自のビジュアルコード)です。App ClipはSafari App BannerとiMessageリンクからも起動します。
App Clip Code はAppleの特許技術です。QRコードとは異なり、App Clip Codesは見た目が美しく、ブランドカラーと中央のロゴをサポートし、URLは端の音波のような波形でエンコードされています。コードには内蔵NFCタグが含まれており、視覚スキャンとタップの二重起動メカニズムを提供します。AppleはApp Store Connectポータルを通じてApp Clip Code生成ツールを提供しています。
// SceneDelegate.swift — NSUserActivityを介したApp Clip起動の処理
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene,
willContinueUserActivityWithType userActivityType: String) {
// 着信するNSUserActivityの準備
}
func scene(_ scene: UIScene,
continue userActivity: NSUserActivity) {
guard let invocationURL = userActivity.webpageURL else { return }
// URLの解析と必要な画面へのナビゲーション
handleInvocationURL(invocationURL)
}
private func handleInvocationURL(_ url: URL) {
// 例:/order/restaurantID — 注文画面
// 例:/pay/parkingID — 支払い画面
}
}すべてのトリガーは最終的に、呼び出しコンテキストを含むwebpageURLパラメータを持つNSUserActivityを作成します。App ClipはこのURLを解析し、対応する画面を表示します。App Clipは地理位置トリガーもサポートしています — iOSはユーザーが特定の場所(App Clipがあるコーヒーショップの近くなど)にいる場合にApp Clipを提案できます。
App Clipの開発は、完全なアプリの既存のXcodeプロジェクトから始まります。新しいApp Clipターゲットを追加します — 同じプロジェクト、同じチーム、ほとんどの共有コードを使用します。App Clipターゲットには、特定の機能に必要なファイル、ストーリーボード、リソースのみが含まれます。Appleは事前構成されたentitlementsとInfo.plistキーを備えたApp Clipテンプレートを提供しています。
// AppClip/ProductViewModel.swift — App Clipと完全なアプリ間の共有ロジック
import Foundation
import StoreKit
class ProductViewModel: ObservableObject {
@Published var items: [Product] = []
@Published var total: Decimal = 0
func checkout() {
// APIを介した注文送信
}
func showInstallPrompt() {
// 完全なアプリをインストールするためのSKOverlay表示
guard let scene = UIApplication.shared()
.connectedScenes
.first(where: { $0 is UIWindowScene }) as? UIWindowScene else { return }
let overlay = SKOverlay(configuration: SKOverlay.AppClipConfiguration(
position: .bottom
))
overlay.present(in: scene)
}
}
// AppClip/MainViewController.swift — App Clipのメイン画面
class MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// App Clipカード用のコンパクトUI
// サイズ削減のためのSF Symbols使用
// 現在のトランザクションのデータのみ読み込み
}
@IBAction func openFullApp(_ sender: Any) {
// App Storeでアプリページを開く
guard let url = URL(string: "https://apps.apple.com/app/id123456789") else { return }
UIApplication.shared.open(url)
}
}App Clipターゲットはメインアプリと同じApple Developer Team IDとBundle ID(.Clipサフィックス付き)を使用します。主要なentitlements:com.apple.developer.app-clipおよびURL処理用の関連ドメイン。App ClipはApple Pay、Sign in with Apple、StoreKit(購入用)、Core Locationをサポートしています。一部のフレームワークは利用できません:バックグラウンドモード、HealthKit、Media Library、および一部のセンサーAPI。
App Clipのサイズ制限はAppleによって厳格に管理されています — 圧縮状態で10 MB以下。チェックはApp Storeへのアップロード段階で行われ、制限を超えるビルドは却下されます。サイズにはバイナリコード、リソース(ストーリーボード、アセットカタログ)、リンクされたフレームワークが含まれます。SwiftランタイムライブラリはiOSの一部でありカウントされませんが、サードパーティのフレームワークはサイズを増加させます。
| 最適化方法 | 効果 | 備考 |
|---|---|---|
| アセットカタログの間引き | 30~60% | 単一画像スケール(3x)、未使用のデバイスイディオムを除外 |
| SF Symbols | 大幅 | システムアイコンは無料 — カスタムアイコンを含めない |
| UIKitの代わりにSwiftUI | 20~30% | SwiftUIはリンクするフレームワークが少ない |
| 最小限の依存関係 | 変動 | App Clip機能に必要なフレームワークのみを含める |
| オンデマンドリソース | 変動 | 起動後に重要でないデータ(画像)を読み込む |
| コードストリッピング | 10~40% | Swiftでのデッドコードストリッピングとモジュール全体の最適化 |
Xcodeはアーカイブ後にOrganizerでApp Clipサイズレポートを提供します。レポートはサイズをコンポーネント(コード、リソース、フレームワーク)ごとに分類し、推定ダウンロードサイズを表示します。Appleは配信チャネルごとの圧縮のばらつきを考慮して、App Clipを8 MB以内に保つことを推奨しています。
App Clipの使用シナリオは4つの段階で構成されています。発見:ユーザーが物理世界でNFCタグ、QRコード、またはApp Clip Codeに遭遇します。起動:スキャンまたはタップでApp Clipが読み込まれます(2秒未満、通常1秒)。インタラクション:App Clipが単一機能(注文、支払い、予約画面)のカードとして開きます。完了:ユーザーがタスクを完了し、SKOverlayまたはApp Storeリンクを介して完全なアプリをインストールする提案が表示されます。
AppleはApp Clipのプライバシーに特に注意を払っています。システムはApp Clipに対してカメラ、位置情報、通知の許可を個別に要求します。App Clipで作成されたデータ(支払い情報、設定)はローカルに保存され、CloudKitを介して完全なアプリのインストール時に転送されます。App Clipは機密性の高い許可(Health、Motion、Media Library)を要求できません — これらには完全なアプリのインストールが必要です。
重要な機能はSKOverlayで、App Clip画面の下部に表示され、完全なアプリのインストールを提案するネイティブiOS要素です。SKOverlayはApp Storeに移動する必要がなく、現在のアプリのコンテキストで機能します。ユーザーは1タップで完全なアプリをインストールでき、App Clipはインストール後に作成されたすべてのデータを自動的に転送します。
| 特性 | App Clip (iOS) | Instant App (Android) |
|---|---|---|
| サイズ制限 | 圧縮10 MB | 合計10 MB |
| 起動方法 | NFC、QR、App Clip Code、Safari、iMessage、位置情報 | ディープリンク、Google Play “今すぐ試す”、NFC、QR |
| 開発 | Xcode + Swift(単一ターゲット) | Android Studio + Kotlin(フィーチャーモジュール) |
| サポート | iOS 14+(iPhone、iPod touch) | Android 5.0+(API 21+) |
| データ保存 | 一時的、完全なアプリに転送 | 一時的(cookie API)、転送 |
| 収益化 | Apple Pay、StoreKit | Google Pay、Google Play Billing |
| ビジュアルトリガー | App Clip Code(独自形式) | 標準QRコード |
両方の技術 — App ClipとAndroid Instant App — は同じ問題を解決します:インストールなしでネイティブアプリを即座に起動することですが、異なるプラットフォームアプローチを使用します。App Clipはより制限されていますが(iOSのみ、小規模なエコシステム)、Apple PayおよびAppleデバイスエコシステムとの深い統合を提供します。Instant Appsはより広いAndroidのリーチと、追加インフラなしの標準QRコードを含む柔軟なトリガーで優位に立ちます。
よくある質問
App ClipsはiOS 14以降が必要で、iPhone 6s以降、iPod touch(第7世代)、A9チップ以降を搭載するすべてのiPadで動作します。App Clip Codeのスキャンは内蔵カメラアプリから利用できます。NFCタグによる起動にはiPhone XR/XS以降が必要です(iPhone 7/8はNFCを読み取れますが、App Clipを起動できません)。
いいえ、App ClipはApp Storeで完全なiOSアプリにリンクされている必要があります。App Clipは独立して公開できません。完全なアプリとApp Clipは同じApple Developer Team IDとBundle ID(.Clipサフィックス付き)を使用します。AppleはApp Clipを完全なアプリへのエントリーポイントとして位置づけており、独立した配布メカニズムとしては位置づけていません。
App Clipの最大サイズは圧縮10 MBです。AppleはApp Storeへのアップロード時にこの制限を厳格にチェックします。圧縮の違いを考慮して、サイズを8 MB以内に保つことをお勧めします。SF Symbols、SwiftUIを使用し、サードパーティの依存関係を最小限にして制限内に収めます。
いいえ、App Clipsはプッシュ通知を送信できません。Appleはスパムを防ぐためにこの機能を意図的にブロックしています。ローカル通知はApp Clipの短いライフタイム内で許可されています。通知を受け取るには、ユーザーが完全なアプリをインストールする必要があります。これはPWAや完全なネイティブアプリとの重要な違いです。
iOSは限られた期間(通常7~30日の非アクティブ状態)App Clipデータを保存します。ユーザーが完全なアプリをインストールすると、データはCloudKitを介して自動的に転送されます。インストールがない場合、iOSはApp Clipとそのデータを削除します。ユーザーは設定の “App Clips” セクションから手動でApp Clipを削除することもできます。
単純なシナリオ(注文+支払い)の場合、既存のiOSアプリにApp Clipを追加するのには通常、1人の開発者で2~4週間かかります。App Clipはメインアプリのコードベースのほとんどを使用するため、ゼロから別のアプリを構築するよりもコストが大幅に低くなります。主な時間はサイズの最適化とトリガーの構成に費やされます。
App ClipはApple Pay、Sign in with Apple、StoreKit、Core Location、MapKit、PushKit(VoIPのみ)をサポートしています。利用不可:HealthKit、ResearchKit、HomeKit、CarPlay、Metal(フルスコープ)、バックグラウンドモード(background fetch、location updates)、Media Library。App Clipはマイクおよび一部のデバイスセンサーにもアクセスできません。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。