**HN(ハッカーナウ)投稿:C/C++向けにCargo風ビルドツールを作成しました**

2026/04/10 1:04

**HN(ハッカーナウ)投稿:C/C++向けにCargo風ビルドツールを作成しました**

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

要約

日本語訳:

Craft は、C/C++ の軽量でオープンソースのビルドヘルパーです。単一の

craft.toml
から自動的に
CMakeLists.txt
を生成し、プロジェクト作成と依存関係管理を簡素化します。

一般的なプロジェクトは、

craft.toml
、生成された
CMakeLists.txt
、ソース/インクルードディレクトリ、および必要に応じてカスタムロジック用のオプション
CMakeLists.extra.cmake
を含みます。

最新の CLI は

project
add
remove
update
build
run
gen
clean
などのコマンドを提供します。依存関係は
craft.toml
(Git URL またはローカルパス)で指定され、
.craft/deps/
にクローンされます;ツールは自動的に CMake を更新し、
path
git
tag
branch
links
などのフィールドをサポートします。

組み込みテンプレートには実行可能ファイル、静的ライブラリ、共有ライブラリ、およびヘッダーオンリー プロジェクトが含まれます。ユーザーは

~/.craft/templates/custom/
でカスタムテンプレートを作成または管理できます。グローバルデフォルト(
language
c_standard
cpp_standard
template
)は
~/.craft/config.toml
に保存されますが、プロジェクトごとに上書き可能です。

インストールは簡単で、提供された

install.sh
(macOS / Linux)または
install.ps1
(Windows)スクリプトを実行するだけです。Git と CMake が必要です。
craft init
コマンドは新規プロジェクトの scaffolding を行うか既存プロジェクトを移行し、事前に存在していた
CMakeLists.txt
はバックアップされます。

Craft は

craft upgrade
で自己更新でき、GitHub 上の新しいリリースを確認します。Issue やプルリクエストで貢献が歓迎されるため、コミュニティ主導型ツールとして手動 CMake スクリプトを削減し、チーム全体のオンボーディング速度を向上させます。

本文

C と C++ プロジェクト用の軽量ビルドツール – Cargo を想像して、C/C++ へ適応したもの。

Craft は CMake の摩擦を排除します。

craft.toml
という単一ファイルでプロジェクトを記述し、Craft が必要な CMake 設定を自動生成し、依存関係を管理し、シンプルなコマンドラインインターフェースを提供します。


Craft の仕組み

  1. craft.toml
    にプロジェクトを定義する。
  2. Craft が
    CMakeLists.txt
    を生成する。
  3. 依存関係は自動で取得される。
  4. CMake が裏でビルドを実行する。

簡単な例

# 新規プロジェクト作成
craft project my_app
cd my_app

# 依存関係を追加
craft add --git https://github.com/raysan5/raylib.git --links raylib

# ビルド
craft build

# 実行
craft run

Craft が解決する課題

  • 単一ファイルで設定完結

    [project]
    name = "my_app"
    version = "0.1.0"
    language = "cpp"
    cpp_standard = 17
    
    [build]
    type = "executable"
    include_dirs = ["include"]
    source_dirs = ["src"]
    
  • 自動依存関係管理

    craft add --path ../PhysicsEngine          # ローカル Craft プロジェクト
    craft add --git https://github.com/raysan5/raylib --tag 5.5   # Git から取得
    craft remove raylib                        # 依存関係を簡単に削除
    craft update                               # すべての依存関係を更新
    
  • 高速セットアップ用テンプレート

    craft template save my_game_template
    craft project new_game --template my_game_template
    

インストール

プラットフォームコマンド
macOS & Linux`curl -fsSL https://raw.githubusercontent.com/randerson112/craft/main/install.sh
Windows (PowerShell)`irm https://raw.githubusercontent.com/randerson112/craft/main/install.ps1

必要条件: git, cmake


インストール確認

craft --version
craft help

すぐに始める

craft project my_app
cd my_app
craft build
craft run

コマンドとドキュメント

コマンド説明
craft project <path>
craft.toml
,
src/
,
include/
などを含む完全なディレクトリ構造を作成します(スタート用 main も生成)。
craft init [path]
現在または指定したディレクトリに Craft プロジェクトを初期化。空、既存、移行ケースを自動判定。
craft build
必要なら
CMakeLists.txt
を再生成し、足りない依存関係を取得してから CMake でビルドします。
craft run [executable]
プロジェクトの実行ファイル(デフォルトは
craft.toml
に指定)を起動。
craft gen <file>
craft.toml
で最初に指定された include/source ディレクトリにボイラープレートコードを生成。
craft clean
build/
ディレクトリとコンパイル済みアーティファクトを削除。
craft add …
依存関係を追加。Git の場合は
.craft/deps/
にクローンされます。
craft remove <name>
craft.toml
から依存関係を削除し、該当するクローンも消去(あれば)。
craft update [name]
Git の依存関係を更新(固定タグはスキップ)。
craft template …
再利用可能なプロジェクトテンプレートを管理 (
save
,
delete
,
update
,
list
,
where
)。
craft config …
~/.craft/config.toml
に保存されたグローバルデフォルトの読み書き。
craft help [topic]
コマンド・サブコマンド、または
craft.toml
のヘルプを表示。
craft upgrade
Craft 自体を最新バージョンに更新。

内蔵テンプレート

テンプレート説明
executable
標準的な実行可能プロジェクト(デフォルト)。
static-library
静的ライブラリプロジェクト。
shared-library
共有ライブラリプロジェクト。
header-only
ヘッダーオンリーライブラリ。

例:

craft project my_lib --template static-library --lang c

craft.toml – 真のソース

[project]
フィールド

キー必須説明
name
はいプロジェクト名(実行ファイル名も同じ)。
version
はいSemVer 文字列、例:
1.0.0
language
はい
c
または
cpp
c_standard
いいえC 標準:
89
,
99
,
11
,
17
,
23
cpp_standard
いいえC++ 標準:
11
,
14
,
17
,
20
,
23

[build]
フィールド

キー必須説明
type
はい
executable
,
static-library
,
shared-library
,
header-only
のいずれか。
include_dirs
いいえインクルードパスに追加するディレクトリ(デフォルト:
["include"]
)。
source_dirs
いいえソースファイルを含むディレクトリ(デフォルト:
["src"]
)。
lib_dirs
いいえライブラリ検索パス。
libs
いいえリンク対象のライブラリ。

[dependencies]
フィールド

Craft が

craft add
/
craft remove
で管理します。例:

[dependencies]
my_lib = { path = "../my_lib" }
raylib = { git = "https://github.com/raysan5/raylib", tag = "5.5" }
json   = { git = "https://github.com/nlohmann/json", tag = "v3.11.2" }
SFML   = { git = "https://github.com/SFML/SFML",
           tag = "3.0.0",
           links = ["SFML::Graphics","SFML::Window","SFML::System"] }
キー説明
path
ローカル Craft プロジェクトへのパス。
git
クローンする Git URL。
tag
固定タグ。
branch
固定ブランチ。
links
CMake のリンクターゲット(Craft 以外のプロジェクト向け)。

注:

CMakeLists.txt
は自動生成されますので、直接編集しないでください。
カスタム CMake コードを追加したい場合は、プロジェクトルートに
CMakeLists.extra.cmake
を置くと、生成されたファイルの最後にインクルードされます。


グローバル設定

デフォルトは

~/.craft/config.toml
に保存されています。

[defaults]
language     = "cpp"
c_standard   = 99
cpp_standard = 17
template     = "executable"

新規プロジェクト作成時に使用され、

craft.toml
の設定が優先されます。


一般的なディレクトリ構造

my_app/
├── craft.toml
├── CMakeLists.txt           # Craft が生成。直接編集しないでください。
├── CMakeLists.extra.cmake   # 任意、カスタム CMake コードを追加
├── build/
├── include/
├── src/
│   └── main.cpp
└── .craft/
    └── deps/                # Git 依存関係がクローンされる場所

貢献

Craft はオープンソースでコミュニティ主導です。
Issue や Pull Request を通じてぜひご協力ください。

同じ日のほかのニュース

一覧に戻る →

2026/04/10 4:48

macOSでのネイティブ即時空間切り替え (Note: The phrase “Instant Space Switching” refers to the feature that allows users to switch between virtual desktops or spaces instantly. In Japanese, it is often rendered as 「即時スペース切り替え」.)

