Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Gemを作るときの依存関係の書き方について もう一度考えてみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
madogiwa
January 15, 2020
Technology
1.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Gemを作るときの依存関係の書き方について もう一度考えてみた
2020/01/15 あなたの知ってるRubyGemsTips
madogiwa
January 15, 2020
Other Decks in Technology
See All in Technology
AIで実装は速くなった。なのにプロダクトは速くならない。職能の壁を越えて価値のフローを設計する
nwiizo
7
7.6k
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
4
1.1k
Code4Lib JAPANカンファレンス2026 開会挨拶 / Code4Lib JAPAN Conference 2026: Opening Remarks
ykiyota
0
290
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
130
10分で知る最近のOmarchy
komagata
0
210
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
180
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
120
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
180
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
330
アリアドネの糸と、20年ごとの建て替え ── 長尾真『電子図書館』を、伊勢で読み直す / Rereading Makoto Nagao’s "Electronic Library" in Ise
ykiyota
0
130
推論の観測、できていますか? 〜 Google Cloud Gemini Enterprise Agent Platformで 3つの Gemini モデルを実測して踏んだ、評価の罠 〜
shukob
PRO
0
180
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
120
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
3.2k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
We Have a Design System, Now What?
morganepeng
55
8.3k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
530
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
Transcript
2020/01/15 あなたの知ってるRubyGemsTips Gemを作るときの依存関係の書き方について もう一度考えてみた MedPeer, Inc. Jun Morita
自己紹介 • SIerのシステムエンジニアから2018年4月にメドピ アに入社。 • 入社後は、医師専用コミュニティサイト「MedPeer」 におけるニュースサービスのリニューアルや、クイ ズサービスの立ち上げ、Rails 5.2.0へのアップグ
レードに従事。 • 現在は、新規事業となる医師向けのインターネット テレビ「MedPeer Channel」のサービス開発を担 当。 @Madogiwa0124 @madogiwa_boy
PR MedPeerの紹介
PR Misson(存在意義) Supporting Doctors, Helping Patients. 医師を支援すること。そして患者を救うこと。 Vision(実現したい姿) 集合知により医療を再発明する。
PR 医師専用コミュニティサイトの運営をしています
PR 医療業界でIT ✕ ?で色々なサービスを展開しています!
PR
PR We are hiring ! MedPeerの紹介でした
今日話すこと(本題) `bundle gem gem_name`すると `Gemfile`と`gemspec`という2つ のファイルが作成されます。 (v2.0.2時点) どっちを使ったほうが良さそうか というのを色々考えてみました
gemにおける依存の書き方のおさらい Gemfile / gemspec(add_development_dependency, add_dependency) add_development_dependency -> DEVELOPMENT依存性 開発時に依存するgem
add_dependency -> RUNTIME依存性 実行時に依存するgem ※add_dependencyはadd_runtime_dependencyのailias https://guides.rubygems.org/specification-reference
gem installの基本的な流れ Ruby Gems.org PC metadata(gemspec)を取得 依存gem含めてinstall install対象のgem
gemspecの内容を元にしているので、 Gemfileに依存gemを記載しても、 installされない ※Gemfileに記載しても依存gemとしては扱われない gem installの基本的な流れ
gemを作るのにGemfileは必要ない gemの最小構成 gemspecがあればgemが作れる gemspecを作り、 gem build
gemspecでビルドして .gemファイルを作ってあげれば、 install可能なgemが作れる -> gem installにGemfileは必要ない Ruby 2.7.0 リファレンスマニュアル library rubygems https://docs.ruby-lang.org/ja/2.7.0/library/rubygems.html
実行時に依存するgemは、 gemspecに書いたほうが良さそう > It’s best practice to specify all the
gems that our library depends on in the gemspec. > https://bundler.io/v2.0/guides/creating_gem.html#getting-started 開発時に依存するものは・・・? ということで、、、
基本的にはgemspecに書いといた方が良さそうだけど… • 依存関係を明示する必要がないケース • bundler独自の機能を使いたいケース 開発時に依存するgemをどっちに書くか
• dotenv、pry等の依存してないが必要なgemを管 理したい場合等 gem内に依存しているコードは無い。 しかしadd_develop_dependencyに記載してしまうと、 RubyGems.orgに依存gemとして表示されてしまうので、Gemfile に記載して管理しておくケース等 依存関係を明示する必要がないケース
• requires等を使いたい `gem ‘rubocop, require: true`行ってBundler.requireでrequireし たい • RubyGems.org以外に配置してあるgemを参照した い
まだRubyGems.orgに公開されてない開発中のgemが公開され るまで`source`を指定してinstallしたい等 bundler独自の機能を使いたいケース
コミュニティでの議論 • Please deprecate (and/or rename) `add_development_dependency` #1104 https://github.com/rubygems/rubygems/issues/1104
`add_develop_dependency`は非推奨にして、Gemfileに書くようにした方がいいんじゃないか?と いった議論がされている。(現在はClose済み) • Remove `add_development_dependency` from new gems #7222 https://github.com/rubygems/bundler/pull/7222 `bundle gem`実行時に`add_develop_dependency`に記載されていたものがGemfileに記載され るようになった。(bundler 2.1.0でリリースされてる) 開発時に依存するgemをどっちに書くか
まとめ 実行時に依存するgemは、 gemspecを使った方が良さそう 開発時に依存するgemは、 色々な考え方がありそうだがbundle gem時のデフォルトもGemfile になったのでGemfileの方が良さそう? と個人的に思いました
ご清聴ありがとうございました MedPeer, Inc. Jun Morita