◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SONNET 4.5 — Claude API での提供終了は 11/30、残り27日。API 連携を足したアプリは移行先の確認を●SDK 58 — React Native 0.88 に更新されました。Android のリリース版で R8 が既定オンになり、iOS は SceneDelegate を生成します●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SONNET 4.5 — Claude API での提供終了は 11/30、残り27日。API 連携を足したアプリは移行先の確認を●SDK 58 — React Native 0.88 に更新されました。Android のリリース版で R8 が既定オンになり、iOS は SceneDelegate を生成します●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-06-16上級

Rork Max のネイティブアプリの中身を iPhone の検索に載せる — Core Spotlight で「探されるアプリ」にする実装

Rork Max が生成するネイティブ Swift アプリのコンテンツを Core Spotlight に索引し、iPhone の検索からアプリ内の特定画面へ直接たどり着ける導線を実装します。索引の登録・更新・削除と、検索結果が古くなる本番の落とし穴を個人開発目線で整理しました。

Rork Max235Core SpotlightSwift48検索導線NSUserActivityディープリンク9

✦ プレミアム記事

壁紙アプリの利用者から、こんな声をもらったことがあります。「お気に入りに入れたあの一枚を、ホーム画面の検索からすぐ出せたら嬉しい」。アプリを開いてタブを切り替えて探すのではなく、iPhone 全体の検索(Spotlight)から直接そのコンテンツに飛べたら、確かに気持ちが良いはずです。

これを実現するのが Core Spotlight です。アプリ内のコンテンツを iPhone の検索索引に載せ、検索結果のタップから該当画面へ復帰させられます。React Native のブリッジ越しでは細部に手が届きにくい領域ですが、Rork Max はネイティブ Swift を生成するため、CoreSpotlight を import すれば索引の登録から復帰まで素直に組めます。ここでは「探されるアプリ」にするための実装を、登録・更新・削除と本番の落とし穴を軸に整理します。

なぜ Spotlight に載せる価値があるのか

個人開発のアプリは、一度インストールされても、日々の暮らしの中で存在を忘れられがちです。私自身、AdMob 中心の無料アプリを複数運用してきて、再訪のきっかけをどう作るかが収益を左右すると痛感しています。Spotlight への索引は、ユーザーが何かを検索した瞬間に、自分のアプリのコンテンツがそっと候補に並ぶ導線です。広告でも通知でもなく、ユーザーの能動的な検索に静かに応える形なので、体験を壊しません。

ただし索引は「載せて終わり」ではありません。コンテンツが変われば索引も追従させる必要があり、ここを怠ると検索結果が古いまま残ります。

Step 1: コンテンツを CSSearchableItem として索引する

最初に、アプリ内のコンテンツを CSSearchableItem に変換して索引へ登録します。uniqueIdentifier は後で該当コンテンツを復元するための鍵になるため、アプリ内の安定した ID を使います。

import CoreSpotlight
import MobileCoreServices
 
func index(wallpaper id: String, title: String, thumbnail: Data) {
    let attr = CSSearchableItemAttributeSet(contentType: .image)
    attr.title = title
    attr.contentDescription = "保存済みの壁紙"
    attr.thumbnailData = thumbnail            // 検索結果に出るサムネイル
 
    let item = CSSearchableItem(
        uniqueIdentifier: id,                 // 復元の鍵。安定した ID を使う
        domainIdentifier: "wallpaper",        // まとめて削除する単位
        attributeSet: attr
    )
    CSSearchableIndex.default().indexSearchableItems([item]) { error in
        if let error = error { print("index failed: \(error)") }
    }
}

domainIdentifier を用途ごとに分けておくと、後でカテゴリ単位の一括削除が楽になります。私はこれを最初に決めずに作って、削除時にまとめて消せず苦労しました。最初の設計で区切っておくことを推奨します。

✦

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

この記事の続きを読む

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

この記事で得られること
✦CSSearchableItem でアプリ内コンテンツを索引し、検索結果のタップから該当画面へ復帰する一連のコードを把握できます
✦コンテンツの追加・更新・削除に索引を追従させる設計と、索引が古いまま残る本番症状の切り分けが得られます
✦個人開発で「検索に出す対象」を絞った判断基準と、再索引のコストを抑える実践的な進め方が分かります
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⬡ 開発ツール2026-04-05
Rork Max × WidgetKit・ライブアクティビティ実装ガイド 2026 — Dynamic Island 対応まで
Rork Max で iOS Widget・ロック画面ウィジェット・Dynamic Island 対応のライブアクティビティを実装した記録。Timeline の焼き込み設計、APNs のヘッダーと優先度、push-to-start、stale-date の扱いまで実運用の判断を残します。
⬡ 開発ツール2026-03-14
Rork Maxでのディープリンク・ユニバーサルリンク実装 — 遅延ディープリンク、帰属追跡、グロース戦略
Rork Maxでディープリンク、ユニバーサルリンク、Androidのアプリリンクを実装し、遅延ディープリンクと帰属追跡でグロースにつなげる手法です。流入元がOrganicに潰れる問題への対処、紹介プログラムの構築、テストとQAまでを実装ベースで解説します。
⬡ 開発ツール2026-10-30
開発ビルドでは動くのに、Release の iOS だけ起動直後に落ちる — scheme を外した app.json が原因の場合の確かめ方
expo-router のアプリで app.json に scheme がないと、Release の iOS だけ起動直後に落ちることがあります。Debug と Android が無事な理由、直し方の二択、scheme を外したい場合の考え方、提出前に見つける確認手順を書き残します。