Closed16

2024年4月に出たプレリリースやリリースノートまとめ

pilefortpilefort

Cloudflare Developer Week 2024

https://blog.cloudflare.com/developer-week-2024-wrap-up

D1, Hyperdrive, Workers Analytics Engine GA

D1はCDN Edgeで動くサーバレスSQLデータベース
データのエクスポート機能とかクエリのデバッグ機能が入ったっぽい。

Hyperdriveは、既存のDBをグローバルに分散させるもの?
ORMのサポートが入ったっぽい。

Workers Analytics Engineはよく分からないので、後で追記。
https://blog.cloudflare.com/making-full-stack-easier-d1-ga-hyperdrive-queues

PrismaをCloudflare WorkersやD1でネイティブサポート

https://blog.cloudflare.com/prisma-orm-and-d1

その他

Cloudflare Calls

Edgeで実行されるサーバレスSFU, TURNサービス
IP電話のサービス?

Cloudflare Streams/Cloudflare Images

動画や画像系サービスらしい。
詳しくは使ってみないとよくわからない。

Browser Rendering API

CircleCIとかGitHub ActionsでPuppeteerを構築して動かすの大変なので、ありがたい。

Cloudflare WorkesのRPCサポート

ワーカー間通信で使うっぽい

SWRサポート

SWRのサポートをCloudflareがやるっぽい
Pages使ってる場合はワンクリックで有効化できるようになると嬉しい。

Baselime買収

Baselimeが無料で使えるようになってた

pilefortpilefort

GitHub Trendsに乗ってて面白そうだったもの

cleanlab

画像やテキスト、音声、表形式のデータに対して、外れ値や重複しているデータを検出できるパッケージ。
データ量の多い学習に便利そう。
https://github.com/cleanlab/cleanlab

Farm

こちらはVite互換のビルドツールとのことです。
大変高速ですが、出たばかりなので、しばらく様子見が必要そうです。
https://github.com/farm-fe/farm

mindsdb

企業データを使ってモデルを学習するためのプラットフォーム
https://github.com/mindsdb/mindsdb

coolify

HerokuやVercelの代替らしい。
Vercelのエコシステムを再現するのは無理では??と思ってるけど、試してみたい。
https://github.com/coollabsio/coolify

minibone

軽量な暗号化ライブラリ?
https://github.com/backbone-hq/minibone

Refine

管理画面を簡単に作れるReact Component
v2以降追ってないので、時間あれば見ておきたい。
https://github.com/refinedev/refine

Bun

NodeやDeno, LLRTなどの競合?
プライベートリポジトリだった頃以降追ってないので、見ておきたい。
https://github.com/oven-sh/bun

pilefortpilefort

ツール系

Table Plus

Cloudflare D1のサポートを予定していると発表されました。

https://twitter.com/TablePlus/status/1776611556509253687

Elmo

ウェブサイトの要約をしてくれる拡張機能

良き点

日本語設定にすると、翻訳までしてくれる。
記事に対して追加質問などもできる。
Chromeブラウザで開ければ良いので、論文に対しても使える。

微妙な点

特に見当たらない。
リリースされて、1週ぐらい経過し、日本語の翻訳が怪しくなりました。。
また、現状は無料で使えるが、いつか有料になりそう。
https://www.elmo.chat/

pilefortpilefort

論文系

参照解決... 文章中の代名詞などの何かを参照するための表現が、実際に何を指しているかを特定するタスク?

LLMを用いて、参照解決を定式化し、解決できたよみたいな話
https://arxiv.org/abs/2403.20329

pilefortpilefort

ECMAScript

4月にFinished Proposalsに達したメソッド

Duplicate named capture groups

現状はSafariでしか使えないけど、Named capturing groupを複数設定できるというもの。

> g = "2024-04-29".match(/(?<year>[0-9]{4})-[0-9]{2}|[0-9]{2}-(?<year>[0-9]{4})/)
[""2024-4, "2024", undefined]

// <year>で名前をつけてるので、g.groups.yearで値を取り出せる
> g.groups.year
"2024"

Chromeだとエラー。

Safariだと、このように使える。

https://github.com/tc39/proposal-duplicate-named-capturing-groups

New Set methods

これは集合の和とか積とかが使えるようになったよというやつ。
ブラウザ対応はほぼ終わってるはず。

https://github.com/tc39/proposal-set-methods

web.devでも2月に紹介されてた。
ECMAScriptに先行して、ブラウザに実装される系は割と多い。
https://web.dev/blog/web-platform-02-2024?hl=en#javascript_set_methods

pilefortpilefort

Google Cloud Next '24

Geminiをいろんな場所で使えるようにしたよっていう発表だった。

Google WorkspacesでGemini BusinessかGemini Enterpriseを課金すると、Googleドキュメントで文章生成したり、スライドの画像生成ができたりする。ただし、現状は英語のみ。

画像生成はImagen2.0を使ってるのかもしれない。

課金してやってみた限りだと、あんまり価値は感じなかった。。

Google Cloud Next '24 Opening Keynote

https://www.youtube.com/watch?v=V6DJYGn2SFk&t=3013s

Gemini 1.5 Pro (24:07ぐらい)

入力データで、1Mトークン利用できるようになるらしい。
OpenAIはgpt-4-32で32Kトークンなので、かなり多い。

入力データには、動画や音楽も投入できて、この動画について教えてみたいなこともできるっぽい。
動画なら1時間、音楽なら11時間ぐらい入力できる。

Google Vids (1:03:19)

Googleドキュメントを読み込ませて、動画のアウトラインを生成
アウトラインの微修正をした後、動画のスタイルを決めれば動画が生成されるといったもの。

Text-to-Live Image (1:06:23)

Stable Video Diffusionみたいなものだった。
短時間の動画作成に向いてそう。

pilefortpilefort

React関連

Fast JSX (React19)

JSXを生成する際の内部仕様が変わり、レンダリングが高速になる可能性があるとのこと。
→ どちらかというと、このPRで大事なのは、「propsにrefが入るようになったよ」だった。

前までは、以下のようなコードを書いたときに、propsにrefが入らなかった。

main.tsx
<Child ref={ref} />

直感的には以下のように書きたいけど、いままでは無理だった。

child.tsx
const Child = (props) => {
  <input ref={props.ref} />
}

React19より前だとこんな感じ。

child.tsx
const Child = forwardRef((props, ref) => {
  console.warn('props', props)
  return <input ref={ref} />
});

https://github.com/facebook/react/pull/28768

React19βも発表された。

pilefortpilefort

Node.js Collaboration Summit

こちらは約年2回開催されるイベントで、Node.jsのコントリビューターやコミュニティメンバーで知識の共有や意見交換をするイベントです。

こちらが実際のSummitのアーカイブ
https://github.com/openjs-foundation/summit/issues/387#issuecomment-2050714921

Summitの結果を踏まえて、公式で発表されたのがこちら
https://nodejs.org/en/blog/events/collab-summit-2024-london

HTTP, web server frameworks and clients

HTTP/1.1, HTTP/2, QUIC (HTTP/3) の取り扱いを抽象化できるAPIや、リクエストインジェクションをモンキーパッチを当てることなく利用できる低レベルAPIについて議論されました。

いまはllhttp (TypeScriptとCで開発されてます) というパーサーを利用しているとのことですが、デバッグの難しさや互換性の維持が難しいそうです。

https://github.com/nodejs/llhttp

その解決策の1つとして、miloというHTTPパーサーがその候補として考えられているとのことです。miloはRustで開発されており、パフォーマンスにも優れているとのことです。

https://github.com/ShogunPanda/milo

資料としてこちらも参考になります。
https://www.youtube.com/watch?v=KsjdrOjpycE

New features for the built-in CLI

Node.jsに、package.jsonのscriptsを実行するためのオプションが追加されました。

例えば、以下のようにtestというスクリプトがあるとします。

package.json
"scripts": {
  "test": xxxx
}

こちらは以下のように実行できるようになるとのことです。

$ node --run test

引数を渡す場合はこのようになります。

$ node --run test -- --args

この他にも静的ファイルをNode.jsの組み込みコマンドで簡単にホストできないかの議論もありました。いまはhttp-serverなどを追加しないとできないため、Node.js本体だけでできるようにしたいとのことです。

pilefortpilefort

Supabase GA

Supabaseがβ期間を終了し、一般提供が開始されました。
価格の変更やフリープランの制限については、特に触れられていません。
https://supabase.com/blog/ga-week-summary

SupabaseのGA発表とともに、Anonymous Sign-ins (ゲストログインのような機能) をアプリに組み込む機能や、S3互換のSupabase Storageのプロトコルサポート対応、PlanetScaleなどで導入されているDBのブランチ機能 (DBの状態をgitのbranchのように分けて切り替えできる機能) などが公開されました。

pilefortpilefort

py2wasm

PythonのコードからWebAssemblyのファイルを1対1で生成できるツール (利用時は内部ツールの関係で、Python 3.11にする必要あり)

py2wasm pystone.py -o pystone.wasm

内部でnuitkaというPythonからCコードを生成するツールをフォークして使ってる。
nuitkaの仕組みはよく分からないけど、Cythonと似てるらしい。

いままでは、Pythonのインタープリター側をWebAssemblyにして、Pythonのコードを動かすという動きはあったけど、Pythonのコード自体を変換するのは新しい。

ちなみに、CythonはまだWebAssembly対応が終わってない。他の類似ツールでいうと、componentize-pyがあるけど、こちらは複数のファイルができるのと、サーバーホストに主眼を置いてるので、ちょとズレる。

https://wasmer.io/posts/py2wasm-a-python-to-wasm-compiler

pilefortpilefort

Node.js 22

WebSocket

WebSocketを使った通信ができるようになった?
前までは実験フラグだったらしい。

V8アップデート

12.4が使えるようになったことで、利用可能なメソッドも増えた。

WebAssembly GC

Node.jsでWebAssemblyを使いたい気持ちが分からないけど、WebAssemblyのGCが利用できるようになった。

Array.fromAsync

非同期処理からなる配列の操作ができるようになった。

async function fetchData() {
  const response = await fetch('<URL>')
  const data = await response.json()
  return data
}

async function Test() {
  const arr = await Array.fromAsync(fetchData())
  console.log(arr)
}

Test()

Iterator helper

今まではloadashなどのライブラリを使うか、自前で実装するしかなかったイテレーター処理ができるようになった。doneとかをみて処理を止めるとかよくやるので、便利。

const naturals = Iterator.from([0, 1, 2, 3, 4, 5])
const result = naturals.take(3) // 3つまで取得する

console.log(result.next()) // {value: 0, done: false}
console.log(result.next()) // {value: 1, done: false}
console.log(result.next()) // {value: 2, done: false}
console.log(result.next()) // {value: undefined, done: true}

https://github.com/tc39/proposal-iterator-helpers

Set like methods

集合の配列操作ができるようになった。
https://zenn.dev/link/comments/d8fa486416f7bd

このスクラップは2024/05/05にクローズされました