Denoばた会議 Monthly 第15回
2022年11月20日開催。
connpassリンク。
今月のアップデートを追う
Denoのアップデートを追っていくLT。
そのあとの雑談込みでザックリと箇条書き。
Deno v1.28
なぜリリースが早まったのか
- マーケティング的な事情でリリース早めた
- サンクスギビングで注目度が下がるので
npmパッケージサポートの安定化
--unstable
なしでnpmパッケージを利用できる- Bennyを使ってみた感じ問題なく動作している
- NodeとDenoでも使えるベンチマークライブラリ
- 計算だけとかのライブラリだと問題なく動く
- より複雑に絡んだライブラリになると落ちるとかあるかも
npmパッケージサポートの改善
- 以下の改善を実施
peerDependencies
がサポート- npm 7で扱いが変わったので、そこを参考に実装された
- 2で自動、3で手動になっていたが、7で自動に戻ったらしい
deno compile
とdeno bundle
はまだ対応していない- compileはまとめるので大きめのnpm入れるとサイズが大きくなりそう
deno info --json
でnpm:
がサポート- Astroのサポートに向けた改善が進行中
- サポートのトラッキングIssueで、Next.jsのものもある
- 2つ目の
ReferenceError
に取り組んでいるが、process
という変数がそもそもないので難航しそう
- 今後計画されている変更内容はロードマップ参照
ロックファイルの自動適用と生成
deno.json(c)
が存在する場合、ロックファイル(deno.lock
)の生成と適用が自動化された- この挙動は
--no-lock
で無効化できる - 1.27.1のときには入ってた
- unstableをつけると入ってた
- 別要件でunstableをつけてたから出たのかも
- 今バージョンでunstableが外れた
- npmは
npm i
のときに生成するが、Denoはインストールがないのでdeno run
で生成する - すべての依存を足していく感じで挙動する
- ハッシュ値と合わないファイルがくると実行がエラーになる
- 割と理想的という感想
- NodeとかBunとかの優位性としてセキュリティがあり、そこが自動で提供されると優位性が強まる
- 現状ではWorkしてない?
Deno.Command
が追加 (--unstable
)
piped
を使うとStream APIを使ってサブプロセスの標準入出力を制御できるspawn
やspawnChild
などのAPIがリリースされていたが、3つに分かれていたので1つにまとめた- あの3つが必要十分なので
spawn
とspawnchild
で意味が違うので、それはどうなんだという話になった- 最初は
new
なしのcommand
だったが、現在のCommand
に変更になった- lucaさん曰く、JavaScriptではそういったファクトリー関数は存在しなくて、Classで表現されるのが最近の流れのため
- TextEncoderなども
new
がある
output
がspawn
に近い動き、outputSync
がspawnSync
に近く、その中でさらにspawnするとspawnChild
にDeno.Command
が最終形に近いDeno.Command
とDeno.run
の使い分けDeno.run
でできなくてDeno.Command
ができることがある- Commandとオプションだけ指定して結果くれということが
Deno.Command
はできる Deno.run
は同期呼び出しがない(裏でプロセスが動いちゃうデザイン)
- Commandとオプションだけ指定して結果くれということが
- syncしたいときは
new Command.outputSync()
をやる必要がある
deno bench
の安定化
deno bench
コマンドとDeno.bench
が--unstable
なしで利用できる- どういう意図で安定化しないのか謎だった
- 安定化してもいい? って聞いても回答がなかった
- 関心が薄かったので安定化が遅れたのかも
unstable APIの安定化
- 以下のAPIも安定化され、
--unstable
なしで利用できるようになったDeno.networkInterfaces()
- IFconfigが受け取れる
Deno.systemMemoryInfo()
- メモリ利用率とか受け取れる
Deno.uid()
- UserIDが受け取れる
Deno.gid()
- GroupIDが受け取れる
- システム系の安定化
- Node互換性のために入れたAPI
npm:
を安定化させるのに安定化させる必要があった- 巻き込み安定化という感じ(成熟したから安定化というのとは違う)
V8がv10.9へアップグレード
- proposal-array-groupingのサポートが入っている
- Stage3くらいまでいくと変更されないので(致命的バグがなければ変更できない)ので
denoland/fresh-wordpress-themes
- WordPressをHeadless CMSとして使いつつ、フロントエンドをFreshで開発するためのテンプレート
- 公式で使用方法が解説されている
- CMSでDenoやりたいときはWordPressをHeadless CMS代わりに
- モダンにWordPressを扱うことができる
- Deno公式では今のところ使われていない
- UIはFreshで公式テンプレートを再現
- ダミーデータは公式がテーマ用に用意したものを利用している
- WordPressはWebHookみたいなのあるのか?
- 聞いたことない
- そういうのはWordPressだとRSSかも
- キャッシュできると良い
- 現状の構成的にWordPressのリージョンは1つなので、WordPressの分散は自力で頑張ってねという感じ
- WordPressは世界的なCMS
- CMS使ってるサイトの65%、全サイトの43%で使われている
- 2011年は13%だったが、増え続けている
- CMS自体は増えているが、CMS界隈だったらWordPressなんだろうなぁ、という感じ
- WordPressはPHPを独自の方向性で改善しているので、Reactなどとは相性が悪い
- このやり方が一つの解決策になる
Launch Week
- Denoのnpmパッケージサポートのデモとして、チュートリアルが公開されている
- npmパッケージ(PrismaとMongoose、Apolloなど)でデータ永続化
- ReactやVue、Expressでアプリ構築
- Denoでより安全にnpmを使用する
- Bartekさんが表を作った(Op funnelと名付けた?)
- Dockerを利用してDenoをAWSなどで走らせる
- lightsailはDockerだとお値段上がるはずなので、要相談という感じ
- マーケティング色が強い
- 毎日ブログを更新して
- 初日はリリースポストで、以降は各機能の記事になっている
- Andyさんとhashrockさんが密にやり取りしてヒーローイメージを作った
- アーマーDenoくんは再利用に近い(deno.landのリニューアルがドタバタした感じで今月変わった)
deno.landのリニューアル
- 文字のデザインは外部デザイナー、イラストはhashrockさん、実装はLeoさん
- 顧客の喜びの声、LPにありがち(信頼度が上がるのでA/Bテストだとあったほうが成果が上がる)
- 水彩画っぽくDenoくんが描かれている
Deno Advent Calendar 2022
- Qiitaで2022年のDenoのAdvent Calendarが公開された
- 今のところ8人で、まだまだ枠があるので是非是非
質問や共有コーナー
- Andyさんが入ってからだいぶ情報発信が活発になってるなぁ、という感
- マーケティングの動きが活発化している
- 会社っぽい動きが増えている
- esm.shのビルド結果の件はfreshがすごい影響受けそうですが、esm.shに何か働きかけるなどあるでしょうか? もしくはesm.shを参照しないようにするとか?
- esm.shを参照しない方向性に行く可能性が高い
- esm.shの作者さんが退職された
- 在職時は直してもらっていたが、今はできない
- esm.shのコードベースが分散作業に向いてない
- 細かいユニットテストがない
- 全体的なインテグレーションテストはある
- 内部への理解が深くないと作業ができない
- 逆にDenoはガチガチにユニットテストを書いている
- Denoで同じものを作るのが話の流れとしてあり得る
- Fresh Components
- UIコンポーネント集
- Tailwindとかにはそういうものが存在する
- 今は個人管理になっているがTSX Tabler IconsというTSXのアイコン集がある
- Chartsは公式のfresh_charts
- Fresh RTAやってみたら面白そう
- オフィスアワーは、どのくらいの申し込みがあるんでしょうか?
- ビジネスの方にはきてるのかも
- ちょっと下々の者にはわからない
- 申し込みはお待ちしています
- Deno2はいつ頃になるんでしょうか?
- ちょっとわからない
- Node互換性でDeno2にする予定だったが、破壊的変更じゃなかったのでDeno2で出さなくてよくなり、いつ出すか不明になった
参考資料
上記をまとめる際に眺め、かつ箇条書きの中に含められなかった資料です。
名前だけ掠ってて関係ない資料もあるかと思いますが、まとめる作業の可視化として残しています。
読まなくて大丈夫です。