iPadOS:主要概念、iPad開発、Apple Pencil

著者: IT Sectr 公開日: 2026-02-07 読了時間: 12 分

iPadOSは、2019年にiOSから分離されたAppleのiPad向けオペレーティングシステムです。iPad開発では、Split ViewやStage Managerのマルチタスク、低レイテンシのApple Pencil入力、デスクトップクラスのSafariといった独自の機能を考慮します。

重要なポイント

  • iPadOS — 拡張されたマルチタスクとApple Pencilサポートを備えたiOSのフォーク
  • マルチタスクにはSplit View、Slide Over、Stage Manager、外部モニターが含まれます
  • Apple Pencil — 9~20msのレイテンシ、PencilKitとホバーAPIをサポートするスタイラス
  • インターフェースの適応はSize Classes(regular/compact)とUISplitViewControllerを使用
  • SafariはiPadOSでデスクトップモードで動作し、ダウンロードマネージャーを搭載

iPadOSとは?

iPadOSは、2019年にiOS(バージョン13)のフォークとして初めてリリースされたAppleのiPad向けオペレーティングシステムです。それ以前は、iPadはiPhoneと同じiOSを使用していました。iPadOSの分離により、Appleは大画面向けの機能(マルチタスク、デスクトップSafari、ドラッグ&ドロップ、外部モニターサポート)を導入できるようになりました。

iPadOSはiOSアプリとの完全な互換性を維持しています。iPhoneアプリはスケーリングモードでiPad上で実行されます。ただし、質の高いユーザー体験には適応が必要です。Size Classes、UISplitViewController、キーボードショートカットのサポートを使用します。Apple(WWDC 2025)によると、iPadでのユーザー時間の80%は、スケーリング版ではなくタブレット最適化版のアプリで過ごされています。

iPadOSのバージョン履歴

iPadOS 13(2019)はSlide OverとSplit Viewを導入。iPadOS 14(2020)はApple Pencil ScribbleとコンパクトUIを追加。iPadOS 15(2021)はQuick Noteとマルチタスクの改善を導入。iPadOS 16(2022)はStage Managerと外部モニターサポートをもたらしました。iPadOS 17(2023)はインタラクティブウィジェットとロック画面のカスタマイズを追加。

iPadOSバージョン主要な革新
iPadOS 132019Slide Over、Split View、デスクトップSafari
iPadOS 142020Apple PencilのScribble、コンパクトな通話UI
iPadOS 152021Quick Note、改善されたマルチタスク管理
iPadOS 162022Stage Manager、外部6Kモニター
iPadOS 172023インタラクティブウィジェット、ロック画面
iPadOS 182024計算機Math Notes、Smart Script

iPadOSのアーキテクチャとiOSとの違い

iPadOSはiOSと同じXNUカーネルとDarwinに基づいていますが、複数のウィンドウと任意の画面サイズに適応するように修正されたUIKitシェルを使用しています。主要なアーキテクチャ上の違いは、iOS 13で導入されたUISceneのサポートです。

UISceneとウィンドウのライフサイクル

iPadOSでは、各ウィンドウ(Split Viewのウィンドウを含む)は独自のライフサイクルを持つ独立したUISceneSessionです。1つのアプリが1つのUIWindowSceneを持つiPhoneとは異なり、iPadでは1つのアプリが複数のUIScene(複数のウィンドウ、Slide Over、Stage Manager)を持つことができます。SceneDelegateは各ウィンドウの状態を独立して管理します。

swift
import UIKit
import SwiftUI

