ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Platforms State of the Union
Take a deeper dive into the latest tools, technologies, and advances across Apple platforms to help you create even better apps.
リソース
-
ダウンロード
♪ ♪
♪ ♪
Platforms State of the Union for WWDC 2022へようこそ 私たちはいつもWWDCを楽しみにしています 私たちが皆さんとつながったり 私たちの取り組みについて共有したり デベロッパプラットフォームで 皆さんが必要なものを より深く理解する機会だからです デベロッパとして皆さんが 行われていることは すばらしいことです 皆さんはアイデアや想像したものを 形にし ユーザーの体験を 別の次元に引き上げます 私たちは 皆さんのアイデアを 更に進化させる手助けがしたいのです Keynoteでは iPhoneやiPadやMacや Apple WatchやApple TVの― 幾つかの新機能について話しました そして 最も野心的なアイデアでさえも 実現させてくれる― Appleシリコンの 驚異的なパワーについてもです 今日は お知らせがたくさんあります 幾つかの最新情報から始めましょう 皆さんがAppleのエンジニアやデザイナーと つながり 共同作業をするために設計された― 全く新しいApple Developer Centerを 今年の初めに ここ Apple Parkに開設しました そして 昨年の秋 世界中から何千もの方々が 新しいオンラインのTech Talksに 参加してくれました 何百ものライブセッションを 11か国にて 5言語でお届けしました 私たちにとって Tech Talkシリーズの 魅力の1つは 1対1のミーティングです 皆さんが取り組んでいることを聞いたり 幾つかのアドバイスや指導を共有する よい機会でした 昨年の秋 Swift Playgrounds 4が 利用可能になりました アプリケーションを開発して App Storeに直接 提出するパワーと SwiftUIをサポートするパワーがあることで Swift Playgrounds 4は 実験やUIプロトタイピングのための すばらしいツールです そしてもちろん Xcode Cloudもあります より優れたアプリケーションを より速く簡単に作れるように Xcode Cloudを開発しました Xcode自体に組み込まれ クラウドでホストされた― 継続的インテグレーションと配信サービスです Xcode CloudはAppleの 全プラットフォームのための開発に対応します TestFlightやApp Store Connectや あらゆる主要なGitベースの ソースコントロールプロバイダと連係します 更に REST APIを備え 開発ワークフローのほかの段階と つながる手助けもします 高度なセキュリティを備え 皆さんとプロジェクトを守ります そして Xcode Cloudが 今日から利用可能になることを 発表できるのをうれしく思います Xcode Cloudは ほぼ全ての開発チームの 役に立つことでしょう あらゆる規模のデベロッパにとって お求めやすい価格を設定しています 2023年末まで Apple Developer Programメンバー全員に 月々25時間のサブスクリプションを 無料で提供します そして この夏の後半から デベロッパアプリケーションで どのXcode Cloudサブスクリプションレベル にも登録できるようになります 今日 3つの大きなトピックについて話します 最初に Appleのプラットフォーム向け開発の ビジョンと プラットフォームの現状 そして 今後の方向性について 詳しく話したいと思います 次に あなたのアプリケーションを Appleのプラットフォームのシステム体験と 統合するための 魅力的な新しい方法を幾つか紹介します そして最後に 幾つかのパワフルな 新しいAPIについて話し アプリケーションで更に野心的なことを 可能にする方法を紹介します まずは デベロッパプラットフォームの ビジョンと その進化について紹介します Joshが説明します
優れたデベロッパプラットフォームは プログラミング言語とフレームワークと ツールの緊密な統合を提供します 3つ全てが互いを完全に補完する時 一般的なことは簡単になり 一般的でないことさえ可能になります それを正しく行うことで 優れたアプリケーションを作る工程が短縮され 全ての人にとって利点があります お客様は 常に完璧に感じる スクロールのような 一貫した体験を得ることができます そして 皆さんは アプリケーションを ユニークにするために時間と労力を注げます しかし デザインは進化し ハードウェアは進歩し かつては最先端だったものが 期待されるベースラインになります Objective-C言語 AppKitやUIKitの フレームワーク そしてInterface Builderは 何世代ものデベロッパに 力を与えてきました これらのテクノロジーは 互いのために作られており 今後も長きにわたって 私たちに貢献し続けますが 時間が経てば 新たな抽象化が必要になります ここ数年の間 私たちが 統合された言語と フレームワークとツールの次世代を― 懸命に定義するのを 皆さんは見てきました SwiftやSwiftUI そしてXcodeプレビューです このような開発プラットフォームにおける 緊密な統合には 3つ全てのピースが共に 設計されて進化し 相互に駆動する必要があります Swiftの結果ビルダーは SwiftUIの構成構造に着想を得ました SwiftUIの宣言型ビューは Swiftの値型により可能になりました Xcodeプレビューは両者専用に設計され 両者により可能になりました その結果は 私たちがこれまで作った中で 最高の開発プラットフォームです そして今年は SwiftとSwiftUIとXcodeの全てに すばらしいアップデートがあります それは このビジョンを更に進化させ 私たちの全プラットフォーム向けの 優れたアプリケーションを より簡単に作れるようにします 全てはSwiftから始まります 今後の展開について SwiftチームのBenが説明します
♪ ♪
Swiftは 高速でモダンで安全です それは強力に型付けされた言語の速さと 読み書きしやすい 表現豊かなシンタックスを組み合わせます そのデザインは あらゆるカテゴリーの プログラミングエラーを取り除きます Swiftは 私たちの全てのデバイスにおける アプリケーション構築にとって最高の言語です Swiftは オープンソースでもあります swift.orgに組織された 貢献者の優れたコミュニティがあり Diversity in SwiftやSwift Mentorship Programなどの取り組みを通じ 互いをサポートしているほか サーバー上のSwiftや C++相互運用性のような テーマに取り組むグループが 言語を進化させています この1年でSwiftは更に進化しました 並行性における強化のほか Swiftコードは より読み書きしやすく アップグレードされました ワークフローのカスタマイズに役立つ ツールもあります 更に内部にも すばらしい改良が行われました それは昨年 Swiftの並行性の導入から始まりました Swiftの並行性は 並行するコードの読み書きを 劇的に簡単にして大きく支持され 最初の1年だけで App Storeの40,000以上の アプリケーションが採用しました これは アプリケーションの コードベースにとって 非常に基礎的で重要な改良なので 今では 過去3年以内にリリースされた 全てのオペレーティングシステムに Swiftの並行性によるコードを デプロイすることが可能です Swiftの並行性は 非同期シーケンスも導入しました 今年は Swiftの豊富な 既存のシーケンスアルゴリズムに 並行性をもたらす 新たなオープンソースパッケージがあります それは 非同期アルゴリズムと呼びます 例えば Swiftのシーケンスプロトコルが 2つのシーケンスを組み合わせるために 圧縮アルゴリズムをサポートするのに対し 非同期アルゴリズムは 2つの非同期シーケンスを 一緒に圧縮するバージョンをもたらします 非同期シーケンスは Swift言語に直接 統合されているので forループのような お馴染みの構成を使用しており それは async/awaitシンタックスのおかげで 普通の直線コードのように見えます ネットワーク上の 非同期データストリーミングによる― ネットワーク障害などを処理するため お馴染みのtry/catchパターンを 使用することもできます 非同期シーケンスで重要なのは データ値を 時間の経過と共に どう伝達するかです 今ではSwiftは時間ユニットを表すための 一連の新たなクロックタイプを備えており 非同期アルゴリズムが それらを活用し 多くの時間ベースのアルゴリズムを提供します 例えば こちらのスロットルは シーケンスからのアップデートを 遅らせるのに役立ちます Swiftの並行モデルは 同期コードと同じくらい 非同期コードを簡単かつ 安全に書くために設計されました それを主に担うのが Swiftのアクターモデルです アクターを使えばスレッドセーフな 並行して実行されるコードを使い データを分離することができます Swiftは 並行するスレッド間で その状態が誤って共有されるのを防ぎ バグの主要因を遠ざけます アクター間のコミュニケーションは async/awaitを使えば 簡単で効率的です 今回 Swiftはアクター分離の概念を 分散アクターによって推し進めます 分散アクターは複数のプロセスや デバイス間で通信できます distributedキーワードが これらのアクターと― リモートでアクセスされるメソッドを示します Mac上の別々のプロセス間でも 異なるデバイス間のピアツーピアでも サーバー上のSwiftで書かれたバックエンドに 話しかけるデバイスからでも同じです Swiftが状態データを競合状態から守るのを アクターが手伝うように 分散アクターは プラガブルトランスポート機構を使って それらをプロセスの外で使えるように Swiftを手伝います Swiftコンパイラは その後 分散環境下における正しい動作を 保証するのに役立つチェックを行うので あなたが専念したい機能の作業に戻れます 分散アクターと そのほかの並行性の機能は シンタックスの奥深くに強化が施された時 Swiftコードの読み書きが どれほど簡単になるかを示しています Kenに Swiftのユーザビリティ向上について 更に説明してもらいます
どのプログラミング言語においても 文字列は最も重要な要素の1つです ですが 文字列の扱いは 常に悩みの種になり得ます デベロッパは行程の途中で このような文字列から情報を 抽出しなければならない時があります 文字列をパースするコードは― 細かい確認事項が多いため 書き間違いやすく 結果的に 読みにくく 修正しにくいコードになります 正規表現は こうした課題の パワフルな解決法です 文字列に期待するパターンを記述し どの情報を取得したいかを 指定できます 今年 Swiftは正規表現を中心とした デベロッパ体験を大幅に改良します まずは 新しい正規表現リテラルです
これらは言語自体に組み込まれ Swiftコンパイラで 正しいか確認できます 更に 正規表現で情報を抽出する際の Swiftの型システムのパワーを解き放ち Swiftのクラス最高の Unicodeのサポートを最大限に活用します 見てみましょう 注文受付から売上追跡までの 全てを管理する― Food Truckというアプリケーションに 取り組んでいます 一部の注文は データがいっぱいの文字列になります 正規表現は 私の望む詳細を 抽出するのにぴったりです それを試すのに このPlaygroundより 適した場所はありません まずは正規表現リテラルを作ります 今度は表現を入力して 注文者と― ドーナツの種類と個数を抜き出します 入力するにつれ 正規表現がシンタックスハイライトされ 自分の表現が正しいかどうか 確認するのを手助けしてくれます では 試してみましょう 上記の注文の文字列を使い 正規表現の最初のマッチを求めます Playgroundで動作させると インラインで結果が表示され 注文の文字列の どの部分に 正規表現がマッチするか分かります このように 私の求めていた通りのものを 見つけてくれます Swiftの正規表現への新しいサポートは これだけではありません リテラルが更に複雑になり このようにログファイルの一部と マッチする場合― Swiftは こうしたパターンを作る よりよい方法を提供します 正規表現ビルダーです
リテラルをビルダーに 変換するのも簡単です 私の書いたコードが― ビルダーで より読みやすく より変更しやすくなります このコードは 更に単純化できます このように 16進数の1桁を求める場合 更に意図を明確にしてくれる 新しい.hexDigitCharacterClassを使用します 表現の作成や拡張を行って 望み通りの結果を得ることを― ビルダーシンタックスは極めて容易にします これが Swiftの正規表現を中心とした パワフルで新しいデベロッパ体験です 文字列シンタックスだけでなく ジェネリクスという言語機能の改良により Swiftの読み書きも更に容易になります ジェネリクスは 文字列からカスタム型まで 全ての要素を保持するArray型など― 日常的に使うSwiftの機能を強化します 汎用コードは 後から別の型を 決めるための代役となる― プレースホルダ型という コンセプトを使用します 特定の型に関する仮定を取り除くことで コードの意図を より明確にすることができ コードの再利用を より簡単にできます しかし これによってコードが 読みにくくなる場合もあります 例えば 曲の汎用コレクションを 関数パラメータとして扱いたい場合 意図を表すために 大量のコードを書かなければなりません Swiftでは 曲のコレクションを部分的に 受け入れる関数を書くのが簡単で― Swiftにパラメータについて伝えるために someキーワードを使うだけです 意味は同じですが より少ないコードで済みます よりダイナミックな挙動を要する ケースもあるでしょう 例えば このミュージックライブラリの 数々のプレイリストは 様々な種類の曲の コレクションやセットや配置を 含む必要があるかもしれません そこで新しいanyキーワードが役立ちます anyキーワードはSwift自体に組み込まれ どんな曲のコレクションでも保持できる型を 表現できます 更に 汎用関数とも シームレスに連係します お馴染みのシンタックスを取り入れ より自然なキーワードを使うことで Swiftで汎用コードを書くのは かつてないほど簡単です Swift言語に組み込まれた機能と同様に 重要なのは― Swift言語を活用するツールです Swift Package Managerは アプリケーションの依存関係を簡単に管理し― 世界中のデベロッパが公開している― すばらしいパッケージを 活用することができます これまでに こうしたデベロッパたちは 何千ものSwiftパッケージを公開し 認証やウェブサービスから データ管理や再利用可能なUI要素まで 全てに役立つコードを提供しています 今年 Swift Package Managerは― 全く新しいパッケージプラグインによって コードを作成してビルドする方法を 強化します プラグインは ほかのどんな依存性とも 同じくらい簡単に― プロジェクトに加えられる Swiftパッケージです チェックアウトしてすぐ 自動でダウンロードされ ビルドされます ただし アプリケーション内の コードではなく― アプリケーションの ビルドに役立つコードになります パッケージプラグインの呼び出しは コマンドラインやXcode内から― ビルドフェーズの一環として または オンデマンドで行えます これらはコードの読み込みや修正の前に 許可を促す― サンドボックス環境で動作します パッケージプラグインによるワークフローの 拡張には無限の可能性があります SwiftLintやSwiftFormatなどのパッケージで チームのスタイルガイドを合わせるため コードの解析やフォーマットに使えます あるいは Sourceryなどのツールで ビルドタイムに ソースコードの自動生成を行えます 仕事に役立つどんなことでもできます パッケージプラグインは Swiftを少し書くだけで― Xcodeを拡張できる すばらしい方法です それができる方法は2つで オンデマンドで使う コマンドプラグインと プロジェクトのビルド時に いつでも使えるビルドプラグインです Food Truckアプリケーションに 戻りましょう これは私が作った コマンドプラグイン用のコードです
私のチームには 独特のコード美学があります インポートを文字列の長さ順に ソートするのを好みます 短いものから長いものへ パッケージプラグインは カスタマイズと制御のためにあるので それを処理するためにSwiftFormatを使う コマンドプラグインを作りました
ローカルで修正された ファイルを全て見つけ― それらのインポートをソートするものです 私が編集しているこのファイルには― ソートされていないインポートが 一番上にあります そこで プロジェクト全体に コマンドを使います ターゲットは幾つでも選べるので 全てに実行します 必要ならプラグインのコードも見られます 準備ができたので コマンドを実行します すると このように プラグインがファイルに作用します ローカルで修正したソースファイルを 全て見つけ― 長さ順にソートするのです プラグインで可能なのは フォーマットだけではありません ソースコードの生成やGitでの連係 独自にカスタマイズした エラーと警告の表示も行えます コードが適切にドキュメント化されているか 確認できるプラグインもあります これはビルドプラグインで― オープンソースのSwiftLintパッケージを もとにしています 今やビルド時に― ドキュメントを加えるべき コードの全ての場所が簡単に分かります ビルドプラグインは Xcode Cloudまで拡張するので 毎回 ビルドの一環として実行されます Swiftのパッケージプラグインで 私のチームは独自のコマンドを作成でき ローカルおよびXcode Cloudで ビルドをカスタマイズでき プラグインを ほかの人とも共有できます 全てをSwiftの数行のパワーを使うことで 実現できます パッケージプラグインが 開発のワークフローを― レベルアップする方法を 簡単に紹介しました 最後に Swiftは内部も すばらしい変化を遂げました Swiftプロジェクトのビルドは かつてないほど速く 並列化への新たな取り組みのおかげで リンク時間は最大2倍 高速です そして Swiftの並行性のランタイムは より緊密にOSと統合され 非同期タスクの優先性を より確実にして― アプリケーションの効率性と 反応のよさを維持します 最後に Swiftで書かれた アプリケーションは― iOS 16において 起動時間が劇的に速くなります 動的リンカーにおける改良のおかげで LyftやAirbnbなどのアプリケーションが ほぼ2倍速く起動します これらの内部的な改良や― ツールの新しい機能 より読み書きしやすい進化したシンタックス そして 並行性における改良により 今こそ Swiftで開発を行うべき時です Swiftは 全てのデバイスの アプリケーションを作るための― まさに最高の言語です しかし 最高のアプリケーションを作る上で 言語は必要なものの一部にすぎません 言語をパワフルな― ユーザーインターフェイスフレームワークと 組み合わせなければなりません Elizaが詳しく説明します パワフルなUIフレームワークは インターフェイスの記述や データの追加や 最新の状態に保つことを簡単にする― 抽象化を提供します 複雑性に うまく対応しないといけません そして デバイスのパワーを 最大限 活用できるように― 対象のプラットフォーム向けに 設計されるべきです UIフレームワークは― アプリケーションを親しみやすく 直感的にする手助けをしてくれるべきです 高度なカスタマイズの選択肢があり― 標準コントロールと ネイティブな 相互作用パターンを作りやすくするべきです そして 素早くアイデアを形にして 様々なデバイスで結果を確認できる― 表現力豊かなAPIが必要です SwiftUIは これら全てと これ以上のものを提供します Swiftと同じく SwiftUIは― 最良のアプリケーション構築方法について 強い意見を持って設計されています 読み書きしやすい 宣言型シンタックスを使用しています インターフェイスの作り方でなく 見た目を記述します これは SwiftUIが各プラットフォームに 賢いデフォルトを提供する余地を残します SwiftUIが自動で― 基礎となるデータモデルの変更に伴い インターフェイスを最新の状態に保つので アプリケーションのUIは 決して矛盾した状態になりません SwiftUIが これらの細かいことを 処理するので あなたはアプリケーションを ユニークにすることに時間と労力を注げます 新たなUIフレームワークを 作ることは大仕事です 導入以来 私たちは皆さんの フィードバックに導かれ― SwiftUIのAPIカバレッジを 継続的に拡張してきました 今年は 既存のアプリケーションで段階的に SwiftUIを採用するのを更に簡単にしました そして そのパワーと柔軟性に 幾つかのすばらしい強化を行いました まず アプリケーションの ナビゲーションです SwiftUIでは 多くのアプリケーションに 見られる一般的なナビゲーション階層を 常に簡単に作ることができました 今年は全く新しいナビゲーションAPIで SwiftUIは そのサポートを拡大します 新しいナビゲーションAPIは― アプリケーションのニーズに最適な ナビゲーションスタイルを表現しやすくします アプリケーションのビューの表示に対する 強力なプログラム制御と共に 簡単に選択範囲の 保存や復元をしたり 更に ナビゲーションスタックの 内容全てを置換することもできます これはアプリケーションの起動状態の設定や サイズクラス間の遷移の管理や ディープリンクへの対応など 重要な動作の処理にとても役立ちます アプリケーションのインターフェイスの レイアウトの制御に関しても― SwiftUIは大きく改良されました 多くのアプリケーションの インターフェイスのレイアウトは― 要素を横や縦にスタックする SwiftUIのモデルで記述できます そして このモデルは 多くの一般的なレイアウトに対応しますが より柔軟なものが 必要な時もあります 今年は 複数の行と列にわたって配置された 一連のビューのレイアウトを容易にする― 新しいグリッドAPIを追加します そして 全く新しいカスタムレイアウトAPIで レイアウトを更に進化させることもできます カスタムレイアウトAPIは― あらゆるタイプのレイアウトを 柔軟に構築できるようにします 例えば ビューを新聞記事のように配置し スペースが必要になった時に― 次の列に折り返されるフローレイアウトを 作成することができます もしくは時計の文字盤の 数字のように― 円形にビューを描く 放射状レイアウトを作ることもできます カスタムレイアウトAPIで レイアウトロジックの再利用が簡単になり― ビューコードが よりシンプルで より読みやすくなります 更に 多くの種類のインターフェイス要素を 提供できるように― SwiftUIは成長し続けます 例えば メインのビューの上にスライドする 第2のビューを定義するハーフシートです 小さな画面上で素早く情報に アクセスできるようにするのに最適です そして SwiftUIは共有シートにも 対応したので アプリケーションは簡単に― ユーザーのデバイスで利用可能な 全てのShare extensionを活用できます 共有シートへの対応を可能にする 新しい転送可能プロトコルは― アプリケーションのデータ転送のための 型安全なAPIを導入します 更に SwiftUIビューをホストできる 特別なコレクションビューセルと共に― 既存のアプリケーションでの段階的な SwiftUIの採用を より簡単にしました 既に UIKitアプリケーションに コレクションビューがある場合 SwiftUIの宣言型シンタックスを使って カスタムセルを書けます このようなセルは UIKitと緊密に統合され スワイプアクションやセルの背景や― UICollectionViewの その他の全ての機能に対応します 今日は SwiftUIを補完し― 更なるインターフェイスの表現を可能にする 全く新しいフレームワークも紹介します Joが詳しく説明します 今日の世界はデータであふれています 理解と決定と 新たな視点を得ることを助けるデータです デザイン性に優れ アクセスしやすいデータの 可視化は ユーザーに1日を通して 複雑な内容を分かりやすく 自然に伝えることができます 例えば 健康上のトレンドの変化を 示したり 個人の目標に向けた進展を強調したり 先のことに備えさせたりします 今日はアプリケーション内のデータを 活用する力をユーザーに与える― 新しいフレームワークを紹介します Swift chartsです Swift chartsは SwiftUIをもとに作られた― 高度なカスタマイズが可能な 図表作成フレームワークで 簡単に美しい可視化を行えるようにします 視覚情報を伝えるコードの 読み書きを簡単にするために― SwiftUIと同じ宣言型シンタックスを 使っています Swift chartsでアプリケーションのニーズに 最適な情報表示をカスタマイズし― 折れ線グラフや棒グラフから より洗練された例として ヒートマップやストリームグラフのほか もっと多くのタイプも作れます Swift chartsは SwiftUIをもとに 作られているので 図表は 簡単にカスタマイズ可能で すぐに使える― VoiceOver体験などのアクセシビリティ機能に 対応しています SwiftUIをもとに作られたということは 図表をアニメーションにして― アプリケーションに ぴったりな見た目と 雰囲気をもたらせることも意味します もちろん Swift chartsは全てのデバイスで すばらしく機能します Food Truckアプリケーションに戻り これが 完全に再設計された Xcodeのプレビューエリアでの 美しい新たなSwift chartsです 新しい複数列の SwiftUIテーブルビューも使っています この図を作るのが いかに簡単か お見せしましょう スクロールして― ソースエディタ内の すばらしい新たな 構造化されたヘッダーを見てみます 今 自分がどこにいるか とても簡単に確認できます これが図のコードです 実は この図は積み上げ棒グラフですが よく分かりません 各ドーナツを別々の色にしましょう
もしかしたら 棒を並べた方が ドーナツを比較しやすいかもしれません 幾つかの簡単な修飾子だけで このような 大きい変更を加えられるのがいいですね スタイリングもカスタマイズできます 棒にドーナツの色を反映させましょう そして 別の修飾子で 注釈を付けることもできます いい感じです プレビューはデフォルトでリアルタイムなので すぐにビューを操作できます ソート順を変えます 棒が美しく動くのを見てください 大変な仕事は全て Swift chartsが行ってくれます もっとデータを取り入れましょう モデルが変わると 図と表の両方が 自動でアップデートされます 新しい合計を反映するために 図はY軸の再計算もします もう1つ図をお見せします 消していた折れ線グラフを ビューに加えましょう 実装に移ります Swift chartsの折れ線グラフには とてもすてきな選択肢があります 各ドーナツの記号を追加したり 線に注釈を付けたり 様々な補間方法を使用して 曲線を滑らかにすることもできます catmullRomを使いましょう 最後に私自身のマッピングを使用して 図のスケールスタイルをオーバーライドします これでアプリケーション全体の配色に 図が より溶け込みます とてもいいですね 再設計されたプレビューエリアでは― 異なる環境でビューがどう見えるかを これまで以上に確認しやすくなります キャンバスの このボタンを押すと― ダークモードとライトモードで ビューが確認できます そして プレビューを 1つも追加することなく― インターフェイスの全ての向きで レイアウトを見ることもできます 横向きを拡大してみましょう 私のUIは ここに うまく収まっていないようです コントロールが幾つか画面からはみ出て 図表のアスペクト比が不適切です レイアウトを記述しているところを 見てみましょう これらのビューは 暗黙型VStackを使っています 今年 SwiftUIには より柔軟なレイアウトを作れる― パワフルな新しいAPIが幾つかあります ここでは ViewThatFitsを使って― 使えるスペースに応じて 縦のスタックと横のスタックを切り替えます
ずっとよくなりました メイン画面から移動できるように これを つなげましょう SwiftUIの新しい ナビゲーションSplit Viewを使うと とても簡単になります Split Viewには 選択をたどれる サイドバーがあります そして ナビゲーションスタックは― サイドバーの選択の変更に合わせ その内容を変更します サイドバーに移動して ドーナツチャンピオンのビューへの ナビゲーションリンクを加えます そして インタラクティブプレビューで 試すこともできます 横向きでSplit Viewを見たいので― ライブプレビューを回転するために 新しいキャンバス設定を使います 見事に機能します iPad上の見栄えには満足ですが 今度は Macにも対応させたいと思います 数回のクリックだけで可能です
Mac SDKを最大限に活用したいので ネイティブを使います
たった1つのターゲットが 私のアプリケーションに対応するので ほとんど全てのコードを共有でき SwiftUIがアプリケーションを 各プラットフォームで美しく見せます デバイス特有の機能も 簡単に追加できます Macのアプリケーションに メニューバーエクストラを追加しましょう 画面の右上の隅にある Wi-FiやSpotlightなどの― 小さくて便利なアイコンのことです SwiftUIには このための新しいAPIがあります これをアプリケーションの ボディに加えます では これをMacで 動かしてみましょう
ドーナツチャンピオンのビューは Macでも すぐに美しく見えます ここにメニューバーエクストラがあります 便利ですね 以上がSwift chartsと― SwiftUIとXcodeにもたらされる機能強化の ほんの一部の簡単な紹介です Joshに戻します 私たちはアプリケーションや システムインターフェイス全体に― SwiftUIの採用を拡大し続けています 例えば iOSの 新しいロック画面のウィジェットは 初めからSwiftUIで設計されています 新しいFont Bookアプリケーションは SwiftUIで完全に書き換えられました そして 新しいmacOSの システム設定アプリケーションの― モダンで先進的なデザインは SwiftUIを使って作られました SwiftとSwiftUIは 初めから 全てのAppleプラットフォームに― 単一のネイティブ言語とAPIを 提供するために設計されました 一度 学べば どこにでも応用できます あなたの構想が Apple Watchを一目見て 素早く情報を入手できるようにすることでも MacBook ProとiPadの 生産性ツールや iPhone上の新しい体験や Apple TVで 新たなリラックス方法を提供することでも SwiftとSwiftUIとXcodeは 私たちの全ての製品に向けた アプリケーション開発を可能にする― 次世代の統合開発プラットフォームを 提供します 既存のアプリケーションがあれば― これらの新たな技術を 段階的に採用することは簡単です 私たちのプラットフォームが初めてか 全く新しいアプリケーションを始めるなら アプリケーションを作るのに最良の方法は SwiftとSwiftUIを使うことです もちろん これは始まりにすぎません 私たちは引き続きプラットフォームの ユーザー体験も進化させ― ユーザーを引き付ける方法を増やしています Sebastienが詳しく説明します
アプリケーションとは アイデアとコードとAPIを ユーザー体験に変えるものです そして 最高のアプリケーションとは その瞬間のユーザーの状況に 対応できるものです 私たちは ユーザー体験を アプリケーションを超えたものにし それをAppleデバイスのシステム体験に 組み込める方法を作ってきました この工程は 共有シートと カスタムキーボードとの統合という― Extensionから始まりました そして 最近では ウィジェットを使って― アプリケーションが重要な情報を ホーム画面に表示できる機能を組み込みました 今年は アプリケーションを 私たちの全てのプラットフォームにおける― システム体験に統合する新しい方法が 多数あります まずは 過去最大のアップデートを行った ロック画面からです ロック画面の表示と どのように動作するかを刷新し― あなたのアイデアとアプリケーションに ユーザーを引き込む もう1つの場所を与えます Robertが詳しく説明します
ロック画面の再構築では 日常の実用性を向上させながら― よりパーソナルで美しくすることを 目指しました その一部として 私たちは全く新しいロック画面に― ウィジェットのパワーをもたらすことが 必要だと認識していました ウィジェットは これまでも アプリケーションから重要な情報を引き上げ 人々が一目で見られる場所に表示する すばらしい方法でした ウィジェットは 豊かでタイムリーな情報に ホーム画面から直接 簡単にアクセスできるようにします ロック画面は皆さんがiPhoneを 手にする時に毎回最初に見るもので いつでも 日付と時刻を確認し 重要なメッセージを確認する場所です ここに 更に多くの情報を表示する 最高のフォーマットについて考える時に デザインの着想を遠くまで探しに行く 必要はありませんでした 既にApple Watchのコンプリケーションは 一目で分かり 関連性がある最新の情報を ユーザーが必要とする時に 美しく表示します このデザイン言語は iOSにも自然に拡張し 新しいロック画面に馴染みます そこで WidgetKitを使って 同じデザインの幾つかを ロック画面上のウィジェットに 使えるようにしました 例えば Circularです 小さな画像やゲージチャートや 少ない文字を表示します Circularウィジェットは あなたが今日 十分に活動しているか― それとも走りに行く必要があるかを 表示するのに最適です Rectangularは 今後の天気予報のような情報を表示する― 広いキャンバスを提供します Inlineは 少ない文字とSF Symbolで 情報を伝えるための― パワフルな方法を提供します iPhoneの時計の上の システムから供給される "6日 月曜日"などの日付ストリングの隣にです ちなみに これらのウィジェットは iOSとwatchOSの両方で動作します watchOS 9からは コンプリケーションも WidgetKitを利用するからです 今回 初めて 同じコードを使って 一目で分かるデータを 両方のプラットフォームで生成できます WidgetKitは プラットフォームの違いを 自動的に調整し デフォルトで 適切なシステムフォントを使用し ロック画面上のウィジェットを 最高に読みやすく色付けします WidgetKitを使って どのように同一のコードで iPhoneのロック画面用のウィジェットと Apple Watchのコンプリケーションを作るかを Michaelがお伝えします
WidgetKitを使えば iPhoneのロック画面用のウィジェットと Apple Watchのコンプリケーションを 作成するのはとても簡単です ホーム画面のウィジェットを 作ったことがあれば データやタイムラインの アップデート方法も含め 決して難しくありません Food Truckアプリケーションには 既にsystemSmallウィジェットがあり ユーザーはホーム画面に追加することで その日の割当数に対する注文数を 見られます この種類の情報は ロック画面や 文字盤のコンプリケーションに 表示するのに最適です Circularファミリーの構築から 始めましょう
最初に Supported Families配列で そのサポートを宣言します
ここで幾つかのプラットフォームの条件を 使っていることに気付くでしょう その理由は このウィジェットを systemSmallにより 引き続きmacOSとiOSでサポートしたいのですが そのファミリーは watchOSでは使えないからです それから ビューを定義するために ケースを追加します
現在の注文数を 0から毎日の割当数の間で表示するために ゲージチャートを使い ユーザーが素早く 一目で進捗を見られるようにします 現在の注文数は― ドーナツの記号と共に 中心にテキスト表示します ではここで これをXcodeプレビューで見てみましょう すばらしい! ロック画面に馴染んでいます もう少し詳細が一目で分かるように Rectangularファミリーのサポートも 追加できます
このビューのためには VStackを作成します 表示されるデータのタイトル そして 同じドーナツの記号から始めます フォントにHeadlineスタイルを使うことで 両方のプラットフォームで すばらしく見えるように調整されます そして widgetAccentable修飾子で ポップ表示されるようにします Rectangularファミリーでは もう少し広いスペースが使えるので 独自のセグメント化された ゲージチャートを表示します そして その日の割当数に対する 現在の注文数を ゲージチャートのラベルに表示します キャンバスに戻って見ると Rectangularウィジェットも 同様にプレビューで見られます とてもいいゲージチャートです 今度は このウィジェットが文字盤上の― 円形のコンプリケーションとして どのように表示されるか見てみましょう
確かに全て表示されていますね しかし コンプリケーションの場合 Xcodeプレビューでデフォルトの フルカラーのレンダリングモードも 考える必要があります それぞれのゲージチャートに色付けして それを行いましょう 長方形のヘッドラインには 前景色を付けます
フルカラーでの ちょっとしたポップ表示には 環境プロパティで レンダリングモードを確認し― 円形と長方形の 両方のビューで ドーナツの記号をドーナツの絵文字に 置き換えることができます
実にすばらしいです プレビューの 新しいvariants UIを使えば コードを全く使わずに プレビュー中の色を変えることができます また 複数を 一度に見ることもできます デフォルトの表示間隔と システムフォントのスタイルを使い レンダリングモードを適用したので 同じビューがロック画面にも 文字盤にも馴染んでいます iOS 16の 全く新しいロック画面用のウィジェットと watchOS 9のすばらしいコンプリケーションを 作るのは― 全て同じコードを使って これほど簡単にできます しかし ロック画面にWidgetKitのパワーを もたらす方法は これだけではありません Mattが詳しく説明します WidgetKitにより 一目で情報に アクセスさせることができます しかし リアルタイムのアップデートが 必要な時はどうでしょうか? 今この瞬間 気にかけている アクティビティやイベントに紐付く情報です これに対応するため 私たちが新しく取り組んでいるのは― ライブアクティビティです ライブアクティビティは リアルタイムで起きていることを ロック画面からより簡単に 把握できるようにします 例えば 試合の最新のスコアや
ライドシェアや ワークアウトの途中経過などで ロック画面に表示されて いつでも最新の状態です ウィジェットと同様 Widgetkitを使い ライブアクティビティを作成します 違う点は ライブアクティビティの プレゼンテーションと状態を リアルタイムで更新することです これらは SwiftUIで構築されているので ある状態から次の状態への更新を アニメーションで 表現することさえ可能です これらの更新によって ユーザーがふと目にした時に ライブアクティビティが最新の情報を 確実に表示します ライブアクティビティは今年後半の iOS 16へのアップデートから利用できます これらが全く新しいロック画面の アップデートです 最も必要とする瞬間に 一目でより多くの情報を得られるようにする すばらしい方法となるでしょう 次は 共同作業の体験を強化する 全く新しい方法について話しましょう 詳しくは Pierreが説明します 共同作業は人々が iOSやiPadOSやmacOSで行う重要な部分です それらの多くは皆さんが構築した 驚くほど 豊富なアプリケーションのおかげであり 離れていても共同作業を行うチームを 支えるために作られたものです 仕事のための共同作業には Airtableの製品ロードマップなどがあり また 遊びのための共同作業では Redfinで理想の家を見つけたりできます 仕事でも遊びでも 共同作業は しばしば会話によって始まります また 新しい Messages Collaboration APIを使うと 皆さんのアプリケーションでの 既存の共同作業体験を メッセージとFaceTimeに 導入することができます 皆さんのアプリケーションのコンテンツへの リンクをユーザーが共有すると APIにより そのリンクを共同作業として 簡単に指定でき― シームレスな体験が可能になります 受信者が参加するために リンクをタップすると アクセスを許可するために必要な 識別子をすぐに提供します そしてもちろん これは プライバシーを損なうことなく動作します メッセージとアプリケーションの アイデンティティは 非公開で 共有されないままです 何よりもすばらしいのは 皆さんの アプリケーションが既に使っているであろう― 既存のテクノロジーを使用して 可能だということです 1つのオブジェクトで 皆さんのユーザーは 既にお馴染みの2つの便利な方法で 共同制作を始められます 1つ目は共有シートです 共同制作を前面に配置するように刷新しました 2つ目はドラッグ&ドロップです 共同制作したいコンテンツを メッセージの会話へ直接ドラッグして 共有できます 会話が始まると コンテンツ更新についての通知を メッセージの会話へ 直接 投稿することさえできます 数行のコードを追加すれば メッセージ内で1回タップすることで ユーザーはアプリケーションの共同制作に 戻れるようになります 共同制作ポップオーバーによって ユーザーは皆さんのアプリケーションから すぐにメッセージやFaceTimeの通話に 戻ることができます ですからMessages Collaboration APIを使うと 皆さんのアプリケーションはメッセージや FaceTimeの構造に組み込まれます 私たちは強力なコミュニケーションツールを ユーザーに提供することを引き受けるので 皆さんはアプリケーション内で提供する パワフルな共同作業ツールに集中できます これにより iOSやiPadOSやmacOSでの 共同作業がレベルアップします 仕事でも遊びでも 共同作業する人々のつながりに深く根ざした 一貫した体験を生み出します 次は AriがApp Intentsという 新しいフレームワークについて説明します App Intentsフレームワークについて 話せることをうれしく思います 皆さんのアプリケーションの機能を システムが利用できることで 人々がSiriやショートカットを通じて その機能を自動で使えます 人々は アプリケーションと共に ショートカットを使うのが大好きです Siriに頼むかホーム画面のショートカットを 素早くタップするだけで 様々なことを あっという間に行えます 人々がカスタムショートカットで アプリケーションの機能を組み合わせ― 全く新しい機能性を作り出すのを見るのは すばらしいです 今は使用する前に ショートカットを 手作業で追加しなくてはいけません iOS 16では 新しいApp Intentsフレームワークで これを自動化します
App Intentsがショートカットと連係し アプリケーションショートカットを形成します 何も先に設定する必要がなく すぐSiriと共に使えます 例えば "Hey Siri ルンバで キッチンを掃除して"と言うだけです これはSiriにとどまりません アプリケーションショートカットは アプリケーション機能の最前列の席を システム全体にわたって ユーザーに提供します 例えば 皆さんのアプリケーションを 探すのに使うSpotlightには ショートカットも表示されます ドネートのような追加APIを採用しなくても アプリケーションの提案のすぐ下に ショートカットが表示されます ショートカットアプリケーションにも 皆さんのショートカットが即座に現れ タップ1回で実行できます App Intentsは iOS 10で導入した― SiriKit Intentsフレームワークの 次なるステップです ウィジェットまたは メディアやメッセージの 送受信といったドメインとの統合のために Intentを採用するなら SiriKit Intentsフレームワークを 引き続き使ってください ですが Siriとショートカット向けに カスタムのIntentを作るデベロッパは App Intentsに アップグレードしてください IntentDefinitionファイル内の 変換ボタンを押すだけで― Xcodeで 簡単に App Intentsにアップグレードできます XcodeがApp Intentsのソースコードに 相当するものを生成するので 空欄の所に Intentを リンクコードで入れてください App Intentsフレームワークは 開発が非常に簡単です Swiftのために一から設計されており 多くのコードを必要としないからです 皆さんが書くSwiftコードが 信頼できる唯一の情報源です 別のIntentDefinitionファイルや 同期のためのコード生成はありません プロジェクトに コードを加えるのも簡単です コードベースを 設計し直す必要はありません Objective-Cのコードでさえ Swiftでラッピングすることで App Intentsと使えます App Intentsは 皆さんのアプリケーション内でできることを アプリケーションの 外からもできるようにするものです ほんの数行のコードで Intentを定義し アプリケーションショートカットを 加えられます 一緒にやってみましょう 先ほどのFood Truckアプリケーションには このすばらしいチャートビューがあります 今日や今週といったような 異なる期間における― トップ5の売れ行きのドーナツが分かります 人々が非常に素早く見られるよう Siriとショートカットに これを公開したいと思います まず Xcodeで 新しいSwiftファイルに移動します App Intentsフレームワークと SwiftUIをインポートします 次に App Intentプロトコルに準拠した 構造体を加えて Intentを定義します タイトルを付け― トレンドの どのタイムフレームを見るか 指定するためのパラメータを加えます これには 私のコードベースで既に 定義されているタイムフレームenumを使います 各enumケースを"今日" "今週"といった 人が読める名前に抽出するために タイムフレームenumをAppEnumプロトコルに 準拠するよう拡張する必要があります 次にIntentで performメソッドを実装します ここでは SwiftUIチャートビューを含む 戻り値を返します また ダイアログや出力値を 含めることもできます 設定することなく自動で このIntentを使えるようにしたいので アプリケーションショートカットを 定義します
人々がこのIntentを使うために Siriに言うフレーズもここに含まれます フレーズには 変数として アプリケーション名を含めなくてはいけません そして タイムフレームパラメータも 加えました これで 人々は "今日のFood Truckのトレンド"や "今週のFood Truckのトレンド"と 言うことができます 最後に必要なのは ユーザーが見つけられるようにすることです Siriに何と言えばいいか知るために このフレーズを どこかで見せる必要があります そこでファイルを ついさっき見ていた "トップ5ドーナツ" ビューに切り替え SiriTipを加えます
これでビルドしてアプリケーションを走らせ iPhoneで確認できます やってみましょう
ショートカットアプリケーションに ショートカットが現れています 各パラメータ値に対応する バリエーションがあります どれもタップするだけで実行できます Siriからも フレーズを言うだけで実行できます "今日のFood Truckのトレンド"
"今週のFood Truckのトレンド"も 通じます
アプリケーションの トップ5ビューの画面では 下に追加した このTipが見えるので この機能を頼むために Siriに何と言えばいいか分かります 最後に アプリケーションを探す時は Spotlightで こんなふうに素早く ショートカットにアクセスできます
とても便利です 皆さんのアプリケーションの機能を 全てのシステム体験にわたって提供することが App Intentsで これまでになく簡単になります これらのプラットフォーム 全てにおいてでです 次は Rickyが認証テクノロジーの 大きなアップデートについてお話しします 私たちは記憶にある限りずっと パスワードを作り 使ってきました しかし パスワードには 重大な問題があります フィッシングや 複数のアカウントでの再利用や ウェブサイトでの漏洩などです 喜ばしいことに 私たちは一緒に これらの問題を解決できます 今日 パスキーを使って行えるのです パスキーは認証フローを効率化し パスワードにおいて 最重要の セキュリティ問題に対処します パスキーは驚くほど 簡単に使えるように設計されました インターフェイスは お馴染みの自動入力スタイルのUIと 生体認証用の Face IDとTouch IDを使っています これらの要素が 安全性の大きな向上を実現しつつ パスワードからの シームレスな移行を可能にします では実際にパスキーをご覧ください パスキーでアカウントを設定する時 パスワードを作る必要はありません ユーザー名を入力して パスキーを 自分のiCloudキーチェーンに保存します これで私の全てのAppleデバイスに このパスキーが安全に同期されます サインアウトしても サインインし直すのは本当に簡単です Face IDで すぐに入れます 数々のプラットフォームが 採用しているオープンな業界規格に沿って パスキーが作られているからです そのため たった今 自分のiPhoneで作ったパスキーを使って 友達のパソコンからFood Truckの ウェブサイトにサインインできます ウェブサイトで自分のユーザー名を 入力して送信し iPhoneを使ったサインインを選びます QRコードをスキャンします iPhoneとパソコンが 安全に接続されて
サインインしました
MacのSafariでは更に簡単です iCloudキーチェーンのおかげで 既に私のパスキーがここにあるため ウェブサイトのユーザー名フィールドから 直接 サインインできます 既存のサインインのフローに パスキーを統合するのは簡単です 例えば このウェブサイトの ユーザー名フィールドから パスキーでもパスワードでも サインインできます パスワードベースのアカウントの ユーザー名を入力しても
すぐにサインインできます パスキーを使えば 大変なことはデバイスが行います いつでも安全です パスキーを作ると ウェブサイトやアプリケーション用に作られた 独自のキーを デバイスが生成し 生体認証の背後で保護します 脆弱なパスキーを持つのは不可能です 忘れられたり 再利用されたり 推測されたりもしません パスキーは公開鍵暗号に基づいており サーバーからの認証情報の漏洩は 過去のものとなります 漏れたり割り出されたりする恐れがある パスワードを ソルト付きでハッシュ化して 保存する代わりに サーバーは公開鍵だけを保持します 公開鍵は 完全に公開されているものなので ハッカーには全く価値がありません 皆さんがウェブサイトのオーナーであれば リスクが大幅に減ります これは非常に大きなポイントですが パスキーを使えば 現在のような 認証情報のフィッシングはなくなり ユーザーが直面する最も深刻な セキュリティの脆弱性が排除されます パスキーは設定されたウェブサイトや アプリケーションに本質的に紐付いているため ユーザーが 不正なウェブサイトで パスキーを使わされることは絶対ありえません パスワードと違って 本物そっくりの偽ウェブサイトに パスキーを 入力したりコピーしたりするのも不可能です 誰かが背後からのぞいても 何も分かりません 全てをまとめると 今 ここで話しているのはつまり アカウントセキュリティの新時代です ほんの数ステップで 皆さんのアプリケーションやウェブサイトで パスキーを使えます まず 皆さんのアカウントのバックエンドが 公開鍵を保管し 認証用のチャレンジを送れるようにします 次に 皆さんのウェブサイトや アプリケーションで ユーザーにパスキーを提供し 新しいパスキーを作ってサインインするための APIを採用します パスキーはウェブ認証 または WebAuthnの規格に基づいています これはプラットフォームベンダーと サービスオーナーが 業界を横断して協力してきた成果です 規格そのものが成熟し 適切に文書化されており パスキーにぴったりです この全てを 皆さんに すぐ使っていただけます 次世代のセキュリティと シームレスなユーザー体験 そして 移行期にはパスワードと 見事に共存できる設計です Sebastienに戻します 皆さんのアプリケーションを― 私たちの全てのプラットフォームでの システム体験に組み込める― 最新の方法を幾つかお見せしました そして今年は これらの統合ポイントのほかに― 皆さんと 皆さんのアプリケーションに 更に多くの可能性を開く― 大量の新しいAPIとフレームワークを 全プラットフォームにわたって用意しています ほかのものをより詳しく説明する前に 幾つかを簡単に紹介します まずはiPadOSです iPadOS 16では 一貫したデスクトップのような体験を備える― これまでで最もパワフルな iPadアプリケーションを作れます UIテキストビューのための シームレスな検索と置換体験が 皆さんのアプリケーションに 自動的に追加されます ナビゲーションバーとツールバー 文書メニューもアップグレードされます これでユーザーは書類の管理と 体験のカスタマイズが簡単になります 外部ハードウェアに接続された iPad用の 更にパワフルな アプリケーションを実現するため― iPadでDriverKitが利用可能になり― M1チップの驚異的なパワーを 解き放つ手助けをします これは 現在Macで利用できる同じAPIです USBやオーディオ PCIデバイスのサポートを― 更に多くの利用者に 簡単に提供できるようになります
watchOSは システムサービスとの より深い連係を通じて― アプリケーションに 新しい機会を創出しています watchOS 9のCallKitフレームワークには― 新しいVoiceOver IPバックグラウンドモードが 含まれ― アプリケーションはApple Watchから 直接 音声通話を行うことができ― FaceTimeの音声通話や電話と同じ 馴染みのあるユーザー体験で通話できます Bluetooth接続された医療機器は より強力な接続性とデータ通信を得られ― 緊急性の高い状態が検知された時に タイムリーに警告できます
tvOS 16は近くにあるApple TVや― iPhoneやiPad そしてApple Watch上の アプリケーション間で― つながりのある体験を作る新しい方法を 提供します ワークアウトにApple Watchの モーションデータを使うことや― ターン制ゲームの カスタムコントローラーとして― iPhoneやiPadを使うことができます また tvOSは デバイス検出と接続を管理してくれます ですからアプリケーションをほかのデバイスで 実行している必要さえありません 実際 アプリケーションが インストールされていなければ― App Storeから直接 ダウンロードするよう自動的に促されます
iPhoneとiPadのためには 広告主向けの新しいツールがあります 皆さんのビジネスの多くにとって 効果的な広告は重要だと分かっています ですので 私たちはSKAdNetworkを作りました アドネットワークと広告主が ユーザーをトラッキングせずに― キャンペーンの効果を 測定するのに役立つAPIです 多くの他社アドネットワークに 採用されていることをうれしく思います 私たちはアドネットワークや デベロッパのフィードバックを受けて― 今年 最大の要望の幾つかを反映した 多くの改善をSKAdNetworkに施し― プライバシーを侵害することなく はるかに柔軟に活用できるようにしました
iPhoneとiPadには ScanKitとRoomPlanというAPIで― ARとLiDARスキャンを使う 新しいクールな機能があります これらのAPIにより 皆さんのアプリケーションで― USDとUSDZ形式でリッチな パラメトリック室内3Dモデルを作れます ですから 建築やデザイン 小売業や接客業などのために― 様々なワークフローや体験を 作ることができます モデルには 家具をソファや戸棚やTVなどの カテゴリーに分ける分類モデルが含まれます キッチンの流し台さえ含まれます
昨年 私たちは集中モードを iPhoneとiPad― MacとApple Watchに導入しました それと同時に ユーザーの集中モードに応じて 皆さんのアプリケーションが 通知を管理する方法を導入しました 今年は Focusフィルタで 集中モードを更に進めます FocusフィルタはApp Intents上にあり― ユーザーの現在の集中モードに応じて― 皆さんのアプリケーションのコンテンツを 調整できます 例えば ユーザーが仕事用の集中モードの間 仕事のアカウントだけを表示する Focusフィルタを― アプリケーションに設定できます これらの例は ほんの一部にすぎません 皆さんのアプリケーションを かつてないほど進化させ― 全く新しいアプリケーションと 体験を作るために必要なパワーを持つ― 新しいツールとAPIが 全面的にあらゆるレベルで用意されています 次は もう少し詳しい説明をしましょう まずは Metalです 次のレベルへ引き上げるテクノロジーです Sarahが詳しく説明します
Metalはパワフルなグラフィックスと 演算のAPIで― 皆さんがすばらしいゲームと プロ向けアプリケーションを― Appleプラットフォーム用に 開発するのに役立ちます Metalは画期的なApple GPUと ユニファイドメモリシステムを― 活用しやすくします これらはAppleシリコン搭載の 最新のiPhoneからiPadやMacに及ぶ― ラインナップに搭載されています そして今年 Metal 3が登場します 今まで以上に高いフレームレートで 没入感のあるグラフィックスをレンダリングし 新次元の演算性能を可能にするのに役立つ パワフルな新機能を備えています 例えば 機械学習フレームワークの PyTorchでは― パフォーマンスが劇的に向上します 今回 GPUによる機械学習トレーニングを 可能にするため― PyTorchには 新しいMetalバックエンドが採用されています 最大に注力した分野はゲームです まずはゲームの読み込みです ゲーム体験の鍵となる要素で 起動時間と新しいレベルの読み込みに 影響する可能性があります 最新のゲームは 高画質のアセットを提供することで― リッチなゲーム体験を実現します そして これらのアセットを― ストレージからGPUに 素早く読み込むのは難しいものです ゲームはアセットの読み込みを ロード画面で隠しがちです ゲームの起動を速くする1つの手法は 高画質のビジュアルが利用可能になるまでの間 低画質バージョンを読み込み 描画することです ユーザーは低画質のグラフィックスを より長く見ることになるため― これは理想的なゲーム体験ではありません Metal 3は Metal iO APIで 高速リソース読み込みを導入します これはApple GPUの ユニファイドメモリアーキテクチャを活用して 読み込みのオーバーヘッドを最小限に抑え― また 全てのAppleシリコン搭載Macに内蔵の 高速SSDストレージが― 最大限のスループットを実現するよう 十分なリクエストをキューに保持します この新しいAPIにより― 理想的な画質でのレンダリングに より多くの時間が使われるよう― より速く より一貫した パフォーマンスが実現します ゲームの読み込みでは ストレージから メモリへのリソースの移動に加え― シェーダーのコンパイルも重要です シェーダーは常に 各ユーザー独自のハードウェア構成に合わせ― コンパイルする必要があります そして PCのハードウェアは多種多様なので― 通常は実行時に コンパイルしなくてはなりません このゲーム内でのコンパイルはコマ落ちや より遅いフレームレート― より長い読み込みの原因となり ゲーマーの体験に影響を与えることがあります 対照的にAppleシリコンとMetal 3は― 全てのAppleデバイスをサポートするよう 一緒に設計されています これからはオフラインでの シェーダーコンパイルで― GPUシェーダーバイナリを プロジェクトのビルド時に生成できます これにより 読み込み時間を短縮し レンダリングのパフォーマンスを上げるため― ゲーム内でのシェーダーコンパイルを 省くことが可能になります ゲームでもう1つ重要な側面は リッチで詳細なアセットを提供することです そして 皆さんのゲームのグラフィックスの 忠実度を上げる方法の1つは― はるかに洗練されたジオメトリの メッシュを生成することです 従来の方法は演算パスでサーフェスを求め― 後にレンダーパスで使うジオメトリを 生成するというものです 難しいのは これで遅延が生じ またメモリの使用量が予測不能になることです Metal 3に登場する 新しいMesh Shading APIにより― 最適化されたジオメトリ処理パイプラインを 単一のレンダーパスで― 正確に制御できるようになります Objectシェーダーで 生成するメッシュの数が決まり― Meshシェーダーで実際にジオメトリが生成され ラスタライザーに直接 送られます これでデバイスのメモリに送る必要がなくなり パフォーマンスが向上します またゲーマーはこれらの息をのむビジュアルを できるだけ高フレームレートで見たいものです しかし 先進的なグラフィックスを 超高解像度でレンダリングすると― 貴重な数ミリ秒が犠牲になります MetalFX Upscalingは 没入感のあるグラフィックスの― 1フレーム当たりのレンダリング時間の 短縮に役立ちます お見せしましょう 以前はネイティブ解像度で フルフレームをレンダリングしていましたが― GPUのレンダー時間が 目標フレーム時間に収まるとは限りません これからは目標フレーム時間に収まるよう― 同じ複雑なシーンを より低い解像度でレンダリングしてから― MetalFXフレームワークで 一時的なアンチエイリアスと― アップスケーリングを実行して 目標解像度にすることができます AppleシリコンとMetal 3の 最適化された機能により― Macのゲームはかつてないほど 美しく見えるようになりました デベロッパも同意しています 業界をリードするゲームスタジオ各社には― 自社のタイトルを Macに移植する計画があります 例えば「GRID Legends」は― Appleシリコンを活用して 皆さんが最高速度に到達するのを手助けします あるいは「バイオハザード ヴィレッジ」は― MetalFX Upscalingなどの 機能を活用し― 最高解像度で 忘れられないほど美しい場面を実現します そして「No Man's Sky」は Metal 3を活用し― MacとiPadの両方で リッチで広大な世界を探索します Metal 3は皆さんのアプリケーションの パフォーマンスを大幅に向上させる機能を持ち すばらしいゲーム体験を提供する 驚異的なものです それでは MapKitの方向性について Kathyが説明します お気に入りのレストランに向かう時も 次の休暇を計画する時も― お気に入りのフードトラックが どこに停車しているか確認する時も 私たちは周りの世界を探索するのに かつてないほどデバイスに頼っています MapKitはリッチでフレキシブルな地図と 位置情報サービスで― ユーザーが世界を発見し ナビゲートするのに最良の方法です Appleマップが使われており デベロッパに無料で提供されます MapKitを使えば皆さんのアプリケーションに 地図や衛星画像を表示したり― 人気スポットを見つけて目立たせたり 注釈やオーバーレイを加えたり― 経路を検索したり そのほか様々なことができます MapKitはAppleが一から作り上げた 全く新しいマップを使っています ディテールと精度が向上し 役に立つ地図と位置情報サービスを― 皆さんのアプリケーションに 組み込むことができます iOS 16ではこのマップをもとに MapKit史上最大のアップデートを行います まずは全てのデベロッパに 3D都市体験を提供します 皆さんのアプリケーションのユーザーは 驚異的なディテールを見られます 例えば 3D標高や右左折車線 横断歩道や自転車レーン― ゴールデンゲートブリッジや フェリービルディングなどの― 手作業で作られた すばらしい3Dランドマークなどです マップに追加されたディテールにより― これまで不可能だったコンテキストと精度を 提供することができます 例えば ある人気スポットが― 横断歩道と自転車レーンの起点の 間にあると表示できます ほかのどのデジタル地図でも これはできません それに とても簡単に 実装できるようにしました もっとお見せするために 新しいマップのディテールを使って― ユーザーがお気に入りのフードトラックの 停車位置を簡単に探せる体験を作りましょう 3D都市体験が利用できる地域では― このようなライブマップ表示で 自動的に3D表示されます 配布ターゲットとして iOS 16を選択するだけです 次に フードトラックの 正確な位置を描写するのに― 並外れたディテールのマップを活用できます MapKitには正確にマップを表示するため 3D空間でカメラの位置を定めることができる― パワフルな制御機能があります ここではカメラの中心座標の距離を 600メートルに設定し― どこまでズームインするかを選べます ピッチと方角を調整し 3D空間内でカメラを傾ければ― 右左折車線や横断歩道 更には木々まで 驚異的で役立つディテールを見られます デフォルトでは標高は平坦に設定されています ユーザーがこれから行く場所の地形を 理解するのに役立つよう― elevationStyleに realisticを入力し preferredConfigurationを設定して― 3D標高を含められます MapKitのDirections APIから 注釈や経路ソースを加える時は― MapKitが自動的に標高を管理し 注釈や経路を 3D地形上に配置することで調整します
スローパンを加えカメラの向きに 動きをつけるとマップ表示が生き生きとします ユーザーがダークモードに切り替えると― マップはそのほかのUIと一緒に調整されます iOS 16でこの没入感のある体験を― デベロッパの皆さんに提供できるのを とてもうれしく思います 更に 私たちはAppleマップの もう1つの人気の機能もMapKitに導入します Look Aroundです これはストリートレベルで世界を探索する すばらしい方法です 高解像度の3D写真と スムーズなアニメーションで― ユーザーはタップするだけで通りを進めます
View Controllerを挿入して MapItemを指定すれば― マップのすぐ下に 静的なLook Aroundプレビューを加えられます Look Aroundビューは自動的に 場所を正しく画面表示します ユーザーがプレビューをタップした時に― フルスクリーンのLook Aroundビューを 表示することも選べます このビューでユーザーは住所と 画像が収集された日付を見ることができ― 周囲の環境をよりよく理解するために タップで自由に動き回ることができます iOS 16のMapKitに導入する 要望の多かった新機能がもう1つあります Apple Maps Server APIです Maps Server APIはRESTfulで― MapKitで最も利用頻度の高い関数のうち 4つをサポートしています 緯度経度を住所に変換するGeocode― 反対に住所をGPS座標に変換する Reverse Geocode― Searchと Estimated Times of Arrivalです 私たちの新しいMaps Server APIは 皆さんの独自のバックエンドサービスを― よりリッチに より高性能にする すばらしい方法です もちろん MapKitはAppleマップと同じ プライバシーの基盤の上に― 一から作られており― ユーザーのデータと身元を紐付けることも 行った場所の履歴を残すこともありません 以上がiOS 16の MapKitの新機能についての概要です 次は天気 あるいは― 少なくともそれをアプリケーションに 組み込む方法を Novallが説明します 本日 天気アプリケーションを iPadとMacに搭載し パワフルな新機能を提供することを 発表しました 荒天の通知やリッチで詳細な表示 10日分の1時間ごとの気温と降水量予報です Appleデバイスとプラットフォームを通じた ほかのあらゆる種類の体験が 我々の提供する天気データによって 更によくなります Siriに今日の天気予報を聞くことから 洪水を避けたルート変更の ナビゲーションにまで及びます それらの全てが Apple Weatherサービスで作られています Apple Weatherは世界最高レベルの グローバルな天気予報を提供します 機械学習と予測アルゴリズムを 組み合わせた― 高解像度気象モデルを使った天気予報です Apple Weatherは現在の天候および― 10日分の1時間ごとの天気予報 1日ごとの天気予報を提供します 過去の天気データも提供するので 傾向を確かめられます また世界の一部の国では 荒天の通知と分単位の降水量も提供されます 天気予報は 10日分の 1時間ごとの気温や降水量 UV指数 そのほか多くの予測を表示します こうしたデータの全てが WeatherKitを通じて利用できます WeatherKitは 全てのAppleプラットフォームにとって ネイティブなSwift APIで どこからでも使えるREST APIです これらのAPIが正確かつ地域密着型の 天気予報を提供し― 皆さんのユーザーが安全を確保し 情報を得て備えられるようにします WeatherKitのすばらしいSwift APIで 天気情報を手に入れるのがいかに簡単か― ちょっとしたデモをお見せしましょう Food Truckアプリケーションを 再び開きましょう お客様が雨に降られないように 私のアプリケーションは 晴れた駐車場を提案するよう設定されています どうやって天気データを入手するか お見せしましょう ここに 保存している駐車場の リストがあります 既にXcodeに WeatherKitの機能を追加しているので 必要なのは数行のコードだけです Swiftの並行性で 天気のリクエストはシンプルです WeatherServiceでweather(for:)を呼び出し 場所を指定します そうするとアプリケーションに必要な 関連するデータが得られます 例えば 気象状況や
降水量
雲量などです
駐車場ごとに必要なデータが得られたので アプリケーションを実行すると カスタムビューがアップデートされ 晴れた場所を提案します
皆さんのアプリケーションでの体験を よりよいものにするために 天気データを活用する あらゆる種類の方法があります 天気予報は 在庫調整にも使えるかもしれません 暑い日にはアイスクリーム入りドーナツが よく売れると予測して アイスクリームの仕入れを 増やすといいでしょう たったこれだけでフードトラックのための 天気データを入手できます WeatherKitには ほかにも 更に多くのお見せする点があります
Appleのプライバシーへの取り組みを踏まえて 位置情報は 天気予報を提供するためにのみ使用されます 個人を特定できる いかなる情報とも 関連づけられることはなく 共有や販売されることは 決してありません プライバシーは共同責任です WeatherKitで皆さんは ユーザーのプライバシーを守りながら 正確な天気データを得られます 皆さんがWeatherKitを 簡単に始められるように Apple Developer Programメンバーシップに 月々50万回の― weather(or:location) API呼び出しを 含めています 更に必要な方は この秋から デベロッパのアプリケーションで 追加レベルのサービスを購入いただけます 以上がApple Weatherサービスによる 正確で地域密着型の天気予報 WeatherKitです ベータ版からスタートし 現在 全てのプラットフォームで使えます 皆さんのアプリケーションでWeatherKitを使う クリエイティブな方法はたくさんあります 次は Ryanがテキスト認識表示を使って アプリケーションで何ができるか紹介します ユーザーはテキスト認識表示を 気に入っていて 自分のアプリケーションにも導入したい という皆さんの声を多く聞いています そこで今年はまさにそれが可能になるよう 2つの新しいAPIでVisionKitを拡張します
Live Text APIによって 画像コンテンツを解析する機能が可能になり ユーザーが写真や一時停止したビデオの中の テキストやQRコードを使えるようになります そして クイックアクションを提供します ユーザーは関連するデータをタップするだけで アクションを起こせます 映像メディアを表示する アプリケーションである― Apollo for RedditやVimeoなどにとって すばらしいことです
次にData Scanner APIによって ライブカメラ映像を解析する機能が 可能になります ユーザーにとってテキストとバーコードの 読み取りが劇的にシンプルになります ライブカメラの体験を アプリケーションのニーズに合わせ調整する― オーバーレイやカスタムコントロールを 追加するだけです これはQRコードに頼る 消費者向けアプリケーションに特に役立ちます または 倉庫の在庫管理 ピック&パック・デリバリーのサービス POSのために作られた 企業向けアプリケーションにも役立ちます Live TextとData Scanner どちらのAPIも― 今年 追加される日本語と韓国語を含めた 9か国語の自動検出をサポートします これらのVisionKit APIは 僅か数行のコードだけで 皆さんのアプリケーションに何年分もの― コンピュータビジョンの イノベーションをもたらします どういうことかJennyがお見せします デモをお見せするため― 頼りになる Food Truckアプリケーションに戻ります ユーザーがアプリケーションの ソーシャルチャンネルに ハッシュタグ #freedonutと住所を付けた 看板を持った写真を投稿すると その住所まで車で行って ドーナツを無料で届けるという プロモーションを行っています ソーシャルドーナツフィードを見てみましょう ドライバーが配達先の住所を入手する テキストを取り出せるよう― 画像にテキスト認識表示を加えます ここで 新しいLive Text APIの出番です ImageInteractionは画面の一番上に 簡単に追加できます それによりクイックアクションをサポートする テキスト認識表示のボタンが追加されます テキスト認識表示のボタンは 通常 右下に位置しますが 私のアプリケーションには 既にハートのボタンがあるので カスタムインセットを使って 配置を調整します ボタンのスタイルをカスタマイズして ボタンの構成を決めることもできます 自分のアプリケーションに もっと合うようになります 追加したので テキスト認識表示のボタンをタップして テキストを選ぶか― 簡単に住所を入手するため クイックアクションを使います
テキスト認識表示の体験と 同じ使いやすさを提供するので ユーザーが新しいインタラクションモデルを 学ばなくていいことが気に入っています UIは一貫していて見慣れています OSに統合されている感じです 自分自身のカスタムUIがあっても 配置を調整することができます もちろん ほかの優れた デリバリーアプリケーションと同じように 私たちもまた お客様に最高のサービスを提供し 届けるべきドーナツを 確実に届けたいと思っています そこでQRコードを使って ドーナツの注文を追跡します 新しいData Scanner APIを使い あらゆるカスタマーインタラクションの 最初の一歩として 簡単に追加することができます 今そのボタンは何もしませんが 文字やQRコードやバーコードを探す 新しいData Scannerオブジェクトを 簡単にインスタンス化できるので それらを自分のアプリケーションに インポートすることが可能です ほんの数行のコードでカメラを起動でき QRコードが必要だと指示すると スキャンが始まります ドライバーがQRコードをタップしたら スキャンが成功したことを教えましょう Xcodeにデリゲートハンドラを追加します
タップしてユーザーに スキャンが成功したことを通知します そうすればドーナツの注文受付を 進めることができます アプリケーションを実行すると カメラビューでビューコントローラが表示され 説明およびQRコードを強調した レチクルビューを見ることができます QRコードをタップすると スキャンが成功し ドーナツの注文が確定したことが分かります
これで私の #freedonutデリバリーは開始されます
VisionKitで新しいLive Textと Data ScannerのAPIが これらのパワフルな視覚的機能を アプリケーションに簡単にもたらします Susanに戻します アプリケーションを作るのが エキサイティングな時代です Xcode Cloudは 既に皆さんが― より優れたアプリケーションをより速く作る 手助けをする準備ができています SwiftとSwiftUIでアイデアを― Appleのプラットフォームに対応する アプリケーションという形にすることが 今までより更に簡単になりました 皆さんのアプリケーションには 皆さんのアイデアをシステム体験のより深くへ 到達させるクールで新しい方法があります ロック画面ウィジェットと ライブアクティビティが 皆さんのアプリケーションを ロック画面に表示します メッセージでの共同作業は ユーザーがつながり― 共同で作業することを驚くほど簡単にします そして App Intentsは アプリケーションをSiriと連係させます 全く新しいAPIがあり また WeatherKitやMapKit Live TextやMetalなど 既存のAPIにも大幅なアップデートがあります
これで終わりではありません 今年も大規模なWWDCです 175のセッションと何百ものラボ そして デジタルラウンジのアクティビティが 1週間を通して行われます 今週 皆さんとつながるのが楽しみです そして何より 今週は皆さんのためにあります 皆さんが次に何を作り出すか楽しみです ありがとうございました ♪ ♪
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。