ヒ素:リスマシンから派生し描図テーブルから進化した CAD ソフトウェア(2015)

2026/11/02 17:29

ヒ素:リスマシンから派生し描図テーブルから進化した CAD ソフトウェア(2015)

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

要約▶

Japanese Translation:

サマリー:

Antimony は、MIT の Bits and Atoms センターで開発された強力なオープンソースのコンピュータ支援設計(CAD)ツールであり、パーソナル規模の CAD/CAM ワークフローに関する研究から発展したものです。2014 年秋に「How to Make Almost Anything」という書籍で紹介され、世界経済フォーラムにてデモが行われましたが、現在はベータ版の安定性を維持しています。Antimony は 3 つの主要な軸を基盤としており、カスタマイズ可能な Python スクリプトを利用したグラフエンジン(変更が自動的に伝播する)、boolean 演算に最適化されたジオメトリエンジン、attract、repel、bend などの組み込みコンポーネントからなる標準ライブラリを備えています。このアーキテクチャにより、ユーザーは複雑な多部品アセンブリを作成でき、GitHub に公開されているソースコードを通じてカスタム形状を定義できます。本ツールは 2.5D プロセス用にはハイトマップの出力、3D マニュファクチャリング用には STL ファイルの出力をサポートしています。高価なライセンスを必要とするプロフェッショナルソフトウェアとは異なり、Antimony はメイカースペースや趣味を持つ者にとって、デジタル的な創造性を物理的な生産と接続するためのスケーラブルで手頃な価格のソリューションを提供します。

本文

アンチモニー:Lisp マシンを起点とした CAD ツール

アンチモニー(Antimony)は、描画台を起点とするのではなく、Lisp マシンを原点として CAD ソフトウェアが進化してきたという並行宇宙に属するコンピュータ支援設計(CAD)ツールです。

基礎構造

アンチモニーは、概ね相互独立の 3 つの軸の上に構築されています:

  • 情報フロー追跡: 有向非巡回グラフ(DAG)を介したデータの流れを追跡するためのフレームワーク
  • ジオメトリエンジン: CSG(コンストラクティブソリッドジェオメトリ)を実行するモジュール
  • 標準ライブラリ: シェイプと変換操作のための実装

グラフエンジン

アンチモニーにおけるソリッドモデリングは、グラフ上のノードを接続することで実現されます。

  • ノード定義: 各ノードはカスタマイズ可能なスクリプトで記述されます。
  • 言語仕様: Python 3.x を採用しており、いくつかの特別なマージンキーワードを追加しています。

コード例:円形ノードの定義

以下のコードは、入力ポートから変数を受け取り、

fab.shapes.circle
関数を呼び出して出力ポートにシェイプを生成する例です。

import fab.shapes

# 入力ポートを定義する
# (変数をローカル名空間に注入します)
input('x', float)
input('y', float)
input('r', float)

# 標準ライブラリの 'circle' 関数を呼び出す
# 入力ポートから传入された変数を使用する
c = fab.shapes.circle(x, y, r)

# 円形シェイプを生成する出力ポートを作成する
output('shape', c)
  • 通常動作: ノードは基本シェイプまたは変換を表し、リンクは追跡されます。変化は自動的に下流へ伝播します。
  • 拡張性: グラフエンジンは複雑な多部品組立にも拡張可能です。

ジオメトリエンジン

アンチモニーのジオメトリエンジンは、ソリッドモデリングに関数型表現を採用しています。

  • ブール演算: 合体/共通部分/差集合を用いたモデリングに特に適しています。
  • レンダリング: アプリケーション内では、ジオメトリエンジンがシェイプを陰影付きビットマップとしてレンダリングし、それを 3D ビューポート上に重ね表示します。

ファイル出力

アンチモニーは以下の形式を出力できます:

  1. ハイトマップ: 2.5D プロセス向け
  2. .stl ファイル: 3D 製造向け
    • 特徴検出機能により、角やエッジを鋭敏に保つ処理が含まれています。

標準ライブラリ

