RORK LABEN
FUNDING — RorkがLeft Lane Capital主導で$15Mのシードを調達。Peak XV・True Ventures・Goodwater・a16z Speedrunが参加しましたENGINE — Rork MaxはClaude CodeとClaude Opus 4.6で駆動。X で800万超のビューを集め、2週間で年間売上を倍増させましたSWIFT — Rork MaxはWebで初めてSwiftアプリを生成できるビルダーで、Apple伝統のXcodeを置き換える位置づけですPRODUCT — Rork MaxはiPhone・iPad・Apple Watch・Apple TV・Vision Pro・iMessageまでApple全域に対応しますCLASSIC — 通常のRorkはReact Native(Expo)で、英語の説明だけからiOS/Androidアプリを生成しストア配信できますPRICING — 無料で始められ、有料は月25ドル〜。Rork Maxは月200ドルですFUNDING — RorkがLeft Lane Capital主導で$15Mのシードを調達。Peak XV・True Ventures・Goodwater・a16z Speedrunが参加しましたENGINE — Rork MaxはClaude CodeとClaude Opus 4.6で駆動。X で800万超のビューを集め、2週間で年間売上を倍増させましたSWIFT — Rork MaxはWebで初めてSwiftアプリを生成できるビルダーで、Apple伝統のXcodeを置き換える位置づけですPRODUCT — Rork MaxはiPhone・iPad・Apple Watch・Apple TV・Vision Pro・iMessageまでApple全域に対応しますCLASSIC — 通常のRorkはReact Native(Expo)で、英語の説明だけからiOS/Androidアプリを生成しストア配信できますPRICING — 無料で始められ、有料は月25ドル〜。Rork Maxは月200ドルです
記事一覧/開発ツール
開発ツール/2026-06-24上級

発熱と省電力モードに合わせて、重い処理を静かに落とす設計

ProcessInfo の thermalState と省電力モードを監視し、発熱時やバッテリー残量が少ないときに重い処理を段階的に落とす実装を、Swift のコードとともに整理します。

Rork Max184SwiftUI53パフォーマンス24バッテリーオンデバイスAI9

プレミアム記事

個人開発で長く続けているアプリにオンデバイスのAI機能を足したとき、リリースから数日して「使っていると本体が熱くなる」「電池の減りが早い」というレビューが届きました。手元の検証機では一度も再現せず、しばらく原因が掴めませんでした。後から分かったのは、私の検証がいつも涼しい部屋・十分な充電という、いちばん条件の良い状態だったことです。

実際のユーザーは、夏の屋外や、バッテリー残量が一桁の通勤電車の中でアプリを開きます。そこでは iOS 自身が CPU/GPU の上限を絞り始めていて、私のアプリは「重い処理を全力で回そうとし続ける」ことで、発熱と電池の減りをさらに悪化させていました。アプリ側が端末の状態を読んで、自分から負荷を引いていく必要があったのです。

ここから、ProcessInfo が公開している二つの状態 — 発熱段階(thermalState)と省電力モード(isLowPowerModeEnabled)— を監視し、重い処理を段階的に落とす設計を、Rork Max が生成するネイティブ Swift にそのまま組み込める形で追っていきます。

発熱と省電力は別の信号として扱う

最初に押さえておきたいのは、この二つは原因も対処も違うということです。混ぜて一つのフラグにすると、判断を誤ります。

発熱(thermalState)は、端末が物理的に熱を持ち、OS が性能を絞り始めている状態を表します。.nominal(通常)→ .fair(やや上昇)→ .serious(深刻)→ .critical(危機的)の4段階で、.serious 以降は OS が積極的にスロットリングをかけます。ここでアプリが重い処理を続けると、体感が一気に悪化します。

省電力モード(Low Power Mode)は、ユーザーが、あるいは残量低下によって自動で、バッテリーを節約する設定を選んだ状態です。発熱とは無関係に発生します。ここでは「バックグラウンド更新を控える」「通信頻度を落とす」といった、電力を直接削る対処が効きます。

つまり、発熱には「いま回っている処理を軽くする」、省電力には「これからやる処理を減らす」と、別の引き出しで応える設計が向いています。

thermalState を監視して段階を定義する

ProcessInfo は現在の発熱段階を同期的に読めるほか、変化したときに通知を流してくれます。まずはこの通知を一箇所で受け、アプリ全体で参照できる状態に変換します。

import Foundation
import Combine
 
@MainActor
final class DeviceConditionMonitor: ObservableObject {
    @Published private(set) var thermalState: ProcessInfo.ThermalState
    @Published private(set) var isLowPower: Bool
 
    init() {
        let info = ProcessInfo.processInfo
        thermalState = info.thermalState
        isLowPower = info.isLowPowerModeEnabled
 
        NotificationCenter.default.addObserver(
            self, selector: #selector(thermalChanged),
            name: ProcessInfo.thermalStateDidChangeNotification, object: nil)
 
        NotificationCenter.default.addObserver(
            self, selector: #selector(powerChanged),
            name: .NSProcessInfoPowerStateDidChange, object: nil)
    }
 
    @objc private func thermalChanged() {
        let next = ProcessInfo.processInfo.thermalState
        Task { @MainActor in self.thermalState = next }
    }
 
    @objc private func powerChanged() {
        let next = ProcessInfo.processInfo.isLowPowerModeEnabled
        Task { @MainActor in self.isLowPower = next }
    }
}

通知は任意のスレッドから飛んでくるため、@MainActor で受け直して UI 側の状態更新と整合させています。Rork Max が生成したコードがこの通知購読を持っていない場合は、まずこの監視クラスを一つ置くところから始めると、後の判断がすべてここに集約できます。

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

この記事の続きを読む

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

この記事で得られること
ProcessInfo の thermalState と isLowPowerModeEnabled を監視し、発熱・省電力時に負荷の高い処理を段階的に落とす仕組みを組めます
アニメーション・バックグラウンド更新・オンデバイス推論を「品質レベル」で切り替える設計に落とし込み、機能を止めずに体験だけ軽くできます
ユーザーに不便を感じさせずにバッテリーと発熱を守る、長期運用に耐えるアプリの組み方が分かります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-05-10
Rork Max + Swift Charts でアプリにグラフを実装する手順と、データ点が増えると重くなる原因
Rork Max が生成する SwiftUI コードに Swift Charts を組み込む流れと、1,000 点を超えたあたりからカクつき始める原因、そして実機で滑らかに描画させるための間引きとアニメーション制御の実装パターンを共有します。
開発ツール2026-06-24
電話・イヤホン抜き・他アプリ再生に強い、音声アプリの中断ハンドリング
AVAudioSession の中断通知とルート変更通知を正しく扱い、電話やイヤホン抜き差しで再生が破綻しない音声アプリを、Swift の実装コードとともに整理します。
開発ツール2026-06-19
Rork Max のアプリ容量を削る — App Thinning と On-Demand Resources の使いどころ
Rork Max が生成した SwiftUI アプリは画像やフォントを素直に同梱するため、放っておくと容量が膨らみます。App Thinning と On-Demand Resources を使って初回ダウンロードを軽くする実装手順と、容量予算の決め方を実機の数字とともに整理しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →