Slide 1

Slide 1 text

Web 開発における Deno Fresh の活用例 ペアプロタイマー timer.team の開発 LEF(@lef237) 2024.06.21 - Findy Lunch LT

Slide 2

Slide 2 text

LEFでレフと読みます 株式会社えにしテック所属 Deno で変わるランタイムの景色 実践事例 Lunch LT 自己紹介

Slide 3

Slide 3 text

Deno で変わるランタイムの景色 実践事例 Lunch LT 2023年12月、timer.teamをリリースしました

Slide 4

Slide 4 text

リモートワークでの ペアプログラミング・モブプログラミングに 特化したタイマーアプリ Deno で変わるランタイムの景色 実践事例 Lunch LT timer.teamとは?

Slide 5

Slide 5 text

デモをします! Deno で変わるランタイムの景色 実践事例 Lunch LT

Slide 6

Slide 6 text

デモ(予備) Deno で変わるランタイムの景色 実践事例 Lunch LT https://www.youtube.com/watch?v=Z5ySYfflU04

Slide 7

Slide 7 text

Deno で変わるランタイムの景色 実践事例 Lunch LT timer.team開発の課題 vP リアルタイム双方向通信をしたI uP サーバーとクライアントを同じフレームワークで統一したI eP タイマーの状態を保存したい

Slide 8

Slide 8 text

①リアルタイム双方向通信 Deno で変わるランタイムの景色 実践事例 Lunch LT

Slide 9

Slide 9 text

①リアルタイム双方向通信 ブラウザでタイマーを操作したら、 新しい状態を他のブラウザに伝える Deno で変わるランタイムの景色 実践事例 Lunch LT タイマーの同期

Slide 10

Slide 10 text

①リアルタイム双方向通信 Deno で変わるランタイムの景色 実践事例 Lunch LT WebSocket サーバーを介して、ブラウザ同士で タイマーを連携できる! 双方向通信を可能にするプロトコル https://www.c-sharpcorner.com/article/how-to-use-websockets-in-asp-net-core-day-nine2/

Slide 11

Slide 11 text

①リアルタイム双方向通信 Deno で変わるランタイムの景色 実践事例 Lunch LT Deno Deploy Deno向けのエッジコンピューティングサービス Deno公式ブログでWebSocketへの言及 採用の決め手に ↓ https://deno.com/blog/deploy-streams

Slide 12

Slide 12 text

②フレームワークの統一 Deno で変わるランタイムの景色 実践事例 Lunch LT

Slide 13

Slide 13 text

②フレームワークの統一 できるだけ開発コストを減らしたい Deno で変わるランタイムの景色 実践事例 Lunch LT サーバーとクライアントのコードを 同じフレームワーク内で書きたい TypeScriptで統一したいという要望もありました

Slide 14

Slide 14 text

②フレームワークの統一 Deno で変わるランタイムの景色 実践事例 Lunch LT Fresh Deno公式のWebアプリケーションフレームワーク 軽量で動作が速く、 Deno Deployへ簡単にデプロイできる

Slide 15

Slide 15 text

②フレームワークの統一 Deno で変わるランタイムの景色 実践事例 Lunch LT クライアント側のコードは islands/ サーバー側のコードは routes/ 静的・動的なコンポーネントだけでなく、WebSocketサーバーとクライアントも作成できる

Slide 16

Slide 16 text

③タイマーの状態を保存 Deno で変わるランタイムの景色 実践事例 Lunch LT

Slide 17

Slide 17 text

③タイマーの状態を保存 Deno で変わるランタイムの景色 実践事例 Lunch LT タイマーの状態とは? 終了時刻、動作中、一時停止などの状態 これらの状態をサーバーに保存することで、 新しいブラウザが接続されたときにも対応できる

Slide 18

Slide 18 text

③タイマーの状態を保存 Deno で変わるランタイムの景色 実践事例 Lunch LT Deno KV Denoのランタイムに搭載されたKVS(Key-Value Store) つまり、Denoが動く場所なら どこでも使える!

Slide 19

Slide 19 text

③タイマーの状態を保存 Deno で変わるランタイムの景色 実践事例 Lunch LT kv.watch() データ更新を監視する機能 → timer.teamにも導入 (それまではBroadcast Channelを使って実装していました)

Slide 20

Slide 20 text

アーキテクチャ Deno で変わるランタイムの景色 実践事例 Lunch LT

Slide 21

Slide 21 text

Deno で変わるランタイムの景色 実践事例 Lunch LT timer.teamのアーキテクチャ

Slide 22

Slide 22 text

Deno で変わるランタイムの景色 実践事例 Lunch LT timer.teamのアーキテクチャ ①双方向通信 ②フレームワーク統一 ③保存 / 監視

Slide 23

Slide 23 text

Deno で変わるランタイムの景色 実践事例 Lunch LT Denoのエコシステムのおかげで、技術的課題を解決できました!

Slide 24

Slide 24 text

https://zenn.dev/lef237/articles/8e4eb3112928d6 Zennに詳しくまとめました! 是非ご一読ください 技術詳細 LT内に細かい解説を入れるのは泣く泣く断念しました…

Slide 25

Slide 25 text

Fresh, Deno KV, Deno Deployの組み合わせは リアルタイムWebアプリケーションに上手くマッチする! Deno で変わるランタイムの景色 実践事例 Lunch LT まとめ → WebSocketと相性が良く、kv.watch()が便利

Slide 26

Slide 26 text

・darashiさん ・mayucoさん 謝辞

Slide 27

Slide 27 text

Deno で変わるランタイムの景色 実践事例 Lunch LT https://timer.team/ ご清聴ありがとうございました!