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 で iMessage 拡張を作り、アプリの世界観をメッセージに持ち込む — 配布導線としての実装メモ

Rork Max が生成するネイティブ Swift プロジェクトに iMessage 拡張を追加し、アプリの素材をメッセージ上で共有する実装を整理しました。コンパクト/拡張表示の切り替え、メッセージ送信、ドロワーに出てこないときの切り分けまで、個人開発の配布目線で押さえます。

Rork Max166iMessageMessages拡張Swift25配布導線App Extension2

プレミアム記事

個人開発の壁紙アプリを長く運用していると、ユーザーが一番自然に友人へ「いいよ」と勧めてくれる瞬間は、アプリストアのリンクを送るときではなく、気に入った一枚をそのまま会話に貼るときだと気づきます。だとすれば、その共有の場であるメッセージそのものに、アプリの世界観を持ち込めないか。そう考えて取り組んだのが iMessage 拡張でした。

iMessage 拡張は、Messages フレームワークに依存するネイティブの仕組みです。React Native からは事実上扱えませんが、Rork Max はネイティブ Swift のプロジェクトを生成するため、拡張ターゲットを足して MSMessagesAppViewController を継承する道が開けます。ここでは配布導線という観点から、表示の切り替え・メッセージ送信・つまずきどころを順に整理します。

なぜ「アプリ本体」ではなくメッセージ拡張なのか

アプリの紹介をストアのリンクで送ると、受け手はアプリを離れて App Store を開く必要があります。一方、iMessage 拡張から送った素材は会話の中に残り、受け手はその場で軽く触れられます。私の感覚では、後者の方が「使ってみようかな」という心理的な距離が圧倒的に近いです。AdMob 中心の無料アプリにとって、入口を一つ増やす意味は小さくありません。

ただし拡張は本体アプリとは別のターゲットであり、メモリ制限も厳しめです。素材を丸ごと読み込む発想だと、すぐに限界に当たります。軽さを前提に設計するのが出発点になります。

Step 1: 拡張ターゲットを追加し、本体と素材を共有する

Rork Max が生成したプロジェクトに、iMessage 拡張のターゲットを追加します。本体アプリと素材(画像など)を共有するため、App Group を有効化して共有コンテナ越しに読み出す構成にします。拡張内に画像を二重に抱えると、配布サイズもメモリも無駄に膨らみます。

// 共有コンテナから素材の URL を解決する
func sharedAssetURL(_ name: String) -> URL? {
    let groupID = "group.net.rorklab.sample"
    let base = FileManager.default
        .containerURL(forSecurityApplicationGroupIdentifier: groupID)
    return base?.appendingPathComponent("assets/\(name)")
}

App Group の識別子は本体と拡張で完全に一致させる必要があります。ここがずれていると、拡張側で素材が常に nil になり、原因の特定に時間を取られます。

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

この記事の続きを読む

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

この記事で得られること
MSMessagesAppViewController のコンパクト/拡張表示を切り替える実装を、presentationStyle の遷移コードで具体的に把握できます
壁紙のような素材をメッセージに添えて送る MSMessage の組み立て方と、受け手の会話に残る見え方を設計できるようになります
拡張がメッセージのドロワーに出てこない本番症状を、ターゲット設定とバンドル構成という原因まで切り分けられます
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

アプリ開発2026-06-16
Rork Max のアプリに Apple Wallet のスタンプカードを足す — 署名と更新の実装メモ
店舗のスタンプカードを Apple Wallet に入れたい——Rork Max が生成した Swift アプリから PassKit のパスを発行する際、難所はデザインではなく『署名』と『リモート更新』でした。実装の勘所を整理します。
アプリ開発2026-06-16
初回起動の前に壁紙パックを落としておく — Rork Max と Background Assets の使いどころ
コンテンツの多いアプリは、初回起動時に空のグリッドを見せてしまいがちです。アプリ本体とは別枠でコンテンツを先回りして落とす Background Assets を、Rork(Expo)では届かない領域として Rork Max のネイティブ Swift でどう実装するか、運用判断まで含めてまとめます。
アプリ開発2026-06-16
Rork Max で WeatherKit を使う天気アプリ — 認証とアトリビューションの落とし穴
Rork Max が生成したネイティブ Swift アプリに WeatherKit を組み込む際、最初に詰まるのは認証とアトリビューションでした。トークンの扱い、レート上限、必須の出典表示まで、実装で確認した手順を整理します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →