🦕

Deno Deploy Beta 3が来たぞ

2021/11/02に公開

2021/10/28にDeno Deploy Beta 3がリリースされました。
https://twitter.com/deno_land/status/1453671097510072320

ツイートにもありますが、トピックは以下の5点です。

  • Outbound TCP and TLS connections
  • DNS resolution
  • URLPattern
  • Playgrounds
  • Organizations

公式の記事をもとに、アップデートされた点を見ていきます。

https://deno.com/blog/deploy-beta3

Beta2のときの記事はこちら:
https://zenn.dev/kawarimidoll/articles/38d5c3d82e6882

外向きのTCP/TLSコネクションを張れるようになった

Deno.connectまたはDeno.connectTlsを使って外向きのTCP/TLSコネクションを張れるようになりました。
これにより、DBに直接接続するなど、HTTP以外の通信処理をできるようになりました。

名前解決が出来るようになった

Deno.resolveDns()を使えるようになりました。

const ips = await Deno.resolveDns("deno.land", "A");
console.log(ips)

URLPattern APIが追加された

Deno 1.14.0にて追加(1.15にて安定化)されていたURLPattern APIがDeno Deploy側でも使えるようになりました。

https://zenn.dev/magurotuna/articles/deno-release-note-1-14-0

path-to-regexpライクなルーティングDSLを、外部のWebフレームワーク等の追加なしで書けるようになります。

https://developer.mozilla.org/en-US/docs/Web/API/URLPattern

Playgroundが追加された

こちらはBeta 3より少し早く発表されていましたが、Playgroundが追加されました。

https://twitter.com/deno_land/status/1450555904924033038

CodePenやCodeSandboxなどのように、Webブラウザ上で直接コードを編集・動作確認できます。
また、https://dash.deno.com/playground/xxxのURLが発行され、他のユーザーとシェアすることもできます。

前述のURLPatternの使用例がPlaygroundとして公開されています。

https://dash.deno.com/playground/urlpattern

iframeタグを利用して、PlaygroundをWebページ内に埋め込むこともできます。

<iframe width="100%" height="600" src="https://embed.deno.com/playground/example-sift?no-border=on&layout=both"></iframe>

Embed codeの生成・表示確認用に https://embed.deno.com が用意されています。

Zennでは直接HTMLを書くことはできないのでここに表示することはできないのですが、CodePen等の先行サービスは独自記法で対応しているので、@[denodeploy](id)のような書き方で埋め込めるようになったら良いなーと思っています。

Organizationが追加された

これまでDeno Deployのダッシュボードは登録者個人でしか見られませんでしたが、Organizationを作って他のユーザーと共有することができるようになりました。
これで企業その他のチームでDeno Deployを使うことも簡単になりますね。

ドキュメントはこちら。
https://deno.com/deploy/docs/organizations

deployctlはアーカイブされた

Deno Deployをローカルで動作させるツールとしてdeployctlが提供されていましたが、リポジトリがアーカイブされました。
今後はdeno runで実行することが推奨されるようです。

https://github.com/denoland/deployctl

型情報を利用したい場合はdeployctl typesの出番はあるのではないかと思っていますが、アーカイブされた以上、更新もなさそうですね…。

https://zenn.dev/kawarimidoll/articles/efed8ada433f24

ちなみに、Neovimにてdeno runを実行するコマンドを以下の記事で紹介していますので、ユースケースが合う方は使ってみてください。

https://zenn.dev/kawarimidoll/articles/0ff5d28fa584d6

listenAndServeが推奨になった

明記されていませんが、サーバー用スクリプトの書き方が変化しています。

Beta 1時点ではaddEventListener()を使用する記法でしたが、Beta 2でネイティブHTTPサーバー(Deno.listenDeno.serveHttp)を使う形に変化しました。

その後、std/httpがネイティブHTTPサーバーをラップしたものに修正され、Beta 3の記事ではこのモジュールのlistenAndServeがメインで使われています。
まだBetaなので更に変更が入るかもしれませんが、それまでは(少なくとも新しいプロジェクトでは)listenAndServeを使うのが良さそうです。

追記: 非推奨になりました
以下の記事をご確認ください。
https://zenn.dev/kawarimidoll/articles/8031c2618fedca

所感

TCP/TLSコネクションやDNS resolutionに関しては自分の知見が浅く、直接のユースケースが思いつきませんでしたが、Playgroundsは面白そうです。
記事中に書いたように、CodePenなどを意識しているのではないかと思うのですが、これをホスティングサービスと一緒にするというのは珍しいんじゃないかと思います。

また、今後正式なサービスとして運用するとなると、Organizationが追加されたのも納得です。
現状は何も発表されていませんが、このあたりは有料機能になったりするかもな、と思っています。

おわりに

GAリリースへ向けてブラッシュアップが進んでいますね。
予定ではQ4 2021とのことなので、もう間もなく正式版になるのだと思います。楽しみです。

あと、Beta版バージョンアップ紹介のブログのイラストは、だんだんと描き込みが上がっていっているとのことです。かわいい。

https://twitter.com/hashedrock/status/1453701093456695304

Discussion