Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AlarmKitで明後日起きれるアラームアプリを作る
Search
Trickart
May 15, 2026
Programming
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AlarmKitで明後日起きれるアラームアプリを作る
potatotips #95
https://potatotips.connpass.com/event/389026/
Trickart
May 15, 2026
More Decks by Trickart
See All by Trickart
Xcode MCPでスクリーンショット撮りを90%自動化する
trickart
0
130
External Accessory入門
trickart
0
940
日本語でもいい感じに改行したい!! / Split Japanese sentence for UILabel and SwiftUI Text
trickart
3
4.2k
Other Decks in Programming
See All in Programming
Contextとはなにか
chiroruxx
1
370
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
300
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.7k
Agentic UI
manfredsteyer
PRO
0
190
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
180
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
170
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
A2UI という光を覗いてみる
satohjohn
1
150
Creating Composable Callables in Contemporary C++
rollbear
0
160
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
12
5.5k
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
180
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
130
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
247
13k
Exploring anti-patterns in Rails
aemeredith
3
420
Building AI with AI
inesmontani
PRO
1
1.1k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
200
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Agile that works and the tools we love
rasmusluckow
331
22k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
170
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
300
Ethics towards AI in product and experience design
skipperchong
2
310
Transcript
AlarmKitで 明後日起きれる アラームアプリを作る trickart 1
自己紹介 trickart / POSレジアプリ開発 どうしても明後日起きたくて作った アプリの話です 2
こんな経験ありませんか? 出張・旅行で 明後日の朝早く起きたい しかしiOS標準アラームで設定しようとすると… 基本24時間先までしか設定できない 明後日7:00に起きたいのに7:00と設定すると明日7:00になってしまう 「明日設定しよう」→忘れる 明後日を設定できるアラームアプリが欲しい 3
あさってアラーム DayAfterTomorrow 明後日のアラームが設定できるアプリ 開くと2日後の日付がもう選ばれている iOS 26+ / AlarmKit 製 4
AlarmKitとは? WWDC2025(Session 230)で発表されたフレームワーク(iOS 26+) サードパーティアプリからOS標準アラームと同等のアラームを鳴らせる サイレント・集中モード貫通 Apple Watch鳴動 5
明後日を指定する - .fixed モードによる日時指定 AlarmKitの Alarm.Schedule には3つのスケジュール方式がある .relative(repeats: .never) …
24時間以内・単発 .relative(repeats: .weekly([.monday])) … 毎週月曜 .fixed(Date) … 特定の日の特定時刻 ← あさってアラームはこれ // 明後日の日付 + 7:00 を組み立てる var components = Calendar.current.dateComponents( [.year, .month, .day], from: dayAfterTomorrow ) components.hour = 7 components.minute = 0 // Alarm.Schedule生成 let schedule: Alarm.Schedule = .fixed(Calendar.current.date(from: components)!) 6
Alarm Configurationにscheduleを渡して スケジュールする let configuration = AlarmManager.AlarmConfiguration( countdownDuration: .init(preAlert: nil,
postAlert: 5 * 60), // Snoozeの長さ schedule: schedule, // ← さっきの .fixed attributes: AlarmAttributes(presentation: .init(alert: alertContent), tintColor: .orange), stopIntent: StopAlarmIntent(alarmID: id.uuidString), // LiveActivityIntent secondaryIntent: SnoozeAlarmIntent(alarmID: id.uuidString) // LiveActivityIntent ) try await AlarmManager.shared.schedule(id: id, configuration: configuration) attributes タイトルや色を設定できる 7
これでよいかと思いきや…落とし穴 タイムゾーン問題 .fixed(Date) は UTC絶対時刻 として保存される 東京(UTC+9)で「4/12 7:00」設定 → UTC
4/11 22:00 ニューヨーク(UTC-4)に移動すると… → 現地 4/11 18:00 に鳴る APIの仕様としては自然だが、自分のユースケースとしてはちょっと困る → タイムゾーン変更を検知して 再スケジュール が必要 8
3層補正アーキテクチャ アプリ起動時・アプリが閉じられているとき・アプリ起動中の3つでカバーする 対策 手段 メリット・デメリット 1 起動時に lastKnownTimeZone と比較 権限不要・確実
開かないと直らない 2 BGAppRefreshTask で定期チェック 起動しなくても動く 実行保証なし 3 NSSystemTimeZoneDidChange を購読 即時反映 起動中限定 9
まとめ AlarmKitにはiOS標準のアラーム同等の機能がある サイレント貫通・Live Activity・Dynamic Island 24時間先まで・weeklyで鳴らせる 使いこなせばiOS標準のアラーム"以上"の事ができる 24時間以上先:Alarm.Suchedule.fixed(Date) で明後日でも確実に起きられる 3層TZ補正:起動時
/ BGAppRefresh / システム通知 を重ねる 10
Thank you! ref: AlarmKit – WWDC2025 Session 230 AlarmKit |
Apple Developer Documentation 11