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
  • トランスクリプト
  • コード
  • PencilKitによるストロークの微細な情報の認識

    フリーボードやメモなどのApple製アプリと同じパワフルなテクノロジーを使って、アプリに手書き認識機能を組み込みましょう。広範な種類のアルファベットや言語に対して手書き認識を使用する方法や、PencilKitをより多くのアプリに統合するための新機能について解説します。

    関連する章

    • 0:00 - Introduction
    • 3:25 - Handwriting recognition
    • 8:38 - Path conversion
    • 10:21 - Improved model access
    • 11:25 - Stroke slicing
    • 13:48 - Next steps

    リソース

    • Controlling stroke rendering for animation and editing
    • Recognizing handwriting and converting it to text
    • Building a handwriting recognition experience with PencilKit
    • PencilKit
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC26

    • PaperKitの詳細

    WWDC25

    • PaperKitの紹介

    WWDC20

    • PencilKitにおける描画の確認、修正、組立
  • このビデオを検索

    ようこそ。 私はYichenです 描画機能を 担当するエンジニアです。 このセッションでは PencilKitの 新しいAPIをご紹介します。 手書き認識をアプリに 組み込むことができます。 また 描画モデルへの アクセスが改善され さまざまなユースケースが 広がります。 Apple PencilでiPadに書くと 紙にペンで書くような 自然な感覚です。 しかし紙と違い 手書きの文字は 検索可能で認識でき インタラクティブになります。 PencilKitはAppleのプラットフォームで フリーハンド描画をサポートする 中核フレームワークです。 低遅延のキャンバスと 豊かなインクを提供し Apple Pencilのフルサポートと 基盤となるデータモデルへの アクセスも備えています。 iOS 26ではPaperKitが導入され PencilKit上に構築されることで Appleの描画体験を システム全体で実現します。 このセッションで紹介する PencilKitの新しいAPIはすべて PaperKitでも利用できます。 詳しくは "Meet PaperKit"を ご覧ください。 WWDC25のビデオです。 またWWDC26の "Unwrap PaperKit" もご参照ください。 Appleのプラットフォームは 世界トップクラスの手書き認識を備えています。 この技術がさまざまな機能を 支えています。 FreeformやNotesでの 手書き検索などです。 PencilKitで最も要望の多かった機能の 1つが手書き認識です。 iOS iPadOS macOS そしてvisionOS 27で 利用可能になりました。 まずPencilKitの 手書き認識APIから始め 手書きを認識されたテキストに 変換する方法をご紹介します。

    次に PencilKitのストロークパスと 標準的なBézierパスを 相互変換するための 新しい変換APIを説明します。 続いて 描画モデルの改善点を 取り上げます。 ストロークのIDと 選択アクセスも含みます。

    最後に 新しいストロークスライシングAPIを ご紹介します。 ストロークを分割したり セグメントを抽出したりできます。 iOS 27のPencilKitを使って 息子のための学習アプリを作りました。 中国語と英語の 書き方を学べるアプリです。 アプリでは2つの言語で 単語を書く練習ができ フィードバックを 受け取ることができます。 アプリには英語の単語が表示された フラッシュカードがあります。 練習として 中国語の翻訳を 書いてみます。 今は英語で "Heart"と 表示されています。 中国語で "心"と書く必要があります。 アプリは手書き認識を使って 単語を完成させる前に 現在の文字を確認できます。

    ボタンが振動して 答えが正しくないことを伝えます。

    今度はアプリが私の手書きを 中国語の "心"として認識し プロンプトと一致したため 正解だと確認されました。 できました。 これがPencilKitの 手書き認識APIでできることです。

    手書き認識の 中核から始めましょう。 PKStrokeRecognizerはSwift Actorで スレッドセーフな設計です。 認識には時間がかかるため すべてのメソッドは非同期です。 主な機能が3つあります。 これらを組み合わせることで 手書き認識の体験が アプリで幅広く活用できます。 それぞれ見ていきましょう。 1つ目の機能は認識テキストです。 書かれた内容について 最も可能性の高い1つの結果を返します。

    デフォルトでPKStrokeRecognizerは デバイスの言語設定を使用して 手書きをどう解釈するかを 判断します。 preferredLanguagesを明示的に 設定することもでき アプリの言語コンテキストに 合わせられます。

    描画全体を一度に認識したり 特定のstrokeIDのサブセットを 渡すこともできます。 オープンな練習ビューに スワイプして 認識テキストの 動作を確認します。

    何でも書けます PencilKitが 認識してくれます。

    すごい。 Hello WWDC。

    iOS 27時点でPKStrokeRecognizerは 29言語に対応しています。 対応言語のリストは PKStrokeRecognizerの supportedLanguagesプロパティで取得できます。 シミューレータでの手書き認識は ラテン文字を使用する言語のみ サポートしていることに ご注意ください。 PencilKitの手書き認識は すべてデバイス上で実行されます。 認識モデルはオフラインで オペレーティングシステムに 含まれています。 手書き認識は高速で iOS 27が対応する すべてのデバイスで動作します。 次のAPIはIndexable contentです。 描画全体の内容を表す 1つの文字列を提供します。

    Spotlight検索などの機能に 特に有用です。

    複数の言語が有効な場合 Indexable contentは結果を含む場合があります。 複数の言語で 結果が返されることもあります。 手書きが曖昧な場合 考えられるすべての解釈を インデックスに含めたいでしょう。 ユーザーが何を検索しても コンテンツを見つけられるようにするためです。 "1"か小文字の "l"か。 "101"か "lol"か。 認識テキストが 最善の1つの回答を返すのに対し Indexable contentはすべての 候補を連結して返します。 Indexable contentを ディスクに保存する場合 認識結果は 基盤モデルの更新とともに 改善される可能性があります。

    PKStrokeRecognizerは recognizerVersionプロパティを公開しています。 indexedContentと一緒にこの値を保存し 読み込む際に 現在のバージョンと比較して 再インデックスするか判断します。

    またPKStrokeRecognizerへの 呼び出しはスロットルを検討してください。

    ストロークごとに結果を更新すると 必要以上に電力を消費します。 インデックス機能の提供に 必要な電力を超えてしまいます。 3つ目のAPIはテキスト検索です。

    対象の文字列を指定すると 検索結果の配列を返します。 その単語が描画内で どこに現れるかを示します。

    すべての候補を 考慮した上で返されます。

    これがインタラクティブ検索を 支えています。 一致するストロークの周囲に ハイライトが表示されます。

    search()はUIFindInteractionとも 自然に組み合わせられます。

    システムの検索と置換の 体験を提供します。

    UIFindInteractionDelegateを実装し 内部でsearch()を 使って駆動することで

    システム検索UIを取得でき 結果ナビゲーションも完備されます。 ハイライト表示とともに 描画キャンバス内で直接機能します。 フラッシュカードに戻って search()がフラッシュカードの マッチングをどう 実現するかを示す変更を加えました。

    SearchResultsで返される バウンドの可視化を追加しました。

    検索が一致した場所を示す ボックスが表示されます。

    これらの機能により 手書きコンテンツのアクセシビリティも 向上します。 VoiceOverを接続して 手書きを読み上げることができ スクリーンリーダーを利用する人にも 手書きがアクセシブルになります。 検索機能によって支援機能が 描画内の特定の単語を 見つけてナビゲートできます。 これらを組み合わせることで アクセシビリティのギャップを埋め 手書きとタイプされたテキストを 近づけます。

    次はパス変換です。 パス変換は強力なAPIセットで PencilKitをアプリに 組み込む際に役立ちます。

    PencilKitはストロークパスを 3次均一Bスプラインとして表現します。 PencilKitのパス保存方法について 詳しくは "Inspect, modify, and construct PencilKit drawings" WWDC20のビデオをご覧ください。

    Bスプラインは描画の表現として 優れていますが Bézierパスほど一般的では ありません。 iOS 27ではPKStrokePathが 両者の変換をサポートします。

    パスを変換する際 PencilKitがジオメトリを処理します。 BézierパスはPencilKitの サイズ 不透明度 筆圧などの プロパティを持ちません。 そのため各コントロールポイントに それらを指定する必要があります。

    PKStrokePathから始めた場合 Bézierパスへの変換と逆変換を行っても コントロールポイントの位置は 同じになります。 PencilKitのストロークを Bézierベースのフォーマットで保存し 精度を失わずに 再構築できます。 アプリが独自のキャンバスを持ち BézierパスでストロークをストロークしていてもBézierパスとして ストロークを保存している場合 それらをPKStrokePathsに 変換できます。 PKDrawingを構築し PKStrokeRecognizerに 渡すことができます。 これにより手書き認識が あらゆるキャンバスで対応します。 PKCanvasViewだけに 限りません。

    PencilKitの使用範囲を広げるだけでなく iOS 27ではモデルへの より深いアクセスを可能にする 重要な機能が追加されました。 この柔軟性がアプリの カスタムユースケースをさらに広げます。

    PKStrokeとPKStrokePathの両方が Identifiableプロトコルに準拠します。 安定したUUIDなので 変換や編集を超えてストロークを追跡でき アンドゥ操作にも対応します。

    安定したIDにより PKCanvasViewの 選択状態を制御できます。

    新しいデリゲートメソッド canvasViewSelectionDidChangeも追加され ユーザーの選択が変更されるたびに 呼び出されます。 特定のインクを 素早く一緒に描くと PencilKitはそれらのストロークを 合成します。 インクがまだ乾いていないかのように 等しいrenderGroupIDを使用します。 iOS 27では制御が 可能になりました。

    最後の新しいAPIセットは ストロークを2通りの方法で スライスする機能を提供します。 プログラムによる消去と サブストローク抽出です。 PencilKitのデータモデルを 扱ったことがある方は ストロークマスクを すでにご存知かもしれません。 PencilKitはマスクを使って 部分的な消去を表現します。 ピクセル消しゴムが ストロークの一部を削除すると 残る可視部分が マスクで定義されます。 iOS 27からは 同じ操作をプログラムで適用できます。 消しゴムとしてPKStrokePathを 指定します。

    描画を切り抜き 単一のストロークを 複数の独立したストロークに 分割します。 それぞれ独自のマスクを持ちます。 ユーザーがキャンバスで 消しゴムツールを使ったときと 同様の結果です。

    注意点として スライスは 複雑な描画では負荷がかかることがあります。

    ストローク数が多い描画では パフォーマンスに注意し バックグラウンドスレッドで 消去することを検討してください。 UIをブロックしないように します。

    消去でストロークが視覚的に切れる場合 サブストローク抽出により そのセクションを効率よく取得できます。 新しいストロークやパスとして 取り出せます。

    iOS 27からPKStrokeと PKStrokePathの両方がサブスクリプトアクセスに対応します。 パス上の任意の位置に パラメトリック範囲で指定できます。 スライスの開始点と終了点を 正確に制御できます。

    PencilKitのインクには 鉛筆テクスチャのパーティクルなどの 機能があります。 これらはストローク全体に対して 相対的に配置されています。

    サブストロークを取得する場合 PencilKitはそれらのパーティクルの 一貫性を維持します。 漢字では筆順が重要です。 順序が正しいかを確認するために サブストロークを使った機能を作り 文字の書き方を 再生できるようにしました。

    PencilKitはMetalを使って レンダリングを実装しており 最適化によって アニメーションが滑らかになります。

    これらの強力なAPIを 最大限活用するために PKStrokeRecognizerを採用して 手書き認識をアプリに追加してください。

    新しい場所でPencilKitを試して 既存のBézierパスを PKStrokePathsに変換し 手書き認識のメリットを活かしてください。 PKCanvasViewなしでも 利用できます。 PencilKitのモデルを深く掘り下げて 安定したIDでストロークを追跡し 選択の変更に対応し 新しいレベルのカスタム体験を 構築してください。 最後に ストロークスライシングを 活用してください。 プログラムによる消去で 描画を切り取り サブストロークで滑らかな アニメーションを作りましょう。

    これらのAPIはどれも 簡単に統合できます。 組み合わせることで 今まで不可能だった 機能をアプリで実現できます。

    デモのサンプルコードは このビデオのリソースでご確認ください。 手書きが認識可能で検索可能 そしてインタラクティブになります。 アプリのあらゆる場所で。 これがiOS 27のPencilKitです。 ご視聴ありがとうございました。

    • 3:53 - Recognized text

      import PencilKit
      
      let recognizer = PKStrokeRecognizer()
      await recognizer.updateDrawing(drawing)
      myLabel.text = await recognizer.recognizedText()
    • 5:22 - Indexable content

      import PencilKit
      
      let recognizer = PKStrokeRecognizer()
      await recognizer.updateDrawing(drawing)
      if let indexedContent = await recognizer.indexableContent {
          index(text: indexedContent)
      }
    • 6:58 - Find text

      import PencilKit
      
      let recognizer = PKStrokeRecognizer()
      await recognizer.updateDrawing(drawing)
      let results = await recognizer.search("apple")
      for result in results {
          highlight(bounds: result.bounds)
      }
    • 0:00 - Introduction
    • Meet the PencilKit APIs behind handwriting in Notes and Freeform, now available to your apps in iOS 27.

    • 3:25 - Handwriting recognition
    • Use the stroke recognizer API for on-device text recognition, indexing, search, and accessibility.

    • 8:38 - Path conversion
    • Converting PKStrokePath to and from Bézier paths without losing fidelity, so apps that store strokes as Bézier can build PKDrawings and use handwriting recognition on any canvas, not just PKCanvasView.

    • 10:21 - Improved model access
    • Deeper access to the drawing model in iOS 27 — stable Identifiable stroke IDs that survive edits and undo, controllable canvas selection with a change delegate, and adjustable wet-ink render groups.

    • 11:25 - Stroke slicing
    • Two ways to slice strokes — programmatic erasing that cuts one stroke into independent strokes, and substroke extraction with parametric ranges — along with performance considerations for complex drawings.

    • 13:48 - Next steps
    • Ways to put these APIs to work: adopt PKStrokeRecognizer for handwriting recognition, convert existing Bézier paths, track strokes with stable identity, and use stroke slicing for erasing and animation.

Developer Footer

  • ビデオ
  • WWDC26
  • PencilKitによるストロークの微細な情報の認識
  • メニューを開く メニューを閉じる
    • 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.
    利用規約 プライバシーポリシー 契約とガイドライン