Upgrade to Pro — share decks privately, control downloads, hide ads and more …

選挙速報を多くのユーザーへ 届ける Live Activities 設計

Avatar for kengo saito kengo saito
September 11, 2026

選挙速報を多くのユーザーへ 届ける Live Activities 設計

日経電子版アプリでの Live Activities 活用事例と設計ポイントを紹介しています

Avatar for kengo saito

kengo saito

September 11, 2026

Other Decks in Programming

Transcript

  1. WWDC24 で Live Activities の Update - iOS 18 で

    Broadcast 配信に対応 - ⼤規模配信向けに機能が強化された! - watchOS 11 でも Live Activities の UI が表⽰できるようになった これは選挙開票速報で活⽤できそう! https://developer.apple.com/jp/videos/play/wwdc2024/10069/ https://developer.apple.com/videos/play/wwdc2024/10068/ 5
  2. Apple News でも Live Activities が利⽤されていた 2024年⽶国⼤統領 選挙開票速報が で利⽤された 選挙でも

    Live Activities を 使う流れを確信! https://apps.apple.com/us/app/apple-news/id1066498020 7 https://www.macrumors.com/2024/11/05/apple-news-us-election-results-iphone/
  3. 本発表のスコープ Live Activities 選挙開票速報に特化した事例を紹介 1. ⼤規模配信への対応 a. 通知サーバーの運⽤負荷 b. 更新時のアクセス集中

    2. ⻑時間表⽰への対応 a. 8時間の更新停⽌に対応 b. ⾮表⽰に対応 全般の理解は WWDC26 “ライブアクティビティの基本” をご覧ください https://developer.apple.com/jp/videos/play/wwdc2026/223/ 10
  4. Live Activities の利⽤例 Google Mapsでは到着予想時刻を表⽰ Apple Sports ではスポーツ結果を表⽰ 端末ごとの個別の情報を表⽰ ⼤規模に同じ情報を表⽰

    Google Maps(Google Inc.) https://apps.apple.com/jp/app/google-%E3%83%9E %E3%83%83%E3%83%97/id585027354 Apple Sports(Apple Inc.) https://apps.apple.com/jp/app/apple-sports/id6446 788829 12
  5. 個別配信と⼤規模配信の違い 更新データ (スポーツ情報 ) 更新データ (ナビ情報) 端末ごとに任意のタイミングで送信 iPhone iPhone iPhone

    Live Activity 多数の端末へ同時に送信 選挙開票速報はこちら! https://apps.apple.com/jp/app/google-%E3%83%9E%E3%83%83%E3%83%97/id585027354 13 https://apps.apple.com/jp/app/apple-sports/id6446788829
  6. Token を利⽤した更新 - 事前の登録 iOS 16.1 + で利⽤可能 Apple APNs

    ① Live Activity 更新⽤の Token を取得 通知サーバー ② Token を送信、保存 Live Activity 14
  7. Token を利⽤した更新 - 情報の送信 - Apple APNs ③ Token と

    Payload を送信 ④ Payload を受信 表⽰を更新 Live Activity 通知サーバー 個別配信が実現しやすい 15
  8. 同じ情報を Broadcast 配信で⼤規模に送信 APNs Channel 通知サーバー Payload 購読 iPhone iPhone

    iPhone iPhone App サーバーは Channel に対して更新データを⼀度送信する 端末ごとの Token 管理と、送信スケジューラの考慮が不要に! 20
  9. 更新⽅式の⽐較 Token 利⽤の更新 Broadcast 配信 対応 iOS iOS 16.1+ iOS

    18.0+ 配信先 Live Activity ごとの Token 共通 Channel ID 通知サーバー からの送信数 端末数に⽐例 1回で多数の端末へ 最適な使い⽅ 個別配信 ⼤規模配信 選挙開票速報では Broadcast 配信を利⽤した 21
  10. 選挙開票速報のデータモデル 静的な情報 ActivityAttributes で定義 Live Activity 初期化時に渡す 動的な情報 ContentState で定義

    更新時に渡す 変更される情報のみを送信し効率的に View を更新する Payload は 4 KB が上限、動的な情報を最低限に抑える 23
  11. 配信時はアプリから API を呼ばずに View を更新 - Broadcast 配信で、APNs から Payload

    を受信 - Payload の ContentState で View を再描画 → 更新ごとのAPIリクエストが不要になり、アクセス集中を回避 24
  12. 選挙対応での Live Activities の開始と配信 Live Activities を表⽰開始 Broadcast 配信 アプリ起動時に

    Live Activity 1. 更新を実施 開始⽤のデータを取得 2. ⾮表⽰にも対応 アプリ向け API iPhone App 通知サーバー APNs Channel iPhone iPhone iPhone iPhone App 25
  13. 更新の制約: バジェット管理 - 更新にはバジェットがあり、超過すると更新が遅延 - 更新 priority: high を使⽤すると即時反映ができるが、 バジェットが消費される

    - Info.plist で ”より頻繁なアップデート” 設定をすることで バジェットを増やせる - “NSSupportsLiveActivitiesFrequentUpdates” 28
  14. Live Activities は UI に許可ダイアログが表⽰される Live Activities 表⽰の許可 初回のタイミングで表⽰ “より頻繁なアップデート”

    設定の許可 検証では1~2時間後に表⽰された どちらも、アプリインストール時は許可状態となっている 29
  15. Live Activities は⻑時間利⽤に制約がある Live Activities を⾮表⽰にする4パターン 1. Broadcast 配信 2.

    アプリ / AppIntent から 3. ユーザー操作 a. 通知と同様に横スワイプで消せる 4. システムが時間経過で⾮表⽰にする 31
  16. 2026年衆議院選挙の投開票⽇ 当⽇のスケジュール - 投開票⽇ 2/8 20:00 - 開票が始まる - Live

    Activities 表⽰を開始 - 翌⽇ 2/9 9:30ごろ - 開票が終了したことを確認 - Live Activities 表⽰を終了 33
  17. 再⽣成処理の実装 1. 再⽣成の AppIntent を Button に設定 a. Live Activities

    は WidgetExtension で動くので AppIntent で処理を実⾏ b. LiveActivityIntent を使⽤ i. バックグラウンドでも、Live Activity を開始することができる 2. AppIntent 処理 a. 表⽰中の Live Activity を⾮表⽰ b. Live Activity を新規に⽣成 38
  18. 閉じるボタンを設置 - AppIntent で表⽰中の Live Activity を⾮表⽰ - アプリ起動時に再表⽰されないように、 同じ

    Live Activity は表⽰しない 誰でも直感的に⾮表⽰にできるようになった! 41
  19. 選挙開票速報 Live Activity のライフサイクル 20時 開票開始 アプリ起動時 Live Activity 開始

    ⾼頻度に データ更新 Broadcast 配信 8時間経過時 ユーザー操作で 再生成 翌朝9時30分ごろ 議席が確定 Broadcast 配信 非表示 42
  20. 選挙開票速報 Live Activities 設計ポイント ⼤規模配信への対応 Broadcast 配信を活⽤し、Token の管理を不要に → 通知送信サーバーの運⽤コストを削減

    表⽰に必要な情報を最⼩限の Payload に集約 → 更新のたびに API リクエストを⾏わず、アクセス集中を回避 ⻑時間表⽰への対応 AppIntent による再⽣成、削除の仕組みを⽤意 → 必要なユーザーが最新表⽰を継続的に取得できる 43
  21. Live Activities の広がるタッチポイント - iPhone - ロック画⾯ - Dynamic Island

    - Standby - Apple Watch - Smart Stack (watchOS 11) - CarPlay - ダッシュボード (iOS 26) - Mac (iPhone Mirroring) - メニューバー (macOS 26) 44