**Guix(開発用)**

2026/01/20 20:15

**Guix(開発用)**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Guix shell は、宣言された依存関係を自動的に隔離された空間にインストールすることで再現可能な開発環境の作成を簡素化します。これにより、開発者はリポジトリをクローンし、手動設定なしで

make
を実行できます。Ubuntu に Guix をインストールしたり、自身のディストリビューションとして使用する場合でも、数分で完了します。著者は、
guix.scm
ファイルが JavaScript の
package.json
と似た役割を果たし、必要なパッケージを列挙していると説明しています。
guix shell
を呼び出すと、これらのパッケージがサンドボックス化された環境にフェッチされます。
--pure
(ほとんどの環境変数をクリア)や
--container
(Docker のような隔離のために Linux 名前空間で実行)などのオプションフラグは、さらに隔離とセキュリティを追加し、ユーザーは現在のパスを
~/.config/guix/shell-authorized-directories
に追加してプロジェクトディレクトリをホワイトリストに登録できます。Guix は同じ
guix.scm
guix build -f guix.scm
guix package -f guix.scm
で使用することもでき、非対話的に実行可能なため、CI/CD ワークフロー(例:direnv または emacs‑direnv 経由)向けにスクリプト化できます。Guix は Docker、Nix、Python の virtualenv、Ruby の rvm/bundler、Node の nvm/npm などと競合しますが、これらの多くは言語固有であるかグローバルインストールを必要とするため、Ubuntu 上または自身のディストリビューションとしてマルチランゲージプロジェクトに統一されたソリューションを提供します。著者は direnv や Emacs などとの将来の統合可能性を示唆し、ユーザーが既存のワークフローに Guix を埋め込むか、Docker/Nix のような代替手段を選択することもできると提案しています。設定ドリフトの削減、オンボーディングの高速化、およびホワイトリストや名前空間隔離によるセキュリティ強化により、Guix は CI/CD パイプラインや共同開発環境での採用を促進する可能性があります。

本文

開発における Guix Shell のクイックスタートガイド


「オレンジ色の表紙で『Guix shell』と書かれているのを初めて見た時、Docker や仮想環境が既に存在する中で新しいツールに手間を掛ける意味はないのでは?」と思うかもしれません。
短い答えはこうです:Guix は強力な汎用パッケージマネージャーで、コンテナや VM を使わずに隔離された再現可能な開発環境を作成できます

以下では、実際に

guix shell
を使って新規プロジェクトのセットアップから Emacs への統合までを簡潔にご紹介します。


1. 現状の問題点

  • 手動で依存関係をインストール:過去は新しいプロジェクトごとにシステムパッケージを手作業で入れなければならなかった。
  • 言語専用ツール(virtualenv, rvm, nvm) はランタイムのみを管理し、OS レベルの依存関係は扱わない。
  • Docker は完全に隔離されるが、複雑さと余計なオーバーヘッドが発生することが多い。

2. Guix の解決策

Guix は任意のディストリビューション上で動作可能(または独立したディストリビューションとしても)です。主な特徴は次の通りです:

機能内容
guix shell
指定したパッケージだけを含む一時環境を起動します。
グローバルインストールなしパッケージはユーザー専用ディレクトリに置かれ、
/usr
には入らない。
--pure
/
--container
フラグ
必要に応じてさらに隔離を強化します。

3. 実際の例:Guile の SDL2 バインディング構築

  1. リポジトリをクローン

    git clone https://git.dthompson.us/guile-sdl2.git
    cd guile-sdl2
    
  2. ディレクトリを認証(セキュリティ)

    echo $PWD >> $HOME/.config/guix/shell-authorized-directories
    
  3. Guix シェルに入る

    guix shell
    
  4. 通常通りビルド

    ./configure
    make
    

追加の手順はプロジェクトディレクトリを認証するだけです。以降は

./configure && make
とすれば OK。


4. 背景で起きていること

guix shell
は現在のディレクトリにある
guix.scm
を自動的に探し読み込みます。このファイルはパッケージを記述した小さな Scheme プログラムです。

(use-modules (guix git)
             (guix packages)
             (guix licenses)
             (guix build-system gnu)
             (gnu packages)
             (gnu packages autotools)
             (gnu packages guile)
             (gnu packages pkg-config)
             (gnu packages sdl)
             (gnu packages texinfo))

(package
  (name "guile-sdl2")
  (version "0.7.0")
  (source (git-checkout (url (dirname (current-filename)))))
  (build-system gnu-build-system)
  (arguments
   '(#:make-flags '("GUILE_AUTO_COMPILE=0")
     #:phases
     (modify-phases %standard-phases
       (add-after 'unpack 'bootstrap
         (lambda _ (invoke "sh" "bootstrap"))))))
  (native-inputs (list autoconf automake pkg-config texinfo))
  (inputs (list guile-3.0-latest sdl2 sdl2-image sdl2-mixer sdl2-ttf))
  (synopsis "Guile bindings for SDL2")
  (description
   "Guile-SDL2 provides pure Guile Scheme bindings to the SDL2 C shared library via the foreign function interface.")
  (home-page "https://git.dthompson.us/guile-sdl2.git")
  (license lgpl3+))
  • inputs(実行時依存関係)と native‑inputs(ビルドツール)が宣言されます。
  • guix shell
    は必要な全ての依存パッケージをダウンロードまたはビルドし、その隔離環境内であなたのビルドルーチンを実行します。

5. 高度な隔離オプション

  • 純粋環境

    guix shell --pure
    

    ほとんどの既存環境変数(

    $PATH
    等)がクリアされ、Guix が提供するパスだけが見えるようになります。

  • コンテナモード

    guix shell --container
    

    Linux 名前空間を使ってホストファイルシステムから完全に隔離された状態でシェルを起動します(Docker に似ています)。

実際にはこれらのフラグはほとんど必要ありません。デフォルトの隔離設定で十分です。


6. 統合と自動化

direnv + Emacs

  1. direnv
    emacs-direnv
    をインストール。

  2. .envrc
    に追加:

    eval $(guix shell --search-paths)
    
  3. Emacs で

    direnv-mode
    を有効化。
    M-x compile
    make
    を実行すると自動的に Guix 環境が使用されます。

非対話型利用

guix shell -e 'make'  # 単一コマンドを実行

またはスクリプト用:

guix shell --pure --search-paths <<EOF
export PATH=$PATH:/my/custom/bin
make
EOF

7. 同じ
guix.scm
を使った代替コマンド

コマンド内容
guix build -f guix.scm
プロジェクトディレクトリ外でパッケージをビルド(欠落ファイルの検出に便利)。
guix package -f guix.scm
ビルドしたパッケージをユーザープロファイルにインストール。

8. 要点まとめ

Guix shell を使うと:

  • 必要なものだけを揃える(例:Guile 3, SDL2, make, texinfo)。
  • ホストシステムをクリーンに保つ。グローバルインストールやコンテナオーバーヘッドは不要。
  • 同じ
    guix.scm
    をビルド、パッケージ化、実行に再利用できる。

最後の一言

Docker や Nix など、あなたが最も使いやすいツールを選んでください。Guix はその中のもうひとつの選択肢として存在します。

同じ日のほかのニュース

一覧に戻る →

2026/01/26 4:03

まず、私に関心を持っていただけるようにしてほしいです。

## Japanese Translation: **改訂要約:** 著者は、ウェブサイト、個人の「Me」セクション、ブログを組み合わせた新しいプラットフォームを立ち上げました。外部リソースへのリンクとファンサポート用のPatreonページが特徴です。今後の計画としては、さらに多くのブログ投稿を追加し、リンク統合を拡大し、場合によっては追加のPatreonティアを作成することがあります。これによりユーザーはキュレーションされたコンテンツへ簡単にアクセスでき、クリエイターには追加収益源が提供されます。 (このバージョンではすべての主要ポイントを保持し、推測された業界全体のトレンド表現を削除しています。)

2026/01/26 9:10

**科学者たちが「あなた」の限界を決める脳波を特定**

## Japanese Translation: > 本研究は、頭頂皮質におけるアルファ振動のリズムが、人々がゴム手を所有していると感じる強さを因果的に形成することを示しています。スウェーデンの研究者66名とフランスの研究者43名が合計106名の被験者から脳波(EEG)を記録し、古典的なゴム手錯覚を体験させました。ロボットアームは実際の手と偽の手の両方にタップを打ち、タップの同期性は最大500 msまで遅延させられました。 > > 被験者はタップが同期しているときに最も強い所有感を報告し、遅延が増すにつれてその感覚が弱まりました。EEGからは、頭頂部のアルファ周波数が被験者の遅延検知能力と相関していることが明らかになりました:高速なアルファ波は小さな時間ギャップに対する敏感性を高め、一方で低速なアルファ波は大きなギャップが存在しても錯覚を強化しました。 > > 頭頂部のアルファ波を人工的に高速化または遅延させる経頭蓋交流電流刺激(tACS)を用いて、研究者たちは因果関係を確認しました——アルファ波を加速すると所有感が増し、逆に減速すると錯覚が弱まり、自分の手と偽手との区別が難しくなりました。 > > これらの結果は *Nature Communications* に掲載され、頭頂部のアルファ活動が身体所有感を構築する上で因果的役割を果たすことを示唆しています。精神疾患(統合失調症や幻肢痛など)の治療に寄与したり、ターゲットとした脳刺激によってよりリアルな義手や仮想現実インターフェースの設計指針となる可能性があります。

2026/01/26 0:34

**タイトル** 「姿勢が悪くなると画面をぼかす macOS アプリ」

## Japanese Translation: Posturrは、MacのカメラとAppleのVisionフレームワークを使用してリアルタイムで姿勢を監視する軽量macOSアプリです。鼻と肩の角度を測定し、全身ランドマークが利用できない場合は顔検出にフォールバックします。前かがみが検知されると、画面が徐々にぼかれます(デフォルトではmacOSのプライベートCoreGraphics APIを使用し、互換モードではNSVisualEffectViewにフォールバック)。良い姿勢が回復するとぼかしは即座に消えます。ぼかしの強度は「Low」から「Very High」に段階的に上昇し、デッドゾーン設定で軽微な前かがみを無視できます。 Posturrは完全にローカルで動作します:動画データはマシンを離れず、オンラインアカウントやクラウドサービスも不要です。MITライセンスのソースコードはコミュニティへの貢献を歓迎しています。メニューバーには小さなアイコンがあり、ステータス表示、監視の有効/無効化、再校正、感度調整、互換モード切替、デッドゾーン設定、またアプリ終了などが可能です。また、外部制御用に`/tmp/posturr-command`というファイルベースのコマンドインターフェイス(`capture`、`blur <0‑64>`、`quit`)も公開しています。 インストールは簡単で、Homebrew(`brew install --cask posturr`)を使用するか、リリースページから署名済みのDMG/ZIPをダウンロードします。ノタリゼーションされており、システム設定でカメラ権限が必要です。最適な結果を得るためには、カメラを目線レベルに位置させ、十分な照明を確保し、画面を向いて座り続け、肩が見えるようにしてください。Posturrはマルチディスプレイ環境にも対応しており、macOS 13+でXcode Command Line Toolsを使用してソースからビルドできます。 すべての処理をデバイス上で完結させ、プライバシー優先設計を提供することで、Posturrは姿勢モニタリングツールがユーザーのプライバシーを侵害せずにエルゴノミック支援を行う方法を示しています。