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
Melos で始めるマルチパッケージ構成な開発
Search
Ryo Takeuchi
June 05, 2023
Programming
1
360
Melos で始めるマルチパッケージ構成な開発
Gamma で作成したオリジナルのスライドはこちらです。
https://gamma.app/docs/Melos--9421nyi6p0i2og1?mode=doc
Ryo Takeuchi
June 05, 2023
Tweet
Share
Other Decks in Programming
See All in Programming
Codex の「自走力」を高める
yorifuji
0
1.3k
Ruby and LLM Ecosystem 2nd
koic
1
1.3k
Claude Code Skill入門
mayahoney
0
430
[SF Ruby Feb'26] The Silicon Heel
palkan
0
130
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
3
1.9k
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
430
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
160
今年もTECHSCOREブログを書き続けます!
hiraoku101
0
120
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
450
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
220
[PHPerKaigi 2026]PHPerKaigi2025の企画CodeGolfが最高すぎて社内で内製して半年運営して得た内製と運営の知見
ikezoemakoto
0
280
Java 21/25 Virtual Threads 소개
debop
0
270
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Spectacular Lies of Maps
axbom
PRO
1
640
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
160
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Paper Plane
katiecoart
PRO
0
48k
Tell your own story through comics
letsgokoyo
1
870
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
86
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
410
Odyssey Design
rkendrick25
PRO
2
560
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
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 もしやすくなっていいですね 🍀