Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新

May 22, 2025 - 日記

dotenvx: 環境変数管理を快適にするツール

dotenvx-intro cover image

環境変数管理ツール「dotenvx」を最近プロジェクトで導入したので、基本機能や使い方、他ツールとの違い、実際の活用シナリオなどをまとめてみます。普段は python-dotenvdirenv などを使ってきましたが、dotenvxはCLIの使い勝手やCI/CDとの親和性が高く、個人的にかなり気に入っています。

May 8, 2025 - 日記

gitcache:大規模リポジトリの操作を高速化するローカルキャッシュツール

gitcache cover image

大規模なGitリポジトリを扱う場合や、同じリポジトリの複数のクローンを作成する場合、ネットワーク帯域幅とディスク容量の消費が問題になることがあります。今回は、これらの問題を解決するための便利なツール「gitcache」を紹介します。

gitcacheとは

gitcache は、Gitリポジトリのローカルキャッシュを提供するツールです。大規模なリポジトリや複数のクローンを扱う際のパフォーマンスを向上させることを目的としています。

基本的な考え方は、ローカルにベアミラーを作成し、必要に応じて更新して、それを複数のローカルリポジトリのソースとして使用するというものです。

May 5, 2025 - 日記

Docker: コンテナからホスト上のコマンドを実行する方法

run-command-on-host-from-container cover image

nsenterコマンドを使ってDockerコンテナからホスト上のコマンドを実行する方法について紹介します。

nsenter を使ってホストのネームスペースに入る

コンテナを特権モードかつホストの PID ネームスペース共有で起動し、nsenter を用いるとホストのルートプロセス(PID 1)のネームスペース内でコマンドを実行できます。

1
2
3
4
5
docker run -it --rm \
  --privileged \
  --pid host \
  debian:stable-slim \
  nsenter -t 1 -m -u -n -i bash

nsenter コマンドは、既存のプロセスが属する名前空間(namespace)内で指定したプログラムを実行するためのコマンドです。オプションで指定したPIDのプロセスが持つマウント、UTS、IPC、ネットワーク、PID、ユーザー、cgroup、timeなどの名前空間に入ります。プログラムを指定しない場合はデフォルトで${SHELL}(通常は/bin/sh)が実行されます。

Jan 9, 2025 - 日記

AIによるスペックテストの変更をガードする方法

python-guard-spec-testcases cover image

テスト駆動開発(TDD)では、顧客の分析された顧客の要求仕様をテストケースとして初期段階に完成させますが、 開発者やAIがこのテストケースを変更してしまってはTDDの意味がありません。

本稿では、Pythonの pytest を使ってテストを書いている中で、顧客レビュー済みのスペックテスト(仕様テスト)を開発者が変更してしまうのを防ぐためのアイデアをご紹介いたします。