Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Bunファースト開発
Search
NearMeの技術発表資料です
PRO
January 28, 2024
0
41
Bunファースト開発
NearMeの技術発表資料です
PRO
January 28, 2024
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
ルートの質を評価する指標について
nearme_tech
PRO
0
11
Rustで作る強化学習エージェント
nearme_tech
PRO
0
37
ビームサーチ
nearme_tech
PRO
0
34
WASM入門
nearme_tech
PRO
0
33
ESLintをもっと有効活用しよう
nearme_tech
PRO
0
25
リファクタリングのための第一歩
nearme_tech
PRO
0
68
ガウス過程回帰とベイズ最適化
nearme_tech
PRO
1
190
確率的プログラミング入門
nearme_tech
PRO
2
120
Observability and OpenTelemetry
nearme_tech
PRO
2
45
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
We Have a Design System, Now What?
morganepeng
51
7.4k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Statistics for Hackers
jakevdp
797
220k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Code Review Best Practice
trishagee
67
18k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
Docker and Python
trallard
44
3.3k
Bash Introduction
62gerente
611
210k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
990
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Transcript
0 Bunファースト開発 2024-01-26 第76回NearMe技術勉強会 @yujiosaka
1 作ったもの 1
2 Cronyx https://github.com/yujiosaka/Cronyx
3 Cronyx • 分散型タスクスケジューラー • 主要なターゲットはNodeユーザー • NodeでもBunでもどちらでも動作する • 開発とテストはどちらもBunを使⽤
4 CronyxServer https://github.com/yujiosaka/CronyxServer
5 CronyxServer • CronyxのHTTPインターフェース • Bunのみをサポートする強気スタイル • DockerイメージとKubernetesマニフェストを公開 • Elysia(BunのWebフレームワーク)のプラグインを公開
6 なんでBun? • 検証に最適な⼩さな趣味プロジェクトだった • 開発とテストだけならNode+Jestとほぼ同じ書き⽅ができるし、すぐに撤退も可能 • Cronyxで使ってみて良かったので、CronyxServerでは全⾯採⽤することにした
7 なんでElysia? • 「Bun Web Framework」でググって⼀番上に出てきた(ちゃんと⽐較してない) • Expressは未だにPromise(Async∕Await)に対応してなくてなんかイヤ • とはいえNestJSは(好きだけど)⼩さなプロジェクトには⼤袈裟すぎる
8 ⼀般的なメリット • ビルドが早い(今回Bunでビルドはしなかった) • パッケージインストールが早い(そこまで体感はできなかった) • パフォーマンスが良い(ほぼI/Oのプロジェクトであまり関係なかった) • ホットリロードが早い(体感できたけど、まだ発展途上なことも多々あった)
9 Bunでのスクリプティング • クロスプラットフォーム(Windowsでも動く) • セキュア(デフォルトで⽂字列がエスケープされる)
10 Bunでのテスト
11 Elysiaでの開発 Typeboxによるスキーマバリデーション https://github.com/sinclairzx81/typebox
12 Bunを使ってみた感想 • ちょいちょい⼩さな不具合に悩まされたけど、致命的な問題はなかった • 開発やテスト時にTypeScriptのコンパイルが要らないのは想像以上に楽 • setSystemTimeが神機能でこれなしでのテストはできない体になった • 特にテストのホットリロードの反応が早いのが嬉しい
• 総合評価は凄く(・∀・)イイ! → これとか https://github.com/oven-sh/bun/issues/5602 → これとか https://github.com/oven-sh/bun/issues/1446 • → Denoと違ってnpmパッケージがちゃんと動く → RubyのTimecopみたいに、システム時間を⾃在に変更できる → でも新しいファイル追加に反応しない等、課題もまだ残ってる → npmパッケージ開発時に使う分には⼼からオススメできる
13 Elysiaを使ってみた感想 • ほぼPromise(Async∕Await)版Expressみたいな気持ちで使える • TypeBoxを使ったバリデーションが便利だけど癖が強い • 型推論に頼りすぎてて、⾃分で型を定義したい時すっごく困る → 動的に型推論が効くのは気持ちいい
→ Transformの機能が弱い。せめてzodだったら。。。 → こういう時どうしたらいい? ← 本当はここで Elysia<typeof cronyx<S, I>> とかやりたい
14 まだ痒いところ • バージョンを固定する⽅法がない • package.jsonでBunを指定できるようにして欲しい • .node-versionみたいな感じで .bun-version 欲しい
15 Thank you