RORK LABEN
PRICE — Rork Max の価格帯は月200ドルから1,800ドルまで幅があります。作業量の多い開発者やチーム向けの帯が上に伸びている形ですFREE — 無料枠は週5プロンプト程度です。試すには足りますが、継続的に作るなら有料前提の設計になっていますSHIP — App Store への公開はビルド・証明書・申請まで自動化されており、Mac も Xcode も持たずに iOS アプリを出せますSIM — ブラウザ配信のシミュレータで、実際の Apple 環境で動く画面を手元のブラウザから確認できますNATIVE — HealthKit、ARKit と LiDAR、NFC、Dynamic Island、Metal による3D まで届きます。React Native では触れない領域ですFUNDING — 2026年4月9日発表のシードで Left Lane Capital 主導の1,500万ドルを調達し、アプリビルダーの Paperline を買収していますPRICE — Rork Max の価格帯は月200ドルから1,800ドルまで幅があります。作業量の多い開発者やチーム向けの帯が上に伸びている形ですFREE — 無料枠は週5プロンプト程度です。試すには足りますが、継続的に作るなら有料前提の設計になっていますSHIP — App Store への公開はビルド・証明書・申請まで自動化されており、Mac も Xcode も持たずに iOS アプリを出せますSIM — ブラウザ配信のシミュレータで、実際の Apple 環境で動く画面を手元のブラウザから確認できますNATIVE — HealthKit、ARKit と LiDAR、NFC、Dynamic Island、Metal による3D まで届きます。React Native では触れない領域ですFUNDING — 2026年4月9日発表のシードで Left Lane Capital 主導の1,500万ドルを調達し、アプリビルダーの Paperline を買収しています
記事一覧/開発ツール
開発ツール/2026-07-24上級

アプリの設定値を三層で解決する — 既定・ユーザー・リモートを境界付きにマージするレイヤー設計

既定値・ユーザー設定・リモート設定をひとつの型安全なレイヤーでマージする設計です。壊れたリモート値でもアプリが崩れないよう、キーごとに上書きの強さを変え、境界クランプと検証を通す実装を、実際の事故から起こしたコードで解説します。

Rork532React Native224設定管理Remote Config7アーキテクチャ21

プレミアム記事

深夜、手元の iPhone で自分の壁紙アプリを開いたら、画像を1枚めくるたびに全画面広告が挟まってきました。数十秒のあいだに二度、三度。胸の奥がひやりとしました。

原因はコードではありませんでした。リモート設定に置いていたインタースティシャル広告のクールダウン秒数が、何かの手違いで極端に小さい値になり、それがそのままアプリに配信されていたのです。しかも同じ設定を共有していた個人開発の壁紙アプリ6本すべてに、同時に。

このとき私自身が痛感したのは、「リモート設定はリモートで直せるから安全」という思い込みの危うさでした。リモートは確かに素早く直せます。けれど、壊れた値がユーザーの端末に届くまでの数十分、アプリは無防備なまま走り続けます。守るべき場所は配信元ではなく、値を受け取る側の端末でした。

取り上げたいのは、既定値・ユーザー設定・リモート設定という三つの源を、ひとつの型安全なレイヤーでマージし、壊れた値が入ってもアプリが崩れないようにする設計です。AdMob のインタースティシャル頻度をリモートで調整していた壁紙アプリ6本に、あの夜のあと実際に入れて運用しているコードをもとにしています。App Store 側の何を変えるでもなく、値を受け取る端末側だけで守れるのが、この設計の勘所でした。

設定の源は三つある、という前提から始める

多くのアプリで、設定値は無自覚に三層になっています。順に整理します。

一つ目はコードに埋め込んだ既定値です。ビルドに焼き込まれ、オフラインでも必ず存在します。型と初期値の source of truth はここに置きます。

二つ目はユーザー設定です。端末ローカル(AsyncStorage や MMKV)に保存され、ユーザーが明示的に選んだ好みを表します。プリフェッチ枚数やテーマなどが該当します。

三つ目はリモート設定です。Firebase Remote Config などから届く外部入力で、運営側が全ユーザーに素早く効かせたい値を入れます。広告頻度やレビュー訴求のタイミングが典型です。

問題は、この三層を「後から来たものが勝つ」という単純な上書きでマージしてしまうことです。あの夜の事故は、まさにリモートが何でも上書きできる設計だったから起きました。三層あること自体は避けられません。避けるべきは、層の強さを一律にすることです。

キーごとに「上書きの強さ」を変える

設計の核心は、値ごとに誰がどこまで上書きしてよいかを宣言することです。私は三種類のポリシーに落ち着きました。

locked — 誰も上書きできない安全弁

オンボーディングのバージョン切り替えのように、間違って動くと体験が壊れるフラグは locked にします。リモートもユーザーも触れず、常に既定値のまま。安全弁として、あえて動かせなくする判断です。

user — ユーザー設定だけが勝つ

プリフェッチ枚数のような純粋な好みは user ポリシーにします。リモートは介入せず、ユーザーが選んだ値だけが既定を上書きします。運営が勝手に変えてよい値ではないからです。

remote — 範囲を決めて、その中でだけ上書きを許す

広告クールダウンのように運営が調整したい値は remote にします。ただし丸ごと信じません。キーごとに min/max を定め、届いた値を必ずその範囲へクランプします。あの夜の3秒は、下限60秒に引き上げられて届くわけです。

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

この記事の続きを読む

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

この記事で得られること
既定・ユーザー・リモートの三層を、キーごとに上書きの強さ(locked/user/remote)を変えて解決する型安全なマージ層の実装
壊れたリモート値を全体に波及させず、その1キーだけ既定へ落とす per-key フォールバックと min/max クランプの書き方
個人開発6本の壁紙アプリで実際に起きた設定事故と、そこから決めた運用上の判断(境界の決め方・記録の残し方)
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-08-01
実験の割り当てが同じ端末に偏る — 100万件のIDで確かめたハッシュ選定と salt の位置
端末側で実験の変種を決める割り当てが、実験を2本並べた途端に同じ端末へ集中しました。100万件のIDで4つのハッシュを測り、原因がハッシュの一様性ではなく salt の連結位置にあったこと、そして採用した実装までを実測値とともに残します。
開発ツール2026-07-24
同じ通信が同時に何本も飛ぶのを1本に束ねる — 参照カウント付きシングルフライト層の設計
起動直後に同じ API へ何本ものリクエストが同時に飛ぶ多重フェッチを、進行中の Promise を共有して1本に束ねる設計です。束ねる範囲を決めるキーの組み立て方、失敗した Promise を配り続けてしまう罠、呼び出し側の中断が全体を巻き込む罠、そして束ね率を数えて回帰を止めるテストまで、参照カウント付きシングルフライト層の実装を実測の通信ログとともに残します。
開発ツール2026-07-14
AI再生成に壊されない設計 — Rork の生成コードと手書きロジックを分ける境界の引き方
Rork へ追加指示を出すたびに手書きのロジックが消える。プロンプトで守るのは対症療法です。生成コードと自分の所有コードを層で分け、再生成が届かない境界を設計で引く方法を、Zustand と service 層の実装例つきでお伝えします。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →