読者です 読者をやめる 読者になる 読者になる

weblog of key_amb

主にIT関連の技術メモ

Bash Infinity よりずっと前に Bash on Rails なるものを作った人がいると記録しておく

シェル ブログ

備忘録を兼ねて、ブログを書いておきます。

きっかけは、昨日のはてブでホットエントリに上がっていた下の記事です。

元記事から、GitHubソースコードにたどりついて、少しだけ内部のコードを読みました。

https://github.com/niieani/bash-oo-framework

どうも、Pure Bash で書かれているようですね。
OO という名前が現すように、オブジェクト指向で書けるように型システムをも実装しているようです。と、これは記事でも紹介されていましたが。

さて、この記事を読む数カ月前に、私は Bash on Rails なるものを作っていた人を知ったので、それを想起しました。

Bash on Rails は @emasaka さんが作った Rails モドキで、「Bash の機能だけでいかに Ruby on Rails っぽいことができるか」を実践したパロディ企画とのことです。
作者のブログ でのべ14記事にわたって紹介されています。
関係する記事の一覧は、下記の検索結果からが見やすいです。

http://emasaka.blog65.fc2.com/blog-entry-379.html?q=bash+on+rails

Bash Infinity 同様、Pure Bash かつ OO で書かれており、Rails の scaffold や db:migrate を模した機能もあります。 他に、ERB を模した eBash が実装されてたり、model や controller があったりと、まるで Ruby on Rails です。
ジョークソフトにしては力が入りすぎているような気さえします(笑)
(※もちろん、本家 Rails に有って Bash on Rails にない機能はたくさんあるでしょうけど)

ブログ記事の中で、コアの部分で面白そうな記事を1つだけ挙げるとしたら、本を読む Bash on Railsを作る(10) bashOOをbashOOで作る を推します。
オブジェクト指向をどうやって実現しているか、コードを混じえて紹介されています。
この記事だけでも一見の価値はあるかな、と。

GitHub 上では shails という名前でソースコードが公開されています。

https://github.com/emasaka/shails

Bash on Rails を初めて見つけたときは、「Bash ってここまでできるのか」と感動したものです。
そこまでやる必要があるのかはさておき。

ご興味がある方は、ソースコードや記事を読んでいただくと面白いと思います。

Bash on RailsBash Infinity の「実用性」について

Bash on Rails はそもそもジョークプロダクトで、まともな用途で使わないでね、とブログで書かれています。
こちらも内部のコードを少し追いましたが、eval など駆使して無理やりオブジェクト指向っぽく見せているような感はありました。
あくまでオブジェクト指向を「模している」だけなので、違うものだという前提を持った方がいいでしょう。

Bash Infinity は実用的なプロダクトを目指しているのかな? と思わせる雰囲気で、 GitHub 上でかなりスターもついてます。(昨日は1000弱でしたが、さっき見たら1000を超えていました。)
…が、どのくらい実用的なのかは疑問符です。テストライブラリは付属しているそうですが、Bash Infinity 自体のテストコードが見当たらないような…。。

最初に挙げた記事に書かれていたように、「各ライブラリでどのようなテクニックが使われているか」の勉強にはよさそうだな、と思いました。

余談

@emasaka さんのブログをあさっていたら、sinatra モドキも作っていたことを知りました(笑)

以下は、記事から引用:

「…"sh inatra"って言いたかっただけと違うか?」と思ったあなた、はい、そのとおりです。