◉RORK LABEN
●EXPO — EAS Observe がネイティブクラッシュも記録(10/07)。SDK 57 は 57.0.21 以降で確認できます●RORK — 09-29 に GPT-6.1 Sol、09-28 に Claude Sonnet 5.5 を追加。モデル選択で使えます●RN 0.88 — React Native 0.88.x の正式リリース予定は 10/12、残り2日●Q&A — AuthSession が Android の standalone で結果を返さない、という問いが長く続いています●WINDOWS — Mac がなくても Windows だけで iPhone アプリを出す手順が共有されています●NEW — Expo Go で通知だけが届かない夜に、先に切り分ける3点●EXPO — EAS Observe がネイティブクラッシュも記録(10/07)。SDK 57 は 57.0.21 以降で確認できます●RORK — 09-29 に GPT-6.1 Sol、09-28 に Claude Sonnet 5.5 を追加。モデル選択で使えます●RN 0.88 — React Native 0.88.x の正式リリース予定は 10/12、残り2日●Q&A — AuthSession が Android の standalone で結果を返さない、という問いが長く続いています●WINDOWS — Mac がなくても Windows だけで iPhone アプリを出す手順が共有されています●NEW — Expo Go で通知だけが届かない夜に、先に切り分ける3点
記事一覧/開発ツール
⬡ 開発ツール/2026-09-04上級

EAS の secret は「アプリに入れない」設定ではありません — 接頭辞と可視性を別々に決める

EXPO_PUBLIC_ の接頭辞は成果物に入るかを決め、EAS の可視性は誰が読めるかを決めます。二つを重ねたときに OTA 更新でだけ値が消える筋道と、出荷前に自分の手で確かめる手順をまとめました。

Expo213EAS8環境変数7React Native238Rork577

✦ プレミアム記事

リリース前の点検で、書き出したばかりの JavaScript バンドルを grep にかけていました。探していたのは、自分の手で EXPO_PUBLIC_ を付けた解析用のキーです。

出てきました。想定どおりではあるのですが、少し落ち着かない結果でもありました。その値は EAS 側で可視性を絞ってあり、私はしばらくのあいだ、そこを絞れば成果物の中身のほうも絞れるのだと受け取っていたからです。

実際には、二つはまったく別のことを決めています。接頭辞は成果物に入るかどうかを決め、可視性は誰がその値を読めるかを決めます。接頭辞は成果物、可視性は経路。 ここに辿り着いてから、鍵の置き場所で迷う時間がほとんどなくなりました。

接頭辞と可視性は、別々のことを決めています

Expo の環境変数で最初に噛み合わなくなるのは、この二つを一本の「安全レベル」だと考えてしまうところです。並べて書くと、重なっていないことがはっきりします。

軸決めていること効き方
EXPO_PUBLIC_ の接頭辞その値がクライアントのコードに埋め込まれるかどうかバンドル時に process.env.EXPO_PUBLIC_* が値そのものへ置き換わります
EAS の可視性(plaintext / sensitive / secret)その値を誰がどこで読めるかダッシュボード・EAS CLI・ジョブのログでの見え方が変わります

つまり、可視性を secret にしても、名前が EXPO_PUBLIC_ で始まっていて、その値をクライアントのコードから参照しているのであれば、成果物には入ります。Expo のドキュメントも、Environment variables in EAS で secret について「アプリ自体に埋め込む値に追加の安全性を与えるものではない」と書いています。

私はこの一文を、最初に読んだときには通り過ぎていました。読み落としたというよりも、secret という語の手触りに引っ張られていたのだと思います。

secret が実際に止めているのは、EAS の外側だけです

secret 指定が効くのは、値が EAS のサーバーの外へ出ていく経路のほうです。止まるものと止まらないものを、はっきり分けておきます。

止まるもの。ダッシュボードでの表示、EAS CLI からの読み出し、ジョブのログへの出力、そして eas env:pull でローカルの .env に降りてくること。ここは確かに閉じます。

止まらないもの。ビルドジョブの中で環境変数として渡り、そこでバンドラーがクライアントのコードへ埋め込む経路です。ビルドは EAS のサーバーの内側で走りますので、secret でも値は届きます。届いた値は、そのまま成果物の一部になります。

「誰にも読ませたくない」と「アプリに入れたくない」は、言葉が似ているだけで別の要求です。前者は可視性、後者は接頭辞と設計の側で満たすことになります。

✦

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

この記事の続きを読む

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

この記事で得られること
✦接頭辞と可視性という別々の軸を切り分けて、自分のアプリのどの鍵をどこへ置くかを迷わず決められるようになる
✦ストアのビルドでは動くのに OTA 更新を当てた版でだけ設定が空になる、後から原因を追いにくい事故を公開前に止められるようになる
✦書き出したバンドルを検索して実際に何が入ったかを確かめる手順と、EAS の一覧から矛盾を拾うスクリプトを、出荷前の点検にそのまま置けるようになる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⬡ 開発ツール2026-09-06
eas env:list に --json がないと分かってから、環境変数の棚卸しを組み直しました
eas env:list に --json フラグは用意されていません。--format short の出力を安全に JSON へ変換し、三つの環境の抜けを一行で見つけるまでの手順を書き残します。
⬡ 開発ツール2026-08-22
一括置換は全ファイル成功しました。壊れたのは、消さなかった行のほうです
生成コードに一括置換をかけると、一致した行ではなく隣の行が壊れます。運用中のプロジェクトで実際に起きた破損と、置換の不変条件を検査する20行のガードスクリプトをまとめました。
⬡ 開発ツール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駆動開発
※ アフィリエイトリンクを含みます