/// iPadOSで複数ウィンドウをサポートするSceneDelegate
class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?
    var splitVC: UISplitViewController?

    func scene(_ scene: UIScene,
                 willConnectTo session: UISceneSession,
                 options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }

        // タブレットナビゲーション用のUISplitViewControllerを作成
        let splitVC = UISplitViewController(style: .tripleColumn)
        splitVC.primaryBackgroundStyle = .sidebar

        let sidebar = SidebarViewController()
        let primary = PrimaryViewController()
        let detail = DetailViewController()

        splitVC.viewControllers = [sidebar, primary, detail]

        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = splitVC
        window.makeKeyAndVisible()
        self.window = window
    }

    // ウィンドウサイズ変更時の適応(Split View)
    func windowScene(_ windowScene: UIWindowScene,
                     didUpdate previousCoordinateSpace: UICoordinateSpace,
                     interfaceOrientation previousOrientation: UIInterfaceOrientation) {
        let isMultitasking = windowScene.traitCollection.horizontalSizeClass == .compact
        print("iPadOS multitasking mode: \(isMultitasking ? "compact" : "regular")")
    }
}

.tripleColumnスタイルのUISplitViewControllerは、サイドバー(ナビゲーション)、プライマリ(リスト)、ディテール(コンテンツ)の3つのカラムを同時に表示します。コンパクトモード(別のアプリとのSplit View)に移行するとき、UIKitは自動的にカラムをナビゲーションスタックに折りたたみます。開発者はこの動作を手動で管理しません。UIKitはtraitCollectionを通じてレイアウトを適応させます。

iOSとの追加の違い

iPadOSが提供するもの:Files(USB-C/Thunderbolt)による外部ストレージサポート、要素検査付きSafariターミナルモード、UIKeyCommandによるキーボードショートカット、システムダウンロードマネージャー、アプリ間のドラッグ&ドロップ、サイズ変更可能なピクチャインピクチャ。

iPadのマルチタスク:Split View、Slide Over、Stage Manager

マルチタスクはiPadOSの主要な機能であり、iOSと根本的に異なる点です。ユーザーは1つの画面で複数のアプリを同時に操作できます。開発者は、アプリがどのマルチタスクモードでも正しく動作することを保証する必要があります。

Split View

Split ViewはiPadの画面を2つのアプリ間で50/50または33/67の比率で分割します。各アプリは独自のメモリとライフサイクルを持つ独自のUISceneSessionを取得します。画面幅が600ポイント未満の場合、UIKitは強制的にアプリをコンパクトな横方向サイズクラスに切り替えます。アプリはこの変更に正しく対応する必要があります。

Slide Over

Slide Overはアクティブなアプリの上に浮かぶウィンドウ(幅320ポイント)です。Slide Overのアプリはコンパクトな横方向サイズクラス(.compact)に切り替わります。狭い画面にUIを最適化することが重要です。Slide Overでは、右端からのスワイプまたはドックを介してアプリを起動できます。ユーザーはSlide OverをSplit Viewにドラッグするか、右にスワイプして閉じることができます。

Stage Manager

Stage Manager(iPadOS 16+、M1以降)は、任意のサイズの重なり合うウィンドウを作成できるウィンドウマネージャーです。iPad画面で最大4つ、外部モニターで最大4つ(合計8つ)のウィンドウをサポートします。アプリは新しいウィンドウごとにUISceneWillConnectNotificationイベントを受け取ります。Stage Managerはライフサイクルのルールを変更します。バックグラウンドのウィンドウはフリーズされず、制限されたリソースで動作を継続します。

モードウィンドウ数ウィンドウサイズSize Class
全画面1画面の100%Regular
Split View 50/502画面の50%Regular(iPad Pro 12.9)またはCompact
Split View 33/67233% / 67%33%の場合はCompact
Slide Over1 + フローティング320 ptCompact
Stage Manager1~4任意サイズによる

Apple Pencilと手書き入力

Apple Pencilは、傾き、筆圧、ホバー検出(iPad Pro M2+)をサポートするAppleのアクティブスタイラスです。ペンの動きからインク表示までのレイテンシはモデルによって9~20msです。PencilKitはアプリに描画を統合するための主要なフレームワークです。

PencilKit:描画の統合

PKCanvasViewは、インク、ペンシル、マーカー、消しゴムをサポートする既製の描画サーフェスを提供します。PKToolPickerはツール選択パネルです。開発者はストロークレンダリングを実装する必要はありません。PencilKitがMetalシェーダーでハードウェアアクセラレーション処理します。ペンの色、太さ、不透明度のカスタマイズが可能です。

