Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
devenvに入門した
Search
Tomohiko Himura
September 13, 2023
Technology
0
59
devenvに入門した
devenvというnixをベースした開発環境と本番用のコンテナイメージを作れるツールを紹介しました。
https://devenv.sh/
Tomohiko Himura
September 13, 2023
Tweet
Share
More Decks by Tomohiko Himura
See All by Tomohiko Himura
アジャイルはさておきMake People Awesomeしたい
eiel
0
84
レビューは最優先にするようにしている
eiel
0
210
再考 Fourkeys メトリクス
eiel
2
570
Test mockをSnapshot testする
eiel
0
81
関数プログラミングの考え方
eiel
0
180
逆コンウェイ作戦はフィードバックループを作るために 逆向きの流れをつくること (5分版)
eiel
0
280
組織のパフォーマンスを高めるために 第1話 学習と文化
eiel
0
180
チームとチームのチーム
eiel
1
2k
大きめな病気になったときの医療費と収入源の話
eiel
1
520
Other Decks in Technology
See All in Technology
不動産 x AIことはじめ~データの真価を拓くために
estie
0
110
AIで変わるテスト自動化:最新ツールの多様なアプローチ/ 20240910 Takahiro Kaneyama
shift_evolve
0
210
AWS SAW を広めたい @四国クラウドお遍路
kazzpapa3
0
230
React Aria で実現する次世代のアクセシビリティ
ryo_manba
4
1.2k
CRTO/CRTL/OSEPの比較・勉強法とAV/EDRの検知実験
chayakonanaika
1
1.1k
やってやろうじゃないかメカアジャイル! / Let's do it, mechanical agile!
psj59129
1
600
AIを活用した柔軟かつ効率的な社内リソース検索への取り組み
cygames
0
110
サプライチェーン攻撃に備える
ryunen344
0
270
チームビルディングは"感性"で向き合おう / Team Building with Awareness
kohzas
0
210
テスト”ケース”駆動開発 で手戻りをなくそう
ryohma0510
0
290
プログラム検証入門
riru
6
860
Oracle Autonomous Database:サービス概要のご紹介
oracle4engineer
PRO
1
7k
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
458
32k
The Pragmatic Product Professional
lauravandoore
31
6.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
Fantastic passwords and where to find them - at NoRuKo
philnash
48
2.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
25
3.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
58k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
The Invisible Customer
myddelton
119
13k
Web development in the modern age
philhawksworth
204
10k
The Straight Up "How To Draw Better" Workshop
denniskardys
230
130k
The Illustrated Children's Guide to Kubernetes
chrisshort
47
48k
Designing for humans not robots
tammielis
248
25k
Transcript
devenvに入門した 2023/08/17 ひむら ともひこ
自己紹介 ひむら ともひこ 最近趣味で遊んでるもの • Nix • GNU Emacs
devenvに入門した
None
こういうことありませんか?
リポジトリをクローンしてきたけど ビルドや実行するまでに いろいろインストールしなきゃいけない
開発するのに VagrantやDockerなど起動しないといけない
つらい
そこでdevenvですよ
devenvとは何か
devenv知ってる人 1人
devenv使ってる人 0人
開発環境構築ツール デプロイ用コンテナイメージ作成ツール
https://devenv.sh/
devenvが導入されてる環境で使ってみる
devenvの設定ファイルがあるプロジェクトで $ devenv up # 開発サーバーやデータベースサーバーなどが起動する $ devenv shell #
開発するのに必要なコマンドがそろった環境に入る
実例
devenv.nix { pkgs, ... }: { env.GREET = "devenv"; packages
= [ pkgs.git ]; scripts.hello.exec = "echo hello from $GREET"; enterShell = '' hello git --version ''; languages.javascript.enable = true; languages.javascript.package = pkgs.nodejs_20; processes.watch.exec = "npm run watch:build"; processes.test.exec = "npm run test --watch"; processes.storybook.exec = "npm run storybook"; }
devenv.yaml inputs: nixpkgs: url: github:NixOS/nixpkgs/nixpkgs-unstable
設定ファイル • devenv.nix ◦ nix言語を用いて設定やインストールするパッケージのカスタマ イズができる • devenv.yaml ◦ パッケージマネージャ自体の設定をする
◦ 外部のdevenvの設定を読み込みする
devenvのinstall方法
ここでは説明したくない
nixがインストールされていれば $ nix-env -if https://install.devenv.sh/latest
もうちょっと詳しく
devenvの環境はシステムとは別途隔離されている • プロジェクトルートの .devenv/profileに環境が作られる $ find .devenv/profile/ | head -n
20 .devenv/profile/ .devenv/profile//bin .devenv/profile//bin/git-jump .devenv/profile//bin/git-receive-pack .devenv/profile//bin/git-credential-netrc .devenv/profile//bin/git-upload-archive .devenv/profile//bin/.honcho-wrapped .devenv/profile//bin/honcho .devenv/profile//bin/git-credential-osxkeychain .devenv/profile//bin/git-cvsserver .devenv/profile//bin/hello .devenv/profile//bin/git-shell .devenv/profile//bin/node .devenv/profile//bin/corepack .devenv/profile//bin/git-upload-pack .devenv/profile//bin/scalar .devenv/profile//bin/npx .devenv/profile//bin/git-http-backend .devenv/profile//bin/npm .devenv/profile//bin/git
正確にはシンボリックリンクでnixで包括的に管理される $ ls -l .devenv/profile .devenv/profile -> /nix/store/qsvm027f4kv1qzldzm40bzrjpzgfmdi0-devenv-profile
devenv upで起動するのはprocess-manager • 有名なものでいうとforeman(ruby) • デフォルトで使われるのはhoncho(python) ◦ 出力に色もつかない • 他に選択できるもの
◦ hivemind(go) ▪ 環境によってはうまくうごかないことがある(おそらくdevenvで使ってる人が少ない) ◦ overmind(go + tmux) ▪ tmuxを使えるならいろいろ便利 ◦ process-compose(go) ◦ ▪ TUI付きでリッチ
いくつか備え付けのpre-commit hookがあるよ • https://github.com/cachix/pre-commit-hooks.nix • PHP ◦ php-cs-fixer, phpcbf, phpcs
• JavaScript/TypeScript ◦ deno fmt, deno lint, eslint, rome • Golang ◦ go fmt, go test, govet, revive, staticcheck • Rust ◦ rustfmt, clippy, cargo check
editorとの連携は…つらいかもしれない • おそらくdirenv を連携してなんとかすることになる • .envrc に以下を書いとけばきっと… source_url "https://raw.githubusercontent.com/cachix/devenv/d1f7b48e35e6d ee421cfd0f51481d17f77586997/direnvrc"
"sha256-YBzqskFZxmNb3kYVoKD9ZixoPXJh1C9ZvTLGFRkauZ0=" use devenv
まとめ
devenvまとめ • 仮想化技術を使わずとも ◦ VagrantやDockerをつかった開発環境に近いものを作れる ▪ 同じくらいcleanに使える (ただしnixが必要) ◦ ansibleやdockerfile不要
(近いものをnixが内蔵) • 設定されているリポジトリならお手軽に使える ◦ 使うには nix が必要 ◦ 設定するには nix力が必要