シェルスクリプトをJavaScript/TypeScriptで記述、どのOSでも実行できる「Bun Shell」、JavaScriptランタイムのBunが発表

今回は「シェルスクリプトをJavaScript/TypeScriptで記述、どのOSでも実行できる「Bun Shell」、JavaScriptランタイムのBunが発表」についてご紹介します。

関連ワード (依存、保証、変数等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


JavaScriptランタイムのBunは、新機能としてシェルスクリプトをJavaScriptもしくはTypeScriptで記述し、特定のOSに依存せずに実行できる「Bun Shell」を発表しました。

fig

シェルスクリプトは特定のシェルに依存するもの

LinuxやmacOS、WindowsなどのOSは一般に、「シェル」(Shell)と呼ばれる機能を備えています。

シェルはコマンドラインインターフェイスなどのユーザーとの対話機能を備えており、例えばLinuxのコマンドラインで「ls」コマンドを打ち込むとファイルの一覧が返ってくるという動作はシェルが提供しています。

そしてシェルでは一般に、こうしたコマンドを複数つなげた一連の動作をスクリプトとして定義し実行できる「シェルスクリプト」が利用可能です。例えば、次のシェルスクリプトは、「ls」コマンドによるファイルの一覧をファイル「list.txt」に書き込んでいます。

シェルスクリプトはプログラミング言語の一種であり、簡単な処理であればさっとシェルスクリプトで記述して実行してしまう、ということはプログラマのあいだでよく行われていることです。

ただしシェルには複数の種類があります。例えばLinuxでは「sh」や「bash」や「zsh」などが、Windowsでも以前から提供されているコマンドラインツールの「cmd」に加えてより高機能な「PowerShell」などがあり、好みや用途に合わせて使い分けることができます。

しかしそれぞれのシェルスクリプトの記述は微妙に異なることが多く、あるシェル用に書いたシェルスクリプトは別のシェルでは動作が保証されません。

また、LinuxやmacOSとWindowsでは使えるコマンドも異なるため(例えばLinuxの「ls」に相当するコマンドはWindowsでは「dir」など)、シェルスクリプトは基本的に、特定のOSの特定のシェルに依存して記述され、実行されるものでした。

JavaScript/TypeScriptでクロスプラットフォームなシェルスクリプト

今回発表されたBunは、このシェルスクリプトをプログラマが使い慣れたJavaScriptもしくはTypeScriptで記述でき、LinuxやmacOS、WindowsのOSやシェルの種類に依存せず、どこでも同様に実行できるクロスプラットフォーム対応という2つの利点を提供するものです。

下記はBun Shellのシンプルなサンプルコードとして、拡張子が「.js」のファイルの一覧を標準出力に出力するコードです。

1行目のimport文は、Bun Shellの実行環境を読み込んでいます。3行目の「await」は、コマンドの処理が終わるまで待つことを指定するコマンド。「$」でBun Shell の実行を指定し、バッククオート(`)で囲まれた文字列が実行される中味となります。

もちろん、パイプやリダイレクトも使えます。下記はパイプの例。

環境変数のセットも可能。環境変数「FOO」を「foo」にセットする例。

JavaScriptの変数をBun Shellスクリプト内で使えるのは面白いところかもしれません。

Bun Shellスクリプトをファイルとして記述し、拡張子「.bun.sh」を付けてBunに渡すと、Bun Shellスクリプトとして実行してくれます。

Bun Shellは現在実験的実装の段階で、主要なシェルコマンドなどを実装していくとしています。

Bunはいかにして競合と差別化するか?

BunはJavaScriptランタイムとして、Node.jsやDenoとの競合と位置づけられています。しかしエコシステムの面で先行するNode.jsや商用サービスのDeno Deployなどを展開中のDenoに対して、Bunが大きく先行する点が明確にあるとはいえない状態です。

そうした中で、今回のBun Shellの提供は、開発者にとって身近で手軽なツールとしてBunを位置づけたいという目論見があるように見えます。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
先週の労働問題:GitHubがナチス発言社員を解雇、Facebookが公民権担当幹部を採用、Dropboxが315人を解雇
パブリック / ダイバーシティ
2021-01-19 06:24
早稲田大学、押印廃止でアドビの電子署名サービスを導入–承認プロセスの見直し図る
IT関連
2022-09-28 04:16
【コラム】DXを「エシカル」にリードする方法、倫理優先の考え方は従業員と利益を守る
その他
2021-06-21 11:16
「Yahoo!カーナビ」に五輪の規制ルート回避機能 7月19日から
ネットトピック
2021-07-08 23:38
パナソニック、法人向けネットワーク事業に参入–新規中核ビジネスに
IT関連
2021-02-18 23:49
アクセンチュア、資生堂と合弁会社を設立–新しいビューティー体験の実現目指す
IT関連
2021-05-11 10:57
「びっくりドンキー」展開のアレフ、月400枚の請求書をペーパーレス化
IT関連
2024-06-14 09:41
企業ITの伝統的手法から脱却せよ! 情シスの在り方を変える「モダンIT」化のメリット
PR
2021-07-27 20:07
BSテレ東、2月22日は“猫まみれ”に 「BSキャッ東」に改名、社長も猫
くらテク
2021-02-07 23:18
映画「閃光のハサウェイ」は11日公開へ YouTubeの本編15分にオープニング部分を追加
くらテク
2021-06-03 14:30
ジョブ型やリスキリングを通じて「自分ブランド」を磨け
IT関連
2023-05-19 09:30
"ハイパーオートメーション"ソフトウェア市場、2022年に6000億ドル規模に成長–Gartner
IT関連
2021-05-10 04:56
AWS上で開発環境一式、コードリポジトリからテンプレートコード、IDE、CI/CDパイプラインまでを丸ごと提供する「Amazon CodeCatalyst」が正式サービスに
AWS
2023-04-26 12:24
「Chrome」など主要ブラウザーがWebP関連の脆弱性に対処、直ちにアップデートを
IT関連
2023-09-16 23:41