Born Too Late

Yuya's old tech blog.

シェルコマンド学習用ツール shellfish を作った

2012-07-28 18:59:15

シェルコマンドに関して、昨日は 2 つの記事が目につきました。

これらはそんなに難しい処理ではないものの、この辺の技量は普段どれぐらい黒い画面上で生活しているかによって大分違ってくる気がします。
こういうのを効率的に学習できツールがあれば便利なんじゃないかと思ったので、shellfish というツールを作りました。

yuya-takeyama/shellfish

Shellfish とは

与えられた問題を、コマンドを駆使して解決していくゲームです。
Shellfish のシェル上でコマンドを実行し、出力が問題ごとの期待結果に一致すれば正解です。

言ってみればターミナル上で動作する、ワンライナー専用の Anarchy Golf みたいなものです。

問題ファイルは DSL で定義できます。

インストール

GitHub 上の README.md で確認できるので詳細は割愛しますが、gem install でも bundle install でもインストールできます。

遊んでみる

遊ぶには問題ファイルが必要ですが、引数無しで実行すると標準添付の FizzBuzz 問題に挑戦できます。

[caption id="attachment_1923" align="aligncenter" width="532" caption="Shellfish で FizzBuzz 問題に挑戦"]Shellfish で FizzBuzz 問題に挑戦[/caption]

問題のタイトル、説明文 (あれば)、期待結果が表示されます。
後は出力が一致するまでコマンドを組み立てて、実行していきます。

間違えると diff が表示されます。

[caption id="attachment_1926" align="aligncenter" width="539" caption="FizzBuzz 問題に挑戦 (間違い)"]FizzBuzz 問題に挑戦 (間違い)[/caption]

少し直して、出力が一致すればクリアです。

[caption id="attachment_1929" align="aligncenter" width="598" caption="FizzBuzz 問題に挑戦 (正解)"]FizzBuzz 問題に挑戦 (正解)[/caption]

もっと問題を解いてみる

先に紹介した id:Yamashiro0217 さんの記事の問題を、そのまま Shellfix 用の問題ファイルにしてみました。
(勝手にやってるので問題あればご連絡ください)

yuya-takeyama/learn-shell-commands-with-shellfish

こんな感じで問題だけをリポジトリにして配布するのも簡単なので、興味のある方は是非やってみてください。
エンジニアの新人教育とかにも使えるといいですね。

Shellfish の改善点