Denoばた会議 Monthly 第2回
2021年10月17日開催。
connpassリンク。
本日はLTなし。
今月のアップデートを追う
Denoのアップデートを追っていくLT。
そのあとの雑談込みでザックリと箇条書き。
Deno v2.0のリリースプラン
12月以降のリリースになりそう
Deno v1.15
Node.js互換モードが追加
--compat
で指定- まだunstable
サブテストの追加
- テストケースが入れ子にできる
- Ryanは当初「やりたい人が
Deno.test
をラップしてやればいいのでは」という意見を出していた - 議論をしていく中で、それは難しいという話に
deno uninstall
の追加
複数のルート証明書の指定がサポート
Deno.createHttpClient
のcaCerts
オプション
deno_std v0.111.0での変更点
std/fs
のexists
とexistsSync
が非推奨化
- TOCTOUというバグになるAPIでしかないという意見
- 存在自体がバグ
- permisssion的に弾かれた場合も判定できない(existなのにpermissionで弾かれたためにnot exist判定になる)
- アクセシブルかどうかもわからない
- 同じ理由でnodeのほうにも提案したが、反対意見が多すぎて実現できなかった
- existsSyncは残った
std/io
のディレクトリ構造が大幅に変更
std/io/bufio.ts
が非推奨化(std/buffer.ts
からの読み込みを推奨)std/io/streams.ts
が非推奨化(std/buffer.ts
からの読み込みを推奨)std/io/bufio.ts
が非推奨化(std/buffer.ts
からの読み込みを推奨)
Deno 全体で ReadableStream/WritableStream に切り替えていくという話はどうなったのか
- 路線変更なしだが、作業が進んでない
- Native File System APIがWeb標準なので、それを採用する予定だった
- Native File System API自体がブラウザ標準になると危険なAPIなので、慎重に議論中
- これからどうしようというところで止まってる
Deno v1.14
deno fmt
とdeno lint
で設定ファイルがサポート
- 賛否両論
deno lint
はそのまま使うでも問題なさそう- 社内のコーディングルールなどで制約がある人は嬉しいかも
deno fmt
のほうが賛否両論- ある種の紛争解決のような感じで実装された
URLPattern
のサポート
- パスのマッチングをするAPI
- ChromeとDenoでしか対応されていない
Chromeに採用されている=Web標準になる
わけではないので注意
- コモン識別子を設定すると、該当するパスを拾える
- Webサーバーのルーティングを書くときに便利
Deno.upgradeWebSocket()
が安定化
- hangupの実装ができるAPI
- 標準モジュールのstdと上手くつながらないバグがあり、今はレビュー対応中
Deno.flock()
などのファイルロックAPI
- まだunstable
- deno_sqliteの作者により提案
- Windowsも入っている
Worker間でのArrayBuffer
のゼロコピー転送
- コピー処理がないので、大きいサイズのバッファを高速転送できる
lint.deno.landがDeno Deployに移行
- freshとTwindで実装(Tailwind CSSからTwindに変わったことでpackage.jsonが不要に)
- ドキュメント内のRecommendedはデフォルトで効いているもの
deno.ns
- Denoネームスペースを提供するnpmパッケージ
- dntのツールとして使いたいという流れから生まれた
- denoのshimを設定するオプション(
shimPackageName
)があり、そこで使われる
- denoのshimを設定するオプション(
- Denoへの移行をサポート
- denodeもあるが、更新が少し古く最新には追いついてなさそう
freshのアップデート
- PreactベースのWebフレームワーク
- lint.deno.landでも使われている
- Next.js風だけど、Deno Deploy向けでon-the-flyではなくプロセス始まってからトランスパイル
- 制作者はREADMEにWIPをつけっぱなしにしておく傾向あり、ぜひ使ってほしい
<Suspense>
を使用したストリーミングレンダリングのサポート<Head>
コンポーネントのサポート/static
ディレクトリに置いたファイルの静的配信がサポート
APIの定義方法が大きく変更
- 以前は
pages/api
配下はAPIルートという扱いだった - 今後は
pages
配下のファイルでhandler
関数をexportする必要があるultraというものもある
- トランスパイル時のWasmの部分が少し重い
Deno Companyのデザイナー求人
world-class web designer
最近のDeno Deploy更新情報
Playgroundという機能が追加
- プロジェクト一覧のNew Playgroundボタンから利用できる
- Web上でソースコードを書いてデプロイができる
- 本物のDeno Deployのインスタンスが立ち上がり、iframeで結果を見ている
- 直接書いて確認できる
- 開発環境といっても遜色ない
- Export to GitHubという項目から、この機能でGitHubにリポジトリ作成が可能
- GitHubからデプロイしたものをPlaygroundで編集はできない
- 使い方としては、Playgroundからリポジトリ作成をして、リポジトリからデプロイする形が良い
CLIでサーバー立ち上げるのと同じようなやり方で動くようになっている
std/http
のlistenAndServe
も動く
大きめの機能追加予定がある!!!!!
- コラボレーションしやすくなる!!!!!!