**スラグの十年**

2026/03/18 3:59

**スラグの十年**

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

要約

日本語訳


要約

Slug アルゴリズムのライブラリは十周年を迎え、パブリックドメインに移行しました。これにより開発者はライセンス費用から解放され、強力な GPU‑direct テキストレンダリングが提供されます。2016 年秋に開発され、2017 年中頃に JCGT に論文が掲載され、その直後に Slug ライブラリのバージョン 1.0 が公開されました。

主要な技術的進歩

  • ダイナミック拡張(Dynamic Dilation):MVP 行列とビューポート寸法を用いて頂点シェーダで半ピクセル外側に自動拡張を計算します(式 (d = \frac{s^3t + s^2\sqrt{u^2+v^2}}{u^2+v^2-s^2t^2}))。これにより不要なパディングが排除され、エッジは鮮明に保たれます。
  • バンド分割最適化の削除:ピクセルシェーダを簡素化し、バンドデータサイズを 4 つの 16‑bit コンポーネントから 2 に半減します。
  • アダプティブスーパーサンプリングの廃止:ダイナミック拡張がエイリアシングを処理するため、追加コードはほぼ読み取り可能な文字だけに効果がありました。
  • 絵文字レンダリングの簡素化:レイヤーごとのループから独立したグリフレイヤリングへ切り替え、頂点数オーバーヘッドを削減しました。

これらの変更は、2016 年代のコンソールでの頑健性と高速化、高品質なアンチエイリアス出力(任意のスケールやパースペクティブ)を実現し、新しい GPU への保守性も向上させることを目的としていました。

業界採用

Slug は C4 Engine のテキストエンジン、後に Radical Pie 方程式エディタで活用されました。Activision、Blizzard、id Software、2K Games、Ubisoft、Warner Brothers、Insomniac、Zenimax などの主要ゲームスタジオや、Adobe などの非ゲーム企業もライブラリを使用しています。

パブリックドメイン状態

特許 #10 373 352(2019 年に付与)は 2026 年 3 月 17 日からパブリックドメインへ譲渡されました。USPTO に Form SB/43 が提出され、料金が支払われたため、すべてのコードが自由に利用可能です。参照用頂点シェーダとピクセルシェーダは GitHub 上で MIT ライセンスされています。

影響

開発者は Slug の GPU‑direct レンダリングとダイナミック拡張を、ゲーム、アプリケーション、あるいは任意のグラフィックスソフトウェアにライセンス料なしで統合できます。簡素化されたシェーダは開発時間とリソース消費を削減し、パブリックドメイン公開によりコミュニティによる貢献が促進され、技術のさらなる洗練が期待されます。


本文

Eric Lengyel • 2026年3月17日

GPU上でビーズ曲線から直接フォントを描画する「Slug アルゴリズム」として現在知られている手法は、2016年秋に開発されました。今年でその創設から10周年となります。私は2017年中頃に JCGT にこの技術についての論文を掲載し、その直後に Slug ライブラリ v1.0 の最初のライセンスを販売しました。それ以来、Slug はビデオゲーム業界だけでなく、科学可視化、CAD、映像編集、医療機器、さらにはプラネタリウムなど、多岐にわたる企業で広くライセンスされています。クライアントは Activision、Blizzard、id Software、2K Games、Ubisoft、Warner Brothers、Insomniac、Zenimax、Adobe など多くの大手企業です。Slug は私が作り上げた中で最も成功したソフトウェア製品となりました。

当初、私は C4 Engine のテキストレンダリングを改善するために Slug を開発しました。このエンジンでは GUI だけでなく、ゲームレベル内でも非常に大きく表示される文字が斜め角度から見られる場合があります。最近では、Radical Pie 方程式エディタの構築にも Slug を使用しており、ここでも極めて高品質なフォントレンダリングと括弧・ルート記号・矢印・ハイライトなどのベクトルグラフィックスが求められます。Slug はまた、メイン編集ウィンドウ内の全ユーザーインターフェイスやすべてのダイアログボックスの描画にも利用されています。

本稿では、2017年に論文が発表され Slug ライブラリが初めてリリースされた時点から現在までのレンダリング手法の変化を概説し、自身のプロジェクトでアルゴリズムを実装したい方へ向けたエキサイティングな発表で締めくくります。


レンダリングの進化

Slug は GPU 上でビーズ曲線データから直接テキストとベクトルグラフィックスを描画し、事前計算済みまたはキャッシュされた画像を含むテクスチャマップを使用しません。浮動小数点誤差に対処しつつ、堅牢性・高速性・高品質という三拍子を同時に実現するのは容易ではありません。堅牢性とは、ピクセルが落ちたり、スパークルやストリークといったアーティファクトが絶対に出ないこと(証明付き)です。速度は、2016 年代のゲームコンソール上で妥当な量のテキストを描画してもフレームレートに大きく影響しないようにする必要があります。そして高品質とは、任意のスケールと視点でも滑らかな曲線と鋭い角がある、抗エイリアシングされた文字を意味します。

Slug のレンダリングアルゴリズムがこれらを実現する原理は、以下の図(PDF 版はこちら)にまとめられています。


コアアルゴリズム

  • 根点の適格性判定と巻き数計算(堅牢性担当)は 2017 年から本質的には変わっていません。
  • 論文で説明したその他の描画コード部分は年々変更されています。小規模な変更を簡潔に触れた後、動的拡張 (dynamic dilation) と呼ばれる主要追加機能について述べます。

バンド分割最適化

元論文では、大きい文字サイズで描画する際に有効になる「バンド分割最適化」が紹介されていました。これは大文字の速度を向上させる一方、ピクセルシェーダーで分岐が発生し小さいテキストではパフォーマンスをわずかに低下させました。また、各バンドに交差する曲線リストを 2 回(1方向のレイ用にソートしたものと逆方向)保持する必要がありました。速度向上は限定的だったため、この最適化は削除しました。これによりピクセルシェーダーの複雑さが減り、バンドデータテクスチャは 4 コンポーネントから 2 コンポーネントへと半分に縮小されました。

スーパーサンプリング

拡張セクションでスーパーサンプリングについて触れられていました。極端に小さいサイズの文字を描く際のアンチエイリアシングを改善するため、適応型スーパーサンプリングが早期に実装されましたが、以下の理由で削除しました。

  1. 文字が読みやすい程度にまで小さかった場合のみ意味があった。
  2. 小文字のアンチエイリアシングは動的拡張によって既に緩和された。

スーパーサンプリングを外すことでピクセルシェーダーは大幅に簡素化されました。

マルチカラー絵文字

マルチカラー絵文字(色が異なる複数のレイヤーから成る)を描画するためにループを追加した試みは、各レイヤーが全体領域のごく一部しかカバーしないにも関わらず、フルバウンディングポリゴン上で計算されていたため非効率でした。代わりに重ね合わせる形で独立したグリフを描画する方が高速であり、レイヤーごとにバウンディングポリゴンを持つようになりました。


動的拡張

Slug ライブラリ導入以降の最大の改良は 動的拡張 です。これ以前はユーザーが固定距離を指定し、すべてのグリフバウンディングポリゴンをその距離だけ拡張して部分的に被覆されたピクセルを必ず描画させる必要がありました。この手法では以下の問題が生じます。

  • 距離が小さいと特定サイズ以下のグリフでアンチエイリアシングアーティファクトが発生。
  • 距離が大きいと大きなグリフに対して不要なパディングが増え、GPU リソースを浪費。

動的拡張では、各描画時に頂点シェーダーで最適な拡張量を自動計算します。現在のモデルビュー投影行列(MVP)とビューポート寸法を用いて、オブジェクト空間の頂点が正規化ベクトル方向にどれだけ移動すればビューポート空間で 0.5 ピクセル分拡張できるかを求めます。これにより過剰なパディングなしに部分的に被覆されたピクセルを必ず描画できます。

以下は簡略化した公式の導出です(読みやすさ重視):

  1. (s = m_{30}p_x + m_{31}p_y + m_{33}) および (t = m_{30}\hat n_x + m_{31}\hat n_y) を計算。
  2. [ u = w\bigl(s(m_{00}\hat n_x+m_{01}\hat n_y)-t(m_{00}p_x+m_{01}p_y+m_{03})\bigr) ] [ v = h\bigl(s(m_{10}\hat n_x+m_{11}\hat n_y)-t(m_{10}p_x+m_{11}p_y+m_{13})\bigr) ]
  3. 二次方程式
    [ (u^2+v^2-s^2t^2)d^2-2s^3td-s^4=0 ]
    を解き、外側へ移動する符号を選んで [ d=\frac{s^3t+;s^2\sqrt{u^2+v^2}}{,u^2+v^2-s^2t^2,} ]
    を得る。

拡張後のグリフは、逆ヤコビ行列(2×2)を用いてオリジナルサイズで描画されます。


特許発表

私は 2019 年に Slug アルゴリズムの特許を取得し、2038 年まで独占権を保持しています。しかし長期保有は誰にも利益をもたらさないと考え、本日(2026年3月17日)より Slug 特許をパブリックドメインに永続的に寄贈します。誰でもライセンスなしでアルゴリズムを自由に実装できます。(私の会社は USPTO に SB/43 フォームを提出し、特許 #10,373,352 の残存期間終結手数料を支払いました。)

実装をサポートするため、Slug ライブラリで使用されている実際のコードに基づく参照頂点シェーダーとピクセルシェーダー(MIT ライセンス)を新しい GitHub リポジトリに公開しました。ピクセルシェーダーは JCGT 論文で示されたものよりも大幅に改良されており、頂点シェーダーには動的拡張が組み込まれています。


関連リンク

  • GPU‑Centered Font Rendering Directly from Glyph Outlines, Journal of Computer Graphics Techniques, 2017.
  • Slug アルゴリズムの参照シェーダー(GitHub)。
  • Dynamic Glyph Dilation ブログ記事、2019。
  • Slug Library Web サイト。

同じ日のほかのニュース

一覧に戻る →

2026/03/18 5:23

**仕事を成し遂げる:メタプロンプティング・コンテキストエンジニアリング・スペック駆動型開発システム**

## 日本語訳: **GSD(“Get Shit Done”)** は、Claude Code、OpenCode、Gemini CLI、Codex、Copilot、および Antigravity など複数の AI コーディングランタイムを統合する軽量メタプロンプトフレームワークであり、コンテキストロット(文脈劣化)を緩和し、信頼性の高いコード生成を実現します。 インストールは `npx get-shit-done-cc@latest` で行い、ランタイムごとにグローバルまたはローカル設定(例:`--claude --global`、`--opencode --local` 等)を選択します。 コアワークフローは一連のコマンドによって駆動されます: - `/gsd:new-project` (プロジェクトスケルトン作成) - `/gsd:discuss-phase`、`/gsd:plan‑phase`、`/gsd:execute‑phase`、`/gsd:verify‑work`、`/gsd:complete‑milestone`、`/gsd:new‑milestone` - `/gsd:quick`(アドホックタスク)でオプションフラグ `--discuss`、`--research`、`--full` を付与可能。 各フェーズは構造化ファイル(`PROJECT.md`、`REQUIREMENTS.md`、`ROADMAP.md`、`STATE.md`)と XML 形式の計画を生成し、Git に対してアトミックにコミットします。コミットは `feat(08‑02): add email confirmation flow` のようなパターンに従い、正確な bisect と明瞭な履歴が保証されます。 GSD は研究者・計画者・実行者・検証者という 4 人のエージェントを調整し、メインコンテキストウィンドウ(≈30–40 %)を新鮮に保ちつつ数千行のコードを生成します。 設定は `.planning/config.json` に格納され、ユーザーは `mode`、`granularity`、`workflow.research`、`git.branching_strategy` およびモデルプロファイル(`quality`、`balanced`、`budget`)を指定できます。また、`.env` やシークレット・キー等の機密ファイルを保護する deny リストも用意されています。 本プロジェクトは MIT ライセンスで公開されており、OpenCode、Gemini CLI、および Codex 用のコミュニティポートが存在します。Amazon、Google、Shopify、Webflow のエンジニアに信頼されており、最小限の “ロールプレイ” オーバーヘッドを重視しています―数個のシンプルなコマンドで複雑なワークフロー管理を抽象化します。 今後のアップデートではエージェントオーケストレーションの拡張、クイックモードフラグの洗練、および設定オプションの強化を目指しています。ワークフローを簡素化しツールング・オーバーヘッドを削減することで、GSD は個人開発者および企業にとって開発サイクルの高速化とコード品質の向上を実現できます。

2026/03/18 3:37

Python 3.15 のJIT(Just‑In‑Timeコンパイラ)が再び順調に進んでいます。

## Japanese Translation: (すべての主要ポイントを取り入れています):** CPython 3.15/3.16 JIT プロジェクトは、初期段階でパフォーマンスマイルストーンを達成しました。macOS AArch64 上では、JIT が tail‑calling インタプリタより約11〜12 %高速であり、x86_64 Linux では標準インタプリタを約5〜6 %上回っています。また、パフォーマンステストは幅広い結果を示しています。`unpack_sequence` マイクロベンチマークを除けば、約20 %の遅延から100 %以上の速度向上まであります。 主な技術的進歩には次が含まれます: - **トレース記録**:単一の「tracing」命令とデュアルディスパッチテーブルを使用し、インタプリタの肥大化を削減。Linux 上では約6 %遅延から約1〜2 %高速に改善しました。 - **参照カウントの除去**:分岐除去最適化で、命令ごとのオーバーヘッドを削減し、貢献者にとって有益な学習機会を提供します。 JIT チームは 2025 年に主要スポンサーを失いましたが、コミュニティの監督によって努力が継続しています。コア貢献者には Savannah Ostrowski、Mark Shannon、Diego Russo、Brandt Bucher、Hai Zhu、Zheaoli、Tomas Roun、Reiden Ong、および Donghee Na が含まれます。中間レベルの貢献者数は 2 人から 4 人に増加しました。 Savannah の 4 台のマシンで毎日 JIT を実行し、パフォーマンスフィードバックを提供し、回帰を検出し、新しい最適化を検証します。スプリント計画(Cambridge コア スプリント)は、CPython 3.15 で 5 %高速な JIT、3.16 では 10 %、フリースレッディングサポートの追加、および JIT の各段階で活躍するメンテナーを 2 人ずつ確保することを目指しています。 これらの進歩により CPython は競争力を維持し、より広いコミュニティ参加を促進し、フリースレッディングなど将来の機能への土台を築いています。

2026/03/18 0:16

マイクロソフトの「ハッキング不可能」とされていたXbox Oneが、実際に「Bliss」によってハックされました。

## 日本語訳: Markus “Doom” Gaasedelen は、Xbox One のすべてのセキュリティ層を回避し、コンソール上で署名されていないコードを実行できる新しい電圧グリッチ脆弱性「Bliss」を公開しました。この攻撃は、CPU パワー・クラッシュ時に正確にタイミングされた2つの電圧グリッチを注入して ARM Cortex の memcpy 操作をハイジャックします。これにより、セキュリティプロセッサ、ファームウェア暗号化ルーチンへのアクセスが得られ、最終的には Hypervisor とオペレーティングシステムの完全制御が可能になります。Gaasedelen は、この欠陥はハードウェアブート‑ROM の障害にあるためパッチできないと主張しています。「Bliss」は RE//verse 2026 で発表され、2013 年の発売以来初めて大きな Xbox One の脆弱性を示しました。マイクロソフトは以前、このデバイスを「これまでに製造された中で最も安全な製品」と称していました。この発見は、エミュレーションの突破口、アーカイブ作業者によるファームウェア解析の深化、さらにはグリッチ操作を自動化できるモッドチップの可能性など、多くの機会を開きます。テスト中に彼はコンソール内部を可視化するための新しいハードウェア検査ツールも構築しました。この脆弱性はマイクロソフトのセキュリティ評判を損なうものの、ゲームライブラリが重複していることから広範囲にわたる PC 市場への影響は大きくないと見られます。ホビイストやアーカイブ作業者は、Xbox One ファームウェアを探求するための強力な新ツールを手に入れる可能性があります。