アンチモニーの標準ライブラリは、基本的な操作から特殊な操作まで多様なシェイプと変換を定義しています。

  • 基本操作: 回転、スケール、ブール演算など
  • 特殊操作: 引き寄せ、反発、曲げなど
  • ノード定義: シェイプは入力・出力ポートを追加し、オプションで UI 機能も定義できます。

コード例:UI 機能を定義するノード

import fab

title('Rectangle')

input('xmin', float)
input('ymin', float)
input('xmax', float, 1)
input('ymax', float, 1)

output('shape', fab.shapes.rectangle(xmin, xmax, ymin, ymax))

# UI
sb.ui.wireframe([(xmin, ymin, 0), (xmax, ymin, 0),
                 (xmax, ymax, 0), (xmin, ymax, 0)], close=True)
sb.ui.point(xmin, ymin, 0)
sb.ui.point(xmax, ymax, 0)
  • 表示: 3D ビューポートにおいて、スクリプト下部で定義された UI 機能は長方形のレンダリングの上に描画されます。
  • インタラクション: UI 機能はグラフへと接続されており、角にある点をドラッグすると、グラフノードへの変更が即時反映されます。

カスタムシェイプとプレフィックス文字列

多くのユーザーは組み込みシェイプで十分ですが、カスタムシェイプの定義も可能です。シェイプはパースしやすい一方で、解読にはやや難解なプレフィックス文字列構文を使用します。

円形シェイプの定義例

def circle(x0, y0, r):
    return Shape(
            '-r+q-Xf%gq-Yf%gf%g' % (x0, y0, r), # 数学表現文字列
            x0 - r, y0 - r, x0 + r, y0 + r)     # 境界値

構文の階層展開

プレフィックス文字列を展開した構造は以下のようになります:

-
  r
    +
      q
        -
          X
          f%g
      q
        -
          Y
          f%g
  f%g

数式の意味

% (x, y, r)
は、円の中心座標 $(x_0, y_0)$ と半径 $r$ を指定します。これは 2 次元円の距離場表現をエンコードしており、以下の式に対応します:

$$ f(x,y) = \sqrt{(x - x_0)^2 + (y - y_0)^2} - r $$

  • $f(x,y) > 0$: 円の外側
  • $f(x,y) < 0$: 円の内側

プレフィックス文字列からインプレックス関数への正確なマッピングについては、読者の練習問題として扱いか、あるいは著者の論文附属記号 A を参照してください。

ダウンロードと開発環境

ダウンロード

  • Mac アプリケーション: GitHub のリリースページより事前構築版を入手可能です。
  • ソースコード: GitHub で公開されており、Mac および Linux 向けのビルド手順が記載されています。

開発状況

アンチモニーは現在も積極的に開発が続けられている長寿プロジェクトです。

  • 安定性: 堅牢ではあるものの、ミッションクリティカルな用途には推奨されないベータレベルの安定性を有しています。
  • コントリビューション: 参入障壁は低めです。基本的な Python の知識があればカスタムノードの作成が可能です(例:RobotGrrl 氏による HSB カラーノードなど)。

今後の課題(C++ 経験者向け)

より野心をお持ちで C++ の経験もある方は、以下の改善点を検討できます。

  • レンダリング速度の向上
  • UI の見直し
  • グラフ評価の最適化

歴史的背景

アンチモニーは、MIT ビット・アンド・アトムズセンターでの個人規模の CAD/CAM ワークフローに関する研究活動から発展しました。これは、

cad_ui
や
kokopelli
を含む一連のソフトウェアにおける最新ツールであり、
fabserver
の影響を受けています。

主要な更新時期

  • 2014 年初頭: 世界経済フォーラムでのデモ用として開発開始。
  • 2014 年秋: 「何でもつくれるようにするために」を目的に更新。
  • 2015 年: Fab Academy 2015 年版と連動したアップデート。

プレスとディスカッション

アンチモニーに関する主要な記事や議論は以下の場所で見ることができます:

  • Hackaday: 解説記事
  • Libre Graphics World: インタビュー
  • Hacker News: 技術的な議論

同じ日のほかのニュース

一覧に戻る →

2026/11/04 6:40