## Japanese Translation: ## Summary 著者は、macOS が即時の Space 変更をサポートしない理由を説明し、Apple の唯一の組み込み回避策である「Reduce motion」が単に問題をフェードアニメーションに置き換えるだけでなく、ブラウザの prefers‑reduced‑motion 設定もトリガーすることを指摘しています。他の解決策には欠点があり、yabai は即時切替を可能にしますが System Integrity Protection (SIP) を無効化し、タイル方式を学ぶ必要があります。FlashSpace と AeroSpace はネイティブではなく不要な複雑さを追加します。BetterTouchTool は「Move Left/Right Space (Without Animation)」機能を提供しますが、有料ライセンスのみで利用可能です。 著者は **InstantSpaceSwitcher**(GitHub: jurplel/InstantSpaceSwitcher)というメニューバーアプリを発見しました。このアプリは SIP を無効にせずに即時の Space 変更を実現します。高速トラックパッドスワイプをシミュレートし、コマンドラインインターフェース(`ISSCli`)を通じてユーザーが直接特定のスペース番号へジャンプできるようにします。 **インストール手順:** ``` git clone https://github.com/jurplel/InstantSpaceSwitcher cd InstantSpaceSwitcher ./build.sh ``` ビルド後、`.build/release/ISSCli --help` を実行して `[left|right|index <n>]` などのコマンドを確認してください。リポジトリは GitHub スターが1つしかありません。著者は役立った場合にスターを付けるよう読者に奨励しています。 別プロジェクト **instantspaces** は yabai のスイッチャーを分離しようとしますが、著者の macOS Tahoe では機能しませんでした。読者は新しい macOS リリースで InstantSpaceSwitcher または instantspaces が成功したかどうか報告することが推奨されています。

2026/04/10 5:12

チャルクテリー – 視覚的類似性を探るUnicodeエクスプローラ

## Japanese Translation: **改訂要約** Charcuterie は Unicode 文字セットのウェブベースのビジュアルエクスプローラーで、ユーザーがグリフを閲覧し、関連するシンボル、スクリプト、および形状を発見できるツールです。各グリフは描画され、ベクトル空間に埋め込まれ、類似度計算を用いて視覚的に似ている文字をグループ化します―すべてブラウザ内で完結します。このプロジェクトは積極的に開発中です。ユーザーからのフィードバックを歓迎し、継続的な改善を支援するための寄付も奨励しています。© 2026 David Aerne.

2026/04/10 5:10

Gemini の SynthID 検出機構のリバース エンジニアリング

## 日本語訳: > **概要:** > 本プロジェクトは、Google の Gemini が生成するすべての画像に埋め込む Spectral SynthID ウォーターマークを検出・除去する高忠実度手法を示しています。ウォーターマークを逆解析した結果、解像度依存性(キャリア周波数が画像サイズとともに変化)であること、および Gemini モデルごとに固定の位相テンプレートが存在し、クロスイメージ位相共鳴率が 99.5 % 超、黒/白検証時には |cos(phase_diff)| が 0.90 を超えることが判明しました。 > 研究者は、解像度ごとにキャリアプロファイルを保存するマルチレゾリューション SpectralCodebook(V3)を構築し、バイパスアルゴリズムではチャネル重み G=1.0、R=0.85、B=0.70 を用いて 3 回のパス(攻撃的 → 中程度 → 穏やか)で位相整合性付きの加重減算を行います。これによりキャリアエネルギーが約 75.8 % 減少し、トップ5 キャリア位相共鳴率が 91.4 % 降低され、1536×2816 画像で PSNR >43 dB、SSIM ≈0.997 の視覚品質を保持します。これは以前の V1(JPEG Q50、37 dB)や V2(27–37 dB)の試みと比べて著しい改善です。 > リポジトリにはコードブック構築用スクリプト (`synthid_bypass.py build-codebook`)、V3 バイパス実行、ウォーターマーク検出用 (`robust_extractor.py detect`) が含まれています。貢献者は、Nano Banana Pro を使用して様々な解像度で純黒(#000000)と純白(#FFFFFF)の画像を生成し、コードブックをさらに充実させることが推奨されています。 > すべてのツールは学術研究専用に公開されており、SynthID は依然として Google DeepMind の独自技術です。 この改訂版は主要ポイントを網羅し、根拠のない推測を排除し、読者向けに明確で簡潔な概要を提示しています。

**HN(ハッカーナウ)投稿:C/C++向けにCargo風ビルドツールを作成しました** | そっか~ニュース