シェルコマンド学習用ツール shellfish を作った
シェルコマンドに関して、昨日は 2 つの記事が目につきました。
これらはそんなに難しい処理ではないものの、この辺の技量は普段どれぐらい黒い画面上で生活しているかによって大分違ってくる気がします。
こういうのを効率的に学習できツールがあれば便利なんじゃないかと思ったので、shellfish というツールを作りました。
Shellfish とは
与えられた問題を、コマンドを駆使して解決していくゲームです。
Shellfish のシェル上でコマンドを実行し、出力が問題ごとの期待結果に一致すれば正解です。
言ってみればターミナル上で動作する、ワンライナー専用の Anarchy Golf みたいなものです。
インストール
GitHub 上の README.md で確認できるので詳細は割愛しますが、gem install でも bundle install でもインストールできます。
遊んでみる
遊ぶには問題ファイルが必要ですが、引数無しで実行すると標準添付の FizzBuzz 問題に挑戦できます。
[caption id="attachment_1923" align="aligncenter" width="532" caption="Shellfish で FizzBuzz 問題に挑戦"][/caption]
問題のタイトル、説明文 (あれば)、期待結果が表示されます。
後は出力が一致するまでコマンドを組み立てて、実行していきます。
間違えると diff が表示されます。
[caption id="attachment_1926" align="aligncenter" width="539" caption="FizzBuzz 問題に挑戦 (間違い)"][/caption]
少し直して、出力が一致すればクリアです。
[caption id="attachment_1929" align="aligncenter" width="598" caption="FizzBuzz 問題に挑戦 (正解)"][/caption]
もっと問題を解いてみる
先に紹介した id:Yamashiro0217 さんの記事の問題を、そのまま Shellfix 用の問題ファイルにしてみました。
(勝手にやってるので問題あればご連絡ください)
yuya-takeyama/learn-shell-commands-with-shellfish
こんな感じで問題だけをリポジトリにして配布するのも簡単なので、興味のある方は是非やってみてください。
エンジニアの新人教育とかにも使えるといいですね。
Shellfish の改善点
- 現状だと完全一致のチェックしかできないけど、問題によっては diff コマンドでいうところの --ignore-all-space とか --ignore-eol-style とかできるようにしたい。 (そういうライブラリが必要)
- モチベーションを保てるようにゲーム性を持たせたい。