本記事はAteam Finergy Inc. Advent Calendar 2020の8日の記事です。
エイチームフィナジーの内定者アルバイト@mizunomi32です。(2020年12月現在)
はじめに
煽り文句的な前置きですが、、
『みなさんのShellは何ですか?』
おそらく、BashやZsh、fishなど人それぞれで好みの分かれる話題だと思います。
今回は、中でもRubyで作られたRubyistのためのRuby-powerd Shell「reddish」を紹介します。
本当は作るところから書こうとしたけど既にあった…
reddish-shell : https://github.com/buty4649/reddish-shell
Shellで汎用言語が動く良さ
そもそもShellで使い慣れた言語が動くメリットとして
- IrbやIPythonを起動する手間が無くなる
- その場でバッチ処理を回せる
- その言語の資産(ライブラリ)の恩恵を受けれる
- ロマンにあふれる
- ロマンにあふれる
- ロマンに.... etc.
といったメリットばかりです。
唯一のデメリットとしては、POSIX非互換なものがほとんどです。
POSIX非互換といっても、必要になればBashやshといったShellを使えばいいだけなので、重大な問題じゃ無いはずです。
汎用的な言語の動くShellといえば...
すでに汎用的な言語が動くShellにxonshがあります。
xonsh
汎用的な言語が動くShellといえば、Pythonで作られたPythonistaのためのShell「xonsh」があります。
「エックスオンシェル」ではなく「コンシュ」です!
xonshはCLI上でPythonコードの記述とシェルコマンドを利用できます。
ちょっとしたデータ分析やバッチ処理を書くのに便利で使っていました。
RubyにもShellを!
最近はRailsを書く事が多く、Rubyでもシェルコマンドと共存できて使えたらどんなに幸せか...
ということで、本題のRuby-powerdなShellの「reddish」の紹介です。
reddish
『reddish』の正式名称は『reddish-shell』でreddishは赤みを帯びたという意味でRubyらしくてShellらしく、shで終わることから名付けられたらしいです。
現在はv0.4.0
で開発途中なので便利な機能やリッチな機能は実装されていなく、最低限の機能+Rubyが使える状態です。
実装はRubyがメインでパーサー部分がCになっています。
ポータブル製を高めるためにmrubyを使っているので組み込み環境でも使えることを想定してあります。
reddishを試してみる!
『reddish』は2020年12月現在、RubyGemとして登録されてなく、Linux向けのバイナリのみ公開されています。
実際に以下の環境でreddishを試してみました。
- Thinkpad x260
- CPU: i5-6300U
- RAM: 16GB
- Arch Linux + i3wm
実用には機能不足ですが、特に問題なく最低限のShellとしての機能は使えます。
reddish> echo hoge
hoge
reddish> echo $USER
mizunomi32
reddish> echo cmd1 && false || echo cmd3
cmd1
cmd3
reddish> false || echo cmd2
cmd2
いざ使うとなると、
今のところ、『reddish』には設定ファイルといったものは存在しないので、パスや環境変数の設定ができず、ログインシェルにはまだまだ使いにくいです。
(環境変数設定したいときは他のShellで設定したあと『reddish』を起動すると一応使える)
なので、ロマンを追求したいときにだけ使うことをおすすめします!
いつか、設定ファイルの機能を実装して、環境変数やプロンプトのカスタマイズ出来るようにしてほしい...
おわりに
『xonsh』に比べてまだまだ開発途上の『reddish』ですが、ShellとしてRubyが動くロマンあふれる。
いまは、最小限の機能しかなく、実用するには力不足だけれど、今後に期待したい。
個人的にも、興味深くて応援したい!!