2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

image.png

Messages APIを使ったさくらのAI EngineとClaude Codeの連携を参考に、Claude CodeにさくらのAI Engineが提供する preview/Kimi-K2.7-Code を接続して、記事の大筋を書いてもらいました。
私が使用しているdirenvのバージョンを調べ、そのソースコードをgit cloneして解析してくれました。

さくらのAI Engineの活用事例として、本記事はキャンペーンに応募します。

はじめに

direnv は、ディレクトリごとに環境変数を自動で切り替えるツールです。

プロジェクトごとに .envrc を用意しておけば、ディレクトリへ移動するだけで、そのプロジェクト専用の環境変数を読み込んでくれます。

毎回 source を実行する必要がなく、さくらのAI Engineのアカウントトークンや各種APIキーを扱う開発では非常に便利なツールです。

この記事では macOS + Homebrew を前提に説明します。

インストール

Homebrewを利用している場合は、次のコマンドでインストールできます。

brew install direnv

続いて、使用しているシェルに direnv を組み込みます。

zsh の場合は ~/.zshrc に次を追加します。

eval "$(direnv hook zsh)"

設定を反映します。

source ~/.zshrc

これで direnv が利用できるようになります。

direnvとは

direnv は、ディレクトリごとに環境変数を自動で切り替えるツールです。

プロジェクトごとに .envrc を用意しておけば、

cd project-a

で Project A 用の環境変数が設定され、

cd ../project-b

で Project B 用へ自動で切り替わります。

毎回 source を実行する必要がないため、とても便利です。

初めて .envrc を作成すると、次のようなメッセージが表示されます。

direnv: error <絶対パス>/.envrc is blocked. Run `direnv allow` to approve its content

なぜ、わざわざ direnv allow が必要なのでしょうか。

なぜ direnv allow が必要なのか

.envrc は設定ファイルのように見えます。

しかし実際には シェルスクリプトです。

つまり、

  • 環境変数を書き換える
  • APIキーを送信する
  • rm を実行する
  • curl を実行する

といった、任意のコードを書けます。

もし git clone しただけで勝手に .envrc が実行されたら、とても危険です。

そこで direnv は、

内容を確認した人だけが実行を許可する

という仕組みになっています。

その確認操作が

direnv allow

です。

direnv allow は何を記録しているのか

direnv は、「このディレクトリを信用した」のではありません。

その時点の .envrc の内容を信用したことを記録しています。

ソースコードを調べると、direnv は次の内容から SHA-256 ハッシュを計算しています。

.envrc の絶対パス
+
改行(LF)
+
.envrc の内容

そのハッシュ値をファイル名として保存します。

つまり、

内容が1文字でも変わる
↓
ハッシュ値が変わる
↓
以前許可したものと一致しない
↓
もう一度 direnv allow が必要

という流れです。

ハッシュ値を自分で計算してみる

macOSなら、次のコマンドで direnv と同じハッシュ値を計算できます。

envrc="$(pwd -P)/.envrc"

{
  printf '%s\n' "$envrc"
  cat "$envrc"
} | shasum -a 256

表示された値が、direnv allow を記録するファイルのファイル名になります。

では、次の疑問としていったいどこに保存されているのでしょうか。

direnv allow の記録はどこに保存される?

macOSで XDG_DATA_HOME を設定していなければ、保存先は

~/.local/share/direnv/allow/

です。

実際にlsで確認すると、

24d0c6baccc7a8cc2744a940de15c5de4f5c2d56435911e66358e7fef6fe6860
6989343539d49db3a6faa164f55b3e9654923f666d75518902ea2a49e907e936

のようなファイルが並びます。

中身を見ると、

cat ~/.local/share/direnv/allow/<ハッシュ値>

.envrc の絶対パスだけが保存されていることが分かります。

まとめ

direnv allow は、

「この内容の .envrc は確認済みなので実行してよい」

という記録を残す仕組みです。

.envrc が1文字でも変わればハッシュ値が変わるため、以前の許可は自動的に無効になります。

そのため、再び direnv allow が必要になるのです。


編集後記

この記事を書くにあたり、さくらのAI Engineから本記事執筆専用アカウントトークンを払い出しました。
そして専用ディレクトリ配下だけで有効な環境変数を定義したく、direnvを使いました。

調査および、記事の下書きに使用したリクエスト数は92回でした。

入力トークン(闘魂)が4,639,140で、出力トークン(闘魂)が44,007でした。
トークン単価で計算すると、約300円くらいを使用させていただきました。
ありがとうございます。

スクリーンショット 2026-08-06 6.56.41.png


image.png

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?