yhara.jp

Recent Posts

Dockerとmise bootstrapでAI用の作業環境を作る

2026-11-12
Tech

AI Agentを使った開発をしていると、人間の許可を求められるたびにyキーを押すのがだんだん面倒になってきます。かといって、「何でも好きにやっていいよ」からのhome以下全削除ミスとかも怖いです。ということで、Dockerで作業環境を作ってその中でやってもらうようにしてみました。

(注意点)

(サンドボックスとして何を選ぶかは、何を気にしているかによって決まります。今回は「うっかり関係のないファイルが削除されること」をケアするためにDockerを選びましたが、Dockerは一般に「悪意あるコードを安全に実行するサンドボックス」としては弱いです。Dockerがあればなんでも安心、というわけではないので注意してください)

Docker + mise bootsrap

Dockerで開発環境をつくる場合、永続したいファイルはコンテナ外に置くと思いますが、今回の手順ではほとんどのファイルをコンテナ内に置いています。作業成果はgithubにpushするのでそれでいいという判断です。反面、うっかりコンテナを削除すると途中の作業が失われるので注意してください。

DockerfileはDebianにmiseを入れただけの簡潔なものにし、以降の環境構築はすべてmise bootstrapでやります。miseの設定ファイルくらいはホストと共有でもいいかもしれません。

mise bootstrap

miseはrbenvやnodeenvなどのように複数の言語処理系を簡単に管理できるツールでしたが、その後いろんな機能が追加され、最近はmise bootstrapでtomlに書いた設定をもとに開発環境の初期設定ができるようになっています。

今使っているmise/config.tomlは以下のような感じです。これで、mise bootstrapで必要なaptパッケージのインストール、git repoのclone、設定ファイルのsymlink作成、rubyとrustのインストールなどが走ります。

(AI用ならvimは要らないんじゃないの?と思われそうですが、作業状況を手で確認したい場面がたまにあるので、「いつものツール」一式が入っていると嬉しいのです)

[bootstrap.packages]
"apt:git" = "latest"
"apt:build-essential" = "latest"
"apt:tmux" = "latest"
"apt:vim" = "latest"
"apt:gh" = "latest"
"apt:tig" = "latest"
"apt:lv" = "latest"

[bootstrap.repos]
# private repoから設定ファイル一式をclone
"~/.local/share/dotfiles" = { url = "https://github.com/yhara/dotfiles.git" }

[dotfiles]
"~/.vim"   = "~/.local/share/dotfiles/dot.vim"
"~/.vimrc" = "~/.local/share/dotfiles/dot.vimrc"
"~/.tmux.conf" = "~/.local/share/dotfiles/dot.tmux.conf"
"~/.tigrc" = "~/.local/share/dotfiles/dot.tigrc"
"~/.config/git/config"   = "~/.local/share/dotfiles/dot.gitconfig"

[tools]
jq = "latest"
gh = "latest"

ruby = "latest"
"gem:reposh" = "latest"

rust = { version = "latest", mr_boxington = true }
mr-boxington = "latest"

"core:direnv" = "latest"

mise bootstrapコマンドは冪等なので、何か変えたあとは差分だけを実行してくれるのも嬉しい点です。

More posts

Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author