こんにちは、とまだです。
Ruby on Rails Advent Calendar 2024、2 日目の記事をお届けします!
みなさんは、「自分で Gem を作ってみたい!」と思ったことはありませんか?
自分が作った Gem(ライブラリ)が世界中の Ruby on Rails アプリで使われるなんて、ちょっとテンション上がりますよね。
そこで、今回は Gem の作り方を初心者向けに解説していきたいと思います。
以前、無駄な Gem を作った経験をもとにしているので、よければそちらもご覧ください。
Gem って何?
まずは、そもそも Gem とは何かおさらいしましょう。
Gem とは、Ruby で作られたライブラリやプログラムをパッケージ化したものです。
例えば、以下のようなものが Gem として提供されています。
- devise(認証機能)
- kaminari(ページネーション)
- carrierwave(ファイルアップロード)
これらは特に Rails アプリでよく使われる Gem ですが、他にもシンプルなものから複雑なものまで、さまざまな Gem があります。
Gem を作る準備
それでは、実際に Gem を作っていきましょう。
1. 必要なツールをインストール
まずは必要なツールをインストールします。
gem install bundler
2. Gem の雛形を作成
次に、Gem の雛形を作成します。
bundle gem my_awesome_gem
このコマンドを実行すると、以下のようなファイル構造が作成されます。
my_awesome_gem/
├── CODE_OF_CONDUCT.md
├── Gemfile
├── LICENSE.txt
├── README.md
├── Rakefile
├── bin
│ ├── console
│ └── setup
├── lib
│ ├── my_awesome_gem
│ │ └── version.rb
│ └── my_awesome_gem.rb
├── my_awesome_gem.gemspec
└── spec
├── my_awesome_gem_spec.rb
└── spec_helper.rb
主要なファイルの説明
作成された各ファイルについて、重要なものを説明します。
my_awesome_gem.gemspec
このファイルは、Gem の情報を定義する場所です。
Gem::Specification.new do |spec|
spec.name = "my_awesome_gem"
spec.version = MyAwesomeGem::VERSION
spec.authors = ["あなたの名前"]
spec.email = ["あなたのメールアドレス"]
spec.summary = "Gemの簡単な説明"
spec.description = "Gemの詳細な説明"
spec.homepage = "https://github.com/your_name/my_awesome_gem"
spec.license = "MIT"
# 依存するGemを指定
spec.add_dependency "rails", ">= 6.0.0"
end
ビルドする際には、このファイルに記載された情報が使われますので、できるだけ正確に記入しましょう。
lib/my_awesome_gem.rb
このファイルは、Gem のメインファイルです。
require "my_awesome_gem/version"
module MyAwesomeGem
class Error < StandardError; end
# ここにコードを書いていく
end
lib/my_awesome_gem/version.rb
バージョン情報を管理するファイルです。
module MyAwesomeGem
VERSION = "0.1.0"
end
Gem の中身を実装する
では、実際に Gem の中身を実装していきましょう。
例として、文字列に「!」を付けるメソッドを作ってみます。
module MyAwesomeGem
def self.add_exclamation(text)
"#{text}!"
end
end
Gem をビルドする
実装が完了したら、作成した Gem をビルドしましょう。
gem build my_awesome_gem.gemspec
このコマンドを実行すると、my_awesome_gem-0.1.0.gem
というファイルが作成されます。
ここでのバージョン番号は、lib/my_awesome_gem/version.rb
で指定したものです。
これを、後に RubyGems.org に公開するためのファイルとして使います。
Gem を公開する
最後に、作成した Gem を RubyGems.org に公開します。
1. RubyGems.org にアカウントを作成
まだアカウントを持っていない場合は、RubyGems.orgでアカウントを作成します。
API キーを登録したりする手順がありますが、指示が丁寧に表示されるので、従っていくだけで大丈夫です。
2. Gem をプッシュ
次に、作成した Gem を RubyGems.org にプッシュします。
gem push my_awesome_gem-0.1.0.gem
これで、あなたの Gem が世界中の誰でも使えるようになります!
作った Gem を使ってみる
公開した Gem は、他の Gem と同じように使うことができます。
Gemfile に追加
gem "my_awesome_gem"
インストール
bundle install
使用例
require "my_awesome_gem"
MyAwesomeGem.add_exclamation("Hello") #=> "Hello!"
まとめ
いかがでしたか?
いくつかのコマンドと、数ファイルを作成するだけで、自分だけの Gem を作ることが分かったかと思います。
個人開発でアプリを作ることも学びはありますが、他のエンジニアがライブラリとして使ってくれるような Gem を作ることも、良い勉強になるかと思います。
OSS に貢献することで、自分のスキルアップにもつながりますので、ぜひ挑戦してみてください!
他にもアドベントカレンダー記事を書いています!
他にも、2024 年のアドベントカレンダーに参加しています。
以下の記事でまとめているので、よければ他の記事も読んでいただけると嬉しいです!