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
philomagi
July 21, 2026
Programming
36
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
More Decks by philomagi
See All by philomagi
SkillとAgentを一元管理する / Centrally manage Skills and Agents
tooppoo
0
59
初めてのGitHub Actions / GitHub Actions at First
tooppoo
0
180
OSS開発を通じて考える、AI時代開発のこれから / The Future of Software Development in the AI Era
tooppoo
0
110
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
230
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
340
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.9k
なぜ定義は問題解決に直結するのか/why-definitions-are-linked-to-problem-solving-with-tdd
tooppoo
0
110
ドメイン駆動設計のホーリズム的側面 / domain-driven-design and holism
tooppoo
0
240
アート、サイエンス、「わかりやすさ」 / art, science, "easy to understand"
tooppoo
1
21k
Other Decks in Programming
See All in Programming
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
260
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.3k
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
210
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
370
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
33
14k
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
250
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
150
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
4
410
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
470
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
210
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
320
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
5.4k
Featured
See All Featured
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
690
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
420
Designing for humans not robots
tammielis
254
26k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
290
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
30 Presentation Tips
portentint
PRO
1
410
The agentic SEO stack - context over prompts
schlessera
0
950
Everyday Curiosity
cassininazir
0
340
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Practical Orchestrator
shlominoach
192
12k
Transcript
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