swift
import PencilKit
import UIKit

class DrawingViewController: UIViewController {

    private lazy var canvasView: PKCanvasView = {
        let canvas = PKCanvasView()
        canvas.tool = PKInkingTool(.pen, color: .black, width: 5)
        canvas.delegate = self
        canvas.drawingPolicy = .anyInput
        canvas.backgroundColor = .white
        return canvas
    }()

    private lazy var toolPicker: PKToolPicker = {
        let picker = PKToolPicker()
        picker.addObserver(canvasView)
        picker.setVisible(true, forFirstResponder: canvasView)
        return picker
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(canvasView)
        canvasView.frame = view.bounds
        canvasView.becomeFirstResponder()
        toolPicker.addObserver(canvasView)
    }

    // PKDrawingへの描画の保存(バイナリ形式)
    func saveDrawing() {
        let drawingData = canvasView.drawing.dataRepresentation()
        let url = FileManager.default.urls(
            for: .documentDirectory, in: .userDomainMask
        )[0].appendingPathComponent("drawing.drawing")
        try? drawingData.write(to: url)
    }
}

extension DrawingViewController: PKCanvasViewDelegate {
    func canvasViewDrawingDidChange(_ canvasView: PKCanvasView) {
        print("Canvas changed: \(canvasView.drawing.strokes.count) strokes")
    }
}

drawingPolicy .anyInputのPKCanvasViewはApple Pencilと指の両方の入力を受け付けます。PKToolPickerはユーザーにカスタムUIを書かずにツール選択を提供します。PKDrawingは高圧縮のバイナリ形式で保存されます。1時間の描画で約5~10MBです。

Scribbleとテキスト認識

Scribble(iPadOS 14+)は、任意のUITextFieldおよびUITextViewへの手書き入力を可能にします。システムはNeural Engineを使用してデバイス上で手書きを認識します。MLモデルはラテン文字とキリル文字に対応しています。iOS 17+では、Scribbleは自動修正と次の単語の予測をサポートします。開発者はコードを追加する必要はありません。Scribbleは入力フィールドがあれば自動的に機能します。

Apple Pencil ProのホバーAPI

iPadOS 17.4とApple Pencil Pro以降、開発者はスタイラスが画面に近づいたとき(最大12mm)にホバーイベントを取得できます。イベントには位置、力、方位角が含まれます。用途:描画アプリでのブラシ接触点のプレビュー、ツールプレビュー、タッチ前の視覚的フィードバック。

iPad向けインターフェースの適応

アダプティブインターフェースはiPadアプリの必須要件です。iPadはさまざまな画面サイズ(8.3"~13")とマルチタスクモードで動作します。UIKitは自動適応のためにSize Classes(横:.regular/.compact、縦:.regular/.compact)とUISplitViewControllerを提供します。

Size ClassesとtraitCollection

Size Classesは利用可能なスペースを定義する抽象化です。全画面モードのiPadでは、両方の軸が.regularです。Split View(50%)では、iPad miniやiPad Airで横方向クラスが.compactになることがあります。Auto LayoutとUICollectionViewCompositionalLayoutで構築されたすべての一般的なレイアウトは自動的に適応します。カスタム適応はtraitCollectionDidChangeをオーバーライドして行います。

swift
import SwiftUI

/// Size Classesを使用したiPad用アダプティブレイアウト
struct AdaptiveContentView: View {
    @Environment(\.horizontalSizeClass) private var horizontalSizeClass
    @Environment(\.verticalSizeClass) private var verticalSizeClass

    var body: some View {
        if horizontalSizeClass == .regular && verticalSizeClass == .regular {
            // タブレットモード:サイドバー+コンテンツ
            NavigationSplitView {
                SidebarView()
            } detail: {
                ContentGridView()
            }
        } else {
            // コンパクトモード:スタックナビゲーション
            NavigationStack {
                ContentGridView()
            }
        }
    }
}

/// アダプティブグリッドの例:iPadで3列、iPhoneで2列
struct ContentGridView: View {
    @Environment(\.horizontalSizeClass) private var horizontalSizeClass

