Think Proof, Count Two

and look for a red shoe

devcontainer をやめた(い)

はじめに

趣味で作っている Rails アプリ の開発に devcontainer を使っていたのですが、少し辛く感じることが増えてきたので devcontainer をやめることにしました。 あとで devcontainer に戻るかもしれないので、記録として残しておきます。

devcontainer の辛い(辛かった)ところ

まず辛いと思ったことを箇条書きで述べてみます:

  • VS Code 以外のエディタだとうまく動いてくれないことが何回かあった
    • RubyMine だとたまにコンテナとの接続が切れたりしてこまった
    • 最近は Helix を使ったりするので、ターミナルで開発しやすいようにしたかった
  • devcontainer 内部で Claude Code を使うのが少し手間
    • ~/.claude/CLAUDE.md などを共有したかったのだが、パーミッション周りの知識がないため手間取った。ちなみにホストの ~/.claude/CLAUDE.md を共有するのを諦めて volume を作って bind することにした
  • devcontainer 内部で起動した Claude Code で Chrome 拡張が使えない
    • Chrome 拡張で動作確認させたり画面キャプチャを撮らせたりしたいのだが、devcontainer 内で起動した Claude Code ではコンテナ外の Chrome を操作できなかった[1]

というわけで、Docker コンテナを利用せず開発環境を作ろうと思って環境整備を始めました。

この日記を書いている最中に知ったのですが、DHH も Native Ruby と Docker DB を使うといったような発言をしていたようですね[2]。 このキーノート見たはずなのに覚えていませんでした。

Nix 入門

まずは Nix に興味があったので Nix Flakes を試してみました。 が、どうにもうまくいかなくて断念しました。

.ruby-versionGemfile.lock でバージョン管理をしているものたちををすべて flake.nix に押し込むのが大変に感じて、途中で断念しました。

あと環境のビルドに時間がかかるのがちょっと辛かったです。

参考: PR#208

また、データベースを用意する必要がある場合は素の Nix Flakes ではなく devenv などのラッパーを使う方が良いと感じました。 devbox というのもあるようですが、ドキュメントを読んだところ個人的には devenv の方が好みでした。

mise 入門

Nix を断念したので mise と Docker (PostgreSQL だけ) の組み合わせとしました。 特に語るべきこともないので省略することにします。

こぼればなし

devcontainer をやめた後、macOS でテストを並列で実行すると SEGFAULT が発生していて困ったのですが、どうやら GSSAPI まわりの問題のようです。 次のように環境変数を設定したら発生しなくなりました。

export PGGSSENCMODE=disable

  1. 1ヶ月くらい前のことなので、今は操作できるようになっているかもしれない ↩︎

  2. こちらの記事で知りました https://techracho.bpsinc.jp/hachi8833/2026_02_13/156462 ↩︎