RORK LABEN
NATIVE — Rork Max では AR / LiDAR スキャン、Metal を使った 3D、Dynamic Island、Siri Intents、HealthKit、NFC、App Clips、Core ML まで届きますIOS27 — iOS 27 Developer Beta 4 で Siri AI の対象が iPhone 15 Pro / 15 Pro Max・16 シリーズ・17 系へ広がり、応答が初期ベータより明確に速くなりましたDESIGN — iOS・iPadOS・macOS 27 向けの Apple 純正デザインキットが Figma と Sketch 向けに公開されました。新 OS の UI を組む段階で参照できますCANARY — Android 17(Cinnamon Bun)は従来の Developer Preview を廃し、継続更新される Canary ビルドへ移行しました。検証のタイミング設計が変わりますSPARK — Android 17 の Gemini Spark は、アプリを直接操作して配車の予約や注文といった複合的な作業を自動化しますSCALE — Rork は a16z から $2.8M を調達し、月間訪問は74万件規模まで伸びていますNATIVE — Rork Max では AR / LiDAR スキャン、Metal を使った 3D、Dynamic Island、Siri Intents、HealthKit、NFC、App Clips、Core ML まで届きますIOS27 — iOS 27 Developer Beta 4 で Siri AI の対象が iPhone 15 Pro / 15 Pro Max・16 シリーズ・17 系へ広がり、応答が初期ベータより明確に速くなりましたDESIGN — iOS・iPadOS・macOS 27 向けの Apple 純正デザインキットが Figma と Sketch 向けに公開されました。新 OS の UI を組む段階で参照できますCANARY — Android 17(Cinnamon Bun)は従来の Developer Preview を廃し、継続更新される Canary ビルドへ移行しました。検証のタイミング設計が変わりますSPARK — Android 17 の Gemini Spark は、アプリを直接操作して配車の予約や注文といった複合的な作業を自動化しますSCALE — Rork は a16z から $2.8M を調達し、月間訪問は74万件規模まで伸びています
記事一覧/開発ツール
開発ツール/2026-06-15上級

Rork Max が生成した Swift アプリで Dynamic Island に進行状況を映す

Rork Max が出力した Swift アプリに ActivityKit の Live Activity を足し、Dynamic Island へ進行状況を表示するまでの実装手順と、本番で踏んだ更新まわりの落とし穴を整理しました。

Rork Max231Dynamic Island3ActivityKit4Live Activities5SwiftUI64

プレミアム記事

タイマー系の小さなアプリを App Store に出していたとき、レビュー欄に「アプリを閉じると残り時間が分からなくなる」という声が続けて届きました。ホーム画面に戻っても、ロック画面でも、残り時間を見たい。その願いに応えられる場所が Dynamic Island です。

Rork Max は Swift のネイティブコードを生成してくれますが、Live Activity のように「アプリの外側に状態を出す」仕組みは、生成された雛形をそのまま動かすだけでは足りません。Extension のターゲット追加、表示状態の作り分け、更新の予算管理といった泥臭い部分は、結局こちらで手を入れることになります。ここでは、私自身が個人開発のアプリへ組み込んだときの順番でまとめます。

Dynamic Island は Live Activity の「もう一つの出力先」

最初に誤解を解いておきます。Dynamic Island は単独の API ではありません。ActivityKit の Live Activity を定義すると、その同じ状態が「ロック画面のバナー」と「Dynamic Island」の両方に流れていきます。つまり一つの状態モデルを書けば、表示先が二つ付いてくるという構造です。

ここを理解しておくと、後の作り分けが「同じデータを違う見た目で描くだけ」という話に収まります。逆に言えば、状態モデルの設計を先に固めないと、二つの表示先で破綻します。

状態モデルを定義する

Live Activity の中心は ActivityAttributes です。変化しない属性(タイトルなど)と、刻々と変わる ContentState(残り時間など)を分けて定義します。

import ActivityKit
import SwiftUI
 
struct TimerAttributes: ActivityAttributes {
    public struct ContentState: Codable, Hashable {
        var endDate: Date
        var isPaused: Bool
    }
 
    var taskName: String
}

ContentState には「更新で書き換わる値」だけを入れます。taskName のように起動後に変わらないものは外側へ置きます。この線引きを最初に決めておくと、更新コードが薄く保てます。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
ActivityAttributes と ContentState を定義し、最小構成の Live Activity を3ステップで起動する手順
compact / minimal / expanded の3表示を作り分ける DynamicIsland ビルダーの実コード
8時間上限・更新予算・push 更新の APNs ヘッダなど、本番で詰まりやすい7つの注意点
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

開発ツール2026-06-26
Rorkで作ったアプリの進行状況を、ロック画面とダイナミックアイランドに出す
Rork Maxが生成したSwiftアプリにLive ActivitiesとActivityKitを組み込み、瞑想タイマーや配送状況をロック画面・ダイナミックアイランドに表示するまでを、動くコードと申請時のハマりどころつきで整理します。
開発ツール2026-07-04
Rork Max のアプリでアプリを起動せずに Live Activity を出す — push-to-start トークンが無言で取れない時の設計
Rork Max が生成したネイティブ Swift アプリで、アプリを一度も開かずにサーバから Live Activity を開始したい。ところが push-to-start トークンが観測できず無言で失敗する——その原因と、トークンを確実に取り切る観測レイヤーの実装をまとめます。
開発ツール2026-06-14
Live Activities をリモートから更新する設計 — Rork 製アプリにロック画面の生きた情報を載せるまで
ロック画面と Dynamic Island に「いま動いている情報」を出す Live Activities を、APNs プッシュでリモート更新する設計をまとめました。push-to-start トークンの取得、content-state ペイロード、stale-date と更新予算の扱い、Expo からのネイティブ橋渡しまで、本番で詰まった点を実コードつきで共有します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →