Devinにて、direnvを使ってプロジェクトごとに環境変数を設定する方法
この記事の操作
Devin を使った開発では、API キーやデータベース接続情報といった環境変数を扱う必要があります。特に複数のプロジェクトを同時に進めている場合、プロジェクトごとに異なる環境変数を設定しなければなりません。本記事では、direnv を活用してプロジェクト固有の環境変数を Devin に設定する方法を解説します。
Devin における環境変数設定の3つのスコープ
Devin でAPIキーなどの情報を利用する場合3種類の設定方法があります。
1つ目は 組織全体で共有されるPersisted Global Secrets です。Settings > Secrets ページから追加でき、組織内の全てのセッションで利用できます。組織共通の API キーや社内ツールへのアクセス情報を登録する際に適しています。
2つ目は、Repo-Specific Secrets。これは特定のリポジトリにだけ設定したい場合に利用します。リポジトリのセットアップにて環境変数を設定すると、そのリポジトリのセッションでのみ設定された環境変数が読み込まれます。
最後に、Session-Specific Secretsという、セッションの間だけ利用できる設定です。Devin がセッション中に認証情報を求めてきた際に入力でき、そのセッションが終了すると破棄されます。一度だけ使う API キーや、検証目的で試したい設定を扱う際に利用できます。
本記事では、Repo-Specific Secretsを利用したリポジトリごとに環境変数を設定する方法を紹介します。
Repo-Specific Secrets はdirenvを利用する
Devinの内部的な挙動ですが、どうやら direnv を利用して環境変数をプロジェクトごとに設定している様子です。direnv はディレクトリごとに環境変数を自動的に読み込むツールです。プロジェクトのルートディレクトリに配置された .envrc ファイルを参照し、そのディレクトリに移動した際に自動的に環境変数を設定してくれます。
.gitignoreで.envrcを除外しておく
内部的にdirenvを利用するため、Repo-Specific Secrets を利用する場合は.gitignoreを更新し、.envrcがGit管理されないようにしましょう。Devin上での作業にて.envrcを作成するため、セットアップ作業時にGitで差分を出さない状況にしておく必要があります。また、万が一誤コミットされてしまった場合に、APIキーなどをローテーションする必要が発生する問題もあります。
少し手間ですが、事前に.envrcがGitに追加されない設定になっているかをチェックしておきましょう。
Devin でRepo-Specific Secretsを設定する
ここからはDevinでリポジトリ固有の環境変数(Repo-Specific Secrets)を設定する方法を紹介します。
1: リポジトリをセットアップする
まず、Settings > Devin’s Workspace ページにアクセスし、環境変数を設定したいリポジトリを選択しましょう。リポジトリをセットアップするウィザード画面が表示されるので、画面の指示に従って進めてください。
2: Configure secrets ステップまで進める
Gitリポジトリの接続が終わると、次のステップは「Configure secrets」です。このステップでは、Devin がセッション開始時に必要とする認証情報や環境変数を設定できます。

このステップにて、画面右側に表示されているターミナルやエディタを利用しながら作業を進めます。
3: .envrc ファイルの作成
画面右側に下の画像のようなターミナルやエディタが表示されているはずです。ここでtouch .envrcコマンドを実行し、新しいファイルを作成しましょう。

ファイルが作成されたら、VS Code の左端にあるアイコンリストの上から2番目にある Explorer アイコンをクリックします。ファイル一覧が表示されるので、その中から .envrc を選択しましょう。これでSetup Agent が表示されていた部分に .envrc ファイルの編集画面が開きます。
4: プロジェクト固有の情報を設定する
.envrc ファイルに必要な環境変数を追加します。.envファイルと異なり、direnv では export コマンドを使って環境変数を定義する点に注意しましょう。

たとえば、画像生成 API のトークンを設定する場合は次のように記述します。
bash
export OG_IMAGE_GEN_AUTH_TOKEN=xxxxxx
複数の環境変数を設定する場合は、1行ずつ export コマンドを記述してください。
bash
export API_KEY=your_api_key_here
export DATABASE_URL=postgresql://localhost/mydb
export DEBUG_MODE=true
環境変数名は大文字とアンダースコアで記述するのが一般的です。値にスペースや特殊文字が含まれる場合は、ダブルクォートで囲むのが確実です。
必要なデータの追加が終わったら、ファイルを保存します。
5: direnvコマンドを実行する
環境変数が読み込みできる状態にあるかチェックしましょう。ターミナルで以下のコマンドを実行します。
direnv allow
このコマンドを実行すると、direnv が .envrcファイルを読み込み、環境変数を設定します。ターミナルには以下のようなメッセージが表示されるはずです。
direnv: loading ~/repos/リポジトリ名/.envrc
direnv: export +環境変数名
このメッセージが表示されれば、環境変数が正常に読み込まれています。
6: セットアップを完了させる
direnv の設定が完了したら、リポジトリセットアップウィザードの残りのステップを進めてください。依存関係のインストール、lint コマンドの設定、テストコマンドの設定などを行い、最後に「Finish」ボタンをクリックします。
ウィザードが全てのコマンドを検証し、問題がなければスナップショットが保存されます。この際、Devin’s machine のターミナルに環境変数が読み込まれたことを示すメッセージが表示されます。

まとめ
プロジェクト固有のAPIキーやSalt値などをDevinに共有したい場合、DevinのRepo-Specific Secrets機能を利用します。内部的にはdirenvを利用している様子なので、Devin Machineのセットアップに関する設定を調整し、.envrcファイルの作成と環境変数の登録を行いましょう。ただし、.envrc ファイルには機密情報が含まれます。そのため、Devin内部でのみ利用するように設定する必要があります。必ず .gitignore に追加してバージョン管理から除外してください。
Devin のリポジトリセットアップで direnv を導入しておけば、今後のセッションで環境変数を意識する必要がなくなります。開発に集中できる環境を整えるために、ぜひ direnv による環境変数管理を試してみてください。
⭐ この記事への反応
はてなアカウントでスターを付けることができます
