ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
WeatherKitの紹介
WeatherKitは、有益な気象データをAppに提供することにより、ユーザーが最新情報を確認し、身を守り、備えるのをサポートすることができます。Swift APIやREST APIを使用して、現在の天気、気温の10日間毎時予測、予想降水量、風情報、UV指数などの情報にアクセスする方法について解説します。また、個人データやプライバシーを侵害することなく、タイムリーで地域に密着した気象情報を提供する仕組みについても解説します。
リソース
関連ビデオ
Tech Talks
WWDC22
-
ダウンロード
♪ 穏やかな音楽 ヒップホップミュージック ♪ ♪ WWDC22の 「WeatherKitの紹介」へようこそ 私はNovallと申します Weatherチームで エンジニアをしております 私たちは日々 気象データを頼りにしていますが その情報の入手先は重要です Apple Watchで天気を 確認することで 出かける前に 傘を持っていく必要があるか 知ることができ 雨や霜を予想できることで 農家は輪作の計画を立てることができ 持続可能な農業が可能になります 安全に過ごすために冬の嵐の訪れの 準備をすることもできます 天気はすべての方に 影響を及ぼします 気候の変化により 影響を受けている現代では 正確な気象データが 今まで以上に重要となります 正確な気象情報を得ることは 何よりも重要であるため 私たちはWeatherKitを作りました WeatherKitは まったく新しい Apple Weatherサービスの機能であり グローバルな気象予報サービスです 高解像度の気象モデルを 採用しており 機械学習や 予測アルゴリズムを使用して 地球のいかなる場所でも 地域密着型の気象予報が可能です Apple Weatherサービスにより 多くのデータを入手でき これらのデータはすべて WeatherKitで確認できます 正確な気象データを取得するには 位置情報が必要となります そのデータのプライバシーを 守ることは共通の責任です プライバシーを第一に WeatherKitはユーザーの データを侵害することなく 地域に特化した予報を提供できる 設計になっています 位置情報は気象予報を 提供するためのみに使用され 個人識別情報との 関連付け 共有や売買されることはありません WeatherKitでは ユーザーのプライバシーを 簡単に守れるように設計されています 本日はWeatherKitについて 詳細を説明していきます 新しいAPIを最大限に 活用できるようになります まず Apple Weatherサービスが 提供元である WeatherKitを通じて 利用可能なデータセット について説明します 次に WeatherKitフレームワークと あらゆるプラットフォームで 気象データを利用できるように 設計されたREST APIを使い 気象情報をリクエストする 方法を紹介します 最後に 追加の実装要件と ベストプラクティスについて 説明します まず 利用可能な気象データセット について説明します お伝えしたように WeatherKitでは 様々なデータを取得できます これから各データセットについて 話していきます 気象データセットは リクエストされた場所での 「現在」の状況を表示します ある地点での UV指数 温度 風などの状況を含んでいます 1分ごとの天気予報では 1分ごとに 次の1時間の降水状況を 表示します このデータセットは 外出する際に 傘を持っていくかどうかを 決めるために活用できます 1時間ごとの天気予報では 現在の時間から始まる 予報を収集したものであり 最大240時間分の データを提供します 1時間ごとの予報には 湿度 視界 気圧 露点など 条件が含まれています 日別天気予報は10日間の 予報を収集したものです 日別天気予報の各日には 最高気温や最低気温 日の出や日の入りなど その日1日の情報が 提供されます 気象警告には リクエストした場所の 深刻な天候の警報が含まれます このデータセットには ユーザーが最新情報を確認し 身を守り 備えるのをサポートする 情報が含まれます 天候の履歴にて 過去の天気予報を 保存しているので 気象データの傾向を 確認することができます 1時間ごと 1日ごとのリクエストに 開始日と終了日を 指定することで 過去のデータに アクセスすることができます これにより沢山のデータを 確認することができます 天候の履歴は 様々な重要で影響力のある方法で 活用することができます これで 利用可能なリッチな 気象データをの紹介は以上です 次は この気象データを WeatherKit APIでリクエストする方法を 一緒に見ていきます Apple Weatherのデータは ネイティブフレームワークと REST APIセットの 両方で利用可能です まず初めに 当社のSwiftフレームワークで どの程度簡単に気象データを 取得することができるのかお見せします 必要なのは 数行のコードだけです また Swiftの並行処理により 気象データのリクエストも簡単です まず WeatherKitとCoreLocation をインポートします 次に Weather Service のエントリポイントとして weatherService オブジェクトを作成します 興味のある場所の CLLocationを作成します ここでは私の故郷である New YorkのSyracuseで設定します weatherServiceインスタンスで weather(for:)を呼び出し 上で作成した 位置情報を渡します 呼び出しが完了すると Appに必要な関連データ 例えば 現在の気温やUV指数など にアクセスできます Swiftで 気象データを簡単に リクエストできることを 紹介しましたが Swift UI で 構築している旅行Appを 使用している場合の例を 説明していきます プロジェクトの完成版は このセッションに紐づく リンクから入手することができます また旅行に行くことを 楽しみしているため フライトプランナーApp を作って 次の旅の計画を することにしました フライトの旅程のロジックは すでに作成済みですが 旅程の各フライト をタップすると 各目的地の状況や 降水量 風速 気温を含む カラムを表示したいと思います 最初のステップはWeatherKitを 有効にすることです デベロッパポータルで App IDを登録し CapabilityとApp Servicesの タブを選択して WeatherKitを 有効にします 次に Xcodeの プロジェクトで WeatherKitを 利用できるように設定します この準備を終えた上で それぞれの場所の 気象データを どのように取得するかを 説明します ここでは 目的地の空港の 緯度と経度を含む 空港の構造体が すでに設定されています 共有の気象サービスで weather(for:)を呼び出して 1時間ごとの予報を取得し その後 空港の位置情報を 渡します
データのサブセット が欲しいため リクエストに 1時間ごとの予報も含めるように 指定しました ここで Appをビルドして 起動します
カスタムビューが更新され 各空港の状況が 表示されるようになりました このAppで 次にしなければならないことは App内のデータソースの アトリビューションを表示することです まず最初に attribution.legalPageURLプロパティから アトリビューション URLを取得します これは 気象データソースに関する 著作権情報を記載した 法的アトリビューションページ へのリンクです Apple Weatherマーク を含む URLも必要となります ライトとダーク両方の バリエーションがあり SwiftUIビューが現在ライト またはダークのどちらの外観で 表示しているかを調べるために colorSchemeの 環境値を確認します そして再度ビルドして起動します
Apple Weatherマークと アトリビューションリンクは SFSafariViewControllerで 開くことに注意してください フライトプランナーAppで 気象情報を取得するために 必要なことは以上となりますが WeatherKit APIを使用してAppに 気象データを追加する 方法はたくさんあります しかしそれは ネイティブフレームワーク に対してのみとなります REST APIは Swiftフレームワークと同様に リッチな気象データを提供し あらゆるプラットフォームで 利用することが可能です この例では weatherkit.apple.comの エンドポイントから 気象警報をリクエストする 方法を説明します まず初めに 認証トークンをリクエストします それについては後ほど もう少し詳しく説明します オブジェクトの天気を取得するために 指定された場所の リクエストする気象データセットを示す URLを作成します ローカライズ対応 にするために 必ず適切な言語を 設定してください 次に 関心のある場所の 緯度と経度を 入力してください リクエストするデータセットを指定します このパラメータは複数あり カンマで区切ることで 一度に複数のパラメータ をリクエストすることができます そして最後に リクエストした場所の国番号です ただし 国番号は気象警報の データセットを要求する場合にのみ 必要となりますので ご注意ください 次に 上記のURLと 認証トークンを使って 気象データを取得し その結果をJSONに変換します これにより気象警報と その詳細に アクセスすることができます 再度 気象データへの アクセスがいかに簡単かを REST APIを介してお見せします 必要な設定について より深く掘り下げるために authに戻りたいと思います WeatherKitのREST API では 認証処理を行うために いくつかの追加手順があります デベロッパポータルで WeatherKitに有効な認証キーと 関連するサービス ID を 作成することで アクセスを 有効にすることができます 秘密鍵は デベロッパポータルの Keyセクションで 作成することができます WeatherKit では 各リクエストにおいて 認証の検証をするために トークンが必要です サーバー上に 秘密鍵を使用して 署名付きJSON Webトークンを作成する トークンサービスを展開します JSONwebトークン認証を 理解している方にとっては これは標準的な 認証フローですが 初めて使用する方のために 詳細を説明します 署名付きトークンを 生成するには デベロッパドキュメントに 記載されている フィールドと値を含むヘッダを 作成する必要があります 次に WeatherKit REST APIと Appに 発行者 件名 有効期限など 固有の情報を含む ペイロードを作成します その後WeatherKit REST APIの呼び出しで トークンに署名を行います 気象警報の例では ここで署名サービスから トークンを要求することになります 気象データの HTTPリクエストの Authorizationヘッダに トークンを追加します これがWeatherKit REST APIとなります Apple Weatherサービスの 気象データに アクセスするための 2つの素晴らしい方法のうちの1つです 最後に App Storeで 公開する場合や REST APIを使用して プラットフォームで公開する前に 必要な追加要件を いくつか説明します ネイティブなSwift APIと REST API どちらを使用しているかに関わらず これらの要件は適用されます 最初の要件は アトリビューションです デモでご覧になったように Attribution APIから リンクを取得します これはネイティブAppや Web Appで 表示する必要があります 二つ目の要件は アトリビューションロゴです WeatherKit APIは Appで表示するために 必要な画像アセットを提供することで 簡単かつ便利に実現できます そして 気象警報を 表示する場合は レスポンスで提供される イベントページへの リンクも必要です このように App Storeや Webで公開するための Appを簡単に 準備することができます これがWeatherKitです Apple Weatherサービスを利用した 地域に密着した天気予報を 当社のSwiftフレームワークと REST APIを介して利用できます あらゆるプラットフォームや デバイスのApp上で 気象データ利用の可能性を 広げることができます こちらのセッションを 楽しんでいただけましたか このセッションに関連する リンクをチェックする以外にも ドキュメントを読み プロジェクトをダウンロードしてください 皆さまからのフィードバックを お待ちしております 皆さまが創造的で インパクトのある WeatherKitの使い方をしていただける ことを楽しみにしています ありがとうございました WWDCで素晴らしい日々を! ♪
-
-
4:28 - Request the weather in Swift
// Request the weather import WeatherKit import CoreLocation let weatherService = WeatherService() let syracuse = CLLocation(latitude: 43, longitude: -76) let weather = try! await weatherService.weather(for: syracuse) let temperature = weather.currentWeather.temperature let uvIndex = weather.currentWeather.uvIndex
-
7:56 - Request the weather via REST API
/* Request a token */ const tokenResponse = await fetch('https://example.com/token'); const token = await tokenResponse.text(); /* Get my weather object */ const url = "https://weatherkit.apple.com/1/weather/en-US/41.029/-74.642?dataSets=weatherAlerts&country=US" const weatherResponse = await fetch(url, { headers: { "Authorization": token } }); const weather = await weatherResponse.json(); /* Check for active weather alerts */ const alerts = weather.weatherAlerts; const detailsUrl = weather.weatherAlerts.detailsUrl;
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。