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
Riverpodに機能追加したときの話 (long ver.)
Search
K9i - Kota Hayashi
July 14, 2023
Programming
510
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Riverpodに機能追加したときの話 (long ver.)
K9i - Kota Hayashi
July 14, 2023
More Decks by K9i - Kota Hayashi
See All by K9i - Kota Hayashi
北九州でFlutterハンズオンをしたので雑多に振り返る
k9i
0
100
FFF(Fukuoka Flutter Fanclub)の紹介
k9i
0
150
Flutter Favoriteプログラムについて調べてみた
k9i
0
1.4k
2023年のFlutter(オフライン)イベントを振り返る
k9i
0
290
Flutterの魅力とコミュニティ活動
k9i
0
540
Flutterエンジニア向け?おすすめmac向けアプリ
k9i
0
510
ゆめみの謎制度「フルリモし放題制度 ㊗️ MAX」で買ったものを紹介します
k9i
0
530
Flutter導入時に警戒すべき要件X選
k9i
1
920
FlutterでTikTokログインができるパッケージを作った話 (short ver.)
k9i
0
800
Other Decks in Programming
See All in Programming
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
350
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
260
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
310
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
380
霧の中の代数的エフェクト
funnyycat
1
490
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
React本体のコードリーディング
high_g_engineer
1
140
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
480
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
160
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
310
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
190
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
520
Fireside Chat
paigeccino
42
4k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
480
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
What's in a price? How to price your products and services
michaelherold
247
13k
The browser strikes back
jonoalderson
0
1.5k
How to make the Groovebox
asonas
2
2.3k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
270
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Documentation Writing (for coders)
carmenintech
77
5.4k
The Cult of Friendly URLs
andyhume
79
7k
Transcript
Riverpodに機能追加したとき の話 (long ver.) 第4回 FlutterGakkai Kota Hayashi (K9i)
自己紹介
YUMEMIについて - Flutterにも力入れてます - 新卒エンジニアとリードエンジニアを募集中
YUMEMIについて - Flutterにも力入れてます - 新卒エンジニアとリードエンジニアを募集中 定期的に勉強会を開催中 タイミングがあったら参加してね
Riverpod? - 日本だと特に人気が高い状態管理ライブラリ - 最近はデファクトスタンダード? - 世界的にはBLoCなんかも人気 - https://docs-v2.riverpod.dev/
追加した機能
追加した機能 Riverpod関連のWidget を相互に変換する
BaseとなるWidgetの変換(Before)
BaseとなるWidgetの変換(Before) flutter, flutter_riverpodパケージのWidgetを ConsumerWidgetかConsuerStatefulWidgetに変 換可能
BaseとなるWidgetの変換(After)
BaseとなるWidgetの変換(After) すべて相互に変換可能
変更したパッケージ - Riverpodはマルチパッケージ構成 - riverpod - flutter_riverpod - hooks_riverpod -
riverpod_generator - riverpod_lint - など
変更したパッケージ - Riverpodはマルチパッケージ構成 - riverpod - flutter_riverpod - hooks_riverpod -
riverpod_generator - riverpod_lint - など MelostというDart向けのマ ルチパッケージ管理ツール が使われている https://melos.invertase.dev /~melos-latest
変更したパッケージ - Riverpodはマルチパッケージ構成 - riverpod - flutter_riverpod - hooks_riverpod -
riverpod_generator - riverpod_lint - など 変更したのはこれ
機能追加の流れ 1. Notionに既存処理の流れを洗い出した
None
機能追加の流れ 1. Notionに既存処理の流れを洗い出した 2. custom_lint_builderの使い方をキャッチアップ
custom_lint_builderの使い方をキャッチアップ - riverpod_lintはcustom_lint_builderパッケージで実現されている - 使い方の説明はcustom_lintパッケージのreadme - https://pub.dev/packages/custom_lint#creating-a-custom -lint-package
機能追加の流れ 1. Notionに既存処理の流れを洗い出した 2. custom_lint_builderの使い方をキャッチアップ 3. 実装 4. hooks関連の問題発生
hooks関連の問題発生 - HookWidgetなどはhooks_riverpodを使ってるときだけ変換したい → custom_lintで利用パッケージを知るすべが無い
図解 これらはオプションにしたい しかしcustom_lintからプロジェクトの利用 パッケージを取得できない
remiさんがcustom_lintを修正してくれた
remiさんがcustom_lintを修正してくれた custom_lintの変更 PR https://github.com/invertase/dart_custom_lint/p ull/137 Changelog https://pub.dev/packages/custom_lint_builder/ changelog#033---2023-04-06
custom_lintの補足 - Dart、Flutter用にオリジナルのlintルールを作れる要チェックパッケージ - lintを利用する:custom_lintパッケージ - lintを開発する:custom_lint_builderパッケージ - Invertaseが開発してる -
といいつつほぼremiさんが作ってる? - riverpod_lintの開発の中で改良されてる感があり、 custom_lint_builderを使うときはriverpod_lintが参考になる
無事リリース🥳
無事リリース🥳 機能追加とかすると Changelogに書いてもらえ る 自分でOSSするときも参考にすると良さそうな 運用
おわり - Riverpod関連のWidgetを変換する機能を追加したよ - 今回の実装のPR - https://github.com/rrousselGit/riverpod/pull/2306