どぼじょのIT学習ブログ

高専卒土木女子がIT業界を目指してお勉強。

Rubyでlsコマンド作成

久しぶりの投稿ですが、勉強してなかったわけではありません!!笑
Rubyでlsコマンドを作っていました。
ようやくできたので、学んだことなど記録します〜😊

目次

1.経緯

フィヨルドブートキャンプの課題で、 ls コマンドを作ることになりました。
ls コマンドは、ターミナルで使えるLinuxのコマンドのひとつで、今いるディレクトリに入っているファイルを一覧で表示するコマンドです💡
ちなみに他の方も課題で作るため、作成したコードは公開できません💦

2.成果

オプションなしのlsに加え、-a-r-lオプションに対応しました💡
macのlsコマンドと比較して、以下のとおり同じ出力になりました🎉🎉

ls (オプションなし)

f:id:mistyrinth:20190222183846p:plain

ls -a

f:id:mistyrinth:20190222183902p:plain

ls -r

f:id:mistyrinth:20190222183916p:plain

ls -l

f:id:mistyrinth:20190222183933p:plain

ls -arl (オプション同時実行)

f:id:mistyrinth:20190222183950p:plain

3.新しく学んだこと

これを作るのに学んだことは沢山ありますが、主なものを紹介します!

3-1. オプションのつけかた

optparseというものを使いました。
参考サイト多すぎて紹介しきれないのですが、正直言って未経験者にとって本気で参考になったサイトってひとつも無かったような…😭
いろんなサイトの情報をかいつまんで自分なりに解釈して、どのサイトにも見かけなかった方法で作ってしまいました。使い方が合ってるのかわかりませんが、実行できたのでとりあえず結果オーライです💪笑

3-2. クラス定義、メソッド定義

今まではクラス定義やメソッド定義は概念として「こういうのがあるのかー」程度に知っていたのですが、実際にどういった場面で使うのか全然分かりませんでした!
最初はクラスもメソッドも定義せずにベタ打ちで書き始めて、複雑になってきた頃にようやくメソッドを定義しました。
実際のところ、クラスを定義する過程って「こういうオブジェクトを作りたい」→「クラス定義する(クラスメソッドも定義する)」→「クラスからオブジェクトを作る」という感じでした。分かりづらい…??🤨
クラスを定義しないとmainクラスのオブジェクトになってしまうので、不都合が出てきてしまいます。
このあたりもうちょっと学習してちゃんと説明できるようになりたいです!!

3-3. リファレンスマニュアル

gem を使っていないので、配列を作ったりファイルの情報を取得したりという細かいことは、ほとんどリファレンスマニュアルを見ながらできました🎉

3-4. その他

わからないところを時間掛けて調べて試して、95%くらい自力で考えて作ってみたので、だいぶ進歩したな!と感じています✨
他の方にいただいたアドバイスは「クラスを作って最後にオブジェクトを呼び出せばいける」ということと「mapメソッドが便利」ということだけでしたが、これが無ければかなり厳しかったですー!
アドバイスありがとうございました!
いきなり完成形を目指すのは難しいので、まず手始めに簡単なところから作っていったり、部分的に別ファイルに作って動作検証したりしたのが良かったです。
構造がイメージできればそんな手間かける必要ないのですが…😖

次はwcコマンドの作成にかかります!🙌