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

Rork で作ったアプリの「写真に保存」が一部の端末だけ失敗する——expo-media-library の権限スコープと保存設計

Rork で生成したアプリの画像保存機能が、自分の端末では動くのに一部のユーザーだけ失敗する——その正体は expo-media-library の権限スコープです。writeOnly 権限・iOS の限定アクセス・Android 14 の部分許可を踏まえた、保存処理とアルバム設計の実装手順をまとめます。

expo-media-library3権限7React Native218Rork526画像保存

プレミアム記事

自分の iPhone では一度も失敗しないのに、レビューには「保存できません」と書かれる

個人開発で壁紙アプリをいくつか運用していると、ときどき不思議なレビューが届きます。「ボタンを押しても写真アプリに何も入りません」というものです。自分の手元の端末では、開発中も審査前も一度として失敗しません。にもかかわらず、星1つと一緒に「保存できない」という声だけが少しずつ積み上がっていきます。

原因を実機で追っていくと、たいていは画像ダウンロードの失敗でも、ストレージ不足でもありませんでした。expo-media-library権限スコープが、端末の OS バージョンや、ユーザーが過去に一度押した許可ダイアログの選択によって、自分の想定と違う状態になっていたのです。

このすれ違いが厄介なのは、開発者の端末で再現しにくいことです。多くの開発者は最初の起動で「すべての写真へのアクセスを許可」を選んでいて、その後ずっとフルアクセスのまま開発を続けます。一方で実ユーザーの中には「選択した写真のみ」を選んだ人、Android 14 で「一部のみ許可」を選んだ人、そもそも保存だけしたいのに読み取り権限まで要求されて不信感から拒否した人が混ざっています。ここでは、この保存だけのための権限を正しく設計し、端末差を吸収する保存フローを組む手順を共有します。

なぜ端末によって保存の成否が変わるのか

expo-media-library の許可は、単純な「許可/拒否」の二択ではありません。OS ごとに段階があり、しかもその段階は年々細かくなっています。

iOS は写真ライブラリへのアクセスを4つの状態で持っています。フルアクセス、限定アクセス(ユーザーが選んだ写真だけ見える)、拒否、そして「追加のみ(add-only)」です。最後の追加のみは、保存はできるが既存の写真は一切読めない、という保存専用の権限です。これが今回の鍵になります。

Android はさらにバージョンで分岐します。Android 12 以前は WRITE_EXTERNAL_STORAGE、Android 13 は READ_MEDIA_IMAGES、Android 14 では「選択した写真のみ」にあたる部分許可(READ_MEDIA_VISUAL_USER_SELECTED)が加わりました。やっかいなのは、MediaStore 経由で自分のアプリが作った画像を Pictures/ 配下に書き込むだけなら、Android 10 以降は読み取り権限が本来は不要だという点です。にもかかわらず、読み取り権限まで一括で要求する実装になっていると、保存しか使わないユーザーにまで重い許可を求めてしまい、拒否率が上がります。

整理すると、保存の成否を分けているのは次の3つの組み合わせです。

要因開発者の典型つまずくユーザー
iOS のアクセス状態フルアクセス限定アクセス / 追加のみ / 拒否
Android のバージョン最新の検証端末Android 13・14 で挙動が変わる
要求している権限の広さ読み書き一括保存だけしたいのに読み取りまで拒否

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

この記事の続きを読む

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

この記事で得られること
自分の端末では保存できるのにレビューで「保存できない」と言われていた人が、端末ごとの権限スコープの違いを切り分けて原因を特定できる
writeOnly 権限・iOS 限定アクセス・Android 14 部分許可に対応した保存処理とアルバム作成のコードを、そのまま自分のアプリに移植できる
権限拒否やアルバム作成失敗を握りつぶさず、ユーザーが自力で復帰できる導線まで含めた保存フローを設計できる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-04-23
Rork アプリで画像・動画をカメラロールに保存できない問題の完全解決ガイド
Rork で生成したアプリで画像・動画を iOS のカメラロール/Android のギャラリーに保存できない問題を、権限設定・expo-media-library の仕様・SDK 51+の変更点まで掘り下げて解決していきます。
開発ツール2026-08-01
実験の割り当てが同じ端末に偏る — 100万件のIDで確かめたハッシュ選定と salt の位置
端末側で実験の変種を決める割り当てが、実験を2本並べた途端に同じ端末へ集中しました。100万件のIDで4つのハッシュを測り、原因がハッシュの一様性ではなく salt の連結位置にあったこと、そして採用した実装までを実測値とともに残します。
開発ツール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駆動開発
※ アフィリエイトリンクを含みます
もっと見る →