1205 文字
6 分

Frontend Weekly 2023-05-14

Matsuri-tech Frontend Weekly 2023-05-14#

Dart 3#

2023 年 5 月 10 日に Google I/O 2023 で、Dart 3 の正式リリースが発表されました。

https://medium.com/dartlang/announcing-dart-3-53f065a10635

Dart は Flutter でしか使う機会はなく matsuri 社では全く使っていませんが、個人的な認識として Flutter ほど Android、iOS それぞれに依存した機能にまで対応したクロスプラットフォームフレームワークは存在せず、利便性は現状一強であると思っているので、リリースを少し取り上げます。

100% sound null safety#

Dart は約 4 年をかけて、完全に Null safety になりました。これにより Null Pointer Exceptions などのランタイムエラーの回避や、コンパイル時に Null がないことを前提として最適化が可能になります。

Dart では 2 系から Null safety のモードを切り替えられるようにするなど段階的な移行を行なっており、既に人気な上位 1000 位までのパッケージの 99%は Null safaty に対応をしています。

パターンマッチング#

Rust などのパターンマッチと一緒です。次のように記述します。

// seald修飾子によって、これは閉じた型族のルートになり網羅チェックが有効になる
sealed class Shape {}
class Square implements Shape {
final double length;
Square(this.length);
}
class Circle implements Shape {
final double radius;
Circle(this.radius);
}
// switchが式で利用できるようになった。
double calculateArea(Shape shape) => switch (shape) {
Square(length: var l) => l * l,
Circle(radius: var r) => math.pi * r * r
};

Chrome 113#

2023 年 5 月 3 日に Chrome 113 がリリースされました。

https://developer.chrome.com/blog/new-in-chrome-113/

WebGPU API#

WebGL にはいくつか問題がありました。

  • WebGL の登場以降、新たなネイティブ GPU API が登場しましたが、OpenGL(WebGL)に更新は予定されていないため、新機能が利用できない
  • WebGL はグラフィックをキャンバスにレンダリングするというケースを前提にしていたため、GPGPU などは不得意

WebGPU はこれらの問題に対応した WebGL の後継として作られ、最新 GPU API との互換性向上、GPGPU のサポート、より高度な GPU 機能へのアクセスを提供します。

また API は Promise が使える他、関数名などもまともなため、WebGL と比べるとかなり使いやすくなっています。とはいえ、実際利用する際は何らかのライブラリを使うことが多いと思います。既に有名な WebGL ライブラリは WebGPU サポートに取り込んでおり、特に Babylon.js は完全なサポートを既に提供しています。

https://doc.babylonjs.com/setup/support/webGPU

レスポンスヘッダーの上書き#

DevTools でレスポンスヘッダーを上書きできるようになりました。

https://developer.chrome.com/blog/new-in-devtools-113/

興味があれば、操作手順は動画を取ったので、このページで実践して見てください。

CSS update Media Query#

https://developer.chrome.com/blog/css-update-media-query/

あまり使う機会はないと思いますが、デバイスのリフレッシュレート(デバイスのアニメーションや更新の頻度)によってスタイルを分けることが出来ます。

@media (update: slow) {
// ....
}

リフレッシュレートは以下の 3 つから選びます。

fast:通常のコンピュータやスマホなど

slow:電子書籍リーダーなど

none:紙に印刷されるドキュメントなど

Next.js 13.4#

2023 年 5 月 5 日に Next.js 13.4 がリリースされました。

https://nextjs.org/blog/next-13-4

Stable App Router#

App Router が安定版になり、公式ドキュメントもデフォルトは App Router になりました。Using App Router から切り替えられます。

https://nextjs.org/docs

App Router に抵抗感を持っていたり、RSC も含めて PHP の再来と呼んで嘲笑している方々もいますが、普通に便利なので使っていきましょう。個人的には App Router(RSC)に触れて理解を進めていけば、必然的に良いコードが書けるようになると思うので、その点でもぜひ使ってください。

https://nextjs.org/docs/app/building-your-application/configuring/draft-mode

Server Actions (alpha)#

フォームの状態について React は最近意見を持っているらしく、例えば(元々どちらかといえば制御コンポーネントを推奨していた気がしますが)現在は非制御コンポーネントを推奨していたり、ミューテーションに対するファーストパーティソリューションの開発に取り組んでいるそうです。

Server Actions は、中間層を作ることなく直接サーバーの関数を呼び出して、サーバーのデータ更新を可能になる実験的な機能です。次のような記述をします。

import db from "./db";
import { redirect } from "next/navigation";
async function create(formData: FormData) {
"use server";
const post = await db.post.insert({
title: formData.get("title"),
content: formData.get("content"),
});
redirect(`/blog/${post.slug}`);
}
export default function Page() {
return (
<form action={create}>
<input type="text" name="title" />
<textarea name="content" />
<button type="submit">Submit</button>
</form>
);
}

React Canaries#

React は今後カナリアリリースを行なっていくそうです。

https://react.dev/blog/2023/05/03/react-canaries

Experimental チャネルとは異なり、採用の準備が整っていると合理的に判断される機能のみが含まれるとのことです。

Frontend Weekly 2023-05-14
https://blog.ohirunewani.com/series/frontend-weekly/2023-05-14/
作者
hrdtbs
公開日
2023-05-14
ライセンス
CC BY-NC-SA 4.0