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

続きを読む
次のページ