Rubyの学習を始めて少し経つと、必ずと言っていいほど遭遇する「gem(ジェム)」という言葉。
「ジェム? 宝石? ゲームの課金アイテムかな?」と最初は戸惑いますよね。私もそうでした。
ちょっと調べてみたら、要は「スマホのアプリストア」や「凄腕の助っ人たち」みたいなものだと分かりました。自分の備忘録も兼ねて、ざっくりまとめてみます。
そもそもgemって何者?
一言でいうと、「世界中の天才・凄腕エンジニアたちが作ってくれた、超便利なプログラムの詰め合わせパック」です。
例えば「自分のWebサイトに、ログイン機能を作りたい!」と思ったとします。
これをゼロから自分で作ろうとすると、セキュリティの知識も必要だし、何日も徹夜する羽目になります。
でも、Rubyの世界には「俺が作った最高に安全で便利なログイン機能のプログラム、無料で公開しとくから自由に使っていいよ!」と言ってくれる神様みたいな人たちがいます。
この神プログラムのパッケージこそが「gem」です。コマンド一つ(gem install 〜)で自分のパソコンにインストールできちゃいます。
世界で活躍する「最強の助っ人gem」たち
具体的にどんな助っ人(gem)がいるのか、いくつか有名なものを挙げてみました。
【Ruby on Rails】:村をまるごと一瞬で作れる「最強の建設キット」
Webサービスを爆速で作るための超有名なフレームワークですが、実はこいつも巨大なgemの一つ。「とりあえず基礎工事と骨組みは俺が全部やっといたから、あとは好きにデザインしなよ!」という圧倒的な包容力を持っています。
【Devise】:セキュリティガチガチの「スゴ腕の鍵屋さん」
先ほど例に出した「ユーザー登録・ログイン機能」をパパッと追加してくれるgem。複雑なパスワードの暗号化などの面倒な作業を引き受け、サイトの安全を守ってくれます。
【Nokogiri】:Webの海から欲しいデータを一網打尽にする「万能の網」
Webサイトから情報をかき集める(スクレイピング)ときに大活躍するgem。「このページの、この画像データだけ全部持ってきて!」というワガママをあっさり叶えてくれます。
【RuboCop(ルボコップ)】:コードの乱れを許さない「厳格な風紀委員」
チーム開発において欠かせない「コードの書き方チェック」をしてくれるgemです。
「インデント(空白)が1つ多いぞ!」「その書き方は古いからやり直し!」と、私たちが書いたコードを自動で添削してくれます。最初は小言が多くて鬱陶しく感じるかもしれませんが、彼のおかげで誰が読んでも綺麗でバグの少ないコードが保たれます。
【RSpec(アールスペック)】:絶対にミスを逃さない「鬼のテスト監督」
プログラムが設計図通りに動くかをチェックする「自動テスト」を作るための定番gemです。
いちいちブラウザを開いて「登録ボタンを押して…」と手作業で確認しなくても、RSpecが全パターンの動作確認を数秒で終わらせてくれます。「ここ、想定と違う動きしてるよ」と容赦なくエラーを出してくれますが、システムを壊さないための最高の相棒です。
【Faker(フェイカー)】:架空のデータを一瞬で量産する「天才エキストラ」
開発中に「テスト用のダミーデータ(名前やメールアドレスなど)」が大量に欲しい時、自力で「テスト太郎1」「テスト太郎2」と入力するのは地獄ですよね。
Fakerにお願いすれば、「本物っぽい外国人の名前」や「適当な住所」を何千件でも一瞬で捏造してくれます。ちなみに、ハリーポッターやポケモンの名前を出力するようなお茶目な機能もあったりします。
【Kaminari(カミナリ)】:長すぎる巻物を本にしてくれる「几帳面な司書さん」
Webサイトでよく見る「1 2 3 ... 次のページへ」というページ送り(ページネーション)機能をあっという間に作ってくれるgemです。
1万件のデータが1つの画面に表示されるとスマホがフリーズしてしまいますが、彼が「1ページ20件ずつね」と綺麗に整理整頓してくれるおかげで、サクサク動くサイトを作ることができます。日本人が作った世界的にも有名なgemの一つです。
まとめ:なぜgemを使うのか?
それは「先人たちが作ってくれた便利な道具(車輪)はありがたく使わせてもらい、自分は『自分にしか作れないサービス』のアイデア出しに集中しようぜ!」という、エンジニアの世界の愛と合理主義の結晶だからです。
「難しそう…」と避けるのではなく、この魔法の石(gem)たちを上手く使いこなして、自分の作りたいものをどんどん形にしていけるようになりたいなと思いました!