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

Rork(Expo)生成アプリに OpenAI の鍵を直書きすると抜かれます — Workers で薄い中継を1枚挟む設計

Rork が生成した Expo アプリに OpenAI や Gemini の API キーをそのまま埋め込むと、ビルド済みアプリから抜き取られます。なぜ「アプリに入れた鍵」は秘密にならないのかを整理し、Cloudflare Workers で鍵を隠す最小の中継、濫用対策、審査不要の鍵ローテーションまでを実装で示します。

Rork539Expo175Cloudflare Workers24APIキーセキュリティ13

プレミアム記事

Rork で生成したアプリに AI 機能を足すとき、いちばん最初にやりたくなるのが「EXPO_PUBLIC_OPENAI_KEY に鍵を入れてアプリから直接 OpenAI を叩く」構成です。動きます。デモも一瞬で完成します。けれどこの鍵は、あなたのアプリを App Store からダウンロードした誰かが、数分で取り出せます。

「ビルドに埋め込まれているのだから、ソースは見えないはずだ」と感じるかもしれません。私も最初はそう思っていました。実際には、配布されるアプリは暗号化された宝箱ではなく、文字列がそのまま入ったファイルの集合です。鍵が露出すれば、請求はあなたに来ます。ここでは、なぜ直書きが危険なのかを腹落ちさせたうえで、Cloudflare Workers で薄い中継を一枚だけ挟んで鍵をサーバー側に隔離する最小構成を、実際のコードで組み立てていきます。

なぜ「アプリに埋め込んだ鍵」は秘密にならないのか

理屈はシンプルです。アプリのバイナリ(iOS の .ipa、Android の .apk / .aab)は、ユーザーの端末に丸ごとコピーされます。端末の持ち主は、その中身を自由に展開できます。Expo / React Native の JavaScript バンドルはとくに読みやすく、strings コマンドや展開ツールに通すだけで、埋め込まれた文字列が並んで出てきます。

EXPO_PUBLIC_ プレフィックスを付けた環境変数は、ビルド時に JavaScript バンドルへ静的に焼き込まれます。つまり「公開(public)」という名前のとおり、クライアントから読める前提のものです。ではプレフィックスを外せば隠れるかというと、そうではありません。ネイティブの設定ファイルやコードに置いても、抜き取りの難易度が少し上がるだけで、本質は変わりません。

さらに厄介なのは、HTTPS でも守れない点です。攻撃者は自分の端末を完全に支配しているので、アプリと OpenAI のあいだに中間プロキシ(mitmproxy など)を挟んで、自分宛ての通信を平文で覗けます。リクエストヘッダに Authorization: Bearer sk-... が乗っていれば、それで終わりです。

要するに、クライアントに置いた時点で「秘密」ではなくなります。守るべき鍵は、端末に一度も届けないことが唯一の確実な防御です。

クライアントに置いてよい鍵・置いてはいけない鍵

すべての鍵を隠す必要はありません。「クライアントで使われる前提で設計された鍵」と「サーバー専用の鍵」を見分けるのが先です。判断軸は「その鍵が漏れたとき、第三者が課金や書き込みをできるか」の一点に尽きます。

鍵・値クライアント可否理由
Firebase の apiKey(config)置いてよい識別子であり秘密ではない。アクセス制御は Security Rules 側で行う設計
RevenueCat の公開 SDK キー置いてよいクライアント用に発行された公開鍵。課金確定はサーバー署名で検証される
Stripe の publishable key(pk_)置いてよい公開前提。決済確定は secret key を持つサーバーが行う
OpenAI / Gemini / Anthropic の API キー絶対に置かない漏れた瞬間に第三者があなたの残高で叩ける。従量課金が青天井で増える
Stripe の secret key(sk_)絶対に置かない返金・送金まで可能。最上位の機密
各種クラウドの管理用トークン絶対に置かないインフラ全体を操作できる

迷ったら「漏れたら誰かがお金を使えるか/データを書き換えられるか」を自問してください。答えが Yes なら、その鍵は端末に置けません。本記事で扱うのは、この右下の「絶対に置かない」群、とくに従量課金の AI API キーです。

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

この記事の続きを読む

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

この記事で得られること
クライアントに置いてよい鍵・絶対に置いてはいけない鍵を、設計思想ベースで振り分けた判断表
OpenAI / Gemini の鍵を隠す Cloudflare Workers 中継の最小実装(ストリーミングのそのまま通過つき)と Expo 側の呼び出しコード
誰でも叩ける中継にしないための簡易な濫用対策と、アプリ審査を待たずに鍵を差し替えるローテーション手順
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-07-10
クライアントに置いた鍵は公開情報 — Rork 生成アプリの秘密境界とローテーション手順
生成された Expo アプリの .ipa を展開すると、環境変数がそのまま文字列として現れます。鍵を3層に分類し、置けないものをプロキシへ逃がし、漏れた前提のローテーション手順書を用意するまでの設計をまとめます。
開発ツール2026-06-27
無料プレビューがスクショで丸ごと持ち出される前に — Rork/Expo でスクリーンショットと画面収録を検知して目隠しする設計
Rork/Expo アプリで有料プレビュー画像をスクリーンショットと画面収録から守る実装。expo-screen-capture の限界、isCaptured のネイティブ監視、iOS/Android の差を踏まえた目隠し設計を解説します。
開発ツール2026-04-13
Rork アプリで LLM ストリーミングを実装する — ChatGPT 風リアルタイム AI 応答 UI を Expo × SSE で本番構築する
React Native / Expo で LLM ストリーミング(SSE)を本番実装した記録。Anthropic・OpenAI・Gemini の抽象化、AbortController とリトライ、Cloudflare Workers プロキシ、会話履歴の圧縮、課金ゼロで検証するモック SSE サーバーまで動作コード付き。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →