Rubyは地域コミュニティがたくさんある。無料で学べるなんて夢のような話だが、Rubyコミュニティは初心者にも優しいらしい。新型コロナウイルスの影響でローカル開催がないのは少し残念だが、オンラインでも多数開催されている。ようやくRailsを触り始めたので、初めて参加してみた!
7月3日にオンライン開催されたMachida.rbに参加させていただいた。
Machida.rb #3
テーマは、Gemを作って公開すること。Gemは使うだけでも精いっぱいなのに、作る???という感じだったが、とても興味深かった。
今回は、Railsのblank?
とpresent?
、presence
メソッドを再実装してみることになった。
blank?
はnil?
とempty?
の結果がtrue
ならtrue
を返すメソッド。
present?
はblank?
の逆。
presence
はオブジェクトが存在すればそのオブジェクト自身、存在しなければnil
を返す。
これらはActiveSupportで実装されているので、素のRubyでは使えない。今回作るGemを読み込めば、その3つのメソッドがRubyで使えるようになるということだ。
手順は以下のような感じ。
bundle gem Gemの名前
で Gem のひな型を生成。xxx.gemspec
に Gem の設定を書く。- テスト(RSpec)を書く。メソッドの中身を書く。
- GitHub に push。公開。
RSpecを使ったことがなかったので最初はよくわからなかったが、単純な内容だったので雰囲気はつかめた。
他の人がプログラムを書くところを見る機会はあまりないので、プログラムを書くときの考え方や過程を見ることができて勉強になった。エラーメッセージの読み方など、自分ができていないところに気づくきっかけにもなった。
単純なメソッドだと思ったが、empty?
が使えないオブジェクトもあったりして意外と考慮すべきことが多く時間がかかった。
最後Gemが公開できたときは、自分がやったわけでもないのにちょっと達成感があった。
感想
こういう勉強会は、一人で勉強していても知るきっかけがなかったり思い込んでいたりすることを知れるいい場だなと思った。まだ1回しか参加してないけど、発想の転換とかいろんなきっかけになりそう。
プログラマって勉強熱心なだけじゃなくて、知識を分け与えてくれようという優しい人が多いんだろうか。みんながいいコードを書いたほうがみんなのためになるから?こういう学び合える環境・文化というものを今まで全く知らなかったので、結構な衝撃。
自分も早く人の役に立ちたいと思うのと同時にずっと新しい勉強も続けていきたいなと思った。ありがとうございました!