Yuto Blog
rss-iconx-icongithub-iconyoutube-icon

weekly blog 4/1 ~ 4/7

Intro

今週の目玉はなんと言ってもCloudflareのDeveloper Week 2024でした。 色々調べながら書いたのですが正直合っているか怪しいので、間違った内容があればBlogにPR送るなりXで指摘するなりしていただければと思います。

Welcome to Developer Week 2024

今回のDeveloper WeekのIntroです。

Making state easy with D1 GA, Hyperdrive, Queues and Workers Analytics Engine updates

Cloudflare D1がGAになりました。 これによりDBはCloudflare D1、バックエンドはCloudflare Workers、フロントエンドはCloudflare Pagesで配信するというCloudflareスタックでアプリケーションを作っていくところが増えるのではないでしょうか。 またどこかでHonoと組み合わせてフルスタックアプリを作りたいですね。

あとは自分が全く知らなかったHyperdriveもGAになったようです。 これは事前にHyperdriveがDBとの接続を確立しておくことで初回の接続にかかる時間を減らしてくれるものらしいです(よくわかってない)。

Leveling up Workers AI: general availability and more new capabilities

Workers AIがGAになりました。自分は使ったことないので全然わからないです。

あとはPython Workersが発表されました。今まではJavaScript、TypeScript、Rust(wasm)の3言語に対応していましたが、Pythonも使えるようになったと言うことですね。これは熱いです。

Bringing Python to Workers using Pyodide and WebAssembly

Python Workersについてのブログです。RustはWASMにコンパイルすることで動きますが、なんでWASMにしないといけないんだろうと思っていたところWorkersはV8を使用して動かしているからなんですね。なのでJSとWASMは動かせると。

今回はPyodideというものを使用してPythonコードをWASMに変換することで動かせるようにしているようですね。 ちなみにブログ内にも書いてありますが、WASMに事前に変換することで、今までもpythonでworkersは動かせたようです。確かにwasmが動くのであればそうなりますよね。

今回のサポートで何が変わったかというと、Pyodideがpythonのコードをwasmにコンパイルすることで開発者は意識しなくてよくなったことで簡単にデプロイまでできるようになったことがあるみたいですね。

Announcing Pages support for monorepos, wrangler.toml, database integrations and more!

Cloudflare pageのアップデートについてです。

まずはmonorepoについて。 今までmonorepoプロジェクトをpagesにデプロイするにはcli上で手動アップロードが必要だったのを公式がサポートしたことでTurborepoのようなmonorepoツールを使っていても簡単にデプロイできるようになりました。

そして次にwrangler.tomlのサポートです。これはつまり、今までダッシュボードで設定していた環境変数などを全てwrangler.tomlで完結できるようになったと言うことらしいです。 Honoを使っていたりするとすでにwrangler.tomlがあると思いますが、npx wrangler@latest pages download config <PROJECT_NAME>というコマンドを打つことでpagesのwrangler.tomlがダウンロードされ、それを編集して再度デプロイすれば設定が反映されるそうです。 Cloudflareの開発体験がまた良くなりそうですね😏

We've added JavaScript-native RPC to Cloudflare Workers

ラストはXでかなりざわついていたRPCの発表です。そもそもRPCとはなんぞやって感じだったんですが、Remote Procedure Callの略で、openapiやgrahplなどを使ったことある方は分かるかと思いますが、一つ関数を定義してそれを呼び出すと処理が行えるというものなんですね。

そして今回cloudflareはそれを作ったわけですが、worker側でclassを一つ定義すると、それがpagesで呼び出せてしまうというものみたいです。以下はブログに書いてあったものをそのまま持ってきました。

// api.ts
export class MyService extends WorkerEntrypoint {
  sum(a, b) {
    return a + b;
  }
}

// client.ts
let three = await env.MY_SERVICE.sum(1, 2);

定義したclassに対してenv.[クラス名].[関数名]とすることで呼び出せます。

多分これが本領を発揮するのはmonorepoにした時だと思っていて、そらちくんが作ったsample repositoryがだいぶイメージつきやすいのでこれを見れば良いと思います。

あとはRPC to Durable Objectsもなかなかすごそうです。 Durable Objectsとは本来ステートレスであるはずのworkerを、ステートフルにする機能で、つまりworker間での状態のやり取りを可能にするものです。 そしてこれのRPCなので、型安全にworker間の状態を扱えるようになったということですね。うん、すごい。

まとめ

以上が今週のweely blogです。cloudflare weekの内容があまりにも濃くて正直完全に理解してるくらい(つまり全然理解していない)にしかなっていないのですが、かなり学びが多かったです。

関連

0