Zigの4ヶ月間

2026/10/28 5:13

Zigの4ヶ月間

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

要約▶

Japanese Translation:

4 年ぶりに Zig に戻り、著者はその言語へのコミットメントを熱心に再確認し、明示的なメモリ管理、飛躍的な高速さを持つ増分ビルド、そして依存ライブラリの数が極めて少ない点を、Rust や C++ などの代替手段を上回る優位点として賞賛しました。再関与の期間中に、著者は未発表の 2 つのプロジェクト(TUI タイプライターのレースと n 体シミュレーター)を作成しましたが、内蔵のファッザーが機能しない問題に遭遇しました。この時期のハイライトは、

curl
に似た小規模なネットワークプロトコルクライアントである snurl への取り組みであり、友人の Evin Yulo と協力して TLS バックエンドを統合する作業が含まれました。著者はまた Zig Day Seattle に参加し、Andrew Kelley と会話を交わしました。著者は現在における限界(増分コンパイルのクロスプラットフォーム対応は現状 Linux/macOS での x86_64 のみ)や文書の深度不足といった点は認めていますが、anyzig などのツールを使ってバージョン切り替えを管理することに成功したことを指摘しています。今後の展望としては、1.0 リリース前の標準ライブラリの安定化、ローカル変数の返却に関するリンティングの改善、そして高パフォーマンスタスクのためのファーストチョイス言語として Zig への継続的なコミットメント、明晰さと効率性を重視するコミュニティの育成が含まれています。

本文

Zig を使い直して 4 ヶ月:気に入った点と改善への期待

2026 年 10 月 27 日に公開された記事です。数ヶ月の離脱期間を経て再参画を果たし、Zig で開発を続けてきた著者の体験談・考察まとめました。

🚀 プロジェクト活動

snurl の開発

  • 目的: SmallNet (Gemini, Finger, Gopher, Spartan など) と対話するためのライブラリ。Curl の代替手段として、より小規模でテスト・ファズジング(fuzzing)要件を満たすことを目標としている。
  • デザイン方針: 基本的な「TigerStyle」に沿うよう心がけている。
  • 現在の課題:
    • 初期段階でファズジャーが機能しなかった。
      zig init
      でデモとして生成されるコードに問題があったため驚いた。
  • 追加プロジェクト:
    1. タイパーレースゲーム: TUI を用いた最小限の動作を実現したシンプルなもの。
    2. N ボディ問題シミュレーター:
      raylib
      を使用し、星の進化を可視化。

🎉 Zig Day の体験(シアトル)

イベント概要

  • 場所: シアトル(当初は Bellevue ライブリーだったが、混雑のため Bothell ライブリーへ移設)。
  • 内容: ローカルなミーティング形式。プロジェクトの共有や議論を行う場。
  • 来賓: Zig の創始者である Andrew Kelley 氏の出席があった。

エピソード

  • snurl の開発:
    snurl
    の開発を決め、友人の Evin Yulo も参加。
    • 成果: Zig の標準ライブラリに組み込まれている TLS 実装を別のバックエンドとして統合する作業を開始。
  • Andrew Kelley 氏との対話: ファズジャーの修正などについて話し合いを行った。

コミュニティへの影響

  • ローカルなイベントにより、コミュニティ全体と強く結びつく感覚がある。
  • 創始者と直接接できる貴重な機会。
  • 他者のプロジェクトを通じた思想交換が、プロジェクトの強化につながる。

✨気に入った点(Pros)

1. anyzig

  • 特徴: Zig master ブランチと特定バージョン(例:0.16.0)を共存させつつ利用可能にするツール。
  • 懸念点:
    build.zig.zon
    が存在しないディレクトリ外では動作しないため、グローバルな自動フォーマットスクリプトには向かない。

2. IO とアロケータ(Allocator)

アロケータについて

  • 明示性の高さ: 関数に明示的にアロケータ引数を渡す設計を好む。
    • ローカルコンテキストやアリーナ型、汎用アロケータを使い分けられる。
    • Odin のような暗黙的システムよりも、メモリ割り当ての有無を一目で判別できる点が優れている。
    • Rust の「失敗しない(パニック)アロケーション」に対しては、明示的な管理を推奨する点で同意できる。

