RORK LABEN
MAX — Rork Maxが全Appleプラットフォーム向けのネイティブSwiftを生成。iPhoneからVision Proまで対応しますNATIVE — AR/LiDAR・Metalの3D・Dynamic Island・Live Activities・HealthKitなどネイティブ機能に踏み込めますPUBLISH — 2クリックでApp Storeへ公開できます。Rork Maxは月$200ですEXPO — 通常のRorkはReact Native(Expo)でiOS/Androidを同時生成し、無料から始められますPROMPT — プレーンな英語でアプリの構想を書くと、ストアへ配布できる動くコードが生成されますPRICE — 無印Rorkの有料プランは月$25から。まず無印で作り、ネイティブ機能が要る段でMaxを検討できますMAX — Rork Maxが全Appleプラットフォーム向けのネイティブSwiftを生成。iPhoneからVision Proまで対応しますNATIVE — AR/LiDAR・Metalの3D・Dynamic Island・Live Activities・HealthKitなどネイティブ機能に踏み込めますPUBLISH — 2クリックでApp Storeへ公開できます。Rork Maxは月$200ですEXPO — 通常のRorkはReact Native(Expo)でiOS/Androidを同時生成し、無料から始められますPROMPT — プレーンな英語でアプリの構想を書くと、ストアへ配布できる動くコードが生成されますPRICE — 無印Rorkの有料プランは月$25から。まず無印で作り、ネイティブ機能が要る段でMaxを検討できます
記事一覧/開発ツール
開発ツール/2026-06-21上級

Rorkアプリの写真が、アップロードした先でだけ横向きになる——EXIF Orientation の正規化と位置情報メタデータの削除

端末では正しく見える写真が、サーバーや他端末でだけ90度回転する原因はEXIF Orientationです。expo-image-manipulatorで回転を焼き込み、位置情報メタデータを削除してからアップロードする実装を解説します。

Rork433Expo90画像アップロード2EXIFプライバシー6

プレミアム記事

ユーザーが投稿した写真が、自分の端末では正しい向きで表示されているのに、アップロードした先——サーバーに保存した画像や、別のユーザーの画面でだけ90度横を向く。個人開発で画像を多く扱うアプリを運用していると、何度か出会う厄介な不具合です。私自身、利用者から「アップロードした写真が、友だちの画面では横向きになっている」という報告を受けて、半日ほど原因を追ったことがあります。結論から言えば、写っているピクセルは一度も回転していません。回転の情報は EXIF の Orientation タグ という別の場所に書かれていて、それを読む側と読まない側で見え方が割れていたのです。

この食い違いは、Rork で生成したアプリでも同じ構造で起こります。React Native の <Image> は Orientation タグを尊重して表示してくれますが、アップロード先のサーバーや画像処理ライブラリ、他社サービスのプレビューはタグを無視することが珍しくありません。今日は、撮影・選択した写真を アップロードする前にピクセルへ回転を焼き込み、ついでに位置情報を含む EXIF を削除する までを、動くコードで組み立てます。

端末のプレビューでは正しいのに、転送先でだけ回転する

まず症状を正確に切り分けます。次の3つを観察すると、EXIF Orientation 起因かどうかがほぼ判定できます。

  1. アプリ内の <Image> では正しい向きで表示される
  2. その同じファイルをサーバーに上げ、ブラウザや別ライブラリで開くと横向きになる
  3. 縦持ちで撮った写真ほど症状が出やすく、横持ちの写真では起きない

この3点が揃ったら、ほぼ Orientation タグの解釈差です。iPhone のカメラは、本体を縦に持って撮っても センサーから来た横向きのピクセルをそのまま保存 し、「表示するときは右に90度回してね」という指示を Orientation タグに書き込みます。タグを読む <Image> は正しく見せ、読まないサーバーは横向きの素のピクセルをそのまま見せる。これが割れの正体です。

原因は EXIF Orientation — ピクセルは回っていない

Orientation タグは 1〜8 の整数で、回転と反転の組み合わせを表します。実務で出会うのはほぼ次の4つです。

意味典型的な発生源
1回転なし(正位置)横持ち撮影・正規化済み画像
3180度回転上下逆さに持って撮影
6時計回り90度で正位置になる縦持ち撮影(最頻出)
8反時計回り90度で正位置になる縦持ち・逆向き

値 6 が圧倒的に多く、私が報告を受けたケースもすべて 6 でした。重要なのは、値が 1 以外のときは「ピクセルと表示指示がずれている」状態 だということです。アップロード先がタグを無視する以上、こちらでピクセルを物理的に回してタグを 1 に揃えてしまうのが、最も移植性の高い解決策になります。

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

この記事の続きを読む

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

この記事で得られること
端末では正しいのにサーバー側や友人の端末でだけ写真が90度回転する謎を、EXIF Orientation の値(1〜8)から原因切り分けできるようになります
expo-image-picker と expo-image-manipulator で、回転をピクセルに焼き込み EXIF を除去してからアップロードする実装を、今日そのまま手に入れられます
写真に埋め込まれた GPS 位置情報を残したままアップロードして起きる個人情報の漏えいを、転送前に止められるようになります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-05-21
RorkでビルドしたiOSアプリがTestFlightで「ITMS-90683」拒否される — Info.plistの使用目的文字列の埋め方
Rork書き出しのiOSアプリをApp Store Connectに提出した直後、メールで「ITMS-90683: Missing Purpose String in Info.plist」を受け取る現象について、原因とapp.jsonからの恒久的な修正手順を、12年間の個人開発で繰り返しハマってきた立場から具体的に説明します。
開発ツール2026-06-21
通知をタップしたのに目的の画面に飛ばない——Rorkアプリのルーティングを起動状態ごとに設計する
通知タップでアプリが起動したとき、目的の画面まで確実に届ける設計。killed / background / foreground の3状態と、ナビゲーション準備前のタップを取りこぼさない pending route の実装を解説します。
開発ツール2026-06-20
Rork の一覧が増えるほどスクロールで重複と欠落が出る——カーソルページネーションと再取得の状態設計
Rork が生成する素朴な offset ページネーションは、リストが更新されるたびに重複や欠落を起こします。カーソル方式の契約設計、取得状態を一つに束ねる usePaginatedList フック、失敗時の指数バックオフ再試行まで、本番運用で詰まらない一覧の作り方を実装中心に解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →