RORK LABEN
DEADLINE — 8月31日から、Google Play の新規アプリと更新はすべて Android 16(API レベル36)を対象にする必要があります。残り6日ですIOS27 — iOS 27 と macOS 27 の7回目の開発者ベータが8月24日に配布されました。正式リリースは来月です。Apple Intelligence 側の変更を含むため、手元のビルドの確認を始める時期ですANDROID17 — Android 17 QPR1 のベータでは、Circle to Search を使った後に画面下のジェスチャーバーでアプリを切り替えられなくなる不具合が修正されましたFUNDING — Rork は2026年4月9日、Left Lane Capital 主導で1,500万ドルのシードラウンドを発表しました。あわせてアプリビルダーの Paperline を買収し、今後も人材獲得を目的とした買収を続ける方針を示していますTRAFFIC — Rork のプラットフォームは月間74万3,000訪問を集め、成長率は85%と報告されています。AI アプリビルダーの中でも、ネイティブモバイルに絞った位置取りが効いている形ですFORECAST — Gartner は2026年に新規アプリケーションの75%がローコードまたはノーコードで作られると見ています。2020年時点では25%未満でしたDEADLINE — 8月31日から、Google Play の新規アプリと更新はすべて Android 16(API レベル36)を対象にする必要があります。残り6日ですIOS27 — iOS 27 と macOS 27 の7回目の開発者ベータが8月24日に配布されました。正式リリースは来月です。Apple Intelligence 側の変更を含むため、手元のビルドの確認を始める時期ですANDROID17 — Android 17 QPR1 のベータでは、Circle to Search を使った後に画面下のジェスチャーバーでアプリを切り替えられなくなる不具合が修正されましたFUNDING — Rork は2026年4月9日、Left Lane Capital 主導で1,500万ドルのシードラウンドを発表しました。あわせてアプリビルダーの Paperline を買収し、今後も人材獲得を目的とした買収を続ける方針を示していますTRAFFIC — Rork のプラットフォームは月間74万3,000訪問を集め、成長率は85%と報告されています。AI アプリビルダーの中でも、ネイティブモバイルに絞った位置取りが効いている形ですFORECAST — Gartner は2026年に新規アプリケーションの75%がローコードまたはノーコードで作られると見ています。2020年時点では25%未満でした
記事一覧/開発ツール
開発ツール/2026-07-11上級

端末の時計は動かせる — 日替わり機能とトライアル判定を時刻操作から守る設計

端末の時計を進めるだけで日替わり特典を先取りできてしまう——壁紙アプリのログで見つけた実例を起点に、壁時計・単調時計・サーバー時刻の3層で時刻源を使い分け、時計の巻き戻しにも耐える日替わりロジックとトライアル判定の設計をまとめました。

Rork544アプリ開発76設計10時刻同期サブスクリプション63

プレミアム記事

日替わりで壁紙を1枚配信する機能のログを眺めていて、妙な行があることに気づきました。同じ端末が、1日のうちに「今日の壁紙」を3回受け取っています。

原因は単純でした。端末の設定で日付を1日進めると、アプリは素直に「日付が変わった」と判断して翌日分を配ってしまう。戻してまた進めれば、何枚でも先取りできます。

悪意と呼ぶほどのものではないのだと思います。ただ、この挙動を放置したまま「7日連続ログインで特典」や「無料トライアル期限」を同じ時計の上に載せると、影響はチケットの先取りでは済まなくなります。個人開発で複数のアプリを運用してきた経験から、端末時刻を信用しない設計を最初から入れておくことの価値を、私は強く感じております。

Rork で生成したアプリも例外ではありません。生成されたコードの日付処理は Date.now()new Date() を素直に使っており、端末の設定変更にそのまま追従します。今回は、この前提を踏まえた時刻まわりの設計をまとめていきます。

端末時刻がずれる4つの経路と、そのとき壊れるもの

まず、端末の壁時計(wall clock)が「正しい現在時刻」から離れる経路を整理しておきます。