IO パラメータについて

  • 強力な抽象化: すべての変数(例外を除く)が「IO」引数を必要とする。
    • OS 移植の負担を軽減する(OS 実装を変えるだけで大半の動作が変わらない)。
    • テスト写作:テスト用の IO インスタンスを用意することで、入力・出力や失敗シミュレーションが容易になる。
    • 純粋性(副作用の有無)の可視化: 外部状態を変更するコードが一目でわかる。

3. Comptime

  • メタプログラミングと事前計算をシームレスに行える。

4. ビルドシステム

  • Uber 社など大企業が採用するほど優秀なシステム。
  • コード生成プロジェクトとの統合が容易(Cargo との比較で優れている)。

5. 依存関係文化

  • 理念: 「避ける」。不要なら追加しない。
  • 実装: 必要な場合は
    translate-c
    で既存の実戦テスト済みライブラリを容易に統合可能。
  • 監査性: 外部依存関係を簡単にベンダー化(vendoring)でき、コードが自走する。
  • 結果: 多くのプロジェクトで直接・間接依存関係がほぼゼロになり、管理が容易になる。
    • Rust のように
      serde
      や
      syn
      などの多様なライブラリに依存せず、本質的な機能(反射、乱数生成など)は言語自体に含まれているため。

6. エラーハンドリング

  • シンプルさ:
    try
    キーワードと戻り型の
    !
    でエラー処理を行う。
    • Rust の
      ?
      や
      unwrap()
      に比べ、依存関係を追加せずに管理できる。
    • パニックをコードに埋め込まずに済む(Rust プロトタイピングでの問題点)。

7. 増分コンパイル

  • 高速さ:
    zig build --watch -fincremental
    を実行すれば、変更箇所のみを素早くリンクする。
    • Rust の一般的な数秒かかる増分コンパイルループに比べ、人間の知覚速度以上で動作する。
    • 保存直後のフィードバックが即座に得られ、生産性のギャップが解消される。
  • 注意: 現時点では Linux/macOS (x86_64) のみがサポートされている。

🛠望むこと(Cons & Improvements)

1. 安定性の向上

  • 標準ライブラリの安定化は 1.0 リリースの最重要課題。
  • エコシステムの破損にはストレスを感じ、Rust を一部のプロジェクトで使い続ける理由の一つでもある。
  • ただし、不稳定性を上回る利便性があり、最終版の 1.0 を楽しみにしている。

2. ライフタイムのサポート強化

  • デバッグ機能: ローカル変数を返す際のリック(leak)防止を組み込み的に実現する必要がある。
    • 関数終了後のメモリ無効化処理が自動的でない場合、将来重大なバグの原因になる可能性がある。
  • 現状の課題:
    // 現在:コンパイラによりブロック範囲外でもスコープ全体で生存させられる(潜在的不具合)
    const foo = blk: {
        var buf: [1024]u8 = undefined;
        const n = try writeToBuf(&buf);
        break :blk buf[0..n]; // バッファが無効化されないリスク
    };
    

3. ドキュメントの充実

  • 現状: 入門には十分だが、深掘りするにはコメント解读が必要。例題が稀。
  • 影響: 堅牢なプログラム構築のための知識が Web に分散しており、コミュニティへの依存度が高い。
  • 期待: LLM 時代の人間協調を考慮し、良心的な文書化とコミュニティ支援の強化が必要。

4. Comptime アロケータ

  • 現状の問題: コンパイル時に JSON を解析したい場合(静的データ)、標準ライブラリの JSON パーサーは実行時アロケータが必要で対応できない。
    • FixedBufferAllocator
      がコンパイル時に動作できるはずだが、現在の環境では機能していない。
  • 期待: アロケータ不要のコンパイル時 JSON パーサーの実装。

5. より良いブートストラッププロセス

  • 現状の課題:
    • C++ コンパイラを消去し、WASM を通じたブートストラップを採用しているが、完全なソースコードの利用性を損なうリスクがある。
    • Debian などのディストリビューションで正しくパッケージ化できないため、利用範囲が制限される。
  • 将来展望: 安定版(1.0)以降では、別の言語(おそらく C)による別コンパイラの構築が期待され、ブートストラップの改善が必要。

🔮 将来への展望

継続的な使用と貢献

  • スタンス: 他の言語よりも Zig を好む。安定性も十分であり、引き続き主要な開発言語として利用する予定。
  • プロジェクト例: Rust から移植予定の
    ReTangled
    (巨大依存ツリーからの脱却)。

