RORK LABEN
MAX — Rork MaxはiPhone・iPad・Apple Watch・Apple TV・Vision Pro向けにネイティブSwiftを生成し、2クリックでApp Store公開でき、Xcodeを必要としませんSTACK — 通常のRorkはReact Native(Expo)でクロスプラットフォームのモバイルアプリを作る位置づけ。用途に応じた使い分けが鍵ですFOCUS — BoltやLovableのようなWeb中心ツールと違い、RorkはiOS/Androidのネイティブアプリ生成に特化していますBUGS — 実利用レビューでは遭遇したバグの約70%を手動介入なしで解決、残り3割はエクスポート済みコードでの手修正が必要と報告されていますFUNDING — Rorkはa16z(Andreessen Horowitz)から$2.8Mを調達しましたPRICING — 無料で開始でき、有料プランは$25/月からです。まず触ってから判断できますMAX — Rork MaxはiPhone・iPad・Apple Watch・Apple TV・Vision Pro向けにネイティブSwiftを生成し、2クリックでApp Store公開でき、Xcodeを必要としませんSTACK — 通常のRorkはReact Native(Expo)でクロスプラットフォームのモバイルアプリを作る位置づけ。用途に応じた使い分けが鍵ですFOCUS — BoltやLovableのようなWeb中心ツールと違い、RorkはiOS/Androidのネイティブアプリ生成に特化していますBUGS — 実利用レビューでは遭遇したバグの約70%を手動介入なしで解決、残り3割はエクスポート済みコードでの手修正が必要と報告されていますFUNDING — Rorkはa16z(Andreessen Horowitz)から$2.8Mを調達しましたPRICING — 無料で開始でき、有料プランは$25/月からです。まず触ってから判断できます
記事一覧/開発ツール
開発ツール/2026-06-16上級

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

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

Rork Max166Core SpotlightSwift25検索導線NSUserActivityディープリンク5

プレミアム記事

壁紙アプリの利用者から、こんな声をもらったことがあります。「お気に入りに入れたあの一枚を、ホーム画面の検索からすぐ出せたら嬉しい」。アプリを開いてタブを切り替えて探すのではなく、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-06-17
Rork Max のネイティブ Swift ウィジェットで日替わり表示が止まる — TimelineProvider の更新予算を設計する
Rork Max が生成するネイティブ Swift のホーム画面ウィジェットは、TimelineProvider の更新予算を理解しないと日替わり表示が翌日以降に止まります。reloadPolicy と App Group、ディープリンクまでを実アプリ設計の観点で整理します。
開発ツール2026-06-16
Rork Max のネイティブアプリで CloudKit 同期を設計する — 競合と削除をどう扱うか
iPhone と iPad で同じデータを同期させたい——Rork Max が生成した Swift アプリに CloudKit を入れる際、本当に難しいのは保存ではなく『競合』と『削除』の扱いでした。実装で固めた設計判断を整理します。
開発ツール2026-06-16
Rork Max のネイティブアプリから HomeKit のアクセサリを操作する — 個人開発で踏んだ権限と状態同期の勘所
Rork Max が生成するネイティブ Swift アプリに HomeKit を組み込み、自宅のアクセサリを一覧・操作する実装を、権限ダイアログの設計から状態同期の落とし穴まで通しで整理しました。React Native では届きにくい領域を、個人開発の実運用目線で押さえます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →