Biff.core: クロージャ Web アプリのためのシステム構成

2026/06/10 1:12

Biff.core: クロージャ Web アプリのためのシステム構成

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

要約

Japanese Translation:

biff.core
で導入された主な革新は、Biff 2 プロジェクトのモジュール型アーキテクチャを統一し、アプリケーションの組み立て方を大幅に簡略化する基盤ライブラリです。中央の接着剤として機能し、システムマップを管理すると同時に、個別のモジュールからの複雑な初期化ロジックをクリーンに抽出するために、初期化関数をモジュールマップ内(
:biff.core/init
を通じてアクセス可能)に格納します。開発者はボイラープレートコードを貼り付けることなく集合をマージでき、メインnamespace がクリーンに保たれます。この設計では、ウェブサーバーハンドラなどの動的項目をシステムマップ内で静的値ではなく関数として維持することで、後部バインディングが維持されます。namespace 階層型のロジックにおいて統一された「system」マップを提供するという Biff 2 の確立された構造を保持しつつも、著者は別々のコンポーネントベクトルの統合や、
:on-start
などのライフサイクル関数に対する自動依存性解決の実装については現在予定されていないと確認しています。著者のチームはまた、ClojureScript と Python を用いて再生可能エネルギーモデリングソフトウェアを開発するためにシニアエンジニアを雇用中です。結局のところ、このアプローチはモジュールを追加する際の手作業を削減すると同時に、再起動を必要とせずに動的なシステム更新をサポートし、Web アプリケーション開発者にとっての価値と、持続可能エネルギーインフラに焦点を当てているチーム向けの価値の両方を提供します。

本文

Biff プロジェクトの最新構成と
biff.core
ライブラリのリリース

Biff の構成変更に伴い、要素の再構築とライブラリ分割を継続して進めてきました。現在、12 つの個別ライブラリに分割した下書き段階を精査し、順次リリースに向けて整えています。最初のライブラリである

biff.core
が準備完了しました。

biff.core
ライブラリの概要

Biff.core は Biff プロジェクト向けのシステム構成とインターフェースを提供します。他のすべてのライブラリを結び付ける**「接着剤」**のような役割を果たしており、その性質から最初にリリースされることになりました。

従来の課題と改善点

長年にわたり Biff は「モジュール」と「コンポーネント」の構造を採用していましたが、以下の仕組みが複雑でした:

  • アプリケーションネームスペースが「モジュール」マップを提供する。
  • モジュールから要素を組み合わせて単一の「システム」マップに統合するための**テンプレートコード(boilerplate)**を記述する必要があった。
  • 起動時にそのシステムマップをコンポーネント関数に渡す処理が必須だった。

Biff 2 はこの構造を維持しつつ、以下の改善を行いました:

  • テンプレートコードをより扱いやすくする追加機能の提供
  • 「モジュールを追加する」だけで済むようにし、「メインネームスペースへの貼り付け」のような面倒な作業を排除。
  • ロジックをクリーンに抽出したファーストクラス(主要な機能)としての提供を実現。

新導入:
init
関数

biff.core
ライブラリには新しい**「init 関数」**という概念が導入されました。

  • 役割: モジュールのコレクションを受け取り、システムマップと統合可能な単一のマップを返す関数です。
  • 仕組み: Init 関数はモジュールマップ内の
    :biff.core/init
    キーに格納されることで、「必要なものはモジュール(そしてコンポーネント)のみ」というシンプルな仕組みを実現します。

アーキテクチャ上の複雑さと解決策

アプリケーションコード内で

(def handler ...)
によるテンプレートコードは、**「後付けバインディング」**という副次的な利点を持ちます:

  • モジュールに変更が加わると、
    handler
    変数が自動的に更新される。
  • システムマップにおいて
    :biff/handler
    キーに関数の値ではなく、その変数自身を格納できるため、Web サーバーの再起動を行わずとも最新の実装が反映される。

しかし、テンプレートコードをライブラリコードに抽出するとこの変数を扱えなくなります。そこで採用した解決策は以下の通りです:

  1. 引数の変化:
    init
    関数はモジュールベクトルの値そのものではなく、そのベクトルを含む変数を受け取ります。
  2. 関数としての扱い: システムマップ上で更新されたい要素については、関数として扱う必要があります。
    • 例:
      :com.example/my-thing
      キーを直接設定するのではなく、
      :com.example/get-my-thing
      という関数を設定し、内部で
      my-thing
      を返すようにします。
  3. メモライズ(キャッシュ): システムマップ上の関数は、モジュールの変数を引き出し、Ring ハンドラなどを構築するためのメモライズされた関数に渡されるようにします。

このアプローチにより、メインネームスペースはほとんど変更を加えずに美しく整理され、追加すべきはモジュールとコンポーネントのみとなります。

コンポーネントの順序と依存関係について

統合を進める際に生じる疑問として、「なぜ別々のコンポーネントベクトルを用意する必要があるのか」という問いに対して、ライフサイクル関数間の依存関係を明示して順序を管理できないかと考えられます。

しかし、答えはシンプルです:

  • 特別な準備は不要であり、コンポーネントの順序を自分で整理することもそれほど困難ではありません(特に Biff のスタータープロジェクトでは既に代行されているため)。
  • 自分で行う方が、コンポーネントがどのように動作するかを理解しやすい利点があります。
  • 本質的には、マップを順次渡す関数の列で構成されています。

注意点: 状態を保持するリソースが多く管理が困難なプロジェクトであれば、

biff.core
に渡す前にコンポーネントベクトルを自動的に決定してくれる層を追加することで常に対応可能です。


追伸: 現在、シニアレベルのソフトウェアエンジニアを募集しています。主に ClojureScript と Python を使用し、再生可能エネルギープロジェクト向けのモデリング软件开发を進めております。

同じ日のほかのニュース

一覧に戻る →

2026/06/10 1:58

クロード・フェブル 5

## 日本語訳: 以下の改善されたバージョンでは、欠落していた安全性の詳細、具体的な価格設定構造、データ保持ポリシー、および可用性のタイムラインを補いながら、明瞭性を維持しています: ## まとめ: Anthropic は、一般使用に安全であり、ソフトウェア工学、可視化解析、長期コンテキスト処理、科学的研究、およびメモリータスクにおいて従来のすべてのバージョンを超えた「Mythos クラス」のモデルである **Claude Fable 5** を導入しました。同モデルは直ちに API とサブスクリプションプラン(Pro から Enterprise まで)で利用でき、6 月 22 日まで利用可能です(6 月 23 日からは使用クレジットに移行)。価格は入力トークンあたり **10 ドル**、出力トークンあたり **50 ドル** で設定されており、Claude Mythos Preview など以前のプレミアムモデルよりも大幅に安価です。 Fable 5 は転換的な性能向上を提供し、以前は何ヶ月もかかった工学タスクを数日へと圧縮するとともに、薬剤設計を約 10 倍加速させます。安全性と有用性のバランスを取りつつ、Fable 5 におけるセンシティブなトピックに関するクエリについては、**Claude Opus 4.8** にフォールバックを行う設定となっており、これは保守的なチューニングによりセッションの **約 5% よりも少ない割合** で発生します。さらに、特定の分類器は生物学/化学分野での危険な研究の向上や悪意のあるハッキング試行をブロックします。また、Anthropic は Mythos クラスモデルに対して新しい **30 日間のデータ保持ポリシー** を実施し、このトラフィックを新モデルの訓練や安全性以外の目的で使用することを禁止しています。 一般向けの Fable 5 バージョンは依然として非常に安全ですが、未検閲バージョンである **Claude Mythos 5** は、15 カ国以上で選択されたサイバーセキュリティおよびインフラストラクチャパートナー(将来的には約 150 の新しい組織へ拡大)を独占的に対象とする **Project Glasswing** を通じて利用可能です。この戦略的動きは、責任ある使用基準を損なうことなく科学的発見を加速し、重要インフラのセキュリティを強化することを目的としています。プログラムには、将来、特定の生命科学研究者のために生物学/化学の safeguards を解除する計画も含まれています。

2026/06/10 6:01

NPM バージョン 12 で導入される予定のbreaking changes

## Japanese Translation: npm v12 開始(推定リリースは 2026 年 7 月)、`npm install` に対してより厳格なセキュリティデフォルトが適用されます。最も重要な変更は、自動スクリプト実行の無効化です(`allowScripts` がデフォルトでオフ)。明示的に承認されないと、preinstall、install、postinstall スクリプト(`node-gyp` を介するネイティブビルドを含む)がブロックされます。準備のためには、これらの変更を警告付きで利用可能な npm v11.16.0+(またはそれ以降)を使用してください:`npm approve-scripts --allow-scripts-pending` を実行し、信頼できるパッケージについては `npm approve-scripts` で明示的に承認し、他は `npm deny-scripts` で拒否します。結果となる許可リストは `package.json` に書き込まれコミットすべきであり、v12 へのアップグレード後は承認されたスクリプトのみが実行されます。 さらに、デフォルトでは `--allow-git`(npm 11.10.0+ で利用可能)は none に解決され、Git ベースの依存関係に対して明示的なフラグが必要となり、`.npmrc` オーバーライドを介した潜在的なコード実行経路を閉じます。同様に、`--allow-remote`(npm 11.15.0+ で利用可能)はリモート URL から依存関係を解決する場合にデフォルトで none に設定されます。`--allow-file` および `--allow-directory` は現在のデフォルトを維持します。保守担当者および CI/CD パイプラインは依存関係を検証し、`package.json` 内の許可リストを更新し、アップグレード前に変更をコミットする必要があります。そうでない場合、手動の例外を設定しない限りビルド失敗となります。詳細は npm ドキュメントの `npm approve-scripts`、`npm deny-scripts`、および `allow-scripts config` をご参照ください。

2026/06/10 4:21

FPGA を用いたKolmogorov-Arnold Networkによる超高速機械学習

## Japanese Translation: 本テキストは、Kolmogorov-Arnold Network(KAN)を Field-Programmable Gate Array(FPGA)上で展開し、超高速機械学習に特化して設計された革命的な新ハードウェアアーキテクチャを導入します。従来の GPU はスケジューリング遅延およびメモリオーバーヘッドによりマイクロ秒以下の応答時間を達成できず苦労しますが、この FPGA ベースのアプローチでは、ニューラルネットワークをリプログラミング可能なデジタルロジックと直接統合するため、アルゴリズムと設計のコデザインを採用しています。固定された重みではなく、B スプライン基底関数によって定義される学習可能なエッジアクティベーションに置き換えることで、伝統的なルックアップテーブルモデルに見られるような指数関数的スケーリングの問題を回避します。この手法は、定点符号化によるデータエンコーディングの簡素化を実現し、トレーニングの安定性を確保します。主な革新点は、「B スプラインの局所性」の利用であり、グリッドセルごとにアクティブとなる基底関数の数が限られているため、ネットワークの次数を増やすことなくグリッドサイズを拡大することでモデルを水平方向にスケール可能になります。得られる枠組みは「KANELÉ」と命名され、従来の実装に対する驚異的な 2,700 倍もの速度向上を達成し、オンデバイスでの動的モデル更新が可能となる真のオンライン学習を実現します。この画期的な成果は、量子コンピューティング制御システムなどリアルタイム意思決定が必要な産業に対し、高効率性と継続的改善を支援する GPU の代替として堅牢な選択肢を提供します。大規模テストにおいて、同システムは関数近似やキュビット読み出しなどのタスクで伝統的な MLP よりも優れたハードウェアスケーリングと収束性を示し、50,000 パラメータまで扱いながらマイクロ秒以下のレイテンシを維持しました。