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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
ソフトウェアラスタライザ
fadis
1
800
Intent as Code
shoppingjaws
6
910
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
780
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
230
Deep dive into the select statement (GopherCon UK)
jespino
0
170
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
120
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
140
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.4k
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
450
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
240
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
440
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
460
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
990
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Crafting Experiences
bethany
1
320
Building Applications with DynamoDB
mza
96
7.2k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
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 もしやすくなっていいですね 🍀