blog.ryota-ka.me

Nix flake から private なリソースにアクセスする

Keywords:

HERP では,開発体験の向上のため,順次 flakes の導入を進めている.「次世代の Nix」とでも呼ぶに相応しい flakes は,未だ実験的な機能と位置付けられているものの,従来の Nix では保証し切れなかったより高いビルドの再現性や,統一的なインタフェースの規定,刷新されたコマンド体系など,様々な改良が盛り込まれている.

再現性への追求に対する代償として,flakes は純粋性に関して従来よりも厳しい制約を設けている.特に netrcImpureEnvVars が利用できないため,private なリソースにアクセスしたい場合に前回の記事で紹介した方法が利用できない.そこで本稿では,flake から private なリソースにアクセスする方法を紹介する.

続きを読む

reCAPTCHA Enterprise をアプリケーションに導入する

HERP Hire には利用企業の求人ページや応募フォームを作成できる機能があり,スパムによる応募を防ぐため reCAPTCHA を導入している.HERP では昨今,求人ページおよび応募フォームのリプレイスを進めているため,新たに開発されたコンポーネントにも reCAPTCHA を導入する必要性が生じた.それに際して,以前から利用していた reCAPTCHA v3 ではなく reCAPTCHA Enterprise を導入することになった.

reCAPTCHA Enterprise の導入にあたっては非自明に感じられる箇所が多く,いくつか苦労した点があった.そのため,同様の実装を行う必要に迫られた開発者が同じ轍を踏まぬよう,大まかな手順を記しておくことにした.

前提として,今回の事例では,バックエンド (BFF) は Node.js により実行され,Amazon Web Services 上にデプロイされている.

続きを読む

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 フロントエンドエンジニアを積極的に募集しているが,仮に入社したとしてどのような仕事をすることになるかのイメージが付いた方が,検討の候補に入れてもらいやすいのではないかという目論見による.また,採用している技術スタックにも珍しいものがあるため,単純に読み物として楽しめるかもしれない.なお,開発の実情について知ってもらうのが目的であり,実装の良し悪しについて議論することは目的としていない.

続きを読む
次のページ