Show HN: 昔の Canvas 3D ライブラリを小さな WebGL 2 ライブラリとして再構築しました - phoria2

2026/10/31 18:49

Show HN: 昔の Canvas 3D ライブラリを小さな WebGL 2 ライブラリとして再構築しました - phoria2

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

要約▶

Japanese Translation:

phoria2 ライブラリは、WebGL 2 レンダラを使用することで、ウェブ上で 3D グラフィックスをレンダリングするための小さな高速な JavaScript ソリューションです。PBR(物理ベースレンダリング)マテリアル、インスタンス化、点、線、ラベル、ピックイング、シャドウ、パーティクル、およびglTF モデルなど、高度な機能をサポートしています。人間の開発者と AI コーディングエージェントの双方による使いやすさを目的に設計されており、ランタイム依存関係はなく、単なる ES モジュールを使用し、データが変更された場合にのみビューを描画します。その API はエラーの詳細と修正策を提供する検証機能を備え、デバッグおよび自動化されたワークフローを支援します。MIT ライセンスの下でオープンソースとして公開されている phoria2 は、

npm install phoria2
でインストールでき、GitHub に完全なコード、ドキュメント、React サンプルが利用可能です。phoria.js(2013 年にリリースされ、canvas 2D コンテキストにレンダリングされたもの)のリファクタとして、phoria2 はそのアプローチを近代化しつつ、その伝承性を維持しています。phoria2 の著作権は Kevin Roast に属し(2013–2026)。

本文

Poria と Phoria2:軽量 WebGL ライブラリ解説

定義と概要

  • Poria
    • 名詞として使用。
    • 両眼が特定の対象を二双眼動固定した状態における相対的な視線の方向を表す概念です。
  • Phoria2
    • Poria の改変版であり、Phoria.js(2013 年リリース)からの発展です。
    • 「魔法使い」だった頃の私たちが提供した Canvas 2D コンテキストへの 3D レンダリング機能を現代の技術で再構築しました。

Phoria2 の特徴

  • WebGL 2 レンダラー採用
    • 軽量かつ高速な JavaScript ライブラリです。
    • 数時間で習得できる APIを提供し、初心者にも親しみやすい設計です。
  • 目的と利用シーン
    • Web 向けアプリケーション開発に特化しています。
    • 主な用途:3D グラフィックスを用いたチャート、ラベル付きシーン、ダッシュボード、製品ビューアなど。
  • 直感的な操作性
    • エージェント(コーディング AI)と人間が双方で直感的に使用できるように設計されています。

提供機能一覧

すべての機能が網羅されており、以下をサポートします:

  • PBR マテリアル
  • インスタンス化
  • 点・線・ラベル
  • ピッキング(オブジェクト選択)
  • シャドウ
  • パーティクル
  • glTF モデル

主なメリット

  • 軽量で依存関係なし
    • 実行時に外部ライブラリを必要とせず、標準 ES モジュールで動作します。
    • 描画が必要な箇所のみを描画する効率的なビューを提供します。
  • 記述支援付き
    • すべてのオプションが検証されており、誤りは詳細な修正方法を提示するエラーメッセージとして返却されます。
    • 個人での開発だけでなく、コーディングエージェントによる活用にも最適です。

インストールとリソース

  • ライセンス:オープンソース(MIT ライセンス)。
  • インストールコマンド:
    npm install phoria2
    
  • 詳細確認場所:GitHub でソースコード、ドキュメント、React 実装例を確認できます。

Copyright © Kevin Roast 2013-2026 · GitHub · npm

同じ日のほかのニュース

一覧に戻る →

2026/11/02 0:58

Show HN: HackerBooks – ハッカートビューのように、HN で言及された本のためのサービス

## Japanese Translation: このテキストは、マウス使用よりも効率を優先したアプリケーション内でのキーボードナビゲーションの習得に必要な手順を提供しています。核心的なメッセージは、特定のキーが本間の移動や異なるコンテンツビューへの瞬時のアクセスを可能にする直接コマンドとして機能することです。例えば、`/` を入力するとフォーカス検索バーが有効化され、`j` または `k` を押すことで家(Home)行から手を離さずにリスト内で縦方向に移動できます。`Enter` を押すとフォーカスされた本が開かれ、`Esc` はウィンドウを閉じたり前の画面に戻ったりします。また、`g` の組み合わせ(例:`g h`, `g t`, `g m`)は、ホーム、全時間最高位、最も推奨されるなどの特定セクションへの直接ジャンプを可能にします。さらに、`?` はヘルプコマンドを表示します。これらのショートカットにより、マウスへの依存が軽減され、カテゴリへの高速アクセスやデジタルライブラリの滑らかな管理が実現されます。結果として、このシステムはユーザーに対しインターフェースに対する即時の制御力を付与し、基本的なナビゲーションタスクを迅速なアクションに変換することで、全体の生産性と使いやすさを向上させます。なお、このガイドは現在の機能への参照ツールとしての役割に限定されています。

2026/10/30 13:17

Nibnib:解凍速度が極めて高速な画像圧縮

## Japanese Translation: nibnib イメージ形式は、RP2350 マイクロコントローラ上で高速かつ決定論的なデコードを目的とした専用圧縮方式である。入力バイト 1 つあたり 2 ピクセルの並列デコードを行い、約 6 クロックサイクルで 1 ピクセル当りのデコードを完了し、4bpp の圧縮比を実現する。絶対値カラーを保持する標準的なパレット形式とは異なり、nibnib はパレットにカラーデルタを格納し、Floyd-Steinberg エラー拡散法を用いて人間の視覚感度特性をモデル化することで滑らかな領域での画質向上を図る。デコード処理は完全に決定論的であり、直前までにデコードされた最終ピクセルを 2 倍とし、ストリームからバイトを読み込みパレットでアップルックして加算し、入力バイト 1 つあたり 2 ピクセルの 16bpp(RGB 565)を生成する。一方、エンコーディングは非対称であり大幅に低速である。可能となるパレットとコードワードの組み合わせに対して探索を行い、立方体を小さなデルタ値および加重付きガウスランダムエントリで構成した初期化から始め、高品質な複製へデコード可能なエンコーディングを選択する。その貪欲的な左から右への探索手法のため、現時点ではシャープなエッジの右側に残留アーティファクトが生じるが、将来のバージョンでは右から左またはブーストロホン方式によるエンコーディングによりこの影響を低減することが可能である。イメージのレイアウトは、2 バイトで幅と高さを格納するヘッダー、256 エントリの 32 ビットパレット、そして各行が 2 ピクセルに続き ((width − 2)/2) バイトのパレットインデックスを持つ構成となっている。追加的なメタデータフィールドは存在せず、この形式はアーカイブストレージではなくリアルタイムレンダラーとの緊密な統合を意図している。元々 RP2350 での DVI 出力実験として開発された nibnib は、Apache License 2.0 または MIT ライセンスのいずれかを選択して vic-2350 リポジトリで入手可能である。

2026/10/28 18:46

AFL++ を活用したより効果的なファスティングテストのためのヒント

## Japanese Translation: 6 年間の約 1,000 プロジェクトのテストに基づき、著者は AFL++ が Linux 上の C/C++ fuzzing プラットフォームとして決定版であると主張し、ファジー化されていないソフトウェアにはほぼ間違いなくバグが含まれていることを確認しています。速度を損なうことなく脆弱性の検出を最大化するためには、公式文書で強調されている特定のハイパフォーマンス構成を採用すべきです。主要な最適化策には、クラッシュ間でプログラムの状態を維持するパシストンモードの利用(通常は 10 倍ほど高速化)、`afl-gcc-fast` とともに `-fsanitize=address,undefined` および他のフラグでサニタイザーを設定することが含まれます。具体的なチューニングも不可欠であり、デフォルトの 4KiB リミットを超えて `max_malloc_fill_size` を増やすことで use-after-free エラーを検出し、`detect_stack_use_after_return` を有効化し、GCC の libstdc++ で `-D_GLIBCXX_DEBUG` を用いてコンテナオーバーフローを検出します。さらに、単一の翻訳単位(instrumented target と uninstrumented library)でビルドすることで静的関数の設定を簡略化でき、テスト設計ではグローバル状態の干渉を最小限に抑え、ASan による読み取りミスを防ぐために直接バッファ渡しを避け、ファイル入力は `memfd_create` を使用する必要があります。これらのターゲット指向な調整により、デフォルト設定で見逃されがちな重要なメモリ安全性の問題を発見でき、大規模な fuzzing キャンペーンの徹底的さを大幅に向上させます。

Show HN: 昔の Canvas 3D ライブラリを小さな WebGL 2 ライブラリとして再構築しました - phoria2 | そっか~ニュース