blog.ryota-ka.me

HERP における Nix 活用

Keywords:

HERP における開発では Nix が広く活用されている.Nix は非常に便利な代物なのだが,ドキュメントの貧弱さ,急峻な学習曲線,企業における採用事例の乏しさなどが相まって,広く普及しているとは言い難く,ましてや国内企業での採用事例を耳にする機会はほとんどない.しかし,Nix の利便性は,複数人での開発においてこそ,その本領が発揮されると考えている.この記事は,HERP における活用事例の紹介を通じて,Nix の利便性ならびに企業での活用可能性について紹介することを目的としている.

続きを読む

Nix でのビルド時に private なリソースにアクセスする

Keywords:

HERP では多くの成果物が Nix を用いてビルドされている.例として,アプリケーションの Docker image,npm ライブラリの tarball,Helm chart を元にした Kubernetes の manifest ファイルなどが挙げられる.

"purely functional package manager" である Nix を利用すると高い再現性を持ったビルドを実現できるが,purely functional であるがゆえに,private なリソースに依存したビルドには一工夫が必要になる.private なリソースにアクセスするためには概して何らかの credential が必要になるからだ.そのような credential はビルド手順*1に残したくないし,仮に残したとしても,一定時間で expire したりするのでいずれにしても再現性が得られない.

もちろん,ビルド時に private なリソースを利用できないのでは営利企業内で利用するのは難しい.そこで,部分的に再現性を諦めるための抜け道が用意されている.本稿では fetchurl 関数の netrcPhasenetrcImpureEnvVars オプションを利用する方法を紹介する.

なお,本稿で単に fetchurl と書いた場合には,builtins.fetchurl ではなく NixOS/nixpkgs リポジトリに定義されている fetchurl 関数を指すものとする.

続きを読む

HERP における Web フロントエンド開発概観 (2022年春編)

はじめに#

この記事は,HERP における Web フロントエンド開発の概観を,世間の開発者に——特に潜在的・顕在的な候補者の方に——知ってもらうことを目的として書かれた.HERP では現在 Web フロントエンドエンジニアを積極的に募集しているが,仮に入社したとしてどのような仕事をすることになるかのイメージが付いた方が,検討の候補に入れてもらいやすいのではないかという目論見による.また,採用している技術スタックにも珍しいものがあるため,単純に読み物として楽しめるかもしれない.なお,開発の実情について知ってもらうのが目的であり,実装の良し悪しについて議論することは目的としていない.

続きを読む

ブログを自作して移転した

Keywords:

2014年からおよそ7年半に渡って使い続けていたはてなブログを離れ,自作のブログシステムに棲家を移すことにした.

2022年の年明けに手を付け始め,休日や退勤後の時間を用いて作業を行ったところ,およそ半月後の1月半ばには移行を完了させることができた.

この記事では,移行に際してブログシステムを自作することに決めた動機や,実装の骨子について紹介する.

続きを読む

dotfiles を Nix + Home Manager に移行した

「ゴミの収集が止まる年末に大掃除をするのは非合理だ」という言説を見かけた.「一理ある」と感じたので,特に家の大掃除などはしないことに決め,代わりに dotfiles の大掃除をすることにした.プロたるもの,日頃から*1自らの仕事環境に対する投資を惜しんではならない.

筆者は Nix ユーザであるため,この年末年始の休暇を用いて Home Manager を導入したいと考えており,実際に移行を行った.

この記事では,Home Manager の利点や導入手順,実際の導入にあたって取った選択や tips を紹介する.

なお,筆者が用いているのは Intel および ARM プロセッサの macOS Monterey で,Zsh, Neovim, tmux などの上で生活している.もちろん Nix は GNU Linux にも対応しているので,仮に今後 Linux マシンをセットアップする機会があっても,滞りなく開発環境を構築できることが期待される.

続きを読む
次のページ