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
350
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
これならできる!個人開発のすゝめ
tinykitten
PRO
0
140
ThorVG Viewer In VS Code
nors
0
640
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
200
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
290
dchart: charts from deck markup
ajstarks
3
940
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
950
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
220
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
650
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
640
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
710
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.4k
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
110
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
200
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
42
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
78
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
420
The agentic SEO stack - context over prompts
schlessera
0
580
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
82
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
100
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 もしやすくなっていいですね 🍀