生成 AI の基礎:直感的な数学入門の小さな本

## Japanese Translation: 本書は、現代の生成人工知能の数学的基盤に対するコンパクトかつ導出志向的な導入を提供する。主となるモデルファミリー—including 主成分分析(PCA)と確率的 PCA、変分オートエンコーダー、正規化フロー、自己回帰的因数分解、拡散モデル、Wasserstein GAN、GAN、エネルギーベースモデル—to れらの間の深い相互関係を明らかにするために関連する概念を開発する。本書の目的は、生成モデリングの構造を理解しやすくしつつ、モデルの導出と関係性を理解するために必要な数学的な実体も保持することにある。本書は、数学に興味を持つ研究者、実践者、学生のための基礎構築用の入門書として機能する。メタデータには提出履歴が反映されており、v1 バージョンが 2026 年 5 月 28 日に(125 KB)、v2 バージョンが 2026 年 9 月 8 日に(1,168 KB)提出された。改訂を通じて、コアなミッションは元のドラフトと一貫して維持されている。

2026/11/04 6:51

PostgreSQL の内部構造

## Japanese Translation: 弘野博文氏のテキストの核心となるメッセージは、PostgreSQL と機械学習統合に特化した国際的なリモート職へのターゲットされた求人情報であり、ヨーロッパ、南半球、または東南アジアでのビザスポンサシップを具体的に要請しています。彼は最近の一時滞在からの回復後、日本に長期的に住み続ける意図を持っています。鈴木氏は、広範な技術的作業に対する商業契約を明確に提供しており、売上利益共有(売上 20%)または完全な買収(5,000,000 ユーロ)を含みます。彼の主要プロジェクトである「PostgreSQL の内部構造」は、2015 年 9 月 26 日に最初に公開され、バージョン 19-beta 以前の版本をカバーしています。最近の更新には、2026 年 5 月 1 日に出版された第 12 章(「論理的複製」)、2026 年 6 月 28 日に出版された 8.5 セクション(「非同期 I/O」)、および 2024 年 12 月 14 日に追加された第 11.2.4 セクションの衝突が含まれています。教育機関はこれらの教材の研究のために無料アクセスが与えられています。過去の XZ バックドア事件に関連する匿名脅威による過去のため、鈴木氏は連絡問い合わせを受諾する前に 2 つの SNS アドレスによるソーシャルメディアの認証を厳格に必要としています;匿名メッセージはもう受け入れられていません。

2026/11/04 6:39

Safari が 27.3 で適応型ダークモードを導入

## Japanese Translation: Apple は Safari 27.3 ベータ版で Adaptive Dark Mode を導入しました(ダークモードサポートは当初 Safari 12.1 で提供開始)。この機能は、明るい色のウェブサイトをダークなシステムインターフェース内でも表示できるようにすると同時に、既存のレイアウトを崩さずに処理することを目的としています。ページの色を自動的に解析し、色相を保ちながら輝度を反転させる高度なカラーマトリックスを採用し、アクセシビリティ向上のため WCAG 4.5:1 のコントラスト比を目標としています。以前のバージョンでは開発者のサポートがなかったためトラフィックの約 40% しかダークモードを利用できず(ネイティブ対応サイトは約 10%)、この新たなベータ版では既存コンテンツを自動的に適応させます。システムは SVG をピクセルヒストグラムで処理し、mix-blend-mode などのエフェクトによる視覚的な不具合を防ぐためにビットマップロゴを変換しますが、パフォーマンスとプライバシーを確保するため `<canvas>` コンテンツは変更しません。ユーザーが電力効率の向上から恩恵を受ける一方で、機能はユーザーのプライバシーを最優先としており、JavaScript の色クエリやキャンバスレンダリングも元の色を保つように設計されており、ウェブサイト自身でも検知不可能です。開発者には最適な互換性を得るために透明な背景など現代的な実践を採用するよう推奨されていますが、現時点では特定のメタタグを使用して変換から opting out(除外)することは可能でありながら、Safari 27.3 ベータ版 1 ではこの目的で"light only"キーワードをサポートしていません。