Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rails Engineをフル活用した複数アプリ機能共通化の勘所
Search
Hideki Kinjo
May 28, 2021
Programming
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rails Engineをフル活用した複数アプリ機能共通化の勘所
at 事業成長を加速させたエンジニアリングのウラ側 2021/05/28
Hideki Kinjo
May 28, 2021
More Decks by Hideki Kinjo
See All by Hideki Kinjo
すべきことがはっきりわかる、 ユーザーにすべき「4つの質問」
kumasan3
0
44
Rails Girls Gathering メドピアスポンサーLT 2020/12
kumasan3
0
97
Other Decks in Programming
See All in Programming
源内ハンズオン概要編
hideg
0
190
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
320
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
790
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.8k
Foundation Models frameworkで画像分析
ryodeveloper
1
630
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
110
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
250
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
240
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
570
SlackアプリとLambdaの 連携を構築した話
pawn_4_s
1
130
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.8k
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
700
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
67k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Ruling the World: When Life Gets Gamed
codingconduct
0
300
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
490
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
490
Exploring anti-patterns in Rails
aemeredith
3
470
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
370
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
580
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
530
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Designing Powerful Visuals for Engaging Learning
tmiket
1
500
Transcript
Rails Engineをフル活用した 複数アプリの機能共通化の勘所 Hideki Kinjo 2021/5/28
Agenda 1. 自己紹介 2. 事業紹介&Rails Engine活用の背景 3. Rails Engineとは 4.
導入工数1日!? Rails Engine活用事例 5. Rails Engineの勘所 6. メッセージ
Hideki Kinjo @golden_castle_h Twitter Profile EXPERIENCE 2011-2017 琉球大学(アメリカ、タイ留学) 2018-2019 機械部品メーカー
| 営業 2020- メドピア | Railsエンジニア ライフログプラットフォーム事業部 歩数計アプリのサーバーサイド開発
事業紹介& Rails Engine 活用の背景
みなさん、歩いてますか? 事業紹介&背景
事業紹介&背景 ライフログプラットフォーム事業部では、 歩くのが楽しくなるアプリを開発しています スギサポwalk 日経歩数番 サツドラウォーク aminoステップ
歩くのが楽しくなる機能だけではなく、 事業紹介&背景
多くの機能があり、 それらは各アプリで共通しています チェックイン 健康相談 ミッション ポイント発行 事業紹介&背景
そこで 事業紹介&背景
・歩数計 ・チェックイン ・アプリ内キャンペーン ・ミッション ・クーポン発行 ・健康相談 ? ? 各機能をRails Engineで開発&共通化
コンテンツの投入だけで パートナー拡大していける基盤の構築 機能 事業紹介&背景 Rails Engineで機能を開発し、各アプリに導入
Rails Engineとは
Rails Engineとは Rails Engineとは 「ホストとなるRailsアプリケーションに機能を提供する ミニチュア版Railsアプリケーション」by Rails ガイド Engine Engine
Engine Engine ホストアプリ
newする 一見すると普通のRails App 配下で開発 dummyアプリで試す assets controllers models views app
bin config lib spec dummy medbear_drive assets controllers models views Rails Engineとは
Github Packageにpublishし、 Gemとして取り込めるようにする Rails Engineとは
ホストアプリに取り込む Rails Engineとは Gemfile Terminal
導入工数1日!? Rails Engine活用事例
活用事例 AminoステップはほとんどEngineでできている Lifelog-account Lifelog-walk Lifelog-referral Lifelog-coupon Lifelog-point Lifelog-in-app-message Lifelog-campaign Lifelog-agcod
Lifelog-mission Lifelog-bonus アカウント管理 歩数計 友達紹介 クーポン ポイント発行 アプリ内メッセージ アプリ内キャンペーン amazonギフト券発行 ミッション機能 特別ボーナス発行 Aminoステップ ~2021年4月リリース~ 18個のEngines Engine関連のテーブル数 71 / 75
1日 導入工数1日 ミッション機能の別アプリへの導入工数 Aminoステップで先に導入 サツドラウォーク 活用事例
Rails Engine 活用の勘所
1. Engineを拡張する方法を限定する (1) Engineの設定はConfigで行う 勘所 ホストアプリ:config/initializers/medbear_drive.rb Engine:app/models/car.rb (2) ホストアプリの拡張は専用モジュールを作成して行う ホストアプリ:app/models/bear.rb
2. バージョン管理を行う 勘所 Dependabotが更新をお知らせ タグ付け&更新内容を記載しリリース 取り込み Breaking Changesがあれば明記
勘所 1. ホストアプリ側での機能拡張が制限される 2. アプリを跨いだ意思決定が必要になる 3. 後方互換性を保つ開発 4. ホストアプリ開発より時間がかかる 3.
デメリットを理解する
メッセージ
メッセージ Engine Engine Engine Engine ホストアプリ その機能をEngineにすべきか最初に検討してみると良いかも