経路ずれ幅の目安壊れやすい機能
ユーザーの手動変更数分〜数年(意図的)日替わり特典、連続ログイン、期限つきクーポン
タイムゾーン移動・DST±1〜14時間「今日」の境界判定、通知のスケジュール
NTP 同期の失敗・遅延数秒〜数分署名検証のタイムスタンプ照合、ログの並び順
電池切れ・初期化直後数日〜数年(過去方向)証明書検証、キャッシュの有効期限判定

運用中のアプリで計測してみると、サーバー時刻との乖離が5分を超える端末は全体の1%弱で常に存在していました。24時間以上ずれた端末も、月に数十台の規模で観測されます。ゼロにはなりません。ずれた端末は常にいる、という前提で設計する必要があります。

意図的な変更に限っていえば、動機の大半は「待ち時間のスキップ」です。日替わり配布、リワード広告のクールダウン、体力回復。時間で価値を区切る機能を持つアプリほど、時計は動かされます。

時刻の3層モデル — 壁時計・単調時計・サーバー時刻

対策の骨格は、用途ごとに時刻源を使い分けることです。私は次の3層で考えるようにしております。

時刻源取得方法性質向く用途
壁時計Date.now()ユーザーが自由に動かせる。表示用としては正しい画面への時刻表示、ローカル通知の発火時刻
単調時計performance.now()(プロセス内)起動からの経過時間。巻き戻らないが、再起動でリセット処理時間の計測、セッション内のクールダウン
サーバー時刻API 応答の Date ヘッダ等改ざん不可。ただしオフライン時は取れない日替わり判定、期限判定、特典付与

ポイントは「壁時計が悪者なのではない」ということです。ユーザーへの表示や、端末の生活時間に合わせるローカル通知には、壁時計こそが正解です。壊れるのは、価値の付与や期限の判定を壁時計に任せたときだけです。

単調時計は中間の存在です。React Native の performance.now() はプロセス内では巻き戻りませんが、アプリを完全終了すればリセットされます。「セッション内で60秒に1回まで」のような短いクールダウンには十分で、日をまたぐ判定には使えません。

つまり、日替わりや期限のような「日をまたぐ価値の判定」は、サーバー時刻に寄せるしかない。次はその実装です。

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

この記事の続きを読む

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

この記事で得られること
壁時計・単調時計・サーバー時刻の3層モデルと、機能ごとにどの時刻源を選ぶかをまとめた判断表
Cloudflare Worker の Date ヘッダを利用したサーバー時刻オフセット管理と、Expo でそのまま動く時刻プロバイダの実装
時計を巻き戻した端末でも壊れない日替わり判定の書き方と、ローカル実装の無料トライアルを避けるべき理由
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-04-21
Rork で作ったアプリに『ちゃんとした設定画面』を実装する — 通知・購読管理・法定表示の実装ガイド
Rorkで作ったアプリの設定画面を実用レベルに仕上げます。法定・利便性・コンバージョンという3分類での項目整理、通知トグルとOS許可状態の同期、解約導線を隠さない購読管理、Appleが必須とするアカウント削除まで、実コードとともに解説します。
開発ツール2026-07-14
AI再生成に壊されない設計 — Rork の生成コードと手書きロジックを分ける境界の引き方
Rork へ追加指示を出すたびに手書きのロジックが消える。プロンプトで守るのは対症療法です。生成コードと自分の所有コードを層で分け、再生成が届かない境界を設計で引く方法を、Zustand と service 層の実装例つきでお伝えします。
開発ツール2026-07-07
どの生成でこの不具合が入ったのか — Rork アプリに生成来歴を刻む長期運用設計
AI ビルダーで同じ画面を何度も作り直していると、ある日現れた不具合がどの生成で入ったのか追えなくなります。ビルドスタンプ・生成台帳・テレメトリ埋め込みの3層で生成来歴を残し、リグレッションを世代単位で絞り込む設計をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →