Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
選挙速報を多くのユーザーへ 届ける Live Activities 設計
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kengo saito
September 11, 2026
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
選挙速報を多くのユーザーへ 届ける Live Activities 設計
日経電子版アプリでの Live Activities 活用事例と設計ポイントを紹介しています
kengo saito
September 11, 2026
Other Decks in Programming
See All in Programming
RSSとCodexを使ってX投稿自動化してみた
ochtum
0
110
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
170
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
220
How I Stole PSI from Android Studio - DroidKaigi2026
worker8
0
110
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
450
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
120
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
440
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
110
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
300
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
240
Deep dive into the select statement (GopherCon UK)
jespino
0
180
アクセシビリティから考える情報設計
high_g_engineer
0
360
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.2k
Site-Speed That Sticks
csswizardry
13
1.5k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
Skip the Path - Find Your Career Trail
mkilby
1
230
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Claude Code のすすめ
schroneko
67
230k
A better future with KSS
kneath
240
18k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
510
Transcript
選挙速報を多くのユーザーへ 届ける Live Activities 設計 iOSDC Japan 2026 / ⽇本経済新聞社
齋藤健悟
⽇経電⼦版アプリにて Live Activities による 選挙開票速報を実施 @2025年参院選, 2026年衆院選 ロック画面 Dynamic Island
Apple Watch 2
従来の⽇経電⼦版アプリの選挙対応 @2024年以前 ⽇経電⼦版アプリではWebの 選挙特設ページを表⽰していた ユーザーはアプリを開けば最新情報が取得できる 3
アプリ独⾃の対応は Push 通知がメインだった Push 通知で速報をお知らせ → 選挙情勢に合わせて速報を出したい → 通知が多いと許諾率も下がる もっとアプリの体験を⾼められないか?
4
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
2024年衆院選で社内検証を実施 実際の選挙データと繋いで体験を確認 情報が⾃動更新される ⾃然と⽬に⼊るUXを確認できた! → 次の選挙に向けて準備を⾏っていた 6
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/
開票速報を実現する際に重要な要件 素早く 正確に 情報を届ける 8
要件を達成するための2つの対応 ⼤規模配信への対応 負荷を抑えながら素早く更新 ⻑時間表⽰への対応 安定して更新を続け、正確性を担保 開発と検証を重ね、 ⼤規模‧⻑時間の配信に適した実装を確⽴ 9
本発表のスコープ Live Activities 選挙開票速報に特化した事例を紹介 1. ⼤規模配信への対応 a. 通知サーバーの運⽤負荷 b. 更新時のアクセス集中
2. ⻑時間表⽰への対応 a. 8時間の更新停⽌に対応 b. ⾮表⽰に対応 全般の理解は WWDC26 “ライブアクティビティの基本” をご覧ください https://developer.apple.com/jp/videos/play/wwdc2026/223/ 10
1. ⼤規模配信への対応 個別配信 / ⼤規模配信の 2つの利⽤例から⾒ていきましょう 11
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
個別配信と⼤規模配信の違い 更新データ (スポーツ情報 ) 更新データ (ナビ情報) 端末ごとに任意のタイミングで送信 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
Token を利⽤した更新 - 事前の登録 iOS 16.1 + で利⽤可能 Apple APNs
① Live Activity 更新⽤の Token を取得 通知サーバー ② Token を送信、保存 Live Activity 14
Token を利⽤した更新 - 情報の送信 - Apple APNs ③ Token と
Payload を送信 ④ Payload を受信 表⽰を更新 Live Activity 通知サーバー 個別配信が実現しやすい 15
Token 利⽤の更新を⼤規模配信で利⽤する 通知サーバーから、 Apple APNs 多数の端末に向けて送信する 端末の Token の管理、 送信スケジューラの仕組みの考慮
が必要となる 通知サーバー Live Activity 16
“Broadcast 配信” 17
同じ情報を Broadcast 配信で⼤規模に送信 iOS 18から利⽤が可能になった Token の代わりに APNs で Channel
を⽤意する 18
同じ情報を Broadcast 配信で⼤規模に送信 通知サーバー APNs Channel 購読 iPhone iPhone iPhone
iPhone App 端末は⼀つの Channel を購読する 19
同じ情報を Broadcast 配信で⼤規模に送信 APNs Channel 通知サーバー Payload 購読 iPhone iPhone
iPhone iPhone App サーバーは Channel に対して更新データを⼀度送信する 端末ごとの Token 管理と、送信スケジューラの考慮が不要に! 20
更新⽅式の⽐較 Token 利⽤の更新 Broadcast 配信 対応 iOS iOS 16.1+ iOS
18.0+ 配信先 Live Activity ごとの Token 共通 Channel ID 通知サーバー からの送信数 端末数に⽐例 1回で多数の端末へ 最適な使い⽅ 個別配信 ⼤規模配信 選挙開票速報では Broadcast 配信を利⽤した 21
選挙開票速報のデータモデル 静的な情報 タイトル表⽰ 過半数表⽰ 動的な情報 議席数 記事タイトル, URL 22
選挙開票速報のデータモデル 静的な情報 ActivityAttributes で定義 Live Activity 初期化時に渡す 動的な情報 ContentState で定義
更新時に渡す 変更される情報のみを送信し効率的に View を更新する Payload は 4 KB が上限、動的な情報を最低限に抑える 23
配信時はアプリから API を呼ばずに View を更新 - Broadcast 配信で、APNs から Payload
を受信 - Payload の ContentState で View を再描画 → 更新ごとのAPIリクエストが不要になり、アクセス集中を回避 24
選挙対応での Live Activities の開始と配信 Live Activities を表⽰開始 Broadcast 配信 アプリ起動時に
Live Activity 1. 更新を実施 開始⽤のデータを取得 2. ⾮表⽰にも対応 アプリ向け API iPhone App 通知サーバー APNs Channel iPhone iPhone iPhone iPhone App 25
開始処理 アプリ起動 / フォアグラウンド時に開始情報を取得 得られた開始情報で Live Activity を開始 ⚠ Broadcast
配信で開始することはできない 26
⾮表⽰処理 Broadcast 配信で Live Activity を即時⾮表⽰にできる Payload に下記を設定 - event:
“end” - dismissal-date: 1 - 現在時刻より過去に設定する 27
更新の制約: バジェット管理 - 更新にはバジェットがあり、超過すると更新が遅延 - 更新 priority: high を使⽤すると即時反映ができるが、 バジェットが消費される
- Info.plist で ”より頻繁なアップデート” 設定をすることで バジェットを増やせる - “NSSupportsLiveActivitiesFrequentUpdates” 28
Live Activities は UI に許可ダイアログが表⽰される Live Activities 表⽰の許可 初回のタイミングで表⽰ “より頻繁なアップデート”
設定の許可 検証では1~2時間後に表⽰された どちらも、アプリインストール時は許可状態となっている 29
2. ⻑時間表⽰への対応 30
Live Activities は⻑時間利⽤に制約がある Live Activities を⾮表⽰にする4パターン 1. Broadcast 配信 2.
アプリ / AppIntent から 3. ユーザー操作 a. 通知と同様に横スワイプで消せる 4. システムが時間経過で⾮表⽰にする 31
Live Activities の時間制約 1. 表⽰から8時間後に、更新ができなくなる 2. 表⽰から12時間後に、⾮表⽰となる → 4時間の間は、更新されないままロック画⾯に表⽰が残る 表⽰開始
12時間後 ⾮表⽰ 8時間後 更新可能 更新不可 32
2026年衆議院選挙の投開票⽇ 当⽇のスケジュール - 投開票⽇ 2/8 20:00 - 開票が始まる - Live
Activities 表⽰を開始 - 翌⽇ 2/9 9:30ごろ - 開票が終了したことを確認 - Live Activities 表⽰を終了 33
開票速報は⼀晩かかるコンテンツ 8時間経過で更新が停⽌する場合 開票途中の Live Activity がそのまま残ってしまう → 不正確な情報のまま残る、速報性も失われてしまう 34
Live Activity を再⽣成しよう 8時間経過 ボタン押下 時間経過でボタンを表⽰ 再⽣成して 更新ができるように! 35
Live Activity を再⽣成しよう 再⽣成の選択肢 1. Live Activity タップ時にアプリを起動し、再⽣成 2. Live
Activity 上のボタン押下で、再⽣成 36
再読み込みボタンの表⽰判定 表⽰開始 開始時刻を 静的データで保持 Broadcast 配信 View 更新 表⽰開始から 8時間経過?
再読み込みボタン表⽰ Yes No 配信データで更新 37
再⽣成処理の実装 1. 再⽣成の AppIntent を Button に設定 a. Live Activities
は WidgetExtension で動くので AppIntent で処理を実⾏ b. LiveActivityIntent を使⽤ i. バックグラウンドでも、Live Activity を開始することができる 2. AppIntent 処理 a. 表⽰中の Live Activity を⾮表⽰ b. Live Activity を新規に⽣成 38
Live Activities の再⽣成によってできたこと - 不正確な情報が残らないように - ユーザーが必要なタイミングで、最新の情報が取得できるように 39
“Live Activities が消せない‧‧‧” スワイプで消せるOSの仕様だが、初⾒ではわかりづらい ロック画⾯、Dynamic Island に ⼀晩中表⽰され続ける 消したいユーザーにも配慮したい! 40
閉じるボタンを設置 - AppIntent で表⽰中の Live Activity を⾮表⽰ - アプリ起動時に再表⽰されないように、 同じ
Live Activity は表⽰しない 誰でも直感的に⾮表⽰にできるようになった! 41
選挙開票速報 Live Activity のライフサイクル 20時 開票開始 アプリ起動時 Live Activity 開始
⾼頻度に データ更新 Broadcast 配信 8時間経過時 ユーザー操作で 再生成 翌朝9時30分ごろ 議席が確定 Broadcast 配信 非表示 42
選挙開票速報 Live Activities 設計ポイント ⼤規模配信への対応 Broadcast 配信を活⽤し、Token の管理を不要に → 通知送信サーバーの運⽤コストを削減
表⽰に必要な情報を最⼩限の Payload に集約 → 更新のたびに API リクエストを⾏わず、アクセス集中を回避 ⻑時間表⽰への対応 AppIntent による再⽣成、削除の仕組みを⽤意 → 必要なユーザーが最新表⽰を継続的に取得できる 43
Live Activities の広がるタッチポイント - iPhone - ロック画⾯ - Dynamic Island
- Standby - Apple Watch - Smart Stack (watchOS 11) - CarPlay - ダッシュボード (iOS 26) - Mac (iPhone Mirroring) - メニューバー (macOS 26) 44
皆さんのプロダクトにも Live Activities を取り⼊れてみてください! 45
NIKKEI Tech Talk #50 信頼されるニュース体験を⽀える技術 〜iOS27 新機能活⽤とAndroid 継続的 改善の取り組み〜 46