denoについて調べたことを共有する
https://gyazo.com/8ac7309a1b4012f3592a7c8bc2e086eb
この資料はWe Are JavaScripters! @33rdのLT資料です。
自己紹介
yamanoku.icon @ yamanoku
おおやまみちのく a.k.a やまのく
Twitter
GitHub
Qiita
2019/01〜 株式会社プレイドでデザインエンジニアをやってます
https://gyazo.com/74c719e90842b94436001be6b415b06f
https://plaid.co.jp
CXプラットフォーム KARTEの開発・運営
https://gyazo.com/bf7e25635c690ff96a383aa8529f2f46
https://karte.io/
既婚で1児の父と猫🐈🐈🐈の飼い主
しがないラジオの池上純平と一緒にGinza.jsというJavaScriptの勉強会を開催してます
Ginza.js #1(5/22)
Ginza.js #2(6/25)
3回目(7/30)
https://ginzajs.connpass.com/event/136794/
主に東側のJSerで盛り上げたい
WeJSは2回目の登壇です
前回 → We Are JavaScripters! @26th
発表 → scroll handlerを捨てよ、Intersection Observerへ出よう
登壇初心者枠も残り1回
よろしくお願いします。
今回のテーマ:denoについて
「デノ」と呼ぶそうです
参考 => /deno-ja/Denoの発音
個人的に気になってたので調べたことについて共有
補足あればハッシュタグつけて実況などお願いします
denoについて
ご存知の方 🙋
触ったことある方 🙋
使ってなにか作ったことある方 🙋
3行で説明すると
Rustでつくられてる
Node.js作者のRyan Dahlによって生み出された
サーバーサイドTypeScriptランタイム
なぜ作られた?
jsconf.eu 2018
Node.jsの作者であるRyan Dahlが設計上の問題点を語っていた
https://www.youtube.com/watch?v=M3BM9TB-8yA
Design Mistakes in Node
Node.js における設計ミス By Ryan Dahl - from scratch
Promiseがない
gyp(メタビルドシステム)採用の失敗
node_modulesの複雑性
https://gyazo.com/6f8d9b25b1f294b99ce052471010a25b いつもの図
モジュールの設計を後回し
管理運営自体を private controlled にしてしまったこと
それらを一切ゼロベースに戻して新しいランタイムを産み出した
それがdeno
ロゴ
https://cdn-ak.f.st-hatena.com/images/fotolife/h/hashrock/20190204/20190204030029.png 手書きロゴ
チンアナゴっぽいが
日本ユーザーグループではそう言われていた
どうやら恐竜らしい
denoはdino(恐竜)と音が似てる
「夜の雨の中に立って、ソフトウェア開発の闇の戦いにストイックに立ち向かう」様子
https://deno.land/logo.svg 新しいロゴ
詳しくはhashedrockさんのブログを参照
Deno公式にアニメロゴが採用されたことと、許容的なリーダーの話 - No Regrets in Bathing
denoのすごいところ
TypeScriptサポート
JavaScriptでも動く
ES2015以降のモジュールシステム
import文が書ける!
ブラウザ互換性
最新のブラウザであれば実行できる
セキュリティ面
デフォルトでネットワークアクセスもなければファイルの書き込み権限もない
オプションで変更できる
code:zsh
Deno requests network access to "127.0.0.1:8080".
Grant? a/y/n/d (a = allow always, y = allow once, n = deny once, d = deny always)
依存・中央集権型のそれではない
npmいろいろ危ういよね
キャッチされないエラーがPromiseで起きたら即シャットダウン
yamanoku.icon が個人的にすごいと思った部分
絶対パスから読み込んで実行する
Scrapboxはコードブロックで書くとアクセスできる
/help-jp/コードブロック
code:example.ts
console.log('たとえばこんなな感じでつくると')
https://scrapbox.io/api/code/yamanoku/denoについて調べたことを共有する/example.ts
にアクセスできる
組み合わせると
ドキュメンテーションがあり
ソースコード自体も使える
管理者同士での修正・変更も容易
Scrapboxに限らない話ではあるけど、こういう未来は楽しそうyamanoku.icon
懸念点
業務実用レベルではない
まだまだ開発中
コマンドもすぐ変わったり・追加されたりする
できないこと
HTTPS
Redis以外のDBアクセス
linter(開発中)
npm、package.jsonがない
これはもともとの目的部分
コマンド
deno (run) [FILE]
実行
--allow-netでネットワークアクセス省略
--allow-writeで書き込みアクセス有効化
-rでキャッシュクリア・再コンパイル
deno info [FILE]
情報
deno install [FILE]
deno bundle [FILE]
deno fmt [FILE]
フォーマッタ
Prettierが走る
https://gyazo.com/36a3442d97fa62def07c7d091bb60759
さっき触ってみたら503で動かんかった yamanoku.icon
https://github.com/denoland/registry/issues/115
レジストリはaws lambdaで実装しているとのことyamanoku.icon
なおった!yamanoku.icon
https://github.com/denoland/registry/issues/115#issuecomment-506782521
標準ライブラリ(2019/6/28 時点)
GitHub.icon https://github.com/denoland/deno_std
colors
datetime
encoding
examples
flags
fs
http
log
media_types
prettier
strings
testing
ws
deno.land registry のスクリプトをブラウザで見に行くとソースハイライトされて表示される
https://deno.land/std/fs/mod.ts
https://gyazo.com/35a098a488edbec2f9378a1d40c4b181
リンクになってるので辿れる
yamanoku.icon はどう思ったか
Node.jsに変わる新たな希望となりうるのか
ぶっちゃけ技術がどうのこうのよりいかにそれを脱するか大きなエネルギー・衝動のが個人的にそそるものがある
この労力をNode.jsにコミットする方向もあるんだろうけど
node_modulesの依存関係問題ばかりはどうしようもなさそう yamanoku.icon
実行するのが容易で敷居は低く感じられた
昔、アホすぎてNode.js動かすときにbabelも通さずimport文を書いて動かなくて?となった yamanoku.icon
必要なものがすべてdenoにある安心感
まだ本番で活用できるかは怪しいので趣味で追ってみる感
動かせるものは色々と散見されてるので触ってみてる
GitHub.icon https://github.com/olivewind/awesome-deno
いつものawesome
GitHub.icon https://github.com/hayd/deno_docker
Dockerで動かせる
GitHub.icon https://github.com/syumai/denoboard
そのほか参考リンク
Scrapbox.icon /deno-ja
deno日本グループのScrapbox
Slack.icon https://deno-ja-slackin.herokuapp.com
deno日本グループのSlack
https://denolib.gitbook.io/guide/
https://deno-ja.booth.pm/items/1317172
https://gyazo.com/c63b12633250d1182236890787093336
表紙がめっちゃかわいいyamanoku.icon
次回の技術書典にてdenobook 2だすかは検討中とのこと
出た!
https://booth.pm/ja/items/1574063
https://gyazo.com/5804a924d764618d5f82e6e93f38fa2f