class: middle, center
Deno入門
コネヒト技術目標マルシェ(2022-03-28)
もりやひろゆき
はじめに
- 今期は技術目標で Deno について調べました。
- そもそも Deno って何?という方もおられると思うので、概要を説明しつつアウトプットしたことも織り交ぜていければと思います。
Deno って何?
A modern runtime for JavaScript and TypeScript.
https://deno.land/
JavaScript と TypeScript のモダンな実行環境です。
競合する環境としては Node.js があります。
Deno の特徴 (1)
ライアン・ダール (Ryan Dahl) 氏が Node.js の反省を元に作られています。
DenoはJSConf EU 2018でのライアン・ダールによる講演「Node.jsに関する10の反省点」で発表された。ライアン・ダールはこの講演において、後悔しているNode.jsの初期設計での決定について言及し、以下の点を挙げている。
・APIの設計でpromiseを使用しないという選択をしたこと
・古いGYPビルドシステムを使用するようにしたこと
・node_modulesとpackage.jsonの採用
・拡張子を除外したこと
・index.jsによる魔法のようなモジュールの依存関係の解決
・V8のサンドボックス環境の破壊
https://ja.wikipedia.org/wiki/Deno
Deno の特徴 (2)
開発に便利なツールが最初から揃っている。
コマンドの例
- フォーマッター:
deno fmt
(Node.js の場合: prettier
など)
- リントツール:
deno lint
(Node.js の場合: eslint
など)
- テスト:
deno test
(Node.js の場合: jest
など)
Deno の特徴 (3)
TypeScript がサポートされている
- 設定しなくても TypeScript がそのまま使えます
- Node.js のように
package.json
に "typescript"
の依存を書く必要はありません
- デフォルトの設定が入っているので
tsconfig.json
なども不要
Deno の特徴 (4)
Node.js と同じく V8 エンジンを使っている
Deno の特徴 (5)
セキュアである
Deno の特徴 (6)
ECMAScript 準拠やブラウザ互換API
- ECMAScript のモジュールシステムのみ対応している
- Node.js は CommonJS のモジュールシステムがデフォルト(ECMAScript のモジュールシステムも使おうと思えば使える
- fetch や localStorage なども使え、ブラウザと互換性のあるコードが書きやすい
- サーバーサイドなどでしか使われないようなAPI(例: ファイルシステムへのアクセス)は、割と
Deno
配下に入っている印象。
Deno の採用例(Slack SDK)
新しい SDK は TypeScript を使って構築され、Deno ランタイムをターゲットにしています。
https://slack.com/intl/ja-jp/blog/developers/faster-simpler-way-build-apps
https://deno.com/blog/slack
Deno の課題
まだ周辺エコシステムが充実していない
- Node.js 標準のモジュールシステム(CommonJS)と互換性がないので、npm パッケージが使えない場合が多い
- 現状はこのスライドとかが参考になりますね。
小ネタ: Deno の読み方
小ネタ2: Deno の名前の由来?
https://twitter.com/deno_land/status/1262517004159913985
Deno Deploy (1)
Deno Deploy の話 - toranoana.deno がわかりやすいので、そこから抜粋します。
- 2021年5月に Deno の会社 Deno Land Inc. よりベータリリースされた Web サービス
- サーバーレス関数を提供するプラットフォーム
- AWS Lambda、Google Cloud Functions、Cloudflare Workers などと競合するサービス
- Deno Deploy と紐付けた github レポジトリに push すると自動的にそのブランチがデプロイされる
- ベータ期間中は無料。正式リリース後もある程度の無料枠がある予定。
--
→GitHub 連携を使うとめちゃくちゃ便利!
Deno Deploy (2)
- ブログを書きました
- GitHub Repository
- Deno Deploy Dashboard (Demo)
フロントエンド開発はどこまで使える?
- ブログを書きました
- まだ「Deno だとこれ!」というようなものはなさそうな雰囲気です。
- これからに期待。
Deno のこれから
- Deno v1 がリリースされたのが2020年5月。
- それなりの年月が経過しても継続して開発されている点を見れば、今後も成長していくのでは、と個人的に思ってます。
- 後発の環境なので、色々と開発体験は良いです。
- ビルトインコマンド、TypeScript のサポート、Deno Deploy など
- Node.js と互換性がないのが辛いですが、今後解消されていくのではという気もしています。
- 他の skypack や esm を使えばある程度使えるものも多いです。
- Node.js の互換モード も開発され、2022年2Qリリース予定のようです。
- 最近は Node.js と Deno の両方をサポートしたライブラリなんかも出てきています。
- 個人的には、フロントエンド開発で使いやすくなればもっと使っていきたいな〜、と思ってます。
class: middle, center
おわり
ありがとうございました!