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
Bunではじめる standalone CLI / start standalone-cli ...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
philomagi
July 21, 2026
Programming
54
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Bunではじめる standalone CLI / start standalone-cli with bun
## installerer
https://installerer.philomagi.dev/
philomagi
July 21, 2026
Transcript
15 slides
Bun ではじめる standalone CLI 2026-07-21 hokkaido.js vol.07 #hokkaido_js @Philomagi 1
/ 15
発表者 @Philomagi WEB系プログラマ 自称フロントエンド寄り 最近は Rust とか Go とか 2
/ 15
問題提起 TypeScript で CLI を書きたい だが、CLIの利用者がJavaScript開発者とは限らない 利用者にNode.jsの導入を求めたくない 自作ツール installerer を題材に考えてみる
3 / 15
None
installerer について GitHub Releases 向けの install.sh を生成するツール 当初はブラウザ上の Web UI
のみ ローカルのターミナルからも使えるよう CLI を追加 5 / 15
Web UI / CLI / core の関係 Web UI CLI(追加)
→ shared core (ランタイム中立) Web UI はそのまま、CLI を追加 6 / 15
CLI 版で目指したこと ブラウザを開かずターミナルから使えるようにする JavaScript runtime を利用者に強制しない installererのユースケースは、Node.js固有でないため GitHub Releases から一般的な
CLI として配る installerer CLIを、自身が生成した install.sh で配布する 7 / 15
Bun で single binary 化 で single binary を生成 利用者側の
Node.js や Bun が不要になる bun build --compile 正確には「利用者が runtime を別途管理しなくてよい」 Node.js開発者でなくても、 installerer を使える 8 / 15
single binary生成例 bun build --compile \ --target=bun-linux-x64-baseline \ --outfile=installerer \
packages/cli/src/node/main.ts ./installerer --version で single binary を生成 --target で対象とするOS・アーキテクチャを指定できる --compile 9 / 15
なぜ Bun か 元々 package manager / test runner /
build tool として使用していた 元々Web用に作っていたロジックを、そのままCLIと共有できる TypeScript を直接 entry point にして、 single binary を生成できる Bun を使う TypeScript プロジェクトなら、single binary CLI を既存 toolchain の延長 として追加しやすい 10 / 15
runtime との距離 shared core はランタイム中立 共通のコア部分は Node.js / Bun /
ブラウザ固有 API に依存しない 配布 binary は別途 runtime を求めない Bun runtime は binary の中に同梱される 利用者が installerer のためだけに runtime を入れなくて良い npm 版は Node.js CLI として作る = Node.js runtime 前提 npm を使っているから、Node.js runtime を前提にして問題ない runtime 同梱を回避 11 / 15
npm 版との関係 CLI source(Node.js 互換 entry point) ↓ ↓ bundle
→ npm package Bun compile Node.js script standalone binary 補助の配布ルート メインの配布ルート ↓ ↓ 12 / 15
single binaryの配布ルート target 別に native runner で実行 bun build --compile
Bun 固有 → target 別 binary → archive (tar.gz) → sha256 checksum ↓ release.yml → archive + checksum → install.sh で導入 → GitHub Release binaryを GitHub Releaseから ダウンロード Bun 固有は build script のみ 13 / 15
トレードオフ 利用者側の runtime 依存をなくす ↕ runtime 同梱で binary は大きくなりやすい 配布時のサイズを取るか、可搬性を取るか
基本は single binary で配布、サイズを最小化したいなら npm 経由、という棲み分け もあり得るかも 14 / 15
まとめ Bunを使うと、single binary の生成自体は比較的簡単 single binary とのトレードオフとして、バイナリ本体のサイズ増大がある Node.js runtime を利用者へ強制したくない場合、Bun
single binary は有力な選択肢 15 / 15
More Decks by philomagi
See All by philomagi
SkillとAgentを一元管理する / Centrally manage Skills and Agents
tooppoo
0
72
初めてのGitHub Actions / GitHub Actions at First
tooppoo
0
200
OSS開発を通じて考える、AI時代開発のこれから / The Future of Software Development in the AI Era
tooppoo
0
120
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
250
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
390
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
2k
なぜ定義は問題解決に直結するのか/why-definitions-are-linked-to-problem-solving-with-tdd
tooppoo
0
120
ドメイン駆動設計のホーリズム的側面 / domain-driven-design and holism
tooppoo
0
250
アート、サイエンス、「わかりやすさ」 / art, science, "easy to understand"
tooppoo
1
21k
Other Decks in Programming
See All in Programming
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
370
AI Augmentation Techniques with Liberty
ivargrimstad
1
470
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
250
Secure Your Coding Agent Like It’s Malware (v1.5) 🇬🇧 @Code.talks 2026
richargh
0
150
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
180
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.3k
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
340
AIが生成したコードは読むべきか?抽象化設計とコードの品質保証 / abstraction-design-and-quality
minodriven
16
9.1k
Performance Optimization With LLMs
xleitix
0
260
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.9k
Claude Code ハーネスDeep Dive – 君はどこまで制御する? -
takateeen_knj
6
5.7k
[Kotlin Fest 2026] eBPF Tracing for Kotlin
takehaya
0
130
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Utilizing Notion as your number one productivity tool
mfonobong
4
640
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
640
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
My Coaching Mixtape
mlcsv
0
390
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.6k
A better future with KSS
kneath
240
18k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
330
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
480
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
6
920
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k