ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Mac Appの公証に関する最新情報
公証がmacOSと連携することにより、App Store以外でもMacのソフトウェアが安全にダウンロードできるようになります。altoolからnotarytoolへの移行の必要性についてと、Xcode GUIを使用して、Appを認証する際の全体的なパフォーマンスを向上させる方法について解説します。また、インターネット接続された任意のマシンで公証サービスとやり取りを行う際のAPIについても紹介します。
リソース
関連ビデオ
WWDC23
WWDC22
WWDC21
WWDC19
-
ダウンロード
♪ メロウな ヒップホップ音楽 ♪ ♪ こんにちは Johnathanです macOSのデベロッパは Appを提出して 公証を受けることで 悪意のある ソフトウェアから ユーザーを保護できます 昨年 私たちは notarytool CLIや コマンドライン インターフェイスを使うことで より迅速でシンプルな 公証を可能にしました 今年は パフォーマンスと 柔軟性を 維持しながら 公証サービスとの やり取りを大きく 改善する変更を行います このセッションでは主に 3つの話題を取り上げます まず 公証に使用する ツールを altoolから notarytoolへ移行する 重要な期限について 確認します 次に Xcode 14で notarytoolの 迅速さを実現する連携の 改善について説明します 最後に公証サービスと やり取りを行う 柔軟な新しいサービスである REST APIについて説明します これを使用すると Appの提出 状況の確認 レビューが可能になります
昨年 私たちは altoolに代わり 公証を行う notarytoolを導入しました 動画の後半では Xcode 14における 新しいバックエンドへの 移行について説明します altoolとXcode_13を 新たな公証 システムに移行する 道筋が整いましたので 古い公証方式は 2023年の秋に終了します altoolからnotarytoolへの 移行については昨年発表した 「より高速でシンプルな Mac Appの公証」をご覧ください 具体的な内容ですが Xcode 13に バンドルされている ものも含め notarytool CLIは 2023年秋移行も 動作し続ける予定です ですが いつもの通り 改善と修正のためにも アップデートをおすすめします Xcode 13 UIを使用した公証サービスへの アップロードは 期限後に 機能を終了します Xcode 14での パフォーマンス向上に ついては後ほど説明しますが ワークフローは ほとんど変わりません 最後に altoolでの公証は 2023年秋に すべての機能を停止します notarytoolへの移行については 昨年のWWDCでの プレゼンをご覧ください 次に Xcode 14での公証の 変更点について説明します Xcodeに組み込まれた 公証サポートにおいて 昨年導入した notarytool CLIと 同じ 信頼性の高いバックエンドを 使用するように移行しました これにより 昨年発表した notarytoolと同じく およそ4倍の パフォーマンス向上を Xcode 14でも 実現出来ました その最大の利点は プロジェクトの 設定やワークフローの 変更なしに パフォーマンス向上を 実現できることです そして最後のトピックですが 新サービスである 公証用の REST APIを発表します この新サービスにより さらに多くの場所で より柔軟に公証サービスを 利用可能になります いくつかの重要な 概念の説明としては この新APIは 公証サービスでの より柔軟なインターフェイスの 提供を可能にします JSONベースの サービスとして ほとんどの言語で 簡単に統合できます このAPIを使えば macOSが 実行されていない 継続的インテグレーション サーバーからでも インターネット接続があれば どこからでも提出物の アップロードが可能です さらに このAPIでは 提出物の履歴や 過去の提出物の 内容の取得など 公証サービスとの その他のやり取りも サポートされています REST API導入の目的は より多くの プラットフォームからの 公証用ソフトウェアの 提出をサポートし 自動化されたシステムで 簡単な操作を実現することです これは現在の提出方法である Xcodeと notarytoolを補完し Linuxベースの継続的 インテグレーションなどでの 使用を想定しています 例えば デプロイメント パイプラインの一環として Appの配信前に公証を 受けたいと考えてみます この新APIと 基本的なスクリプトを使えば 簡単にプロセスの 自動化が可能になります 本題に入る前に 重要なトピックである 認証についてお話します 他のApp Store Connect APIと同様に JSON Web Token (JWT)を 使ったAPI認証が可能です 認証の詳細についてや 今から紹介する コードについては 以下のリンクにある REST API ドキュメントをご覧ください これらのスニペットでは トークン変数として 有効なJWTが関数に 渡されていると仮定します では Pythonで 公証用ファイルを 提出する例を見てみましょう この基本的な流れは 他のプログラミング言語でも 利用可能です 公証用ファイルのアップロードには 主に2つのステップがあります まず ファイルを アップロードする旨を 公証サービスに通知します ここにはファイル名や SHA-256など ファイルの 基本情報を含めます レスポンスにはファイルの アップロードに必要な情報と パイプラインを通じて 提出物を追跡する IDを含めます 次に 実際に Amazon S3経由で 公証用ファイルを アップロードしてみます お好きな S3 SDKを用意します この例では boto3 ライブラリを使用します ここでは 前のコールで返された 一時的認証情報を使って 認証を行い クライアントを作成します 次にクライアントを使い 最初のステップで指定された バケットとオブジェクトに ファイルをアップロードします アップロードが 完了すると 公証パイプラインを通じて 提出が行われます このプロセスは ほとんどの場合 15分以内に完了します アップロード後 配信前に公証システムが 正常に処理を終えたことを 確認する必要があります ここでは大まかに 2つのアプローチがあります まず 最も簡単なのは 同じAPIを通じて 結果を確認する方法です もう1つは notarytoolで導入された webhookのサポートを 利用する方法です まず APIでの やり方を見てみましょう 公証用ファイルの提出状況を 確認する方法は簡単です アップロード時に受け取った 提出用のIDで リクエストします レスポンスの一部が 提出物の状況です 処理が終了するまで 「In Progress」と 表示されます その後 ステータスは 「Accepted」や「Invalid」など 最終的な状態に移行します 提出が完了すると APIを使用して このアップロードの 公証ログを取得できます このエンドポイントの 詳細については Notary REST APIの ドキュメントをご覧ください 次に ステータスを取得する 2つ目の方法 webhookについて説明します webhookのワークフローも ほぼ同じですが 今回は最初のアップロードの リクエストで webhookのURLを 提出することになります フォーマットの詳細は notary REST APIの ドキュメントに 記載されています 先ほどと同様 公証サービスが 提出物の内容を分析します 自動分析が終了すると チケットが作成され 最終ステータスが 保存されます 完了すると 公証サービスは 提供された webhook URLに 呼び出しを行います この呼び出しの内容には 提出用ID チームID 当社からの呼び出しを 証明する署名が含まれています 通知を受け取った後に 次の行動を選択できます 例えば 元の提出者に通知したり 自動配信パイプラインを 開始できます notarytoolで 待つことに比べると ファイルをアップロードする システムと 公証後のアクションを自動化する システムを切り離せます 新しいREST APIによって 継続的インテグレーション システムや macOS向け ソフトウェアを構築する ツールとの統合の扉が開かれます 再度まとめますと Xcode 14 notarytool またはREST APIへの 移行期限は2023年の 秋になっています もしデプロイメント パイプラインで notarytoolを お使いでなければ 公証REST APIを使って 自動化を始める 良い機会だと思います ドキュメントへの リンクは下にあります ありがとうございました 残りのWWDC22もお楽しみください ♪
-
-
4:53 - REST API: upload file for notarization
# Upload file for notarization def upload_file(token, filepath, sha256): data = { "sha256": sha256, "submissionName": os.path.basename(filepath) } resp = requests.post( "https://appstoreconnect.apple.com/notary/v2/submissions", json=data, headers={"Authorization": "Bearer " + token}) output = resp.json() aws_info = output["data"]["attributes"] submission_id = output["data"]["id"] client = boto3.client( "s3", aws_access_key_id=aws_info["awsAccessKeyId"], aws_secret_access_key=aws_info["awsSecretAccessKey"], aws_session_token=aws_info["awsSessionToken"]) client.upload_file(filepath, aws_info["bucket"], aws_info["object"])
-
6:12 - REST API: wait for completion
# Wait for completion def watch_upload(submission_id, token): while True: resp = requests.get( "https://appstoreconnect.apple.com/notary/v2/submissions/" + submission_id, headers={"Authorization": "Bearer " + token}) output = resp.json() current_status = output["data"]["attributes"]["status"] if current_status != "In Progress": return current_status # For example: Accepted or Invalid time.sleep(30) # Allow time for submission to progress
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。