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

Cloudflare Developer Week 2024
D1, Hyperdrive, Workers Analytics Engine GA
D1はCDN Edgeで動くサーバレスSQLデータベース
データのエクスポート機能とかクエリのデバッグ機能が入ったっぽい。
Hyperdriveは、既存のDBをグローバルに分散させるもの?
ORMのサポートが入ったっぽい。
Workers Analytics Engineはよく分からないので、後で追記。
PrismaをCloudflare Workersや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が無料で使えるようになってた

GitHub Trendsに乗ってて面白そうだったもの
cleanlab
画像やテキスト、音声、表形式のデータに対して、外れ値や重複しているデータを検出できるパッケージ。
データ量の多い学習に便利そう。
Farm
こちらはVite互換のビルドツールとのことです。
大変高速ですが、出たばかりなので、しばらく様子見が必要そうです。
mindsdb
企業データを使ってモデルを学習するためのプラットフォーム
coolify
HerokuやVercelの代替らしい。
Vercelのエコシステムを再現するのは無理では??と思ってるけど、試してみたい。
minibone
軽量な暗号化ライブラリ?
Refine
管理画面を簡単に作れるReact Component
v2以降追ってないので、時間あれば見ておきたい。
Bun
NodeやDeno, LLRTなどの競合?
プライベートリポジトリだった頃以降追ってないので、見ておきたい。

AWS関連
Savings Plan購入後7日以内なら返金してもらえるようになった。

ツール系
Table Plus
Cloudflare D1のサポートを予定していると発表されました。
Elmo
ウェブサイトの要約をしてくれる拡張機能
良き点
日本語設定にすると、翻訳までしてくれる。
記事に対して追加質問などもできる。
Chromeブラウザで開ければ良いので、論文に対しても使える。
微妙な点
特に見当たらない。
リリースされて、1週ぐらい経過し、日本語の翻訳が怪しくなりました。。
また、現状は無料で使えるが、いつか有料になりそう。

sQwik

論文系
参照解決... 文章中の代名詞などの何かを参照するための表現が、実際に何を指しているかを特定するタスク?
LLMを用いて、参照解決を定式化し、解決できたよみたいな話

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だと、このように使える。
New Set methods
これは集合の和とか積とかが使えるようになったよというやつ。
ブラウザ対応はほぼ終わってるはず。
web.devでも2月に紹介されてた。
ECMAScriptに先行して、ブラウザに実装される系は割と多い。

AI関連
Llama3
Llama3が来るっぽい。
OpenAI
日本語特化モデルが出るっぽい。
通常のモデルより、日本語の出力が3倍速いとのこと。

時事ネタ
Jetpackが社名変更
devboxで有名な会社

ライブラリ系
ESLint v9.0.0
破壊的変更が割と多いので、アップデートや新しく使う際は注意がいるかも。
FlatConfigという新しい設定ファイルの書き方がデフォルトになる。

Google Cloud Next '24
Geminiをいろんな場所で使えるようにしたよっていう発表だった。
Google WorkspacesでGemini BusinessかGemini Enterpriseを課金すると、Googleドキュメントで文章生成したり、スライドの画像生成ができたりする。ただし、現状は英語のみ。
画像生成はImagen2.0を使ってるのかもしれない。
課金してやってみた限りだと、あんまり価値は感じなかった。。
Google Cloud Next '24 Opening Keynote
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みたいなものだった。
短時間の動画作成に向いてそう。

React関連
Fast JSX (React19)
JSXを生成する際の内部仕様が変わり、レンダリングが高速になる可能性があるとのこと。
→ どちらかというと、このPRで大事なのは、「propsにrefが入るようになったよ」だった。
前までは、以下のようなコードを書いたときに、propsにrefが入らなかった。
<Child ref={ref} />
直感的には以下のように書きたいけど、いままでは無理だった。
const Child = (props) => {
<input ref={props.ref} />
}
React19より前だとこんな感じ。
const Child = forwardRef((props, ref) => {
console.warn('props', props)
return <input ref={ref} />
});
React19βも発表された。

Node.js Collaboration Summit
こちらは約年2回開催されるイベントで、Node.jsのコントリビューターやコミュニティメンバーで知識の共有や意見交換をするイベントです。
こちらが実際のSummitのアーカイブ
Summitの結果を踏まえて、公式で発表されたのがこちら
HTTP, web server frameworks and clients
HTTP/1.1, HTTP/2, QUIC (HTTP/3) の取り扱いを抽象化できるAPIや、リクエストインジェクションをモンキーパッチを当てることなく利用できる低レベルAPIについて議論されました。
いまはllhttp (TypeScriptとCで開発されてます) というパーサーを利用しているとのことですが、デバッグの難しさや互換性の維持が難しいそうです。
その解決策の1つとして、miloというHTTPパーサーがその候補として考えられているとのことです。miloはRustで開発されており、パフォーマンスにも優れているとのことです。
資料としてこちらも参考になります。
New features for the built-in CLI
Node.jsに、package.jsonのscriptsを実行するためのオプションが追加されました。
例えば、以下のようにtestというスクリプトがあるとします。
"scripts": {
"test": xxxx
}
こちらは以下のように実行できるようになるとのことです。
$ node --run test
引数を渡す場合はこのようになります。
$ node --run test -- --args
この他にも静的ファイルをNode.jsの組み込みコマンドで簡単にホストできないかの議論もありました。いまはhttp-serverなどを追加しないとできないため、Node.js本体だけでできるようにしたいとのことです。

Supabase GA
Supabaseがβ期間を終了し、一般提供が開始されました。
価格の変更やフリープランの制限については、特に触れられていません。
SupabaseのGA発表とともに、Anonymous Sign-ins (ゲストログインのような機能) をアプリに組み込む機能や、S3互換のSupabase Storageのプロトコルサポート対応、PlanetScaleなどで導入されているDBのブランチ機能 (DBの状態をgitのbranchのように分けて切り替えできる機能) などが公開されました。

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があるけど、こちらは複数のファイルができるのと、サーバーホストに主眼を置いてるので、ちょとズレる。

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}
Set like methods
集合の配列操作ができるようになった。