    private var columns: [GridItem] {
        let count = horizontalSizeClass == .regular ? 3 : 2
        return Array(repeating: GridItem(.flexible(), spacing: 16), count: count)
    }

    var body: some View {
        ScrollView {
            LazyVGrid(columns: columns, spacing: 16) {
                ForEach(items) { item in
                    ItemCard(item: item)
                }
            }
            .padding()
        }
    }
}

この例では、NavigationSplitViewはhorizontalSizeClass == .regular(全画面iPad)の場合にのみ使用されます。NavigationStackはコンパクトモードで使用されます。グリッドの列数(3対2)もSize Classesに応じて変わります。マルチタスクモードが変わると、すべてが自動的に更新されます。

UISplitViewController:3カラムナビゲーション

UIKitは3つのスタイルでUISplitViewControllerを提供します:.doubleColumn(サイドバー+詳細)、.tripleColumn(サイドバー+プライマリ+詳細)、.single。iPadOS 16+では、size classが変わるとsplitViewControllerが自動的にスタイルを切り替えます。開発者は各カラムにviewControllersを設定し、UIKitが表示を管理します。

iPadOSのフレームワークとAPI

iPadOS SDKには、すべてのiOSフレームワークに加えて、iPadでのみ利用可能なAPIが含まれています。以下は主要なiPad固有の機能です。

ドラッグ&ドロップ

iPadOSはアプリ間およびアプリ内でのドラッグ&ドロップをサポートします。UIDragInteractionUIDropInteractionは、テキスト、画像、ファイル、カスタムオブジェクトのドラッグを可能にします。ドラッグ&ドロップはマルチタッチと同時に機能します。ユーザーは異なる指で複数のアイテムをドラッグできます。SwiftUIでは、.onDragおよび.onDrop修飾子が使用されます。

キーボードショートカット

キーボード(Magic Keyboard、Smart Keyboard)接続時、UIKeyCommandでホットキーを追加できます。iPadOS 17+では、Cmdを長押しするとキーボードショートカットが表示されます。Appleは標準的な組み合わせを推奨しています:⌘C(コピー)、⌘V(ペースト)、⌘F(検索)、⌘N(新規ドキュメント)。

外部モニター

iPadOS 17+は最大6K(Pro Display XDR)のネイティブ解像度を持つ外部モニターをサポートします。アプリは別のセッション識別子を持つUIWindowSceneを通じて外部画面にコンテンツを表示できます。Stage Managerは外部モニターに最大4つのウィンドウをサイズ変更可能な状態で配置できます。

API目的iOSで利用可能
UISplitViewControllerマルチカラムナビゲーションはい
PencilKitApple Pencil描画いいえ
UIDragInteractionドラッグ&ドロップはい(アプリ内のみ)
UIKeyCommandキーボードショートカットはい(外部キーボードのみ)
UISceneマルチウィンドウモードはい(iPadのみ)
UIPencilInteractionApple Pencilダブルタップいいえ
PDFKitPDF表示と注釈はい

iPad向けアプリの最適化

iPadOS向けの開発には、UI/UX、パフォーマンス、テストに特別なアプローチが必要です。iPhoneでは許容されるエラーも、大きな画面とマルチタスクのためにiPadでは重大になります。

パフォーマンスとメモリ

iPadは最大16GBのユニファイドメモリを備えたMシリーズチップ(M1、M2、M4)を使用しています。強力なハードウェアにもかかわらず、Split ViewやSlide Overのアプリは別のアプリとリソースを共有します。メモリプレッシャーはiPhoneよりも高くなります。画像圧縮、コレクションの遅延ロード、Instruments Allocationsによるプロファイリングを使用してください。16GBのiPad Pro M4は、デスクトップクラスのアプリ(Final Cut Pro、Logic Pro)を実行できます。

キーボードファーストデザイン

ほとんどのiPadユーザーは外部キーボードを使用します。インターフェースは完全にキーボードで操作可能であるべきです:フィールド移動にTab、選択した要素のアクティブ化にSpace、確認にEnter。Full Keyboard Accessのサポートを追加しましょう。これはキーボードで任意のUI要素を制御できるシステム設定です。

