0Pricing
Ruby Academy · レッスン

Gem の構成

ファイルと gemspec です。

「Gem の構成」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。

gemとは

gemとは、RubyGemsを通じてインストール、バージョン管理、共有できるようにパッケージ化されたRubyライブラリまたはアプリケーションです。普段使うRubyのツールは、ほとんどすべてgemです。

  • gemにはコード、メタデータ、依存関係がまとめられています。
  • メタデータはgemspecファイルに記述します。
  • bundlerやgemなどのツールでgemを管理します。

ひな形の生成

最も早く始める方法はbundle gem mygemです。標準的なディレクトリ構成、gemspec、テスト用フォルダー、README、ライセンスを含むひな形が生成されます。あとはコードを実装します。

標準的な構成

mygemという名前の一般的なgemは、次のような構成になります。

  • lib/mygem.rb エントリーファイルです。
  • lib/mygem/ 追加のソースファイルを配置します。
  • lib/mygem/version.rb バージョン定数を定義します。
  • mygem.gemspec メタデータを記述します。
  • test/またはspec/ テストを配置します。
  • README.mdとライセンスファイルを配置します。

エントリーファイル

lib/mygem.rbは、誰かがrequire 'mygem'を実行したときに読み込まれます。通常はバージョンファイルとライブラリの残りの部分をrequireし、トップレベルのモジュールを定義します。

module Mygem
  def self.greet(name)
    "Hello, " + name
  end
end

puts Mygem.greet("world")

バージョンファイル

バージョンを専用のファイルに置くと、gemspecとコードの両方から読み取れるようになります。gemのモジュール内にVERSION定数を定義するのが慣例です。

module Mygem
  VERSION = "0.1.0"
end

puts "Current version: " + Mygem::VERSION

gemspecとは

gemspecは、gemの名前、バージョン、作者、概要、ファイル、依存関係を記述するRubyファイルです。RubyGemsはこれを読み込み、パッケージのビルドと公開を行います。

通常のRubyコードなので値を計算できますが、シンプルで宣言的な内容に保ってください。

最小限のgemspec

基本的な項目は、name、version、authors、summary、filesです。mygem.gemspecに配置できる通常のRubyコードとして記述すると、次のような形になります。

require "ostruct"

spec = OpenStruct.new
spec.name = "mygem"
spec.version = "0.1.0"
spec.authors = ["Your Name"]
spec.summary = "A tiny example gem"

puts spec.name + " " + spec.version

ファイルの一覧表示

gemspecには、gemに含めるファイルを記述する必要があります。多くのgemspecでは、ファイルの記載漏れを防ぐため、gitに追跡対象のファイルを問い合わせます。

spec.files = Dir['lib/**/*.rb'] + ['README.md']

パッケージ化されるのは一覧に記載したファイルだけです。そのため、ファイルを1つでも記載し忘れるとインストールが壊れてしまいます。

依存関係の宣言

gemspecには、次の2種類の依存関係を記述します。

  • add_dependency 実行時に必要で、ユーザーがインストールしなければならないものです。
  • add_development_dependency テストフレームワークなど、開発中にだけ使うツールです。

'~> 1.2'のようなバージョン制約を使うと、互換性を保ちやすくなります。

必要なRubyバージョン

spec.required_ruby_versionを設定すると、古すぎるRubyを使っているユーザーに、分かりにくいクラッシュではなく明確なエラーを表示できます。完成度の高いgemにするため、homepage、license、metadataも設定してください。

required = ">= 3.0.0"
current = RUBY_VERSION
puts "Requires Ruby " + required
puts "Running Ruby " + current

gemのビルド

gemspecの準備ができたら、gem build mygem.gemspecで.gemファイルを生成できます。公開前のテストとして、gem install ./mygem-0.1.0.gemでローカルにインストールできます。

理解度チェック

gemの構成についての理解度を確認します。

まとめ:gemの構成

gemの構成方法について学びました。

  • bundle gemで構成のひな形を生成します。
  • lib/mygem.rbがエントリーポイントです。
  • バージョンは専用のファイルに定義します。
  • gemspecにメタデータ、ファイル、依存関係を記述します。
  • gem buildでパッケージ化します。

次は、gem内部の実際のコードを整理します。

よくある質問

「Gem の構成」レッスンは無料ですか?

はい。「Gem の構成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。

「Gem の構成」で何を学びますか?

ファイルと gemspec です。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ruby Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Gem の構成」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このRuby Academyレッスンでコードを書いて実行できますか?

はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Gem の構成
  2. コードの記述
  3. テストとバージョニング
  4. RubyGems への公開
← Ruby Academyに戻る