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
45
Bunファースト開発
NearMeの技術発表資料です
PRO
January 28, 2024
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
Tile38 Overview
nearme_tech
PRO
0
33
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
200
実践で使えるtorchのテンソル演算
nearme_tech
PRO
0
21
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
440
初めてのmarimo (ハンズオン)
nearme_tech
PRO
0
33
ローカルLLM
nearme_tech
PRO
0
55
LlamaIndex Workflow: Build Practical AI Agents Fast
nearme_tech
PRO
0
34
Box-Muller法
nearme_tech
PRO
1
54
Kiro触ってみた
nearme_tech
PRO
0
410
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
650
Evolving SEO for Evolving Search Engines
ryanjones
0
130
How to Think Like a Performance Engineer
csswizardry
28
2.5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Crafting Experiences
bethany
1
50
WENDY [Excerpt]
tessaabrams
9
36k
Bash Introduction
62gerente
615
210k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
760
Site-Speed That Sticks
csswizardry
13
1.1k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
180
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
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