実機でのテスト

iPadシミュレーターはマルチタスクの動作を完全に再現しません。実際のデバイスでさまざまなモードをテストしてください:重量アプリ(20タブのSafari)とのSplit View、4ウィンドウのStage Manager、アプリ切り替えの速いSlide Over。シナリオを確認:ユーザーがSlide Overからアプリを開き、Split Viewにドラッグし、サイズを変更し、閉じる——アプリはクラッシュしてはいけません。

objective-c
// iPadOSの現在のマルチタスクモードを確認
- (void)checkMultitaskingMode:(UIWindowScene *)scene {
    if (scene.traitCollection.userInterfaceIdiom != UIUserInterfaceIdiomPad) {
        return;
    }

    BOOL isFullScreen = (scene.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular &&
                              scene.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular);

    BOOL isSlideOver = (CGRectGetWidth(scene.coordinateSpace.bounds) == 320.0);

    if (scene.windows.first?.windowScene?.activationConditions.canBecomeFocused == YES) {
        NSLog(@"Stage Managerアクティブ");
    }

    if (isSlideOver) {
        NSLog(@"Slide Overモード");
    } else if (isFullScreen) {
        NSLog(@"全画面モード");
    } else {
        NSLog(@"Split Viewモード");
    }
}

よくある質問

iPadOSとiOSの違いは?

iPadOSは拡張されたマルチタスク(Split View、Slide Over、Stage Manager)、ホバー検出対応のApple Pencilサポート、ダウンロードマネージャー付きデスクトップSafari、ネイティブ解像度の外部モニター、USB-C経由で外部ドライブにアクセスできるFilesファイルシステムを備えています。

アプリにSplit Viewサポートを追加するには?

アプリがUISplitViewControllerを使用している場合、Split Viewは自動的にサポートされます。アプリはsize classの変更に正しく対応する必要があります。コンパクトモードに移行するときは、画面スタックにUINavigationControllerを使用します。Split Viewを明示的に無効にするには、Info.plistでUIRequiresFullScreen = YESを指定します。

アプリにApple Pencilを統合するには?

PencilKitを使用します:描画サーフェスにはPKCanvasView、ツール選択にはPKToolPicker。カスタムスタイラス入力処理には、.hoverタイプのUIEventとダブルタップ用のUIPencilInteractionを使用します。Apple Pencil Proのレイテンシは9ms、旧世代は20msです。

iPadの画面サイズは?

iPad mini 8.3インチ(2266×1488)、iPad Air 10.9インチ(2360×1640)、iPad Pro 11インチ(2388×1668)、iPad Pro 13インチM4(2752×2064)。適応にはSize ClassesとAuto Layoutを使用します。Thunderbolt経由で最大6Kの外部モニター。Stage Managerは最大8ウィンドウ(iPadで4 + 外部モニターで4)をサポートします。

iPadOSは外部モニターをサポートしていますか?

iPadOS 17+はUSB-C/Thunderbolt経由で最大6Kのネイティブ解像度の外部モニターをサポートします。アプリは独自のライフサイクルを持つ別のUIWindowSceneを通じて外部モニターにコンテンツを表示できます。Stage Managerは外部モニターで最大4つのウィンドウをサポートします。

まとめ

  • iPadOSはマルチタスク、Apple Pencil、デスクトップSafariを備えたApple専用のiPad OS
  • マルチタスクにはSplit View、Slide Over(320 pt)、Stage Manager(最大8ウィンドウ)が含まれる
  • Apple PencilはPencilKitを介して9~20msのレイテンシとホバーAPIをサポート
  • アダプティブUIはすべてのモードでSize ClassesとUISplitViewControllerを使用
  • iPadOS SDKにはドラッグ&ドロップ、UIKeyCommand、外部6Kモニター、UISceneが含まれる
  • Stage Manager(M1+)は任意のサイズの重なり合うウィンドウを許可
  • テストはすべてのマルチタスクモードで実機での実施が必須

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください