
1Password Environmentsで.envファイルを管理できるようになったので試してみた
iOS開発において、APIキーやFirebaseの設定情報などのシークレット情報を管理するのは重要な課題だ。多くの開発者が.envファイルを使って環境変数を管理しているが、平文でディスクに保存されるため、うっかりGitにコミットしてしまうリスクが常につきまとう。
私はArkanaを使ってシークレット情報を難読化しているが(Arkanaについての詳細は以前の記事を参照)、その元となる.envファイルの管理には課題があった。
2025年10月、1Passwordの新機能「1Password Environments」がパブリックベータとしてリリースされた。この機能を使うと、.envファイルを仮想的にマウントし、シークレット情報をディスクに書き込まずに管理できる。
本記事では、1Password EnvironmentsとArkana、Xcode Cloudを組み合わせた運用方法を紹介する。
検証環境
- macOS 15.7.1(24G231)
- Xcode 26.1.1
- 1Password デスクトップアプリ 8.11.18
- Arkana 1.4.0
従来の.envファイル管理の課題
多くの開発者が直面している.envファイルの課題は以下の通りだ。
セキュリティ上のリスク
- シークレット情報が平文でディスクに保存される
.gitignoreへの追加を忘れてGitにコミットしてしまう危険性- macOSのバックアップに含まれてしまう(可能性がある)
チーム開発での課題
- 新しいメンバーへのシークレット共有が煩雑
- SlackやメールでAPIキーを送るのはセキュリティ上好ましくない
- 環境変数の更新をチーム全体に反映するのが面倒
開発マシンの移行
- 新しいMacをセットアップする際に、過去のチャットやドキュメントからシークレットを探す必要がある
1Password Environmentsとは
1Password Environmentsは、開発プロジェクトのシークレット情報を安全に管理するための専用ワークスペースを提供する機能である。
主な特徴
- 指定したパスに
.envファイルを仮想的にマウント - シークレット情報はディスクに書き込まれない
- UNIXパイプを通じてアプリケーションにデータを直接渡す
- 既存のdotenvライブラリとそのまま互換
- Arkanaなどの
.envファイルを読み取るツールがそのまま動作
仮想マウントの仕組み
1Passwordが仮想的に.envファイルをマウントすることで、物理ファイルは存在しないがアプリケーションからは通常のファイルとして読み取れる。1Passwordがロックされると自動的にアクセスがブロックされ、オフラインでもキャッシュされた値にアクセス可能だ。
開発環境での構成
私は業務外でも個人的にiOSアプリを開発しており、以下の構成でシークレットを管理している。
ローカル開発環境
1Password Environments (.env仮想マウント)
↓
Arkana (難読化コード生成)
↓
Xcode (ビルド)
CI/CD環境(Xcode Cloud)
Xcode Cloudの環境変数
↓
Arkana (難読化コード生成)
↓
ビルド・配信
この構成により、ローカルでもCI/CDでも一貫して安全にシークレットを管理できる。
1. 1Password Developer機能の有効化
まず、1Passwordで開発者向け機能を有効にする。
- 1Passwordデスクトップアプリを起動
- Settings(設定) > 開発者を開く
- [1Password開発者エクスペリエンスを表示する]をオンにする

これでサイドバーに「開発者」セクションが表示される。
2. Environmentの作成
サイドバーの開発者セクションを開く。環境タイルの[環境を表示]ボタンをクリックする。

[新規環境]ボタンをクリックする。環境名の入力ダイアログが表示されるので、適当な環境名を入力して、保存ボタンをクリックした。今回、環境名には開発中のアプリ名を使用した。

作成したアプリ(環境)の[環境を表示]ボタンをクリックする。

3. .envファイルのインポート
[.envファイルをインポート]ボタンをクリックする。

インポートする .envファイルを選択する。

インポートされたキーと値を確認して、[保存]ボタンをクリックする。

インポートが完了すると、各環境変数は1Passwordのアイテムとして暗号化され、安全に保存される。
4. 元の.envファイルの削除
安全のため、元の.envファイルを削除する。
cd /Users/ch3cooh/works/NSEasyConnect/NSEasyConnect
# 念のためバックアップ
cp .env .env.backup
# 削除
rm .env
# .gitignoreに.envが含まれているか確認
cat .gitignore | grep .env
5. ローカル.envファイルのマウント設定
次に、仮想的な.envファイルをマウントする。
保存先タブを開く。ローカル.envファイルタイルの[目的地の設定]ボタンをクリックする。

[ファイルパスを選択する]ボタンをクリックする。

いままで.envファイルを置いていたパスを指定する。

.envファイルのパスを指定したら、[.envファイルをマウントする]ボタンをクリックする。

これで、指定したパスに.envファイルが仮想的にマウントされた。

6. .envにアクセスできるか確認する
.envファイルにアクセス可能か確認をおこなう。
vim /Users/ch3cooh/works/NSEasyConnect/NSEasyConnect/.env
同ファイルパスにアクセスすると、1Passwordがフックしてくれて、アクセスリクエストダイアログが表示される。認証をおこなうと、.envファイルにアクセスできる。

認証後、いままでのように .envファイルにアクセスできるようになる。
# このファイルは1Passwordによって生成されました。手動による編集は失われます。
# 詳細については、こちらをご覧ください:https://developer.1password.com/docs/environments/local-env-file
revenueCatApiKey=XXXXXX_XXXXXXXXXXXXXX
7. Arkanaの動作確認
Arkanaを実行して、正しく難読化コードが生成されることを確認する。
# プロジェクトディレクトリで実行
bundle exec arkana
成功すると、通常通りArkanaKeysなどの難読化コードが生成される。1Passwordがマウントした.envファイルを正しく読み取れていることが確認できる。
Arkanaの詳しい設定方法については、以前の記事を参照してほしい。
8. Xcode Cloudとの連携
Xcode Cloudを使ったCI/CD環境では、1Password Environmentsを使わず、Xcode Cloudの環境変数機能を利用する。
8-1. Xcode Cloudでの環境変数設定
- App Store Connectを開く
- 対象のアプリを選択
- Xcode Cloud > Settingsを開く
- Environment Variablesセクションで環境変数を追加
例:
revenueCatApiKey = appl_xxx...
各変数にはSecretのチェックを入れて、値を保護する。
8-2. Arkanaの環境変数読み取り
Arkanaはデフォルトで以下の優先順位で値を読み取る:
- 環境変数
.envファイル
つまり、特別な設定なしで:
- ローカル: 1Passwordがマウントした
.envファイルから読み取り - Xcode Cloud: 環境変数から読み取り
という動作になる。
運用上の注意点
1Passwordアプリの起動が必要
Arkanaを実行する際、1Passwordデスクトップアプリが:
- 起動している
- ロック解除されている
必要がある。ロックされている場合は、ビルドが失敗する。
CI/CD環境は別途設定
CI/CD環境(Xcode Cloud、GitHub Actionsなど)では、1Password Environmentsは使用できない。各環境の機密情報管理機能を使用する必要がある。
ただし、1PasswordはAWS Secrets Managerとの連携機能も提供しているため、本格的なCI/CD環境ではこちらの利用も検討できる。本記事ではAWS Secrets Manager利用の検証はおこなっていない。
Windowsは現在非対応
現在、1Password EnvironmentsはMacとLinuxのみ対応だ。Windows版は開発中とのこと。
メリット
実際に運用してみて感じたメリットをまとめる。
セキュリティの向上
.envファイルが物理的にディスクに存在しないため、誤ってGitにコミットすることが不可能git add .を実行しても、仮想ファイルは検出されない- 1Passwordをロックすると、自動的に
.envファイルへのアクセスがブロック
開発効率の向上
- 新しいMacをセットアップする際、1Passwordにログインするだけで環境変数が復元
- プロジェクトをcloneして、Environmentをマウントすればすぐに開発開始
- キャッシュされた値はオフラインでもアクセス可能
チーム開発での利点
- 1Passwordの共有機能を使って、チームメンバーに安全に環境変数を共有
- Slackでシークレットを送る必要がなくなる
- 環境変数の変更履歴が1Passwordに記録される
まとめ
1Password Environmentsを実際に運用してみて、想像以上に便利だと感じている。特に.envファイルが物理的に存在しないため「誤ってGitにコミットしてしまうのでは」という不安から完全に解放されたのが大きい。
iOSアプリ開発の文脈では、Arkanaと組み合わせることで、既存のワークフローを維持したまま安全性を向上できた。ローカル開発では1Password Environmentsで.envファイルを管理し、CI/CD環境ではBitriseやXcode Cloudの環境変数機能を利用することで、一貫したシークレット管理が実現できる。
現在はmacOS/Linux対応のパブリックベータとして提供されており、Windows版は開発中とのことだ。まだベータ版ではあるが、安定して動作しており、iOS開発でシークレット管理に課題を感じている方は試してみる価値があると思う。







