本文へ
ハクソク

世界を動かす技術を、日本語で。

友情はDenoと終わり、今はNodeが親友です

元記事: 原文(dbushell.com)

概要

  • Node.js の進化に驚き、Denoからの移行を決断
  • パッケージ管理 やTypeScript対応の現状と課題
  • PNPM やFNMなど安全性・利便性重視のツール選定
  • Denoの衰退とNode.jsの優位性
  • 最終的に Deno からNode.jsへ完全移行

Node.jsへの回帰と最新事情

  • 最近の SvelteKitクライアント案件 でNode.jsを再利用
  • かつてのNode.jsと異なり、 ECMAScriptの最新仕様 にしっかり対応
  • require() の強制がなくなり、APIも大幅にモダン化
  • 長年Deno派だったが、Node.jsの進化で再評価

パッケージ管理の選択と安全対策

  • 公式ドキュメントでは NVM のインストールを推奨
    • NVMやNPMの過去の経験はあまり良くなかった
  • Fast Node Manager (FNM) でNodeバージョン切り替えを簡単に実現
  • PNPM を選択し、セキュリティリスクを軽減
    • aliasでnpm=pnpm、npx=pnpxに設定し、既存スクリプトとの互換性確保
  • pnpm-workspace.yaml で追加設定
    • minimumReleaseAge: 1440(1日)、trustPolicy: no-downgrade
    • マルウェア混入リスクを低減するためのリリース遅延
  • PNPM はpost-installスクリプトもブロック
    • NPMは依然として自動実行の危険性あり

TypeScript対応とパッケージ公開の現状

  • Node.js でTypeScriptがスムーズに動作
    • ただし、TypeScriptパッケージのNPM公開は非推奨
  • node_modules配下のTypeScriptファイルはサポート外
    • 技術的ではなく、 哲学的理由 による制限(Microsoft依存回避)
  • 型を削除するビルドツールとして Tsdown を採用
    • 必要なdotfileは2つのみ
  • GitHubのMicrosoft化を嫌い、 Forgejo で自前ホスティング
  • PNPMのtrust policy設定で自作パッケージの信頼性確保

静的サイトジェネレータのNode.js移行

  • Deno からNode.jsへの移行テストを実施
    • 以前なら大改修が必要だったが、Node v26.10.0では最小限の修正で完了
  • ファイルシステムAPI をnode:fsに置換
  • サーバー部分は Hono のnodeアダプタで対応
  • @std/pathから node:path へのimport切替のみで互換性確保
  • ビルド速度が約15%向上
    • さらなる最適化の余地あり

Node.jsの進化とDenoの衰退

  • Node.jsは着実に進化し、 Deno の優位性を逆転
  • Denoの問題点
    • ZSH連携の不具合
    • JSRの「429 Too Many Requests」頻発
    • 同時HTTPリクエスト時のバグ
  • Deno Land Inc.の停滞・リストラ・方向性の迷走
  • JSRサポートは迅速にアカウント削除対応
  • 過去のDenoパッケージは見えなくなったが、古いバージョンはインストール可能

まとめ:Node.jsへの完全移行

  • 長年の習慣や慣れからDenoを使い続けていたが、 Node.jsの進化 で完全移行を決断
  • Denoの役目は終わり、今後はNode.js中心の開発体制へ
  • 最後の一言:
    • brew uninstall deno

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

Denoのスタンダードライブラリをv1にするのを手伝ったことがあって、チームや哲学が大好きだったんだけど、最近はなんだか彼らが徐々に忘れ去られていくのが悲しいな。レイオフの後、ロードマップもコミュニケーションもないみたいだし。彼らがどこに向かっているのかすごく気になるし、まだまだ良い方向に行ってほしいと思ってる。DenoはNodeやBunよりもずっと好きだったんだよね。

└

一番悲しいのは、きっと大手からの買収オファーがあったのに断ったことだろうね。でも、市場がハイパースケーラーや超資本化されたAI企業に有利に動いてるから、買収が唯一の賢い選択だったかもしれない。売るか、追い出されるかのどっちかだね。

この制限は技術的というより哲学的なものだね。分かるけど、TypeScriptはマイクロソフトの製品だからね。その扉を開けると、エコシステム全体が汚染されちゃう。悪いニュース(というか、これは少し前に起こったことだけど): https://www.cnbc.com/amp/2020/03/16/microsoft-github-agrees-...

└

心配しないで。マイクロソフトはnpmやそのエコシステムをGitHubと同じくらい良い管理者になってくれると思うよ。

LLMが普及してきてるせいか、プロジェクトを「辞める」人が増えてる気がする。必ずしも悪いことではないけど、今は間違ったものを作ってると機会コストが高すぎるってことを示してるね。Denoは間違ったものじゃないけど、LLMがそれに手を伸ばさないのは今のところ大きな痛手だね。

└

"Denoは間違ったものじゃないけど、LLMがそれに手を伸ばさないのは今のところ大きな痛手だね" そういえば、私の場合、突然Denoがインストールされてて、自動モードでFableを動かしてたんだけど、Nodeもすでにあって、Denoが何か調べる羽目になったんだよね。「ああ、あれがNodeの代わりなんだ。」

└

Denoは間違ったものじゃないけど、LLMがそれに手を伸ばさないのは今のところ大きな痛手だね。これって、自分が何をしてるか分からない人にしか関係ないことだよ。LLMはどんなツールでも使えるからね。私はすごく変わったスタックで作業してるけど、LLMはそこにぴったり合ってるみたい。

└

Denoの周りにラッパースクリプトをエージェントの許可リストに追加して、その権限システムを活用するようにしたんだ。Pythonやbashコマンドの代わりにDenoを使うよう指示したら、結構うまくいってるよ。

└

LLMはそれを使わないけど、フロンティア企業がデフォルトにしてないからね。ClaudeにはReactを使わないように(SvelteKitを使え)、Nodeを使わないように(DenoかBunを使え)って指示してる。他にも色々あるけど、業界のデフォルトはクソだけど、仕方ないよね。

└

これがLLMが進歩を妨げてる一因だよ。人々はStackOverflowや新しいプロジェクトから離れて、リアルな人と質問をしたり答えたりする場から遠ざかって、LLMが出す答えや解決策に頼るようになってる。

└

問題ないと思うよ。LLMはuvを使わないけど、使いたいってはっきりさせれば使うようになるよ。

└

LLMsはそれを求めない ちょっと言葉が悪いけど、完全にバカじゃない限り、ループを書くのもできないってことはないよ。LLMは何かを「求める」わけじゃなくて、君が何をするかを指示するんだ。「このツールを使って、あのことを、こういうふうにやって、具体的にどうやるかのガイダンスもあるから、問題があったら聞いてね」ってね。他の使い方は、ただのコピペのクソコードで、20年間エゴイストが一つのコードベースで暴れ回るよりもひどいコードベースになっちゃうよ。

Hacker Newsで議論の続きを見る

同じ出典の記事