SlideShare a Scribd company logo
1 of 29
Download to read offline
はじめての公開 Gem 作り💎
澤井 友恵
@tomoeine
アジェンダ
● 自己紹介
● Gemってなに?
● 作った Gem とその経緯
● Gemの開発
● Gemの公開
今日はなすこと
自己紹介
フリーランスWebエンジニア
澤井友恵 @tomoeine
● 宮崎の山の中でリモートワーク
● 東京生まれ
● 趣味は岩登り(ボルダリング)
● 岩がきっかけで宮崎へ夫婦で移住
● Laravel, CodeIgniter, Vue.js, Rails, AWS 等
自己紹介
自己紹介Ruby とわたし
● Ruby on Rails を触り始めて2年弱くらい
● ここ1年は趣味プロジェクトが中心
● いつも「久しぶりに書くからよくわからない」と言ってる
つまり実質初心者
Gemってなに?
アジェンダ
● Ruby で使うライブラリ
● 他の言語のライブラリに比べると、
便利なものが圧倒的に多い
● Gemfile に書いて `bundle install` で入れてるアレ
● 依存関係の管理もしてくれる
● なんと!Rails も Gem の1つ
Gem ってなに?
作った Gem とその経緯
作った Gem
作った Gem
自己紹介作った経緯
● 開発中のECサービスで、消費税計算の必要があった
● 「通常税率」「軽減税率」両方の商品があるので
ちょっとだけ複雑
● サービス特有のロジックじゃないのに、
自分でコード書くの気持ちよくないな・・・
● そうだ!公開 Gem にしよう!
作った Gem
https://github.com/tomoeine/jptax/
Gemの開発
アジェンダ
1. Gem の名前を決める
2. Gem の雛形を作る
3. Gem の設定を書く
4. Gem の処理を書く
5. テストを書く(任意)
Gemの開発
Gemの名前を決める
https://rubygems.org/ で、希望する名前の Gem が存在していないか確認する
(同じ名前の Gem は複数公開できない)
アジェンダGemの雛形を作る
$ bundle gem jptax -t
shell
前提:最新の Gem 本体と Bundler がマシンに入っている
(-t はテストを RSpec にするためのオプション)
Gemの雛形を作る
自動でできた🎉🙌
Gemの設定を書く
lib = File.expand_path("../lib", __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require "jptax/version"
Gem::Specification.new do |spec|
spec.name = "jptax"
spec.version = Jptax::VERSION
spec.authors = ["tomoeine"]
spec.email = ["tomoe.teshima@gmail.com"]
spec.summary = %q{Easy calculating Japanese consumption tax.}
spec.description = %q{Easy calculating Japanese consumption tax.}
spec.homepage = "https://github.com/tomoeine/jptax"
spec.license = "MIT"
spec.files = `git ls-files -z`.split("x0").reject do |f|
f.match(%r{^(test|spec|features)/})
end
spec.require_paths = ["lib"]
spec.add_development_dependency "bundler"
spec.add_development_dependency "rake"
spec.add_development_dependency "rspec"
end
jptax.gemspec
リポジトリに関する情報
依存するライブラリ
Gemの処理を書く
require 'jptax/version'
module Jptax
def amount_with_tax(amount=0, amount_for_reduced=0)
(amount.to_i * 1.1 + amount_for_reduced.to_i * 1.08).floor
end
module_function :amount_with_tax
end
lib/jptax/jptax.rb
コードはこれだけ。笑
テストを書く(任意)
# 略
spec/jptax_spec.rb
CIの設定もしたい
Gemの公開
アジェンダ
1. ビルドする
2. Git のリポジトリにプッシュする
3. RubyGems に登録する
4. リリースする
Gemの公開
ビルドする
$ rake build
shell
パッケージファイルができた!
アジェンダGit のリポジトリにプッシュする
$ git init
$ git add -A
$ git commit -m "initial commit"
$ git git remote add origin https://github.com/tomoeine/jptax.git
$ git push -u origin master
shell
あらかじめ GitHub にリポジトリを作っておく
(便宜上 master に直接プッシュしていますが、実際にはブランチを分けましょう)
アジェンダRubyGems に登録する
まずはアカウント登録!
アジェンダRubyGems に登録する
$ gem signin
Enter your RubyGems.org credentials.
Don't have an account yet? Create one at
https://rubygems.org/sign_up
Email: tomoe.teshima@gmail.com
Password:
Signed in.
shell
コンソールでサインイン
アジェンダリリースする
$ rake release
shell
リリースする
リリースできた🎉
Rails プロジェクトで使ってみる
gem 'jptax'
Gemfile
$ bundle install
shell
ご清聴ありがとうございました!
澤井 友恵
@tomoeine
はじめての公開 Gem 作り💎

More Related Content

What's hot

oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!
Kanako Kobayashi
 
Aizu Security Workshop #1
Aizu Security Workshop #1Aizu Security Workshop #1
Aizu Security Workshop #1
Yukiya Nakagawa
 

What's hot (20)

ズルいLT 〜はじめてのライトニングトーク〜 / WP-D Week
ズルいLT 〜はじめてのライトニングトーク〜 / WP-D WeekズルいLT 〜はじめてのライトニングトーク〜 / WP-D Week
ズルいLT 〜はじめてのライトニングトーク〜 / WP-D Week
 
在宅フリーランスで 失敗した話3選
在宅フリーランスで 失敗した話3選在宅フリーランスで 失敗した話3選
在宅フリーランスで 失敗した話3選
 
WordCamp Yokohama2010 プレゼン
WordCamp Yokohama2010 プレゼンWordCamp Yokohama2010 プレゼン
WordCamp Yokohama2010 プレゼン
 
WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」
WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」
WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」
 
Middleman Guides & How to Learn
Middleman Guides & How to LearnMiddleman Guides & How to Learn
Middleman Guides & How to Learn
 
RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方
 
Spring Boot Introduction
Spring Boot IntroductionSpring Boot Introduction
Spring Boot Introduction
 
oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!
 
TBMU#28 ブログのトラブル・困ったを解決
TBMU#28 ブログのトラブル・困ったを解決TBMU#28 ブログのトラブル・困ったを解決
TBMU#28 ブログのトラブル・困ったを解決
 
これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境
 
RubyとRailsのおいしい使い方 ver. okayama1
RubyとRailsのおいしい使い方 ver. okayama1RubyとRailsのおいしい使い方 ver. okayama1
RubyとRailsのおいしい使い方 ver. okayama1
 
四国でリモートワーク時々お遍路
四国でリモートワーク時々お遍路四国でリモートワーク時々お遍路
四国でリモートワーク時々お遍路
 
How about travel while working?
How about travel while working?How about travel while working?
How about travel while working?
 
FiNCでのOSSとのつきあい方
FiNCでのOSSとのつきあい方FiNCでのOSSとのつきあい方
FiNCでのOSSとのつきあい方
 
WordPressコミュニティの魅力 | OSC Nagoya 2012 WordBench Nagoya
WordPressコミュニティの魅力 | OSC Nagoya 2012 WordBench NagoyaWordPressコミュニティの魅力 | OSC Nagoya 2012 WordBench Nagoya
WordPressコミュニティの魅力 | OSC Nagoya 2012 WordBench Nagoya
 
いわみくとMeetup第15回
いわみくとMeetup第15回いわみくとMeetup第15回
いわみくとMeetup第15回
 
Aizu Security Workshop #1
Aizu Security Workshop #1Aizu Security Workshop #1
Aizu Security Workshop #1
 
Javascript を使ってみよう!!
Javascript を使ってみよう!!Javascript を使ってみよう!!
Javascript を使ってみよう!!
 
全てのムダに理由あり!弱者のブランディング戦略 先生:吉原 ゴウ
全てのムダに理由あり!弱者のブランディング戦略 先生:吉原 ゴウ全てのムダに理由あり!弱者のブランディング戦略 先生:吉原 ゴウ
全てのムダに理由あり!弱者のブランディング戦略 先生:吉原 ゴウ
 
Crystal 勉強会 #5 in 渋谷 発表資料
Crystal 勉強会 #5 in 渋谷 発表資料Crystal 勉強会 #5 in 渋谷 発表資料
Crystal 勉強会 #5 in 渋谷 発表資料
 

Similar to 初めての公開Gem作り

tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
xibbar
 
Ruby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストRuby on Railsではじめるrspecテスト
Ruby on Railsではじめるrspecテスト
Kanako Kobayashi
 
[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)
[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)
[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)
codeal
 
Rubyでアプリ開発(2013 0430)
Rubyでアプリ開発(2013 0430)Rubyでアプリ開発(2013 0430)
Rubyでアプリ開発(2013 0430)
Shinichirou Nakamura
 
1年かけてgemを1つ作りました
1年かけてgemを1つ作りました1年かけてgemを1つ作りました
1年かけてgemを1つ作りました
Ito Kunihiko
 
1000speakers仙台
1000speakers仙台1000speakers仙台
1000speakers仙台
xibbar
 
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナーRuby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Tomoya Kawanishi
 

Similar to 初めての公開Gem作り (20)

tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
 
omotesando.rb_20231005.pdf
omotesando.rb_20231005.pdfomotesando.rb_20231005.pdf
omotesando.rb_20231005.pdf
 
Ruby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストRuby on Railsではじめるrspecテスト
Ruby on Railsではじめるrspecテスト
 
Rubyのススメ
RubyのススメRubyのススメ
Rubyのススメ
 
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyKanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
 
[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)
[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)
[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)
 
gemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbgemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarb
 
古き良きRailsプロジェクトに wepbackとvue.jsを導入した話
古き良きRailsプロジェクトに wepbackとvue.jsを導入した話古き良きRailsプロジェクトに wepbackとvue.jsを導入した話
古き良きRailsプロジェクトに wepbackとvue.jsを導入した話
 
Rubyでアプリ開発(2013 0430)
Rubyでアプリ開発(2013 0430)Rubyでアプリ開発(2013 0430)
Rubyでアプリ開発(2013 0430)
 
Rubymotionはオススメか?
Rubymotionはオススメか?Rubymotionはオススメか?
Rubymotionはオススメか?
 
1年かけてgemを1つ作りました
1年かけてgemを1つ作りました1年かけてgemを1つ作りました
1年かけてgemを1つ作りました
 
1000speakers仙台
1000speakers仙台1000speakers仙台
1000speakers仙台
 
Koi::Bana〜恋に落ちたエンジニア〜
Koi::Bana〜恋に落ちたエンジニア〜Koi::Bana〜恋に落ちたエンジニア〜
Koi::Bana〜恋に落ちたエンジニア〜
 
ios+Android最近気付いいたこと
ios+Android最近気付いいたことios+Android最近気付いいたこと
ios+Android最近気付いいたこと
 
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナーRuby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
 
フレームワーク使おうぜ!
フレームワーク使おうぜ!フレームワーク使おうぜ!
フレームワーク使おうぜ!
 
テックリンク資料20170529
テックリンク資料20170529テックリンク資料20170529
テックリンク資料20170529
 
Rubyの話を少し
Rubyの話を少しRubyの話を少し
Rubyの話を少し
 
2015 12-19-ruby rails
2015 12-19-ruby rails2015 12-19-ruby rails
2015 12-19-ruby rails
 
2015 07-04-ruby rails
2015 07-04-ruby rails2015 07-04-ruby rails
2015 07-04-ruby rails
 

More from Tomoe Sawai

More from Tomoe Sawai (16)

エンタープライズ SaaS の初期成長戦略
エンタープライズ SaaS の初期成長戦略エンタープライズ SaaS の初期成長戦略
エンタープライズ SaaS の初期成長戦略
 
ユースケース駆動開発のワークショップやってみた!
ユースケース駆動開発のワークショップやってみた!ユースケース駆動開発のワークショップやってみた!
ユースケース駆動開発のワークショップやってみた!
 
Flexbox しか勝たん
Flexbox しか勝たんFlexbox しか勝たん
Flexbox しか勝たん
 
フルリモートチームで スクラム開発 やってみた!
フルリモートチームで スクラム開発 やってみた!フルリモートチームで スクラム開発 やってみた!
フルリモートチームで スクラム開発 やってみた!
 
TypeScriptで辛麺を注文する(ライブコーディング)
TypeScriptで辛麺を注文する(ライブコーディング)TypeScriptで辛麺を注文する(ライブコーディング)
TypeScriptで辛麺を注文する(ライブコーディング)
 
SkyWay で ビデオチャットサービス を構築してみた!
SkyWay で ビデオチャットサービス を構築してみた!SkyWay で ビデオチャットサービス を構築してみた!
SkyWay で ビデオチャットサービス を構築してみた!
 
地方フリーランスとして ゆるいチームで生き抜いてる話
地方フリーランスとして ゆるいチームで生き抜いてる話地方フリーランスとして ゆるいチームで生き抜いてる話
地方フリーランスとして ゆるいチームで生き抜いてる話
 
田舎暮らし流エンジニアスキルアップ術
田舎暮らし流エンジニアスキルアップ術田舎暮らし流エンジニアスキルアップ術
田舎暮らし流エンジニアスキルアップ術
 
Stripe Connect with Subscriptions で サブスクプラットフォーマー になろう
Stripe Connect with Subscriptions で サブスクプラットフォーマー になろうStripe Connect with Subscriptions で サブスクプラットフォーマー になろう
Stripe Connect with Subscriptions で サブスクプラットフォーマー になろう
 
Solidus + Stripe で爆速!?ECサイト構築
Solidus + Stripe で爆速!?ECサイト構築Solidus + Stripe で爆速!?ECサイト構築
Solidus + Stripe で爆速!?ECサイト構築
 
宮崎移住して山の中でリモートワークしてみた(2019/6/26)
宮崎移住して山の中でリモートワークしてみた(2019/6/26)宮崎移住して山の中でリモートワークしてみた(2019/6/26)
宮崎移住して山の中でリモートワークしてみた(2019/6/26)
 
宮崎の山の中でリモートワークしてみた
宮崎の山の中でリモートワークしてみた宮崎の山の中でリモートワークしてみた
宮崎の山の中でリモートワークしてみた
 
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
Firebase Authを Nuxt + Railsの自前サービス に導入してみたFirebase Authを Nuxt + Railsの自前サービス に導入してみた
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
 
センスゼロエンジニアが ノンデザイナーズ・デザインブック を読んでどこまでできるか試す
センスゼロエンジニアが ノンデザイナーズ・デザインブック を読んでどこまでできるか試すセンスゼロエンジニアが ノンデザイナーズ・デザインブック を読んでどこまでできるか試す
センスゼロエンジニアが ノンデザイナーズ・デザインブック を読んでどこまでできるか試す
 
5分で伝えるAWS
5分で伝えるAWS5分で伝えるAWS
5分で伝えるAWS
 
プラットフォームビジネスを手軽に始める!Stripe Connectを使ってみた
プラットフォームビジネスを手軽に始める!Stripe Connectを使ってみたプラットフォームビジネスを手軽に始める!Stripe Connectを使ってみた
プラットフォームビジネスを手軽に始める!Stripe Connectを使ってみた
 

Recently uploaded

Recently uploaded (7)

LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 

初めての公開Gem作り