萌えハッカーニュースリーダー

2025/07/29 18:17 Bun, WASM and Rust Projects with GitHub Actions

出典: https://vectronic.io/posts/template-bun-wasm-and-rust-projects-with-github-actions/
hakase
博士

やあ、ロボ子。今日はBunとDenoの話題じゃ。

roboko
ロボ子

博士、BunとDenoですか。どちらもモダンなJavaScript/TypeScriptランタイムですね。

hakase
博士

そうじゃ。DenoからBunへの移行について、面白い記事を見つけたぞ。Denoで実現したかったことが、Bunでより簡単にできるようになったらしいのじゃ。

roboko
ロボ子

具体的には、どのような点でしょうか?

hakase
博士

Deno Compileによる単一の実行可能バイナリの生成や、クロスコンパイルじゃな。Denoでもできたんじゃが、コンパイルされたアプリケーション外部のモジュールの動的ロードがサポートされてなかったんじゃ。

roboko
ロボ子

なるほど。Bunではそれが可能になったのですね。

hakase
博士

そう!Bunでは、ローカルファイルシステムのURLのみ参照可能じゃが、コンパイルされた実行ファイルから動的にロードできるんじゃ。これは便利じゃぞ。

roboko
ロボ子

リモートURLからのロードはサポートされていないのですね。少し残念です。

hakase
博士

まあ、そこはヘルパーを記述して対応すれば良いのじゃ。それよりも、Bun、Rust、WASMプロジェクトのテンプレートがGitHubで公開されたのが大きいぞ。

roboko
ロボ子

GitHub Actions、Shared Workflows、Template Workflowsを使用しているのですね。どのようなユースケースが考えられますか?

hakase
博士

スクリプト可能な高レベル層(Bun TypeScript)で、高性能な低レベルコア(Rust)を制御できるのがミソじゃ。クロスコンパイル可能な単一の実行可能バイナリも作れるし、Javascript import()関数でインストール後の追加ロジックを動的にロードできるんじゃ。

roboko
ロボ子

OSプロセスまたはブラウザランタイムでの実行のサポートも魅力的ですね。RustからWASMへのコンパイルも可能なのですね。

hakase
博士

そうじゃ。Bunのオールインワンアプローチで、プロジェクトのスキャフォールディングがシンプルになるのも良い点じゃな。

roboko
ロボ子

記事によると、Bunはlintingやドキュメント生成をサポートしていないため、Denoを使用しているとのことですね。

hakase
博士

`deno fmt`、`deno lint index.ts`、`deno doc --html index.ts`といったコマンドを使うんじゃな。それぞれの得意分野を活かすのが賢いやり方じゃ。

roboko
ロボ子

Linux、MacOS、Windowsで利用可能なRust FFIと動的インポートを備えた単一の実行可能ファイルが実現できたのは素晴らしいですね。

hakase
博士

WASMでほぼ同じ機能をブラウザで実行できるのもポイントじゃ。テスト、コンパイル、バージョニング、リリース用のGitHub Actionsを備えたワーキングサンプルプロジェクトも用意されているぞ。

roboko
ロボ子

内部およびサードパーティの依存関係の自動PR、テスト、マージ、バージョニング、リリース、自動的に更新されるAPIドキュメントも便利ですね。

hakase
博士

記事には、アプリケーションプロジェクト、シンプルライブラリプロジェクト、グルーライブラリプロジェクト、CIプロジェクトのGitHubリポジトリが紹介されているぞ。色々試してみると良いのじゃ。

roboko
ロボ子

はい、博士。私も試してみます。ところで博士、BunとDeno、どちらがお好みですか?

hakase
博士

うむ、それは難しい質問じゃな。どちらも良いところがあるからの。でも、今の気分は…Bun!なぜなら、バン!と勢いがあるからじゃ!

roboko
ロボ子

…博士、それ、ただのダジャレですね。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search