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
Rubyでもモノリポしたい - 調査、おさわり編 -
Search
wtnabe
December 20, 2025
Programming
90
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rubyでもモノリポしたい - 調査、おさわり編 -
Kanazawa.rb meetup #160「Rubyでもモノリポしたい」の発表資料です。
wtnabe
December 20, 2025
Transcript
22 slides
Ruby でもモノリポしたい 調査、おさわり編 @wtnabe 2025-12-20 (Sat) at ITBP 武蔵 Kanazawa.rb
meetup #160
モノリポって何? 例えば Google - そもそもぜーんぶまとまっちゃってる Rails - Active なんとか群のまとまったリポジトリ React
- これも依存パッケージたっぷり
モノリポの動機 1. 依存管理ツールの力不足と煩雑なビルド設定 2. 複数のサブシステムからなる複雑なプログラムをビルドしたい 3. リポジトリをいくつもメンテしたくない
1. 依存管理ツールの力不足と煩雑なビルド設定 JS 向けは恐らくこういうニーズ ( 初期)npm は超富豪的アプローチで依存関係の競合を回避していた とにかくディスクを食う npm link
がうまく動かない問題 やたらと多いツールチェイン Babel, Webpack, TypeScript などなどがついて回る クライアントサイドもサーバサイドもカバー Lerna, Turborepo, ...
2. 複雑なビルド 例えばBazel. Google はそもそもモノリポ その中で複数言語、複数システムを横断するビルドが必要 これ系で学習曲線をもう少し緩めるのが Nx など
3. 複数のリポジトリをメンテしたくない リポジトリとしては一つになっていてほしいが、実態は分かれる フロントエンドとバックエンド 複数サブシステム ライブラリのコレクション リポジトリがまとまっているとIssue もまとまる
今回の動機は3 ぐだぐだ言わずにまとめたい
要件 JS runtime に依存したくない(もちろんRuby が中心になるので) 必要なインフラも増やしたくない(Docker とか) ということで落選は Lerna, Nx,
Rush, Turborepo, ...
実はRuby 製もある kamataryo/monorepo fastlane/monorepo: Scripts to migrate to a monorepo
kjellberg/monoz: Command line tool for managing ruby monorepos. 割と死んでる。現役は monoz くらい?
でも流行ってない これは予想だけど、 そもそもRuby は明示的なビルドプロセスが必要ない Rails のビルドはフロントエンドのアセットのため フロントエンドとバックエンドみたいな分離が起きない module にしてディレクトリ分けとく程度で割となんとかなる
今回はRuby 製は除外 将来的にJS/TS 周りも一緒に扱えるようにしておきたかった
moon A developer productivity tooling platform. | moonrepo
Rust 製 シングルバイナリでポンと置けば動く インストールが簡単 npm やOS レベルのパッケージマネージャで GitHub Actions のAction
も用意されてる CI でありがたい機能アリ
wtnabe の感じたmoon の考え方 基本的にはタスクランナー 単純なタスクだけじゃなくて依存関係も記述できる 複数のプロジェクトに共通のタスクの定義が楽 タスクの実態はプロジェクトの中身次第 同じ名前の違う定義のタスクがあってよい
概念 workspace がリポジトリの全体像 project はその中の一ディレクトリに収まっている task はworkspace 全体に適用されるものとproject 固有のものがある
構造 workspace project task project
定義(設定) .moon/ workspace.yml tasks.yml projectA/ moon.yml projectB/ moon.yml
workspace.yml $schema: 'https://moonrepo.dev/schemas/workspace.json' # extends: './shared/workspace.yml' projects: - 'packages/*'
tasks.yml fileGroups: configs: - '.*.yml' - /moon.yml sourcess: - Gemfile
- ... tasks: lock-platform: command: | bundle lock --add-platform arm64-darwin && \ bundle lock --add-platform x86_64-linux config: command: "bundle config set path \"vendor/bundle\""
moon.yml language: ruby
mise と違うのか? mise-in-place は最近流行りのツール フロントエンド目的、JS 目的ならmise でいいかも セットアップが楽っぽいけど、Ruby だと結局ruby-build moon
もproto という別プロジェクトでセットアップは進める予定 目的とプロジェクトが整理されていて好印象
CI 向け機能 Git の使いこなしは要るが、変更のあったファイル群から該当プロ ジェクトだけCI/CD を適用させることが可能 プロジェクトが増えていったらだいぶ効きそう
More Decks by wtnabe
See All by wtnabe
新しいフロントプロセスとドキュメントフォーマットを考えてみた
wtnabe
0
55
Ruby de Railway Oriented Programming
wtnabe
0
140
Bindanのススメ
wtnabe
0
83
そのオブジェクト、何を保証してくれますか? - GuideRailのススメ -
wtnabe
0
88
Effective Jekyll
wtnabe
0
110
5 min Jekyll/Liquid Plugin cooking
wtnabe
0
78
Ruby de Wasm
wtnabe
0
110
Cloud Native Buildpacksって結局どうなの?
wtnabe
0
98
Decoupled System with Turbo Frame
wtnabe
1
190
Other Decks in Programming
See All in Programming
Seven New Principles of Software Engineering
yegor256
0
490
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
330
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
210
AmebaブログはKMPから卒業します
kmars0605
0
350
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
350
Performance Optimization With LLMs
xleitix
0
260
Modernizing iOS Apps
seyfoyun
0
150
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
210
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
980
Rails初心者がパスキーを実装してみて大変だったこと
ktombow
0
180
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.3k
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
560
Agile that works and the tools we love
rasmusluckow
331
22k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
610
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
940
Highjacked: Video Game Concept Design
rkendrick25
PRO
2
570
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
1
300
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
30 Presentation Tips
portentint
PRO
1
470
How to train your dragon (web standard)
notwaldorf
96
6.9k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
480