2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【誰でもできる】自作Gemを作って公開するまでの道のり

Last updated at Posted at 2024-11-09

こんにちは、とまだです。

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 の情報を定義する場所です。

my_awesome_gem.gemspec
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 のメインファイルです。

lib/my_awesome_gem.rb
require "my_awesome_gem/version"

module MyAwesomeGem
  class Error < StandardError; end
  # ここにコードを書いていく
end

lib/my_awesome_gem/version.rb

バージョン情報を管理するファイルです。

lib/my_awesome_gem/version.rb
module MyAwesomeGem
  VERSION = "0.1.0"
end

Gem の中身を実装する

では、実際に Gem の中身を実装していきましょう。

例として、文字列に「!」を付けるメソッドを作ってみます。

lib/my_awesome_gem.rb
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 に追加

Gemfile
gem "my_awesome_gem"

インストール

bundle install

使用例

require "my_awesome_gem"

MyAwesomeGem.add_exclamation("Hello") #=> "Hello!"

まとめ

いかがでしたか?

いくつかのコマンドと、数ファイルを作成するだけで、自分だけの Gem を作ることが分かったかと思います。

個人開発でアプリを作ることも学びはありますが、他のエンジニアがライブラリとして使ってくれるような Gem を作ることも、良い勉強になるかと思います。

OSS に貢献することで、自分のスキルアップにもつながりますので、ぜひ挑戦してみてください!

他にもアドベントカレンダー記事を書いています!

他にも、2024 年のアドベントカレンダーに参加しています。

以下の記事でまとめているので、よければ他の記事も読んでいただけると嬉しいです!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?