コントリビューション活動

  • 意欲: ソフトウェアエンジニアとしての技術還元と影響力を持ちたい。
  • 課題: コントリビューター数の増加と文書化不足への対応。
    • Andrew Kelley 氏のオンボーディング改善方針を期待している。

コミュニティ参加

  • シアトルの次期 Zig Day を確実に参加する予定。
  • より多くの人々とプロジェクト開発に携わる機会を楽しみにしている。

同じ日のほかのニュース

一覧に戻る →

2026/10/28 1:06

ジェニー 4

## Japanese Translation: 提供された入力データは、二進データ、制御文字およびランダムなバイト列のみを含んでおり、これは破損したファイルまたは無効なエンコーディングである可能性が高く、可読な英語テキストではありません。そのため、このソースから IT ニュース、検証可能なレポート、業界動向、市場インサイト、企業活動、物語的文脈、または将来の予測を抽出することはできず、ファイルを修復するか、有効なテキストで置き換えるまでには至りません。

2026/10/28 1:51

Ghostty 1.4

## Japanese Translation: 以下の改良された要約は、完備性を保ちつつ明確さを維持するために、すべての主要なポイントを統合したものです。 **Improved Summary:** Ghostty 1.4.0 は、完全な Kitty グラフィックス互換性の実装により転換点となるリリースであり、スクロールバック圧縮を通じたメモリ使用量の大幅な最適化および macOS I/O パフォーマンスの向上を実現しています。このバージョンは、公式 CVE ナンバーリングは待機中ですが、ペースト保護バイパス、悪意のあるグラフィックスによるクラッシュ、tmux 制御エクスプロイト、そして不安全なハイパーリンクを含む重大なセキュリティ脆弱性を解消しています。戦略的な大きな転換点は、ネイティブの Windows GUI ロードマップを断念し、代わりに Windows への導入がクロスプラットフォームの `libghostty-vt` ライブラリに依存することにあります。このライブラリは macOS、Linux、Windows のサポートに加えられ、1.0 リリースを目指して更新されています。プロジェクトはまた、最初の 2 つの契約を通じて長期的な資金調達が完了しました。ただし、Ubuntu 24.04 ユーザーは厳格化された GTK 4.18 要件により即座の互換性の障壁に直面しており、旧バージョンの使用か Flatpak を通じて利用する必要があります。主要な新機能には、完全な Kitty クリップボードプロトコルサポート(画像/HTML)、プログラムステータス報告のための最初のターミナル仕様、`ghostty +ssh` を通じた強化された SSH 統合、および xterm/esctest 準拠の向上が含まれます。ビルドツールチェーンは Zig 0.17 に更新されました。macOS 27 (Golden Gate) のサポートが追加され、macOS 13 (Ventura) は 2025 年秋まで引き続きサポートされます。最後に、このリリースにはバスク語、ベラルーシ語、デンマーク語、セルビア語のローカライゼーションが含まれています。

2026/10/26 3:49

動くインク滴がニコン・スモール・ワールドコンテストで最高賞を受賞

## Japanese Translation: オレ・バイエルフルドットが、インクジェットプリンタが紙にインクを吐出する様子を捉えた着想豊かな顕微鏡写真により、第52回ニコル・スモールワールド競技大会の優勝者に選ばれました。これにより、顕微鏡が科学的発見と芸術的創造性の両面で強力なツールであることを証明しました。 Nikon Instruments のスポークスマンであるエリック・フレムは、同作が技術的な精密さと芸術性を巧みに融合させ、普通に見える物体にも新たな視点を明らかにしていることを称賛しました。 この成成は、1974年の創立以来の競技大会史上における重要なマイルストーンとなり、2011年に伝統的な写真撮影に並行してフォトビデオグラフィーを導入した「Small World in Motion」カテゴリーのような過去の革新を偲ばせます。上位10名の受賞者が発表され、オンライン上で功労者メンションを含む完全なリストが公開されています。 今後を見据えて、ニコンはこの勝利を祝うために、バイエルフルドットの特定の画像を2027年のフルカラーカレンダーの主たる芸術作品として採用する予定です。 このカレンダーには、直近の2026年競技大会の結果から選出された画像がまとめられています。 この認識は、ニコンのブランドアイデンティティを強化するだけでなく、写真界に新しいインスピレーションを提供し、標準的な実験室用途を超えた顕微鏡 objetiva の新奇かつ創造的な利用を探求することを促すものです。