RORK LABEN
BUILD — Rork Max はクラウド上の実機 Mac に Xcode と iOS SDK を載せ、SwiftUI を書き、ビルドし、エラーを読んで直す反復を回します。コードを吐いて終わりではない点が生成物の質に効いていますNATIVE — 生成されるのは React Native ではなく純粋な Swift / SwiftUI です。AR や Metal、ウィジェットなど React Native からは届かない機能に手が届くことが、他ビルダーとの実質的な差になりますPLATFORMS — 対応は iPhone・iPad・Apple Watch・Apple TV・Vision Pro に加えて iMessage まで含みます。ウォッチや拡張から入る設計を試すのに向いていますCOMPANION — Rork Companion により、有料の Apple Developer アカウントなしで生成したアプリを実機の iPhone で確認できます。最初の一本を試す段階の障壁が一段下がりましたPRICING — 無料で開始でき有料プランは月額25ドルから、Rork Max は月額200ドルの Max プランです。回収できる本数と規模を先に見積もっておく価値がありますDEADLINE — Google Play は2026年8月31日以降、新規アプリと更新の双方に対象 API レベル36 以上を要求します。残り10日で、生成物の targetSdkVersion は自分で確認が必要ですBUILD — Rork Max はクラウド上の実機 Mac に Xcode と iOS SDK を載せ、SwiftUI を書き、ビルドし、エラーを読んで直す反復を回します。コードを吐いて終わりではない点が生成物の質に効いていますNATIVE — 生成されるのは React Native ではなく純粋な Swift / SwiftUI です。AR や Metal、ウィジェットなど React Native からは届かない機能に手が届くことが、他ビルダーとの実質的な差になりますPLATFORMS — 対応は iPhone・iPad・Apple Watch・Apple TV・Vision Pro に加えて iMessage まで含みます。ウォッチや拡張から入る設計を試すのに向いていますCOMPANION — Rork Companion により、有料の Apple Developer アカウントなしで生成したアプリを実機の iPhone で確認できます。最初の一本を試す段階の障壁が一段下がりましたPRICING — 無料で開始でき有料プランは月額25ドルから、Rork Max は月額200ドルの Max プランです。回収できる本数と規模を先に見積もっておく価値がありますDEADLINE — Google Play は2026年8月31日以降、新規アプリと更新の双方に対象 API レベル36 以上を要求します。残り10日で、生成物の targetSdkVersion は自分で確認が必要です
記事一覧/アプリ開発
アプリ開発/2026-06-30中級

Rork アプリでファイルを「その場で見せる」— Quick Look をアプリから安全に呼ぶ設計

PDF や画像、Office 文書をアプリの外に出さずにその場で見せる、Quick Look(QLPreviewController)をRork(Expo)から呼ぶ設計です。リモートファイルの事前ダウンロード、ローカル URL の条件、Android の FileProvider 代替、共有ボタンの扱いまで実装手順でまとめます。

Rork539Expo175Quick Lookファイルプレビュー個人開発198

プレミアム記事

利用者がアプリ内で受け取った請求書 PDF をタップしたとき、Safari に飛んで戻ってこられなくなる――個人開発でアプリを作っていて、この「外に出ていったきり」の体験をどうにかしたいと感じたことがあります。閲覧のためだけにアプリを離れさせると、せっかくの利用文脈が途切れてしまいます。

iOS には、まさにこの用途のために Quick Look(QLPreviewController)という仕組みが用意されています。PDF、画像、テキスト、CSV、Word や Excel などの Office 文書を、アプリの中で全画面プレビューとして開けます。標準の Rork アプリは React Native(Expo)で生成されるので、この native の Quick Look を薄い橋渡しモジュール経由で呼ぶ形になります。設計の勘所は、何を渡せて何を渡せないかを正確に押さえることでした。

実装の全体像を手順で押さえる

細かいコードに入る前に、本番で動かすまでの流れを手順として並べておきます。

  1. 表示したいファイルがリモートにあるなら、まず expo-file-system でキャッシュへダウンロードする
  2. 保存先のローカル URL(file://)と正しい拡張子を確保する
  3. iOS なら QLPreviewController、Android なら FileProvider+ACTION_VIEW へ、同じ呼び出し口から渡す
  4. 共有・印刷ボタンを出すかを、ファイルの性質に応じて決める
  5. 閉じたあとのキャッシュを掃除する

この五手のうち、初学者がつまずくのは 1 と 2 です。私自身、最初はここを飛ばしてリモート URL を直接渡し、無言の空白に悩みました。順序を守れば残りは素直に組めます。

Quick Look が開けるもの・開けないもの

まず前提を整理します。Quick Look はローカルファイルのプレビュー機構です。ここを取り違えると最初の実装でつまずきます。

  • 開けるのはローカルのファイル URLです(file:// で始まるパス)
  • https:// のリモート URL を直接渡しても開けません。先にダウンロードしてローカルに置く必要があります
  • 対応形式は PDF・画像(JPEG/PNG/HEIC)・テキスト・CSV・RTF・iWork・Microsoft Office 文書・USDZ(3D)など幅広いです
  • 拡張子が正しいことが型判定の手がかりになります。document.tmp のような拡張子なしでは、中身が PDF でも開けないことがあります

私が最初にハマった落とし穴は、サーバーから取得した署名付き URL をそのまま渡してしまった点でした。Quick Look は黙って空白を表示するだけで、エラーも出ません。リモートのものは必ずキャッシュに落としてから開く、という前提を最初に固めるのが、この落とし穴を回避する近道です。

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

この記事の続きを読む

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

この記事で得られること
PDF・画像・Office 文書を外部アプリに渡さず、アプリ内でそのまま閲覧させる導線を実装できるようになります
リモート URL を直接渡すと失敗する理由と、expo-file-system でキャッシュへ落としてからローカル URL で開く正しい手順が動くコードで分かります
iOS の Quick Look と Android の FileProvider+ACTION_VIEW を一つの呼び出し口に畳む設計と、共有ボタンを抑える判断軸が身につきます
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

アプリ開発2026-08-16
グラフが壊れて見えるのは、データが多いときではなく最初の数日でした
記録アプリの折れ線グラフが、データの少ない最初の数日だけ線が消える。原因はY軸の幅が0になり座標がNaNになることでした。実測した挙動と、描画前に置く小さな正規化層を紹介します。
アプリ開発2026-06-27
「本当に削除しますか?」を出す前に — 取り消せる削除という選択肢
リストの項目を消すたびに確認ダイアログを出すと、ユーザーは反射的にOKを押すようになります。Rork(Expo)アプリで「取り消せる削除」を実装し、確認を出すべき場面と出さない場面を切り分ける設計ノートです。
アプリ開発2026-08-18
Rork のプロジェクトで targetSdkVersion 36 を通すまでに直した3か所
app.json に targetSdkVersion 36 と書いてあるのに、ビルドが読んでいた値は 35 でした。実効値を報告するスクリプトと、引き上げ・更新停止・延長申請の三択の分け方を残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →