Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Deno のこれまでとこれから / Deno JSConf JP 2021
Search
Yoshiya Hinosawa
November 27, 2021
Programming
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Deno のこれまでとこれから / Deno JSConf JP 2021
Deno のこれまでの歩みと、これからのロードマップについて JSConf JP 2021 で発表しました。
Yoshiya Hinosawa
November 27, 2021
More Decks by Yoshiya Hinosawa
See All by Yoshiya Hinosawa
class-component.js
kt3k
0
120
Other Decks in Programming
See All in Programming
R8 の設定見直しでアプリサイズ削減
andpad
0
220
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
32k
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
1k
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
phperだってパンチカードでコーディングしたい
o0h
PRO
0
340
ActionController meets Protocol Buffers
sorah
0
530
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
270
Featured
See All Featured
So, you think you're a good person
axbom
PRO
2
2.2k
Designing for Timeless Needs
cassininazir
1
530
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Prompt Engineering for Job Search
mfonobong
0
520
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Typedesign – Prime Four
hannesfritz
42
3.2k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
The agentic SEO stack - context over prompts
schlessera
0
970
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
The Cult of Friendly URLs
andyhume
79
7k
Transcript
Deno の これまで と これから Deno @ JSConf JP 2021
- 1 / 58
アジェンダ Deno とは Deno のこれまでのロードマップ Deno のこれからのロードマップ Deno @ JSConf
JP 2021 - 2 / 58
話す人 日野澤歓也 twitter @kt3k GREE (2012 - 2013) Recruit (2015
- 2019) Deno Land (2021 -) 2018 年から Deno にコントリビュート を開始。2020 年作者に誘われ Deno Land に転職。現在はフルタイムで Deno と Deno Deploy を開 発中。 Deno @ JSConf JP 2021 - 3 / 58
Deno とは Deno @ JSConf JP 2021 - 4 /
58
今から3 年前 Deno @ JSConf JP 2021 - 5 /
58
とあるカンファレンス Deno @ JSConf JP 2021 - 6 / 58
JSConf EU 2018 Deno @ JSConf JP 2021 - 7
/ 58
「Node.js について後悔している10 の事」 Node.js の作者 Ryan Dahl が Node.js の現状のデ
ザインについて、今の視点からみて後悔している7 つの事を発表 それを克服する新しい処理系として Deno プロジェ クトを提案 Deno @ JSConf JP 2021 - 8 / 58
7 つの後悔 後悔1: Promise を使わなかった 後悔2: Security Sandbox を使わなかった 後悔3:
GYP を使い続けてしまった 後悔4: package.json 後悔5: node_modules 後悔6: モジュール解決時の拡張子省略 後悔7: index.js Node.js の「あたりまえ」を否定 Deno @ JSConf JP 2021 - 9 / 58
対案としての Deno 、そのゴール 1. セキュリティ 2. ES Module 3. TypeScript
ビルトイン 4. 単体の実行ファイルで動く 5. モダンな開発環境を使う 6. 可能な限り Web 互換 などの目標が掲げられた Deno @ JSConf JP 2021 - 10 / 58
Deno とは Deno @ JSConf JP 2021 - 11 /
58
Deno とは " 改良版" Node.js Deno @ JSConf JP 2021
- 12 / 58
Deno @ JSConf JP 2021 - 13 / 58
Deno のこれまで Deno @ JSConf JP 2021 - 14 /
58
Deno のこれまでのロードマップ Web 互換性 TypeScript サポート V8 サンドボックスセキュリティの活用 HTTP パフォーマンス
Deno @ JSConf JP 2021 - 15 / 58
Web 互換性 Deno @ JSConf JP 2021 - 16 /
58
Web 互換性 Deno には可能な限り Web 互換 API を取り入れる というデザイン方針がある サーバーサイドでも意味がある
Web API を出来る だけ取り入れる Deno @ JSConf JP 2021 - 17 / 58
Web 互換性 Deno に実装されている Web API の例 http client -
fetch API バイナリ処理 - TypedArray API (Uint8Array, etc) ストリーミング処理 - Web Stream API URL parse - URL API PubSub - EventTarget API Deno @ JSConf JP 2021 - 18 / 58
Web 互換性 Deno に実装されている Web API の例 暗号 - Web
Crypto API GPU - WebGPU http server - Request, Response API データ保存 - Web Storage API Deno @ JSConf JP 2021 - 19 / 58
Web 互換性 - 最近の進捗 - WPT 2021 年1 月 Web
Platform テストを CI に導入 Web Platform Test = ブラウザが共通で通している Web API のテストスイート コミット毎に Web 互換性をチェックするように Deno @ JSConf JP 2021 - 20 / 58
Web 互換性 - 最近の進捗 - MDN 2021 年8 月 MDN
への掲載が始まる Deno @ JSConf JP 2021 - 21 / 58
TypeScript サポート Deno @ JSConf JP 2021 - 22 /
58
TypeScript サポート TypeScript をそのまま実行できる。 // sample.ts const res = await
fetch("https://example.com") console.log(res.body.text); $ deno run sample.ts Check file:///Users/kt3k/sample.ts error: TS2531 [ERROR]: Object is possibly 'null'. console.log(res.body.text); ~~~~~~~~ ↑ 実行時エラーではなく型エラー Deno @ JSConf JP 2021 - 23 / 58
TypeScript サポート - 最近の進捗 2020 年8 月 deno lsp コマンドの導入
VSCode とシームレスな連携 & Deno 固有な型情報 の補完が出来るように Deno @ JSConf JP 2021 - 24 / 58
TypeScript サポート deno lsp ネットワーク越しの TypeScript も型補完が可能 Deno @ JSConf
JP 2021 - 25 / 58
サンドボックスセキュリティ Deno @ JSConf JP 2021 - 26 / 58
サンドボックスセキュリティ 前提の話 Deno は内部的に V8 エンジンを使っている。 ブラウザ上で JavaScript を安全に実行するため、 V8
エンジンの実行環境は厳格にサンドボックス化 されている。 => V8 の外に影響を及ぼせないようになっている Deno @ JSConf JP 2021 - 27 / 58
サンドボックスセキュリティ ・ ・ ・ Net Timer FS User’s script opcall_async
opcall_sync Rust V8 Sandbox V8 Deno Check permissions Deno @ JSConf JP 2021 - 28 / 58
サンドボックスセキュリティ V8 Sandbox から出て runtime の機能を使う際に opcallSync / opcallAsync という関数を必ず通るデ
ザインになっている その際に使おうとしてる機能に即したパーミッショ ンを持っているかどうかをチェックする Deno @ JSConf JP 2021 - 29 / 58
サンドボックスセキュリティ 7 種類のパーミッションがあり、コマンドライン引 数で渡す --allow-read ファイル読み取り --allow-write ファイル書き込み --allow-net ネットワーク
--allow-env 環境変数読み取り --allow-run プロセス実行 --allow-ffi ネイティブ拡張の使用を許可 --allow-hrtime 高精度タイマーの使用を許可 Deno @ JSConf JP 2021 - 30 / 58
サンドボックスセキュリティ 各セキュリティに範囲指定が実装されています カレントディレクトリのみ読み込み許可 deno run --allow-read=. program.ts dist/ ディレクトリのみ書き込み許可 deno
run --allow-write=dist/ program.ts Deno @ JSConf JP 2021 - 31 / 58
サンドボックスセキュリティ 特定のドメイン・ポートのみネットワークアクセス許 可 deno run --allow-net=example.com:80 program.ts ※攻撃コードが混入してしまった時に威力を発揮 Deno @
JSConf JP 2021 - 32 / 58
サンドボックスセキュリティ - 最近の進捗 AWS のクレデンシャルの環境変数のみ使用許可 deno run \ --allow-env=AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY \
program.ts git コマンドだけ使用許可 deno run --allow-run=git program.ts Deno @ JSConf JP 2021 - 33 / 58
Deno のユニークなデザインは 一定の評価を受けつつある Deno @ JSConf JP 2021 - 34
/ 58
Deno の採用例 - GitHub 次世代 Data Access API Deno @
JSConf JP 2021 - 35 / 58
Deno の採用例 - Jake Archibald Deno @ JSConf JP 2021
- 36 / 58
Deno の採用例 - Slack Deno @ JSConf JP 2021 -
37 / 58
Deno のこれから Deno @ JSConf JP 2021 - 38 /
58
これからロードマップ 大まかな方向性には大きな変更は無し。 Web 互換性、TypeScript サポート、セキュリティ には引き続き注力 Deno @ JSConf JP
2021 - 39 / 58
2021 年10 月 大きめのロードマップが追加 Deno @ JSConf JP 2021 -
40 / 58
Deno @ JSConf JP 2021 - 41 / 58
Node.js 互換性 Deno @ JSConf JP 2021 - 42 /
58
デモ Deno @ JSConf JP 2021 - 43 / 58
Node.js 互換性をなぜやるか Deno は自体は良く出来ているが、Node.js と違い すぎるため使えないという意見が多い 実際 Deno の新規インストール数は、横ばい気味 Node.js
互換性を導入すればユーザー数が増える可 能性がある Node.js と互換性がないのは意図的なデザインであ ったはず・・・ Deno @ JSConf JP 2021 - 44 / 58
Node.js 互換性をなぜやるか Deno は自体は良く出来ているが、Node.js と違い すぎるため使えないという意見が多い 実際 Deno の新規インストール数は、横ばい気味 Node.js
互換性を導入すればユーザー数が増える可 能性がある Node.js と互換性がないのは意図的なデザインであ ったはず・・・ Node.js 互換性を巡って社内・コミュニティ内でも混 乱状態に Deno @ JSConf JP 2021 - 45 / 58
Deno @ JSConf JP 2021 - 46 / 58
プラットフォームビジネスの Chicken and Egg problem by Joel Spolsky Deno @
JSConf JP 2021 - 47 / 58
Chicken and Egg problem ある新しいプラットフォームを構築したい場合に ユーザーが少なければ、そのプラットフォームで 動くソフトは増えない ソフトが少なければ、そのプラットフォームを使 うユーザーは増えない Deno
@ JSConf JP 2021 - 48 / 58
Chicken and Egg problem ユーザーが増えればソフトが増える ソフトが増えればユーザーが増える どっちが先に増える? Deno @ JSConf
JP 2021 - 49 / 58
Chicken and Egg problem ユーザーが増えればソフトが増える ソフトが増えればユーザーが増える どっちが先に増える? => そのままではどちらも急には増えない Deno
@ JSConf JP 2021 - 50 / 58
Chicken and Egg problem ユーザーが増えればソフトが増える ソフトが増えればユーザーが増える どっちが先に増える? => そのままではどちらも急には増えない =>
この状況に陥ったまま消えたプラットフォームは多 い Deno @ JSConf JP 2021 - 51 / 58
Chicken and Egg problem ユーザーが増えればソフトが増える ソフトが増えればユーザーが増える どっちが先に増える? => そのままではどちらも急には増えない =>
この状況に陥ったまま消えたプラットフォームは多 い => まさに Deno が今直面している状況 ( と Deno チー ムは考えました) Deno @ JSConf JP 2021 - 52 / 58
Chicken and Egg problem この問題を解決する方法が、前プラットフォームと の互換性をとること 例. Windows 3.x Windows
1.0, 2.0 は流行らなかった 3.0 で DOS platform との互換性をとったため、 使えるソフトが一気に増えて流行った 例. Windows 95 Windows 3.x 系との互換性に異常に拘って実装 結果最初から使えるソフトが多かった Deno @ JSConf JP 2021 - 53 / 58
Chicken and Egg problem Node.js 互換性で Chicken and Egg problem
を解 決できるのではないか? Deno @ JSConf JP 2021 - 54 / 58
Node.js 互換性 Deno は Node.js 互換性を実現して既存 Node.js ユ ーザーの取り込みを目指しています 2022
年Q2 リリース予定 Deno @ JSConf JP 2021 - 55 / 58
まとめ Deno @ JSConf JP 2021 - 56 / 58
まとめ Deno は " 改良版" Node.js を目指すプロジェクト Deno はこれまで Web
互換性、セキュリティ、 TypeScript サポートに力を入れてきて、一定の成果 をあげた Deno はこれから Node.js 互換性に力を入れる Deno @ JSConf JP 2021 - 57 / 58
End Deno @ JSConf JP 2021 - 58 / 58