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-16上級

インストール直後に「目的の画面」へ着地させる — Rork アプリの遅延ディープリンク設計

キャンペーンのリンクから来たユーザーがストア経由でインストールすると、起動時には「どこから来たか」が消えています。外部サービスに頼らず、Rork で作ったアプリに遅延ディープリンクを実装する設計を解説します。

Rork525Deep Link3Expo156Universal Linksオンボーディング10計測2

プレミアム記事

特定のテーマの壁紙を紹介するページから「アプリで開く」を押した人が、インストール後に立ち上げると普通のホーム画面に着地してしまう。せっかくそのテーマを見に来たのに、また一から探させてしまう——個人開発でキャンペーンを打ち始めたとき、私が取りこぼしていたのがこれでした。

原因は単純です。ユーザーがリンクを踏んでも、アプリが未インストールなら一度 App Store / Google Play に飛びます。ストアからインストールして初回起動したアプリには、もう「どのリンクから来たか」という情報が渡っていません。リンクのクエリパラメータは、ストアを経由した瞬間に消えてしまうからです。

この断絶を埋めるのが遅延ディープリンク(Deferred Deep Link)です。Branch や AppsFlyer のような外部 SDK を入れれば一発ですが、SDK は計測のためにかなりの個人データを抱え込みますし、月額もかかります。プライバシー配慮とコストの両面から、私は自前で軽量に実装する方を選びました。ここではその設計を、Rork(Expo / React Native)アプリ向けに残しておきます。

まず「経路は3つある」と整理する

遅延ディープリンクの復元には、信頼度の異なる3つの経路があります。これを混同すると実装が無駄に複雑になります。

  1. すでにインストール済みのユーザー(Universal Links / App Links が直接効く・最も確実)
  2. iOS で同一ブラウザからインストールした場合(クリップボード経由・条件付きで確実)
  3. それ以外(サーバー側のフィンガープリント照合・確率的)

経路1は遅延ではなく通常のディープリンクなので、ここでは扱いません。問題は経路2と3です。インストールという「断絶」をまたいで情報を運ぶには、アプリの外側(サーバーやクリップボード)に一時的に情報を預けておくしかありません。

私の運用では、iOS は経路2を主、経路3を保険にしています。Android は Google Play の Install Referrer API が公式に経路を提供してくれるので、そちらを使います。プラットフォームで手段がまったく違う点は、最初に押さえておくと混乱しません。

ランディングページ側で「指紋」をサーバーに預ける

外部 SDK を使わない場合、リンクを踏んだ瞬間の情報を自分のバックエンドに記録しておきます。記録するのは個人を特定しない、ゆるい特徴量(フィンガープリント)だけです。

// landing.ts — ランディングページで踏まれた瞬間に呼ぶ
async function recordClick(targetPath: string) {
  const fp = {
    target: targetPath,                  // 着地させたい画面(例: /theme/aurora)
    platform: /iphone|ipad/i.test(navigator.userAgent) ? "ios" : "other",
    lang: navigator.language,
    tzOffset: new Date().getTimezoneOffset(),
    screen: `${screen.width}x${screen.height}`,
    ts: Date.now(),
  };
  // iOS はクリップボードにも控える(経路2の主手段)
  try {
    await navigator.clipboard.writeText(`rork-dl:${targetPath}`);
  } catch {
    // クリップボード不可なら経路3のサーバー照合に委ねる
  }
  await fetch("https://api.example.com/dl/click", {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: JSON.stringify(fp),
  });
  // ストアへ送り出す
  location.href = "https://apps.apple.com/app/idXXXXXXXX";
}

クリップボードへの書き込みは、iOS では「同じ Safari セッションから来た初回起動」とほぼ等価に扱える、最も確度の高い手がかりです。ただしユーザーが他の操作でクリップボードを上書きすると消えるので、あくまで主たる手段に留め、サーバー照合を保険として併走させます。

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

この記事の続きを読む

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

この記事で得られること
ストアを経由するとリンク情報が消える理由と、3つの復元経路の使い分け
自前バックエンド + フィンガープリント照合で外部 SDK なしに着地先を復元する実装
誤マッチを防ぐ照合ウィンドウと信頼度スコアのしきい値設計
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-06-13
通知の許可は一度しか聞けない — Rork アプリにソフトアスク(事前確認)を実装して opt-in を底上げする
iOS の通知許可は一度拒否されると二度とダイアログを出せません。Rork(Expo)アプリで、起動直後に system prompt を撃つのではなく自前のソフトアスク画面を一枚挟み、価値が伝わった瞬間に許可を求める実装を expo-notifications で組みます。Android 13 の POST_NOTIFICATIONS、拒否後の設定誘導、opt-in 計測まで通します。
開発ツール2026-08-02
2文字の検索語が静かに0件になる — Expo アプリの日本語検索インデックスを実測で選び直す
SQLite FTS5 の trigram トークナイザは2文字以下の日本語クエリを例外なしで0件にします。2万件のカタログで線形走査・bigram 転置索引・FTS5 を実測し、索引を足すべき閾値と起動コストの実数を出した記録です。
開発ツール2026-07-30
Renovate が触ってよい依存と、触ってはいけない依存 — Expo SDK 57 の123パッケージを機械的に切り分ける
Rork 生成アプリに依存の自動更新を入れると、Expo が版を管理している123パッケージまで巻き込まれます。2026年7月30日時点の実測では、うち6件が npm の最新版へメジャー更新される差でした。除外リストを手で書かず SDK から機械生成する手順をまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →