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
Melos で始めるマルチパッケージ構成な開発
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ryo Takeuchi
June 05, 2023
Programming
370
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Melos で始めるマルチパッケージ構成な開発
Gamma で作成したオリジナルのスライドはこちらです。
https://gamma.app/docs/Melos--9421nyi6p0i2og1?mode=doc
Ryo Takeuchi
June 05, 2023
Other Decks in Programming
See All in Programming
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
Jetpack Compose Mechanisms
skydoves
3
820
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
230
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
600
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
610
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
残高管理から台帳サービスへの進化
artoy
1
200
sbt 2.0: takeoff
eed3si9n
0
160
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
270
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
Featured
See All Featured
The Language of Interfaces
destraynor
162
27k
How to train your dragon (web standard)
notwaldorf
96
6.9k
Leo the Paperboy
mayatellez
10
2.4k
WCS-LA-2024
lcolladotor
0
890
Navigating Team Friction
lara
192
16k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
560
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Documentation Writing (for coders)
carmenintech
77
5.6k
Transcript
Melos で始めるマルチ パッケージ構成な開発 YOUTRUST x ゆめみ Flutter LT 会@ 渋谷
by Ryo Takeuchi
自己紹介 たっつー Twitter: @tatsutakein GitHub: tatsutakein 株式会社ゆめみ所属 Android エンジニア Flutter
は趣味で少し触っている程度
目次 マルチパッケージ構成とは何か マルチパッケージ構成を使うメリット Melos とは何か Melos の基本的な使い方 Melos を使った開発の一例 おわりに
マルチパッケージ構成とは何か マルチパッケージ構成は、複数のパッケージを1 つのアプリケーションとして開発する方法です。各パッケ ージは独自の役割や機能を持ち、必要に応じて別々にインストールやアップデートができます。 android のリポジトリですが nowinandroid は非常 に参考になるマルチモジュール構成をしていま す。
GitHub GitHub -… A fully functional Android app built…
マルチパッケージ構成を使うメリット 1 保守性が高い 依存関係が明確になり、コードの保守が容易になります。 2 テストがしやすい パッケージごとに単体テストを実施することで、バグを検出しやすくなります。 3 開発が速い 各パッケージを独立に開発できるため、全体の開発期間が短縮されます。
4 拡張性が高い 新しい機能を追加する際、必要なパッケージだけを追加すれば済みます。
Melos とは何か Melos は、複数のパッケージを持つ Dart プロジェクトの管理を支援 するために使用される CLI ツールです。現在活発に開発が行われて おり、FlutterFire
などのプロジェクトで使用されています。 https://melos.invertase.dev/~melos-latest/ フロントエンドエンジニアの方は馴染みがあるかもしれませんが、 Lerna からインスパイアされたという記載があります。
Melos を使い始める Melos を使い始めるために簡単な手順が必要です。 Melos のインストール 1. ワークスペースのセットアップ 2. ワークスペースに
Melos をインストール 3. ワークスペースの設定 4. ブートストラップ を実行 5. 詳しくは公式の Getting Started を参照してください。 https://melos.invertase.dev/~melos-latest/getting-started
Melos を使った開発の一例
Melos を使った開発の一例 バレルで公開するファイルやメンバを制限できます。
Melos を使った開発の一例 デフォルトでは公開されていないメンバを使用しようとすると警告が出ます。 DON'T import implementation files from another package.
https://dart-lang.github.io/linter/lints/implementation_imports.html
Melos を使った開発の一例 analysis_options.yaml に以下の記載を追加します。
Melos を使った開発の一例 先ほどまでの Warning が Error に変わったことが確認できます 🎉
他にも便利なところ スクリプトを定義できる。 フィルタを設定することも可能。( build_runner に依存しているパッケージなど ) melos.yaml に 以下の記載をすると fvm
と入力する手間が省ける。 sdkPath: .fvm/flutter_sdk
おまけ 依存関係も各パッケージ毎に行えるようになるため Pull Request Labeler などを利用していると Renovate による PR 時の視認性もよくなります。
おわりに マルチパッケージな構成にすると本当に共通で利用したいもの・各パッケージのみで利用したいものが見 えてくると思います。 適切な責務で切り出す意識のきっかけになるので、ぜひ Melos の導入を検討してみてください。 また、実装を他のパッケージから隠蔽できることで DI をする時のメリットが大きくなります。 Riverpod
などを使用していると DI もしやすくなっていいですね 🍀