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
kengo saito
September 11, 2026
Programming
240
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
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.7k
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
300
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
130
iOSDCのペンライトを自動制御したい!
akkeylab
0
360
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.3k
APNsからLive Activityを開始する話
yumnumm
0
150
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.5k
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.3k
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
390
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Simple Storage Service(S3) is not simple
iwatsukayura
0
140
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
220
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Raft: Consensus for Rubyists
vanstee
142
7.7k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
Are puppies a ranking factor?
jonoalderson
2
4k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
710
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Building the Perfect Custom Keyboard
takai
2
890
Paper Plane
katiecoart
PRO
4
53k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
860
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Site-Speed That Sticks
csswizardry
13
1.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
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